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