// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Image__ExtractAxisFilter__h__ #define __fpa__Image__ExtractAxisFilter__h__ #include #include #include #include namespace fpa { namespace Image { /** */ template< class _TInputImage, class _TScalar, class _TCenterness = itk::SignedMaurerDistanceMapImageFilter< _TInputImage, itk::Image< _TScalar, _TInputImage::ImageDimension > > > class ExtractAxisFilter : public itk::ProcessObject { public: typedef ExtractAxisFilter Self; typedef itk::ProcessObject Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef _TInputImage TInputImage; typedef _TScalar TScalar; typedef _TCenterness TCenterness; itkStaticConstMacro( Dimension, unsigned int, TInputImage::ImageDimension ); typedef typename TCenterness::OutputImageType TOutputImage; typedef typename TInputImage::IndexType TIndex; typedef fpa::Image::PolyLineParametricPath< Self::Dimension > TPath; typedef fpa::Image::Dijkstra< TOutputImage, TOutputImage > TDijkstra; public: itkNewMacro( Self ); itkTypeMacro( fpa::Image::ExtractAxisFilter, fpa::Image::Dijkstra ); itkGetConstObjectMacro( Centerness, TCenterness ); itkGetObjectMacro( Centerness, TCenterness ); public: virtual itk::ModifiedTimeType GetMTime( ) const override; virtual void AddSeed( const TVertex& seed ); virtual void AddSeed( const TPoint& seed ); virtual void ClearSeeds( ); void SetInput( TInputImage* input ); TInputImage* GetInput( ); const TInputImage* GetInput( ) const; TPath* GetOutput( ); const TPath* GetOutput( ) const; protected: ExtractAxisFilter( ); virtual ~ExtractAxisFilter( ); virtual void GenerateData( ) override; private: // Purposely not implemented. ExtractAxisFilter( const Self& other ); Self& operator=( const Self& other ); protected: typename TCenterness::Pointer m_Centerness; typename TDijkstra::Pointer m_Dijkstra; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __fpa__Image__ExtractAxisFilter__h__ // eof - $RCSfile$