--- /dev/null
+// =========================================================================
+// @author Leonardo Florez Valencia
+// @email florez-l@javeriana.edu.co
+// =========================================================================
+
+#ifndef __fpa__Image__ExtractAxisFilter__h__
+#define __fpa__Image__ExtractAxisFilter__h__
+
+#include <itkProcessObject.h>
+#include <itkSignedMaurerDistanceMapImageFilter.h>
+
+#include <fpa/Image/Dijkstra.h>
+#include <fpa/Image/PolyLineParametricPath.h>
+
+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 <fpa/Image/ExtractAxisFilter.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
+
+#endif // __fpa__Image__ExtractAxisFilter__h__
+
+// eof - $RCSfile$