]> Creatis software - clitk.git/blob - registration/clitkConvertBLUTCoeffsToVFFilter.h
Merge branch 'master' of git.creatis.insa-lyon.fr:clitk
[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 #  if ITK_VERSION_MINOR < 6
12 #    include "itkTransformToDisplacementFieldSource.h"
13 #  else
14 #    include "itkTransformToDisplacementFieldFilter.h"
15 #  endif
16 #else
17 #  include "itkTransformToDeformationFieldSource.h"
18 #endif
19
20 namespace clitk 
21 {
22   template <class TDVFType>
23   class ConvertBLUTCoeffsToVFFilter : 
24     public itk::ImageSource<TDVFType>
25   {
26   public:
27
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;
33     
34      // ImageTypes
35     typedef itk::ImageIOBase LikeImageType;
36     typedef typename LikeImageType::Pointer LikeImagePointer;
37
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;
45
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;
49
50     typedef itk::Transform< double, TDVFType::ImageDimension, TDVFType::ImageDimension> GenericTransformType;
51     
52 #if ITK_VERSION_MAJOR >= 4
53 #  if ITK_VERSION_MINOR < 6
54     typedef itk::TransformToDisplacementFieldSource<OutputImageType, double> ConvertorType;
55 #  else
56     typedef itk::TransformToDisplacementFieldFilter<OutputImageType, double> ConvertorType;
57 #  endif
58 #else
59     typedef itk::TransformToDeformationFieldSource<OutputImageType, double> ConvertorType;
60 #endif
61
62     itkNewMacro(Self);
63     
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);
73     
74     /** DeformationFieldImageFilter produces a vector image. */
75     virtual void GenerateOutputInformation( void );
76
77   private:
78     
79     ConvertBLUTCoeffsToVFFilter();
80     ~ConvertBLUTCoeffsToVFFilter() {};
81     
82     virtual void GenerateData();
83
84     bool m_Verbose;
85     unsigned int m_TransformType;
86     typename BLUTTransformType::Pointer m_BLUTTransform;
87     typename ITKTransformType::Pointer m_ITKTransform;
88     typename GenericTransformType::Pointer m_GenericTransform;
89     
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;
96   };
97 }
98
99 #include "clitkConvertBLUTCoeffsToVFFilter.txx"
100
101 #endif // clitkConvertBLUTCoeffsToVFFilter_h