]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.h
d6e97af8577dc0063cab5d9ff9946a23bbf6121c
[FrontAlgorithms.git] / lib / fpa / Base / ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.h
1 #ifndef __FPA__BASE__EXTRACTENDPOINTSANDBIFURCATIONSFROMMINIMUMSPANNINGTREE__H__
2 #define __FPA__BASE__EXTRACTENDPOINTSANDBIFURCATIONSFROMMINIMUMSPANNINGTREE__H__
3
4 #include <vector>
5 #include <itkProcessObject.h>
6 #include <itkSimpleDataObjectDecorator.h>
7
8 namespace fpa
9 {
10   namespace Base
11   {
12     /**
13      */
14     template< class _TMST >
15     class ExtractEndPointsAndBifurcationsFromMinimumSpanningTree
16       : public itk::ProcessObject
17     {
18     public:
19       typedef ExtractEndPointsAndBifurcationsFromMinimumSpanningTree Self;
20       typedef itk::ProcessObject                                     Superclass;
21       typedef itk::SmartPointer< Self >                              Pointer;
22       typedef itk::SmartPointer< const Self >                        ConstPointer;
23
24       typedef _TMST  TMinimumSpanningTree;
25       typedef typename _TMST::TVertex TVertex;
26
27       typedef itk::SimpleDataObjectDecorator< std::vector< TVertex > > TVertices;
28
29     public:
30       itkTypeMacro(
31         ExtractEndPointsAndBifurcationsFromMinimumSpanningTree,
32         itk::ProcessObject
33         );
34
35     public:
36       const TMinimumSpanningTree* GetMinimumSpanningTree( );
37       void SetMinimumSpanningTree( TMinimumSpanningTree* mst );
38
39       TVertices* GetEndPoints( );
40       TVertices* GetBifurcations( );
41       TVertices* GetCollisions( );
42
43       virtual void Update( ) override
44         {
45           this->GenerateData( );
46         }
47
48     protected:
49       ExtractEndPointsAndBifurcationsFromMinimumSpanningTree( );
50       virtual ~ExtractEndPointsAndBifurcationsFromMinimumSpanningTree( );
51
52       virtual void GenerateData( ) override;
53
54       virtual void _MarkSkeleton(
55         const TVertex& v, const unsigned long& l
56         ) = 0;
57       virtual void _MarkSphere(
58         const TVertex& v,
59         const double& r,
60         const unsigned long& l
61         ) = 0;
62       virtual unsigned long _Mark( const TVertex& v ) = 0;
63       virtual unsigned long _SkeletonMark( const TVertex& v ) = 0;
64       virtual double _Radius( const TVertex& v ) = 0;
65
66       virtual void _Tmp( ) = 0;
67
68     private:
69       // Purposely not implemented
70       ExtractEndPointsAndBifurcationsFromMinimumSpanningTree( const Self& other );
71       Self& operator=( const Self& other );
72     };
73
74   } // ecapseman
75
76 } // ecapseman
77
78 #ifndef ITK_MANUAL_INSTANTIATION
79 #include <fpa/Base/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.hxx>
80 #endif // ITK_MANUAL_INSTANTIATION
81
82 #endif // __FPA__BASE__EXTRACTENDPOINTSANDBIFURCATIONSFROMMINIMUMSPANNINGTREE__H__
83
84 // eof - $RCSfile$