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__
10 #include <itkImageToImageFilter.h>
11 #include <itkJoinSeriesImageFilter.h>
13 #include <ivq/Config.h>
14 #include <ivq/ITK/IsoImageSlicer.h>
22 template< class _TImage, class _TCurve >
24 : public itk::ImageToImageFilter< _TImage, _TImage >
27 typedef CPRImageFilter Self;
28 typedef itk::ImageToImageFilter< _TImage, _TImage > Superclass;
29 typedef itk::SmartPointer< Self > Pointer;
30 typedef itk::SmartPointer< const Self > ConstPointer;
32 typedef _TImage TImage;
33 typedef _TCurve TCurve;
34 typedef typename TCurve::TScalar TScalar;
36 typedef ivq::ITK::IsoImageSlicer< TImage, TScalar > TSlicer;
37 typedef typename TSlicer::TInterpolateFunction TInterpolateFunction;
38 typedef typename TSlicer::TSliceImage TSliceImage;
40 typedef itk::JoinSeriesImageFilter< TSliceImage, TImage > TJoinFilter;
44 itkTypeMacro( CPRImageFilter, itk::ImageToImageFilter );
46 itkGetConstMacro( SliceRadius, double );
47 itkGetObjectMacro( Interpolator, TInterpolateFunction );
49 itkSetMacro( SliceRadius, double );
50 itkSetObjectMacro( Interpolator, TInterpolateFunction );
52 ivqITKInputMacro( InputCurve, _TCurve );
56 virtual ~CPRImageFilter( );
58 virtual void GenerateOutputInformation( ) override;
59 virtual void GenerateInputRequestedRegion( ) override;
60 virtual void GenerateData( ) override;
64 typename TInterpolateFunction::Pointer m_Interpolator;
66 std::vector< typename TSlicer::Pointer > m_Slicers;
67 typename TJoinFilter::Pointer m_Join;
74 #ifndef ITK_MANUAL_INSTANTIATION
75 # include <ivq/ITK/CPRImageFilter.hxx>
76 #endif // ITK_MANUAL_INSTANTIATION
77 #endif // __ivq__ITK__CPRImageFilter__h__