]> Creatis software - clitk.git/blobdiff - common/clitkImageCommon.txx
improvements to the Dicom struct handling code, including better computation of extruding
[clitk.git] / common / clitkImageCommon.txx
index 5fb4b86518cbc00d8877ce96324cf150f5504baa..ca8206e4085ec4ac8e841057f137ca5b62541656 100644 (file)
@@ -181,6 +181,7 @@ typename ImageType::Pointer readImage(const std::vector<std::string> & filenames
 }
 //--------------------------------------------------------------------
 
+
 //--------------------------------------------------------------------
 template<class ImageType>
 void writeImage(const typename ImageType::Pointer image, const std::string & filename, const bool verbose)
@@ -202,6 +203,7 @@ void writeImage(const typename ImageType::Pointer image, const std::string & fil
 }
 //--------------------------------------------------------------------
 
+
 //--------------------------------------------------------------------
 template<class ImageType>
 void writeImage(const ImageType* image, const std::string & filename, const bool verbose)
@@ -278,6 +280,7 @@ int ComputeHowManyDifferentIntensity(const typename ImageType::Pointer & image,
 }
 //--------------------------------------------------------------------
 
+
 //--------------------------------------------------------------------
 template<class InputImageType, class MaskImageType>
 void ComputeWeightsOfEachClasses(const typename InputImageType::Pointer & input,
@@ -313,5 +316,60 @@ void ComputeWeightsOfEachClasses(const typename InputImageType::Pointer & input,
 }
 //--------------------------------------------------------------------
 
+
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSizeAndSpacing(typename ImageType1::ConstPointer A, 
+                           typename ImageType2::ConstPointer B) 
+{
+  if (A->GetImageDimension() != B->GetImageDimension()) return false;
+  for(unsigned int i=0; i<A->GetImageDimension(); i++) {
+    if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false;
+    if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false;
+  }
+  return true;
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSizeAndSpacing(typename ImageType1::Pointer A, 
+                           typename ImageType2::Pointer B) 
+{
+  if (A->GetImageDimension() != B->GetImageDimension()) return false;
+  for(unsigned int i=0; i<A->GetImageDimension(); i++) {
+    if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false;
+    if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false;
+  }
+  return true;
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSpacing(typename ImageType1::ConstPointer A, 
+                     typename ImageType2::ConstPointer B) 
+{
+  if (A->GetImageDimension() != B->GetImageDimension()) return false;
+  for(unsigned int i=0; i<A->GetImageDimension(); i++) {
+    if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false;
+  }
+  return true;
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSpacing(typename ImageType1::Pointer A, 
+                           typename ImageType2::Pointer B) 
+{
+  if (A->GetImageDimension() != B->GetImageDimension()) return false;
+  for(unsigned int i=0; i<A->GetImageDimension(); i++) {
+    if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false;
+  }
+  return true;
+}
+//--------------------------------------------------------------------
+
 #endif /* end #define CLITKIMAGECOMMON_TXX */