#ifndef __fpa__Image__MoriRegionGrow__h__ #define __fpa__Image__MoriRegionGrow__h__ #include #include namespace fpa { namespace Image { /** */ template< class _TInputImage, class _TOutputImage > class MoriRegionGrow : public fpa::Image::RegionGrow< _TInputImage, _TOutputImage > { public: typedef MoriRegionGrow Self; typedef fpa::Image::RegionGrow< _TInputImage, _TOutputImage > Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef typename Superclass::TOutput TOutput; typedef typename Superclass::TVertex TVertex; typedef typename Superclass::TGrowFunction TGrowFunction; typedef fpa::Image::Functors::RegionGrow::BinaryThreshold< _TInputImage > TBinThresholdFunction; typedef typename _TInputImage::PixelType TPixel; protected: typedef typename Superclass::_TQueueNode _TQueueNode; typedef typename Superclass::_TQueue _TQueue; public: itkNewMacro( Self ); itkTypeMacro( fpa::Image::MoriRegionGrow, fpa::Image::RegionGrow ); itkGetConstMacro( Lower, TPixel ); itkGetConstMacro( Upper, TPixel ); itkGetConstMacro( Step, TPixel ); itkSetMacro( Lower, TPixel ); itkSetMacro( Upper, TPixel ); itkSetMacro( Step, TPixel ); protected: MoriRegionGrow( ); virtual ~MoriRegionGrow( ); virtual bool _ContinueGenerateData( ) override; virtual void _BeforeGenerateData( ) override; virtual void _AfterGenerateData( ) override; virtual void _BeforeLoop( ) override; virtual void _AfterLoop( ) override; virtual bool _UpdateValue( _TQueueNode& v, const _TQueueNode& p ) override; virtual void _UpdateResult( const _TQueueNode& n ) override; private: // Purposely not defined MoriRegionGrow( const Self& other ); Self& operator=( const Self& other ); protected: TPixel m_Lower; TPixel m_Upper; TPixel m_Step; _TQueue m_NextQueue; unsigned long m_ActualCount; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __fpa__Image__MoriRegionGrow__h__ // eof - $RCSfile$