// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Image__Algorithm__h__ #define __fpa__Image__Algorithm__h__ #include #include #include namespace fpa { namespace Image { /** */ template< class _TTraits > class Algorithm : public fpa::Base::Algorithm< _TTraits > { public: typedef _TTraits TTraits; typedef fpa::Base::Algorithm< _TTraits > Superclass; typedef Algorithm Self; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef typename TTraits::TFrontId TFrontId; typedef typename TTraits::TInputImage TInputImage; typedef typename TTraits::TInputValue TInputValue; typedef typename TTraits::TNeighborhood TNeighborhood; typedef typename TTraits::TNode TNode; typedef typename TTraits::TNodes TNodes; typedef typename TTraits::TOutputImage TOutputImage; typedef typename TTraits::TOutputValue TOutputValue; typedef typename TTraits::TSeeds TSeeds; typedef typename TTraits::TVertex TVertex; typedef itk::Image< TFrontId, TTraits::Dimension > TMarks; /* TODO typedef _TMarksInterface TMarksInterface; typedef _TSeedsInterface TSeedsInterface; typedef typename TSeedsInterface::TTraits TTraits; typedef typename TTraits::TInputImage TInputImage; typedef typename TTraits::TOutputImage TOutputImage; typedef typename TTraits::TInputValue TInputValue; typedef typename TTraits::TOutputValue TOutputValue; typedef typename TTraits::TFrontId TFrontId; typedef typename TTraits::TNeighborhood TNeighborhood; typedef typename TTraits::TNode TNode; typedef typename TTraits::TNodes TNodes; typedef typename TTraits::TSeeds TSeeds; typedef typename TTraits::TVertex TVertex; typedef typename TTraits::TPoint TPoint; typedef itk::ImageToImageFilter< TInputImage, TOutputImage > TFilter; typedef fpa::Base::Algorithm< TFilter, TMarksInterface, TSeedsInterface > Superclass; typedef Algorithm Self; */ public: itkTypeMacro( fpa::Image::Algorithm, fpa::Base::Algorithm ); itkGetConstMacro( NeigborhoodOrder, unsigned int ); itkSetMacro( NeigborhoodOrder, unsigned int ); public: TMarks* GetMarks( ); const TMarks* GetMarks( ) const; protected: Algorithm( ); virtual ~Algorithm( ); virtual TNodes _UnifySeeds( ) override; virtual void _ConfigureOutput( const TOutputValue& v ) override; virtual TNeighborhood _GetNeighbors( const TVertex& v ) const override; virtual TInputValue _GetInputValue( const TVertex& v ) const override; virtual TOutputValue _GetOutputValue( const TVertex& v ) const override; virtual void _UpdateOutputValue( TNode& n ) override; virtual bool _IsMarked( const TVertex& v ) const override; virtual unsigned long _GetMark( const TVertex& v ) const override; virtual void _Mark( const TVertex& v, unsigned long frontId ) override; private: // Purposely not implemented. Algorithm( const Self& other ); Self& operator=( const Self& other ); protected: unsigned long m_MarksIdx; unsigned int m_NeigborhoodOrder; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __fpa__Image__Algorithm__h__ // eof - $RCSfile$