]> Creatis software - clitk.git/blob - registration/clitkConvertBLUTCoeffsToVFFilter.h
Debug RTStruct conversion with empty struc
[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) && (ITK_VERSION_MINOR < 6)
11 #  include "itkTransformToDisplacementFieldSource.h"
12 #else
13 #  include "itkTransformToDisplacementFieldFilter.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, 3> ITKTransformType;
45     typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 0> ITKTransformTypeZero;
46     typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 1> ITKTransformTypeOne;
47     typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 2> ITKTransformTypeTwo;
48     typedef itk::BSplineDeformableTransform<double, TDVFType::ImageDimension, 4> ITKTransformTypeFour;
49
50     typedef itk::Transform< double, TDVFType::ImageDimension, TDVFType::ImageDimension> GenericTransformType;
51     
52 #if (ITK_VERSION_MAJOR == 4) && (ITK_VERSION_MINOR < 6)
53   typedef itk::TransformToDisplacementFieldSource<OutputImageType, double> ConvertorType;
54 #else
55   typedef itk::TransformToDisplacementFieldFilter<OutputImageType, double> ConvertorType;
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