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"
17 # include "itkTransformToDeformationFieldSource.h"
22 template <class TDVFType>
23 class ConvertBLUTCoeffsToVFFilter :
24 public itk::ImageSource<TDVFType>
28 /** Standard class typedefs. */
29 typedef ConvertBLUTCoeffsToVFFilter Self;
30 typedef itk::ImageSource<TDVFType> Superclass;
31 typedef itk::SmartPointer<Self> Pointer;
32 typedef itk::SmartPointer<const Self> ConstPointer;
35 typedef itk::ImageIOBase LikeImageType;
36 typedef typename LikeImageType::Pointer LikeImagePointer;
38 typedef TDVFType OutputImageType;
39 typedef typename OutputImageType::Pointer OutputImagePointer;
40 typedef typename OutputImageType::ConstPointer OutputImageConstPointer;
41 typedef typename OutputImageType::RegionType OutputImageRegionType;
42 typedef typename OutputImageType::SizeType OutputImageSizeType;
43 typedef typename OutputImageType::PointType OutputImagePointType;
44 typedef typename OutputImageType::SpacingType OutputImageSpacingType;
46 typedef clitk::BSplineDeformableTransform<double, TDVFType::ImageDimension, TDVFType::ImageDimension> BLUTTransformType;
47 typedef typename BLUTTransformType::CoefficientImageType BLUTCoefficientImageType;
48 typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, TDVFType::ImageDimension> ITKTransformType;
50 typedef itk::Transform< double, TDVFType::ImageDimension, TDVFType::ImageDimension> GenericTransformType;
52 #if ITK_VERSION_MAJOR >= 4
53 # if ITK_VERSION_MINOR < 6
54 typedef itk::TransformToDisplacementFieldSource<OutputImageType, double> ConvertorType;
56 typedef itk::TransformToDisplacementFieldFilter<OutputImageType, double> ConvertorType;
59 typedef itk::TransformToDeformationFieldSource<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