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
11 # if ITK_VERSION_MINOR < 6
12 # include "itkTransformToDisplacementFieldSource.h"
14 # include "itkTransformToDisplacementFieldFilter.h"
20 template <class TDVFType>
21 class ConvertBLUTCoeffsToVFFilter :
22 public itk::ImageSource<TDVFType>
26 /** Standard class typedefs. */
27 typedef ConvertBLUTCoeffsToVFFilter Self;
28 typedef itk::ImageSource<TDVFType> Superclass;
29 typedef itk::SmartPointer<Self> Pointer;
30 typedef itk::SmartPointer<const Self> ConstPointer;
33 typedef itk::ImageIOBase LikeImageType;
34 typedef typename LikeImageType::Pointer LikeImagePointer;
36 typedef TDVFType OutputImageType;
37 typedef typename OutputImageType::Pointer OutputImagePointer;
38 typedef typename OutputImageType::ConstPointer OutputImageConstPointer;
39 typedef typename OutputImageType::RegionType OutputImageRegionType;
40 typedef typename OutputImageType::SizeType OutputImageSizeType;
41 typedef typename OutputImageType::PointType OutputImagePointType;
42 typedef typename OutputImageType::SpacingType OutputImageSpacingType;
44 typedef clitk::BSplineDeformableTransform<double, TDVFType::ImageDimension, TDVFType::ImageDimension> BLUTTransformType;
45 typedef typename BLUTTransformType::CoefficientImageType BLUTCoefficientImageType;
46 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 3> ITKTransformType;
47 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 0> ITKTransformTypeZero;
48 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 1> ITKTransformTypeOne;
49 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 2> ITKTransformTypeTwo;
50 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 4> ITKTransformTypeFour;
52 typedef itk::Transform< double, TDVFType::ImageDimension, TDVFType::ImageDimension> GenericTransformType;
54 #if ITK_VERSION_MAJOR >= 4
55 # if ITK_VERSION_MINOR < 6
56 typedef itk::TransformToDisplacementFieldSource<OutputImageType, double> ConvertorType;
58 typedef itk::TransformToDisplacementFieldFilter<OutputImageType, double> ConvertorType;
64 itkSetMacro(Verbose, bool);
65 itkSetMacro(InputFileName, std::string);
66 itkSetMacro(LikeFileName, std::string);
67 itkSetMacro(OutputOrigin, OutputImagePointType);
68 itkSetMacro(OutputSpacing, OutputImageSpacingType);
69 itkSetMacro(OutputSize, OutputImageSizeType);
70 itkSetMacro(TransformType, unsigned int);
71 itkSetMacro(MaskFileName, std::string);
72 itkSetMacro(BLUTSplineOrders, typename BLUTCoefficientImageType::SizeType);
74 /** DeformationFieldImageFilter produces a vector image. */
75 virtual void GenerateOutputInformation( void );
79 ConvertBLUTCoeffsToVFFilter();
80 ~ConvertBLUTCoeffsToVFFilter() {};
82 virtual void GenerateData();
85 unsigned int m_TransformType;
86 typename BLUTTransformType::Pointer m_BLUTTransform;
87 typename ITKTransformType::Pointer m_ITKTransform;
88 typename GenericTransformType::Pointer m_GenericTransform;
90 std::string m_InputFileName, m_LikeFileName, m_MaskFileName;
91 OutputImageSizeType m_OutputSize;
92 OutputImageSpacingType m_OutputSpacing;
93 OutputImagePointType m_OutputOrigin;
94 typename BLUTCoefficientImageType::SizeType m_BLUTSplineOrders;
95 typename ConvertorType::Pointer m_Filter;
99 #include "clitkConvertBLUTCoeffsToVFFilter.txx"
101 #endif // clitkConvertBLUTCoeffsToVFFilter_h