1 #ifndef __fpa__Image__SkeletonFilter__h__
2 #define __fpa__Image__SkeletonFilter__h__
4 #include <fpa/Image/Dijkstra.h>
5 #include <cpExtensions/DataStructures/Skeleton.h>
6 #include <itkSimpleDataObjectDecorator.h>
12 #include <itkProcessObject.h>
13 #include <fpa/Image/MinimumSpanningTree.h>
22 template< class _TImage >
24 : public Dijkstra< _TImage, _TImage >
27 typedef SkeletonFilter Self;
28 typedef Dijkstra< _TImage, _TImage > Superclass;
29 typedef itk::SmartPointer< Self > Pointer;
30 typedef itk::SmartPointer< const Self > ConstPointer;
32 typedef _TImage TImage;
34 Dimension, unsigned int, TImage::ImageDimension
37 typedef typename Superclass::TMST TMST;
38 typedef typename TImage::IndexType TIndex;
41 itk::Functor::IndexLexicographicCompare< Self::Dimension > TIndexCmp;
42 typedef std::set< TIndex, TIndexCmp > TIndicesData;
43 typedef itk::SimpleDataObjectDecorator< TIndicesData > TIndices;
44 typedef itk::Image< unsigned char, Self::Dimension > TMarks;
46 cpExtensions::DataStructures::Skeleton< Self::Dimension > TSkeleton;
49 typedef typename Superclass::_TQueueNode _TQueueNode;
51 std::multimap< double, TIndex, std::greater< double > >
56 itkTypeMacro( fpa::Image::SkeletonFilter, itk::Object );
59 TIndices* GetEndPoints( );
60 TIndices* GetBifurcations( );
61 TSkeleton* GetSkeleton( );
66 virtual ~SkeletonFilter( );
68 virtual void _BeforeGenerateData( ) fpa_OVERRIDE;
69 virtual void _UpdateResult( const _TQueueNode& n ) fpa_OVERRIDE;
70 virtual void _AfterGenerateData( ) fpa_OVERRIDE;
76 virtual void GenerateData( ) fpa_OVERRIDE;
77 const TDistanceMap* dmap,
80 TIndicesData& end_points
82 const TDistanceMap* dmap,
85 const TIndicesData& end_points,
86 TIndicesData& bifurcations,
92 // Purposely not defined
93 SkeletonFilter( const Self& other );
94 Self& operator=( const Self& other );
97 _TSkeletonQueue m_SkeletonQueue;
99 unsigned long m_EndPointsIdx;
100 unsigned long m_BifurcationsIdx;
101 unsigned long m_SkeletonIdx;
102 unsigned long m_MarksIdx;
109 #ifndef ITK_MANUAL_INSTANTIATION
110 # include <fpa/Image/SkeletonFilter.hxx>
111 #endif // ITK_MANUAL_INSTANTIATION
113 #endif // __fpa__Image__SkeletonFilter__h__