X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkConvertBLUTCoeffsToVFFilter.txx;h=da20e6b9879e310a37a4072467de76a77d551e78;hb=e751b47051ae80ecd388418ae39b388f15e627eb;hp=ae1f9d539bd70d9425efbab1a760e324ba93771a;hpb=e64bc938065fef91ca19fb4b5f4f3bb973bc6f81;p=clitk.git diff --git a/registration/clitkConvertBLUTCoeffsToVFFilter.txx b/registration/clitkConvertBLUTCoeffsToVFFilter.txx index ae1f9d5..da20e6b 100644 --- a/registration/clitkConvertBLUTCoeffsToVFFilter.txx +++ b/registration/clitkConvertBLUTCoeffsToVFFilter.txx @@ -7,11 +7,6 @@ //#include "clitkConvertBSplineDeformableTransformToVFGenericFilter.h" #include "clitkVectorImageToImageFilter.h" -#if ITK_VERSION_MAJOR >= 4 -#include "itkTransformToDisplacementFieldSource.h" -#else -#include "itkTransformToDeformationFieldSource.h" -#endif #include "itkBSplineDeformableTransform.h" namespace clitk @@ -112,7 +107,7 @@ namespace clitk // Mask typedef itk::ImageMaskSpatialObject MaskType; - typename MaskType::Pointer spatialObjectMask=NULL; + typename MaskType::Pointer spatialObjectMask=ITK_NULLPTR; if (!m_MaskFileName.empty()) { typedef itk::Image< unsigned char, BLUTCoefficientImageType::ImageDimension > ImageMaskType; @@ -148,12 +143,7 @@ namespace clitk typedef clitk::VectorImageToImageFilter 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(); @@ -163,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. @@ -173,22 +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->SetSize(output->GetLargestPossibleRegion().GetSize()); +#else + m_Filter->SetOutputSize(output->GetLargestPossibleRegion().GetSize()); +#endif m_Filter->SetOutputOrigin(output->GetOrigin()); m_Filter->SetOutputSpacing(output->GetSpacing()); - m_Filter->SetOutputSize(output->GetLargestPossibleRegion().GetSize()); m_Filter->SetTransform(m_GenericTransform); m_Filter->Update();