2 #ifndef clitkConvertBLUTCoeffsToVFFilter_h
3 #define clitkConvertBLUTCoeffsToVFFilter_h
6 #include "clitkCommon.h"
7 #include "clitkImageCommon.h"
8 #include "clitkBSplineDeformableTransform.h"
9 #include "itkBSplineDeformableTransform.h"
10 #if (ITK_VERSION_MAJOR == 4) && (ITK_VERSION_MINOR < 6)
11 # include "itkTransformToDisplacementFieldSource.h"
13 # include "itkTransformToDisplacementFieldFilter.h"
18 template <class TDVFType>
19 class ConvertBLUTCoeffsToVFFilter :
20 public itk::ImageSource<TDVFType>
24 /** Standard class typedefs. */
25 typedef ConvertBLUTCoeffsToVFFilter Self;
26 typedef itk::ImageSource<TDVFType> Superclass;
27 typedef itk::SmartPointer<Self> Pointer;
28 typedef itk::SmartPointer<const Self> ConstPointer;
31 typedef itk::ImageIOBase LikeImageType;
32 typedef typename LikeImageType::Pointer LikeImagePointer;
34 typedef TDVFType OutputImageType;
35 typedef typename OutputImageType::Pointer OutputImagePointer;
36 typedef typename OutputImageType::ConstPointer OutputImageConstPointer;
37 typedef typename OutputImageType::RegionType OutputImageRegionType;
38 typedef typename OutputImageType::SizeType OutputImageSizeType;
39 typedef typename OutputImageType::PointType OutputImagePointType;
40 typedef typename OutputImageType::SpacingType OutputImageSpacingType;
42 typedef clitk::BSplineDeformableTransform<double, TDVFType::ImageDimension, TDVFType::ImageDimension> BLUTTransformType;
43 typedef typename BLUTTransformType::CoefficientImageType BLUTCoefficientImageType;
44 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 3> ITKTransformType;
45 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 0> ITKTransformTypeZero;
46 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 1> ITKTransformTypeOne;
47 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 2> ITKTransformTypeTwo;
48 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 4> ITKTransformTypeFour;
50 typedef itk::Transform< double, TDVFType::ImageDimension, TDVFType::ImageDimension> GenericTransformType;
52 #if (ITK_VERSION_MAJOR == 4) && (ITK_VERSION_MINOR < 6)
53 typedef itk::TransformToDisplacementFieldSource<OutputImageType, double> ConvertorType;
55 typedef itk::TransformToDisplacementFieldFilter<OutputImageType, double> ConvertorType;
60 itkSetMacro(Verbose, bool);
61 itkSetMacro(InputFileName, std::string);
62 itkSetMacro(LikeFileName, std::string);
63 itkSetMacro(OutputOrigin, OutputImagePointType);
64 itkSetMacro(OutputSpacing, OutputImageSpacingType);
65 itkSetMacro(OutputSize, OutputImageSizeType);
66 itkSetMacro(TransformType, unsigned int);
67 itkSetMacro(MaskFileName, std::string);
68 itkSetMacro(BLUTSplineOrders, typename BLUTCoefficientImageType::SizeType);
70 /** DeformationFieldImageFilter produces a vector image. */
71 virtual void GenerateOutputInformation( void );
75 ConvertBLUTCoeffsToVFFilter();
76 ~ConvertBLUTCoeffsToVFFilter() {};
78 virtual void GenerateData();
81 unsigned int m_TransformType;
82 typename BLUTTransformType::Pointer m_BLUTTransform;
83 typename ITKTransformType::Pointer m_ITKTransform;
84 typename GenericTransformType::Pointer m_GenericTransform;
86 std::string m_InputFileName, m_LikeFileName, m_MaskFileName;
87 OutputImageSizeType m_OutputSize;
88 OutputImageSpacingType m_OutputSpacing;
89 OutputImagePointType m_OutputOrigin;
90 typename BLUTCoefficientImageType::SizeType m_BLUTSplineOrders;
91 typename ConvertorType::Pointer m_Filter;
95 #include "clitkConvertBLUTCoeffsToVFFilter.txx"
97 #endif // clitkConvertBLUTCoeffsToVFFilter_h