]> Creatis software - clitk.git/blob - itk/clitkForwardWarpImageFilter.h
removed headers
[clitk.git] / itk / clitkForwardWarpImageFilter.h
1 #ifndef __clitkForwardWarpImageFilter_h
2 #define __clitkForwardWarpImageFilter_h
3 #include "clitkImageCommon.h"
4
5 //itk include
6 #include "itkImageToImageFilter.h"
7 #include "itkImage.h"
8 #include "itkImageRegionIterator.h"
9 #include "itkImageRegionIteratorWithIndex.h"
10 #include "itkNumericTraits.h"
11 #include "itkSimpleFastMutexLock.h"
12
13 namespace clitk
14 {
15   
16   template <  class InputImageType,  class OutputImageType,  class DeformationFieldType  >  
17   class ForwardWarpImageFilter : public itk::ImageToImageFilter<InputImageType, OutputImageType>
18   
19   {
20   public:
21     typedef ForwardWarpImageFilter     Self;
22     typedef itk::ImageToImageFilter<InputImageType,OutputImageType>     Superclass;
23     typedef itk::SmartPointer<Self>            Pointer;
24     typedef itk::SmartPointer<const Self>      ConstPointer;
25
26    
27     /** Method for creation through the object factory. */
28     itkNewMacro(Self);  
29   
30     /** Determine the image dimension. */
31     itkStaticConstMacro(ImageDimension, unsigned int,
32                         InputImageType::ImageDimension );
33     itkStaticConstMacro(InputImageDimension, unsigned int,
34                         OutputImageType::ImageDimension );
35     itkStaticConstMacro(DeformationFieldDimension, unsigned int,
36                         DeformationFieldType::ImageDimension );
37
38
39     //Some other typedefs
40     typedef double CoordRepType;
41     typedef itk::Image<double, ImageDimension> WeightsImageType;
42     typedef itk::Image<itk::SimpleFastMutexLock, ImageDimension> MutexImageType;
43
44     /** Point type */
45     typedef itk::Point<CoordRepType,itkGetStaticConstMacro(ImageDimension)> PointType;
46
47     /** Inherit some types from the superclass. */
48     typedef typename OutputImageType::IndexType        IndexType;
49     typedef typename OutputImageType::SizeType         SizeType;
50     typedef typename OutputImageType::PixelType        PixelType;
51     typedef typename OutputImageType::SpacingType      SpacingType;
52     
53     //Set & Get Methods (inline)
54     itkSetMacro( Verbose, bool);
55     itkSetMacro( EdgePaddingValue, PixelType );
56     itkSetMacro( DeformationField, typename DeformationFieldType::Pointer);
57     void SetNumberOfThreads(unsigned int r )
58     {
59       m_NumberOfThreadsIsGiven=true;
60       m_NumberOfThreads=r;
61     }
62     itkSetMacro(ThreadSafe, bool);
63  
64   
65     //ITK concept checking, why not?  
66 #ifdef ITK_USE_CONCEPT_CHECKING
67     /** Begin concept checking */
68     itkConceptMacro(SameDimensionCheck1,
69                     (itk::Concept::SameDimension<ImageDimension, InputImageDimension>));
70     itkConceptMacro(SameDimensionCheck2,
71                     (itk::Concept::SameDimension<ImageDimension, DeformationFieldDimension>));
72     itkConceptMacro(InputHasNumericTraitsCheck,
73                     (itk::Concept::HasNumericTraits<typename InputImageType::PixelType>));
74     itkConceptMacro(DeformationFieldHasNumericTraitsCheck,
75                     (itk::Concept::HasNumericTraits<typename DeformationFieldType::PixelType::ValueType>));
76     /** End concept checking */
77 #endif
78
79   protected:
80     ForwardWarpImageFilter();
81     ~ForwardWarpImageFilter() {};
82     void GenerateData( );
83
84   
85   private:
86     bool m_Verbose;
87     bool m_NumberOfThreadsIsGiven;
88     unsigned int m_NumberOfThreads;
89     PixelType m_EdgePaddingValue;
90     typename DeformationFieldType::Pointer m_DeformationField;
91     bool m_ThreadSafe;
92  
93   };
94
95
96
97
98
99 } // end namespace clitk
100 #ifndef ITK_MANUAL_INSTANTIATION
101 #include "clitkForwardWarpImageFilter.txx"
102 #endif
103
104 #endif // #define __clitkForwardWarpImageFilter_h