1 #ifndef __fpa__Image__SkeletonFilter__h__
2 #define __fpa__Image__SkeletonFilter__h__
4 #include <itkProcessObject.h>
5 #include <itkSimpleDataObjectDecorator.h>
6 #include <fpa/Image/MinimumSpanningTree.h>
7 #include <cpExtensions/DataStructures/Skeleton.h>
16 template< class _TDistanceMap, class _TCostMap >
18 : public itk::ProcessObject
21 typedef SkeletonFilter Self;
22 typedef itk::ProcessObject Superclass;
23 typedef itk::SmartPointer< Self > Pointer;
24 typedef itk::SmartPointer< const Self > ConstPointer;
26 #ifdef ITK_USE_CONCEPT_CHECKING
29 ( itk::Concept::SameDimension< _TDistanceMap::ImageDimension, _TCostMap::ImageDimension > )
32 typedef _TDistanceMap TDistanceMap;
33 typedef _TCostMap TCostMap;
34 typedef typename TCostMap::IndexType TIndex;
35 typedef MinimumSpanningTree< TCostMap::ImageDimension > TMST;
37 cpExtensions::DataStructures::Skeleton< TCostMap::ImageDimension >
39 typedef itk::Image< unsigned char, _TCostMap::ImageDimension > TMarks;
42 itk::Functor::IndexLexicographicCompare< _TCostMap::ImageDimension >
44 typedef std::set< TIndex, TIndexCompare > TIndicesData;
45 typedef itk::SimpleDataObjectDecorator< TIndicesData > TIndices;
49 itkTypeMacro( fpa::Image::SkeletonFilter, itk::Object );
52 _TDistanceMap* GetDistanceMap( );
53 const _TDistanceMap* GetDistanceMap( ) const;
54 void SetDistanceMap( _TDistanceMap* dmap );
56 _TCostMap* GetCostMap( );
57 const _TCostMap* GetCostMap( ) const;
58 void SetCostMap( _TCostMap* cmap );
60 TMST* GetMinimumSpanningTree( );
61 const TMST* GetMinimumSpanningTree( ) const;
62 void SetMinimumSpanningTree( TMST* mst );
64 TIndices* GetEndPoints( );
65 const TIndices* GetEndPoints( ) const;
67 TIndices* GetBifurcations( );
68 const TIndices* GetBifurcations( ) const;
70 TSkeleton* GetSkeleton( );
71 const TSkeleton* GetSkeleton( ) const;
74 const TMarks* GetMarks( ) const;
78 virtual ~SkeletonFilter( );
80 virtual void GenerateData( ) fpa_OVERRIDE;
83 const TDistanceMap* dmap,
86 TIndicesData& end_points
90 const TDistanceMap* dmap,
93 const TIndicesData& end_points,
94 TIndicesData& bifurcations,
99 // Purposely not defined
100 SkeletonFilter( const Self& other );
101 Self& operator=( const Self& other );
108 #ifndef ITK_MANUAL_INSTANTIATION
109 # include <fpa/Image/SkeletonFilter.hxx>
110 #endif // ITK_MANUAL_INSTANTIATION
112 #endif // __fpa__Image__SkeletonFilter__h__