]> Creatis software - FrontAlgorithms.git/blob - appli/CTBronchi/MoriLabelling.h
caa96aab98be496910be43883512c1a35ff71ea0
[FrontAlgorithms.git] / appli / CTBronchi / MoriLabelling.h
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5
6 #ifndef __CTBronchi__MoriLabelling__h__
7 #define __CTBronchi__MoriLabelling__h__
8
9 #include <fpa/Filters/Image/DefaultTraits.h>
10 #include <fpa/Filters/MarksInterface.h>
11 #include <fpa/Filters/Image/LabelsSeedFilter.h>
12 #include <fpa/Filters/Image/LabelsSeedInterface.h>
13 #include <fpa/Filters/Image/RegionGrow.h>
14 #include <fpa/Functors/RegionGrow/BinaryThreshold.h>
15
16 /* TODO
17    #include <fpa/Base/RegionGrow.h>
18    #include <fpa/Base/MarksInterface.h>
19    #include <fpa/Base/Functors/RegionGrow/BinaryThreshold.h>
20    #include <fpa/Image/Algorithm.h>
21    #include <fpa/Image/DefaultTraits.h>
22    #include <fpa/Image/LabelledSeedsInterface.h>
23 */
24
25 namespace CTBronchi
26 {
27   /**
28    */
29   template< class _TInputImage, class _TLabelImage >
30   class MoriLabellingTraits
31         : public fpa::Filters::Image::DefaultTraits< _TInputImage, _TLabelImage, typename _TLabelImage::PixelType >
32   {
33   public:
34     typedef _TInputImage TInputImage;
35     typedef _TLabelImage TLabelImage;
36     typedef fpa::Filters::Image::DefaultTraits< TInputImage, TLabelImage, typename TLabelImage::PixelType > Superclass;
37
38     typedef typename Superclass::TInternalTraits TInternalTraits;
39     typedef typename Superclass::TFilter TFilter;
40     typedef fpa::Filters::MarksInterface< TInternalTraits >  TMarksInterface;
41     typedef fpa::Filters::Image::LabelsSeedInterface< TInternalTraits > TSeedsInterface;
42   };
43
44   /**
45    */
46   template< class _TInputImage, class _TLabelImage >
47   class MoriLabelling
48     : public fpa::Filters::Image::LabelsSeedFilter< fpa::Filters::Image::Algorithm< fpa::Filters::RegionGrow< CTBronchi::MoriLabellingTraits< _TInputImage, _TLabelImage > > >, _TLabelImage >
49   {
50   public:
51     typedef _TInputImage TInputImage;
52     typedef _TLabelImage TLabelImage;
53     typedef CTBronchi::MoriLabellingTraits< TInputImage, TLabelImage > TTraits;
54     fpaTraitsMacro( typename, TTraits );
55
56     typedef fpa::Filters::Image::Algorithm< fpa::Filters::RegionGrow< TTraits > > TAlgorithm;
57     typedef fpa::Filters::Image::LabelsSeedFilter< TAlgorithm, _TLabelImage > Superclass;
58     typedef MoriLabelling Self;
59     typedef itk::SmartPointer< Self >        Pointer;
60     typedef itk::SmartPointer< const Self >  ConstPointer;
61
62     typedef fpa::Functors::RegionGrow::BinaryThreshold< TInputValue > TLabelFunctor;
63
64   public:
65     itkNewMacro( Self );
66     itkTypeMacro( CTBronchi::MoriLabelling, fpa::Filters::Image::RegionGrow );
67
68   public:
69     TInputValue GetUpperThreshold( ) const;
70     void SetUpperThreshold( TInputValue t );
71
72   protected:
73     MoriLabelling( );
74     virtual ~MoriLabelling( );
75
76     virtual void _UpdateOutputValue( TNode& n ) override;
77
78   private:
79     // Purposely not implemented.
80     MoriLabelling( const Self& other );
81     Self& operator=( const Self& other );
82
83   protected:
84     typename TLabelFunctor::Pointer m_LabelFunctor;
85   };
86
87 } // ecapseman
88
89 #ifndef ITK_MANUAL_INSTANTIATION
90 #  include <CTBronchi/MoriLabelling.hxx>
91 #endif // ITK_MANUAL_INSTANTIATION
92
93 #endif // __CTBronchi__MoriLabelling__h__
94
95 // eof - $RCSfile$