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