+
+//--------------------------------------------------------------------
+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;
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSize(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->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false;
+ }
+ return true;
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSize(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->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false;
+ }
+ return true;
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSizeAndSpacing(typename ImageType1::ConstPointer A,
+ typename ImageType2::ConstPointer B)
+{
+ return ( HaveSameSize<ImageType1, ImageType2>(A, B) &&
+ HaveSameSpacing<ImageType1, ImageType2>(A, B) );
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSizeAndSpacing(typename ImageType1::Pointer A,
+ typename ImageType2::Pointer B)
+{
+ return ( HaveSameSize<ImageType1, ImageType2>(A, B) &&
+ HaveSameSpacing<ImageType1, ImageType2>(A, B) );
+}
+//--------------------------------------------------------------------
+