]> Creatis software - clitk.git/blobdiff - registration/clitkConvertBLUTCoeffsToVFFilter.txx
Debug RTStruct conversion with empty struc
[clitk.git] / registration / clitkConvertBLUTCoeffsToVFFilter.txx
index d10bcbb69f1f24579f5a8c3b82d4f668b7c7145c..da20e6b9879e310a37a4072467de76a77d551e78 100644 (file)
@@ -107,7 +107,7 @@ namespace clitk
 
       // Mask
       typedef itk::ImageMaskSpatialObject<BLUTCoefficientImageType::ImageDimension >   MaskType;
-      typename MaskType::Pointer  spatialObjectMask=NULL;
+      typename MaskType::Pointer  spatialObjectMask=ITK_NULLPTR;
       if (!m_MaskFileName.empty())
       {
           typedef itk::Image< unsigned char, BLUTCoefficientImageType::ImageDimension >   ImageMaskType;
@@ -143,12 +143,7 @@ namespace clitk
         
       typedef clitk::VectorImageToImageFilter<BLUTCoefficientImageType, typename ITKTransformType::ImageType> FilterType;
       typename FilterType::Pointer component_filter[BLUTCoefficientImageType::ImageDimension];
-
-#if ITK_VERSION_MAJOR >= 4
       typename ITKTransformType::CoefficientImageArray coefficient_images;
-#else
-      typename ITKTransformType::ImagePointer coefficient_images[BLUTCoefficientImageType::ImageDimension];
-#endif
 
       for (unsigned int i=0; i < BLUTCoefficientImageType::ImageDimension; i++) {
           component_filter[i] = FilterType::New();
@@ -158,7 +153,6 @@ namespace clitk
           coefficient_images[i] = component_filter[i]->GetOutput();
       }
 
-#if ITK_VERSION_MAJOR >= 4
       // RP: 16/01/2013
       // ATTENTION: Apparently, there's a bug in the SetCoefficientImages function of ITK 4.x
       // I needed to use SetParametersByValue instead.
@@ -168,26 +162,64 @@ namespace clitk
         for (unsigned int j=0; j < coefficient_images[i]->GetPixelContainer()->Size(); j++)
           params[input->GetPixelContainer()->Size() * i + j] = coefficient_images[i]->GetPixelContainer()->GetBufferPointer()[j]; 
       }
+      typename ITKTransformTypeZero::Pointer zero;
+      typename ITKTransformTypeOne::Pointer one;
+      typename ITKTransformTypeTwo::Pointer two;
+      typename ITKTransformTypeFour::Pointer four;
 
-      m_ITKTransform->SetGridOrigin(input->GetOrigin());
-      m_ITKTransform->SetGridDirection(input->GetDirection());
-      m_ITKTransform->SetGridRegion(input->GetLargestPossibleRegion());
-      m_ITKTransform->SetGridSpacing(input->GetSpacing());
-      m_ITKTransform->SetParametersByValue(params);
-#else
-      m_ITKTransform->SetCoefficientImage(coefficient_images);
-#endif
-
-      m_GenericTransform = m_ITKTransform;
+      switch(m_BLUTSplineOrders[0])
+      {
+        case 0:
+          zero = ITKTransformTypeZero::New();
+          zero->SetGridOrigin(input->GetOrigin());
+          zero->SetGridDirection(input->GetDirection());
+          zero->SetGridRegion(input->GetLargestPossibleRegion());
+          zero->SetGridSpacing(input->GetSpacing());
+          m_GenericTransform = zero;
+          break;
+        case 1:
+          one = ITKTransformTypeOne::New();
+          one->SetGridOrigin(input->GetOrigin());
+          one->SetGridDirection(input->GetDirection());
+          one->SetGridRegion(input->GetLargestPossibleRegion());
+          one->SetGridSpacing(input->GetSpacing());
+          m_GenericTransform = one;
+          break;
+        case 2:
+          two = ITKTransformTypeTwo::New();
+          two->SetGridOrigin(input->GetOrigin());
+          two->SetGridDirection(input->GetDirection());
+          two->SetGridRegion(input->GetLargestPossibleRegion());
+          two->SetGridSpacing(input->GetSpacing());
+          m_GenericTransform = two;
+          break;
+        case 3:
+          m_ITKTransform = ITKTransformType::New();
+          m_ITKTransform->SetGridOrigin(input->GetOrigin());
+          m_ITKTransform->SetGridDirection(input->GetDirection());
+          m_ITKTransform->SetGridRegion(input->GetLargestPossibleRegion());
+          m_ITKTransform->SetGridSpacing(input->GetSpacing());
+          m_GenericTransform = m_ITKTransform;
+          break;
+        case 4:
+          four = ITKTransformTypeFour::New();
+          four->SetGridOrigin(input->GetOrigin());
+          four->SetGridDirection(input->GetDirection());
+          four->SetGridRegion(input->GetLargestPossibleRegion());
+          four->SetGridSpacing(input->GetSpacing());
+          m_GenericTransform = four;
+          break;
+      }
+      m_GenericTransform->SetParametersByValue(params);
     }
 
 #if ITK_VERSION_MAJOR > 4 || (ITK_VERSION_MAJOR == 4 && ITK_VERSION_MINOR >= 6)
-    m_Filter->SetReferenceImage(output);
+    m_Filter->SetSize(output->GetLargestPossibleRegion().GetSize());
 #else
-    m_Filter->SetOutputOrigin(output->GetOrigin());
-    m_Filter->SetOutputSpacing(output->GetSpacing());
     m_Filter->SetOutputSize(output->GetLargestPossibleRegion().GetSize());
 #endif
+    m_Filter->SetOutputOrigin(output->GetOrigin());
+    m_Filter->SetOutputSpacing(output->GetSpacing());
     m_Filter->SetTransform(m_GenericTransform);
 
     m_Filter->Update();