1 // -------------------------------------------------------------------------
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // -------------------------------------------------------------------------
5 #ifndef __CPEXTENSIONS__ALGORITHMS__MULTISCALEGAUSSIANIMAGEFILTER__H__
6 #define __CPEXTENSIONS__ALGORITHMS__MULTISCALEGAUSSIANIMAGEFILTER__H__
9 #include <itkImageToImageFilter.h>
11 namespace cpExtensions
17 template< class I, class O >
18 class MultiScaleGaussianImageFilter
19 : public itk::ImageToImageFilter< I, O >
22 typedef MultiScaleGaussianImageFilter Self;
23 typedef itk::ImageToImageFilter< I, O > Superclass;
24 typedef itk::SmartPointer< Self > Pointer;
25 typedef itk::SmartPointer< const Self > ConstPointer;
27 typedef I TInputImage;
28 typedef O TOutputImage;
30 typedef std::set< double > TScalesContainer;
46 typedef typename O::PixelType _T;
51 bool operator!=( const _Greater& b ) const;
52 bool operator==( const _Greater& b ) const;
53 inline _T operator()( const _T& a ) const;
54 inline _T operator()( const _T& a, const _T& b ) const;
59 itkTypeMacro( MultiScaleGaussianImageFilter, itkImageToImageFilter );
62 void SetFilterToGradient( );
63 void SetFilterToGradientMagnitude( );
64 void SetFilterToHessian( );
66 bool IsGradientFilter( ) const;
67 bool IsGradientMagnitudeFilter( ) const;
68 bool IsHessianFilter( ) const;
70 void AddScale( const double& s );
71 unsigned long GetNumberOfScales( ) const;
74 MultiScaleGaussianImageFilter( );
75 virtual ~MultiScaleGaussianImageFilter( );
77 virtual void GenerateData( );
80 void _GenerateData( );
83 // Purposely not implemented.
84 MultiScaleGaussianImageFilter( const Self& );
85 void operator=( const Self& );
88 TScalesContainer m_Scales;
96 #ifndef ITK_MANUAL_INSTANTIATION
97 #include <cpExtensions/Algorithms/MultiScaleGaussianImageFilter.hxx>
98 #endif // ITK_MANUAL_INSTANTIATION
100 #endif // __CPEXTENSIONS__ALGORITHMS__MULTISCALEGAUSSIANIMAGEFILTER__H__