]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Image/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.h
002afb4dba3898339455580c24d1d403830f7300
[FrontAlgorithms.git] / lib / fpa / Image / ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.h
1 #ifndef __FPA__IMAGE__EXTRACTENDPOINTSANDBIFURCATIONSFROMMINIMUMSPANNINGTREE__H__
2 #define __FPA__IMAGE__EXTRACTENDPOINTSANDBIFURCATIONSFROMMINIMUMSPANNINGTREE__H__
3
4 #include <fpa/Base/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.h>
5 #include <fpa/Base/ImageSkeleton.h>
6
7 namespace fpa
8 {
9   namespace Image
10   {
11     /**
12      */
13     template< class _TImage, class _TMST >
14     class ExtractEndPointsAndBifurcationsFromMinimumSpanningTree
15       : public fpa::Base::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree< _TMST >
16     {
17     public:
18       typedef
19         fpa::Base::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree< _TMST >
20         Superclass;
21       typedef ExtractEndPointsAndBifurcationsFromMinimumSpanningTree Self;
22       typedef itk::SmartPointer< Self >                              Pointer;
23       typedef itk::SmartPointer< const Self >                        ConstPointer;
24
25       typedef _TImage TImage;
26       typedef typename Superclass::TMinimumSpanningTree TMinimumSpanningTree;
27       typedef typename Superclass::TVertex              TVertex;
28
29       typedef itk::Image< unsigned short, TImage::ImageDimension > TMarkImage;
30       typedef fpa::Base::ImageSkeleton< _TMST > TSkeleton;
31
32     public:
33       itkNewMacro( Self );
34       itkTypeMacro(
35         ExtractEndPointsAndBifurcationsFromMinimumSpanningTree,
36         fpa::Base::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree
37         );
38
39       itkBooleanMacro( SquaredDistanceMap );
40       itkGetConstMacro( SquaredDistanceMap, bool );
41       itkSetMacro( SquaredDistanceMap, bool );
42
43     public:
44       const TImage* GetCostsImage( );
45       const TImage* GetDistanceMap( );
46       TSkeleton* GetSkeleton( );
47       void SetCostsImage( TImage* image );
48       void SetDistanceMap( TImage* image );
49
50     protected:
51       ExtractEndPointsAndBifurcationsFromMinimumSpanningTree( );
52       virtual ~ExtractEndPointsAndBifurcationsFromMinimumSpanningTree( );
53
54       virtual void GenerateData( ) ITK_OVERRIDE;
55
56       virtual void _MarkSkeleton(
57         const TVertex& v, const unsigned long& l
58         ) ITK_OVERRIDE;
59       virtual void _MarkSphere(
60         const TVertex& v,
61         const double& r,
62         const unsigned long& l
63         ) ITK_OVERRIDE;
64       virtual unsigned long _Mark( const TVertex& v ) ITK_OVERRIDE;
65       virtual unsigned long _SkeletonMark( const TVertex& v ) ITK_OVERRIDE;
66       virtual double _Radius( const TVertex& v ) ITK_OVERRIDE;
67
68       virtual void _Tmp( ) ITK_OVERRIDE
69         {
70         }
71
72     private:
73       // Purposely not implemented
74       ExtractEndPointsAndBifurcationsFromMinimumSpanningTree( const Self& other );
75       Self& operator=( const Self& other );
76
77     protected:
78       typename TMarkImage::Pointer m_MarkImage;
79       typename TMarkImage::Pointer m_SkeletonImage;
80       bool m_SquaredDistanceMap;
81     };
82
83   } // ecapseman
84
85 } // ecapseman
86
87 #ifndef ITK_MANUAL_INSTANTIATION
88 #include <fpa/Image/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.hxx>
89 #endif // ITK_MANUAL_INSTANTIATION
90
91 #endif // __FPA__IMAGE__EXTRACTENDPOINTSANDBIFURCATIONSFROMMINIMUMSPANNINGTREE__H__
92
93 // eof - $RCSfile$