]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Image/ExtractAxisFilter.h
...
[FrontAlgorithms.git] / lib / fpa / Image / ExtractAxisFilter.h
diff --git a/lib/fpa/Image/ExtractAxisFilter.h b/lib/fpa/Image/ExtractAxisFilter.h
new file mode 100644 (file)
index 0000000..25eee47
--- /dev/null
@@ -0,0 +1,93 @@
+// =========================================================================
+// @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$