1 #ifndef __clitkForwardWarpImageFilter_h
2 #define __clitkForwardWarpImageFilter_h
3 #include "clitkImageCommon.h"
6 #include "itkImageToImageFilter.h"
8 #include "itkImageRegionIterator.h"
9 #include "itkImageRegionIteratorWithIndex.h"
10 #include "itkNumericTraits.h"
11 #include "itkSimpleFastMutexLock.h"
16 template < class InputImageType, class OutputImageType, class DeformationFieldType >
17 class ForwardWarpImageFilter : public itk::ImageToImageFilter<InputImageType, OutputImageType>
21 typedef ForwardWarpImageFilter Self;
22 typedef itk::ImageToImageFilter<InputImageType,OutputImageType> Superclass;
23 typedef itk::SmartPointer<Self> Pointer;
24 typedef itk::SmartPointer<const Self> ConstPointer;
27 /** Method for creation through the object factory. */
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 );
40 typedef double CoordRepType;
41 typedef itk::Image<double, ImageDimension> WeightsImageType;
42 typedef itk::Image<itk::SimpleFastMutexLock, ImageDimension> MutexImageType;
45 typedef itk::Point<CoordRepType,itkGetStaticConstMacro(ImageDimension)> PointType;
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;
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 )
59 m_NumberOfThreadsIsGiven=true;
62 itkSetMacro(ThreadSafe, bool);
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 */
80 ForwardWarpImageFilter();
81 ~ForwardWarpImageFilter() {};
87 bool m_NumberOfThreadsIsGiven;
88 unsigned int m_NumberOfThreads;
89 PixelType m_EdgePaddingValue;
90 typename DeformationFieldType::Pointer m_DeformationField;
99 } // end namespace clitk
100 #ifndef ITK_MANUAL_INSTANTIATION
101 #include "clitkForwardWarpImageFilter.txx"
104 #endif // #define __clitkForwardWarpImageFilter_h