]> Creatis software - cpPlugins.git/blob - lib/ivq/ITK/CPRImageFilter.h
...
[cpPlugins.git] / lib / ivq / ITK / CPRImageFilter.h
1 // =======================================================================
2 // @author: Leonardo Florez-Valencia
3 // @email: florez-l@javeriana.edu.co
4 // =======================================================================
5 #ifndef __ivq__ITK__CPRImageFilter__h__
6 #define __ivq__ITK__CPRImageFilter__h__
7
8 #include <vector>
9
10 #include <itkImageToImageFilter.h>
11 #include <itkJoinSeriesImageFilter.h>
12
13 #include <ivq/Config.h>
14 #include <ivq/ITK/IsoImageSlicer.h>
15
16 namespace ivq
17 {
18   namespace ITK
19   {
20     /**
21      */
22     template< class _TImage, class _TCurve >
23     class CPRImageFilter
24       : public itk::ImageToImageFilter< _TImage, _TImage >
25     {
26     public:
27       typedef CPRImageFilter                              Self;
28       typedef itk::ImageToImageFilter< _TImage, _TImage > Superclass;
29       typedef itk::SmartPointer< Self >                   Pointer;
30       typedef itk::SmartPointer< const Self >             ConstPointer;
31
32       typedef _TImage TImage;
33       typedef _TCurve TCurve;
34       typedef typename TCurve::TScalar TScalar;
35
36       typedef ivq::ITK::IsoImageSlicer< TImage, TScalar > TSlicer;
37       typedef typename TSlicer::TInterpolateFunction      TInterpolateFunction;
38       typedef typename TSlicer::TSliceImage               TSliceImage;
39
40       typedef itk::JoinSeriesImageFilter< TSliceImage, TImage > TJoinFilter;
41
42     public:
43       itkNewMacro( Self );
44       itkTypeMacro( CPRImageFilter, itk::ImageToImageFilter );
45
46       itkGetConstMacro( SliceRadius, double );
47       itkGetObjectMacro( Interpolator, TInterpolateFunction );
48
49       itkSetMacro( SliceRadius, double );
50       itkSetObjectMacro( Interpolator, TInterpolateFunction );
51
52       ivqITKInputMacro( InputCurve, _TCurve );
53
54     protected:
55       CPRImageFilter( );
56       virtual ~CPRImageFilter( );
57
58       virtual void GenerateOutputInformation( ) override;
59       virtual void GenerateInputRequestedRegion( ) override;
60       virtual void GenerateData( ) override;
61
62     protected:
63       double m_SliceRadius;
64       typename TInterpolateFunction::Pointer m_Interpolator;
65
66       std::vector< typename TSlicer::Pointer > m_Slicers;
67       typename TJoinFilter::Pointer            m_Join;
68     };
69
70   } // ecapseman
71
72 } // ecapseman
73
74 #ifndef ITK_MANUAL_INSTANTIATION
75 #  include <ivq/ITK/CPRImageFilter.hxx>
76 #endif // ITK_MANUAL_INSTANTIATION
77 #endif // __ivq__ITK__CPRImageFilter__h__
78
79 // eof - $RCSfile$