// ------------------------------------------------------------------------- // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co) // ------------------------------------------------------------------------- #ifndef __cpExtensions__Algorithms__MultiScaleGaussianImageFilter__h__ #define __cpExtensions__Algorithms__MultiScaleGaussianImageFilter__h__ #include #include #include namespace cpExtensions { namespace Algorithms { /** */ template< class I, class O > class MultiScaleGaussianImageFilter : public itk::ImageToImageFilter< I, O > { public: typedef MultiScaleGaussianImageFilter Self; typedef itk::ImageToImageFilter< I, O > Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef I TInputImage; typedef O TOutputImage; typedef std::set< double > TScalesContainer; protected: /** */ class _Greater { public: typedef typename O::PixelType _T; public: _Greater( ); virtual ~_Greater( ); bool operator!=( const _Greater& b ) const; bool operator==( const _Greater& b ) const; inline _T operator()( const _T& a ) const; inline _T operator()( const _T& a, const _T& b ) const; }; public: itkNewMacro( Self ); itkTypeMacro( MultiScaleGaussianImageFilter, itkImageToImageFilter ); public: void AddScale( const double& s ); unsigned long GetNumberOfScales( ) const; protected: MultiScaleGaussianImageFilter( ); virtual ~MultiScaleGaussianImageFilter( ); virtual void GenerateData( ) cpExtensions_OVERRIDE; template< class F > void _GenerateData( ); private: // Purposely not implemented. MultiScaleGaussianImageFilter( const Self& ); void operator=( const Self& ); protected: TScalesContainer m_Scales; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __cpExtensions__Algorithms__MultiScaleGaussianImageFilter__h__ // eof - $RCSfile$