]> 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 #endif
17
18 namespace clitk 
19 {
20   template <class TDVFType>
21   class ConvertBLUTCoeffsToVFFilter : 
22     public itk::ImageSource<TDVFType>
23   {
24   public:
25
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;
31     
32      // ImageTypes
33     typedef itk::ImageIOBase LikeImageType;
34     typedef typename LikeImageType::Pointer LikeImagePointer;
35
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;
43
44     typedef clitk::BSplineDeformableTransform<double, TDVFType::ImageDimension, TDVFType::ImageDimension> BLUTTransformType;
45     typedef typename BLUTTransformType::CoefficientImageType BLUTCoefficientImageType;
46     typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, TDVFType::ImageDimension> ITKTransformType;
47
48     typedef itk::Transform< double, TDVFType::ImageDimension, TDVFType::ImageDimension> GenericTransformType;
49     
50 #if ITK_VERSION_MAJOR >= 4
51 #  if ITK_VERSION_MINOR < 6
52     typedef itk::TransformToDisplacementFieldSource<OutputImageType, double> ConvertorType;
53 #  else
54     typedef itk::TransformToDisplacementFieldFilter<OutputImageType, double> ConvertorType;
55 #  endif
56 #endif
57
58     itkNewMacro(Self);
59     
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);
69     
70     /** DeformationFieldImageFilter produces a vector image. */
71     virtual void GenerateOutputInformation( void );
72
73   private:
74     
75     ConvertBLUTCoeffsToVFFilter();
76     ~ConvertBLUTCoeffsToVFFilter() {};
77     
78     virtual void GenerateData();
79
80     bool m_Verbose;
81     unsigned int m_TransformType;
82     typename BLUTTransformType::Pointer m_BLUTTransform;
83     typename ITKTransformType::Pointer m_ITKTransform;
84     typename GenericTransformType::Pointer m_GenericTransform;
85     
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;
92   };
93 }
94
95 #include "clitkConvertBLUTCoeffsToVFFilter.txx"
96
97 #endif // clitkConvertBLUTCoeffsToVFFilter_h