]> Creatis software - clitk.git/blob - registration/clitkConvertBLUTCoeffsToVFFilter.h
Add missing this->
[clitk.git] / registration / clitkConvertBLUTCoeffsToVFFilter.h
1
2 #ifndef clitkConvertBLUTCoeffsToVFFilter_h
3 #define clitkConvertBLUTCoeffsToVFFilter_h
4
5 #include "clitkIO.h"
6 #include "clitkCommon.h"
7 #include "clitkImageCommon.h"
8 #include "clitkBSplineDeformableTransform.h"
9 #include "itkBSplineDeformableTransform.h"
10 #if ITK_VERSION_MAJOR >= 4
11 #include "itkTransformToDisplacementFieldSource.h"
12 #else
13 #include "itkTransformToDeformationFieldSource.h"
14 #endif
15
16 namespace clitk 
17 {
18   template <class TDVFType>
19   class ConvertBLUTCoeffsToVFFilter : 
20     public itk::ImageSource<TDVFType>
21   {
22   public:
23
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;
29     
30      // ImageTypes
31     typedef itk::ImageIOBase LikeImageType;
32     typedef typename LikeImageType::Pointer LikeImagePointer;
33
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;
41
42     typedef clitk::BSplineDeformableTransform<double, TDVFType::ImageDimension, TDVFType::ImageDimension> BLUTTransformType;
43     typedef typename BLUTTransformType::CoefficientImageType BLUTCoefficientImageType;
44     typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, TDVFType::ImageDimension> ITKTransformType;
45
46     typedef itk::Transform< double, TDVFType::ImageDimension, TDVFType::ImageDimension> GenericTransformType;
47     
48 #if ITK_VERSION_MAJOR >= 4
49     typedef itk::TransformToDisplacementFieldSource<OutputImageType, double> ConvertorType;
50 #else
51     typedef itk::TransformToDeformationFieldSource<OutputImageType, double> ConvertorType;
52 #endif
53
54     itkNewMacro(Self);
55     
56     itkSetMacro(Verbose, bool);
57     itkSetMacro(InputFileName, std::string);
58     itkSetMacro(LikeFileName, std::string);
59     itkSetMacro(OutputOrigin, OutputImagePointType);
60     itkSetMacro(OutputSpacing, OutputImageSpacingType);
61     itkSetMacro(OutputSize, OutputImageSizeType);
62     itkSetMacro(TransformType, unsigned int);
63     itkSetMacro(MaskFileName, std::string);
64     itkSetMacro(BLUTSplineOrders, typename BLUTCoefficientImageType::SizeType);
65     
66     /** DeformationFieldImageFilter produces a vector image. */
67     virtual void GenerateOutputInformation( void );
68
69   private:
70     
71     ConvertBLUTCoeffsToVFFilter();
72     ~ConvertBLUTCoeffsToVFFilter() {};
73     
74     virtual void GenerateData();
75
76     bool m_Verbose;
77     unsigned int m_TransformType;
78     typename BLUTTransformType::Pointer m_BLUTTransform;
79     typename ITKTransformType::Pointer m_ITKTransform;
80     typename GenericTransformType::Pointer m_GenericTransform;
81     
82     std::string m_InputFileName, m_LikeFileName, m_MaskFileName;
83     OutputImageSizeType m_OutputSize;
84     OutputImageSpacingType m_OutputSpacing;
85     OutputImagePointType m_OutputOrigin;
86     typename BLUTCoefficientImageType::SizeType m_BLUTSplineOrders;
87     typename ConvertorType::Pointer m_Filter;
88   };
89 }
90
91 #include "clitkConvertBLUTCoeffsToVFFilter.txx"
92
93 #endif // clitkConvertBLUTCoeffsToVFFilter_h