// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Filters__Image__ExtractAxis__h__ #define __fpa__Filters__Image__ExtractAxis__h__ #include #include #include #include namespace fpa { namespace Filters { namespace Image { /** */ template< class _TInputImage, class _TScalar > class ExtractAxis : public itk::ProcessObject { public: typedef ExtractAxis Self; typedef itk::ProcessObject Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef _TInputImage TInputImage; typedef _TScalar TScalar; typedef typename TInputImage::IndexType TIndex; typedef typename TInputImage::PointType TPoint; itkStaticConstMacro( Dimension, unsigned int, TInputImage::ImageDimension ); typedef itk::Image< TScalar, Self::Dimension > TScalarImage; typedef itk::ImageToImageFilter< TInputImage, TScalarImage > TCenterness; typedef fpa::DataStructures::Image::Path< Self::Dimension > TPath; typedef fpa::Filters::Image::Dijkstra< TScalarImage, TScalarImage > TDijkstra; public: itkNewMacro( Self ); itkTypeMacro( fpa::Image::ExtractAxis, itk::ProcessObject ); itkGetConstObjectMacro( Centerness, TCenterness ); itkGetObjectMacro( Centerness, TCenterness ); itkSetObjectMacro( Centerness, TCenterness ); itkGetConstMacro( StartIndex, TIndex ); itkSetMacro( StartIndex, TIndex ); itkGetConstMacro( EndIndex, TIndex ); itkSetMacro( EndIndex, TIndex ); public: virtual itk::ModifiedTimeType GetMTime( ) const override; virtual void AddSeed( const TIndex& 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: ExtractAxis( ); virtual ~ExtractAxis( ); virtual void GenerateData( ) override; private: // Purposely not implemented. ExtractAxis( const Self& other ); Self& operator=( const Self& other ); protected: typename TCenterness::Pointer m_Centerness; typename TDijkstra::Pointer m_Dijkstra; TIndex m_StartIndex; TIndex m_EndIndex; }; } // ecapseman } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __fpa__Filters__Image__ExtractAxis__h__ // eof - $RCSfile$