1 #ifndef __fpa__Image__SkeletonFilter__h__
2 #define __fpa__Image__SkeletonFilter__h__
4 #include <itkProcessObject.h>
5 #include <fpa/Image/MinimumSpanningTree.h>
6 #include <cpExtensions/DataStructures/Skeleton.h>
15 template< class _TDistanceMap, class _TCostMap >
17 : public itk::ProcessObject
20 typedef SkeletonFilter Self;
21 typedef itk::ProcessObject Superclass;
22 typedef itk::SmartPointer< Self > Pointer;
23 typedef itk::SmartPointer< const Self > ConstPointer;
25 #ifdef ITK_USE_CONCEPT_CHECKING
28 ( itk::Concept::SameDimension< _TDistanceMap::ImageDimension, _TCostMap::ImageDimension > )
31 typedef _TDistanceMap TDistanceMap;
32 typedef _TCostMap TCostMap;
33 typedef typename TCostMap::IndexType TIndex;
34 typedef MinimumSpanningTree< TCostMap::ImageDimension > TMST;
36 cpExtensions::DataStructures::Skeleton< TCostMap::ImageDimension >
38 typedef itk::Image< unsigned char, _TCostMap::ImageDimension > TMarks;
41 itk::Functor::IndexLexicographicCompare< _TCostMap::ImageDimension >
43 typedef std::set< TIndex, TIndexCompare > TIndicesData;
44 typedef itk::SimpleDataObjectDecorator< TIndicesData > TIndices;
48 itkTypeMacro( fpa::Image::SkeletonFilter, itk::Object );
51 _TDistanceMap* GetDistanceMap( );
52 const _TDistanceMap* GetDistanceMap( ) const;
53 void SetDistanceMap( _TDistanceMap* dmap );
55 _TCostMap* GetCostMap( );
56 const _TCostMap* GetCostMap( ) const;
57 void SetCostMap( _TCostMap* cmap );
59 TMST* GetMinimumSpanningTree( );
60 const TMST* GetMinimumSpanningTree( ) const;
61 void SetMinimumSpanningTree( TMST* mst );
63 TIndices* GetEndPoints( );
64 const TIndices* GetEndPoints( ) const;
66 TIndices* GetBifurcations( );
67 const TIndices* GetBifurcations( ) const;
69 TSkeleton* GetSkeleton( );
70 const TSkeleton* GetSkeleton( ) const;
73 const TMarks* GetMarks( ) const;
77 virtual ~SkeletonFilter( );
79 virtual void GenerateData( ) fpa_OVERRIDE;
82 const TDistanceMap* dmap,
85 TIndicesData& end_points
89 const TDistanceMap* dmap,
92 const TIndicesData& end_points,
93 TIndicesData& bifurcations,
98 // Purposely not defined
99 SkeletonFilter( const Self& other );
100 Self& operator=( const Self& other );
107 #ifndef ITK_MANUAL_INSTANTIATION
108 # include <fpa/Image/SkeletonFilter.hxx>
109 #endif // ITK_MANUAL_INSTANTIATION
111 #endif // __fpa__Image__SkeletonFilter__h__