1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
6 #ifndef __CTBronchi__MoriLabelling__h__
7 #define __CTBronchi__MoriLabelling__h__
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>
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>
29 template< class _TInputImage, class _TLabelImage >
30 class MoriLabellingTraits
31 : public fpa::Filters::Image::DefaultTraits< _TInputImage, _TLabelImage, typename _TLabelImage::PixelType >
34 typedef _TInputImage TInputImage;
35 typedef _TLabelImage TLabelImage;
36 typedef fpa::Filters::Image::DefaultTraits< TInputImage, TLabelImage, typename TLabelImage::PixelType > Superclass;
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;
46 template< class _TInputImage, class _TLabelImage >
48 : public fpa::Filters::Image::LabelsSeedFilter< fpa::Filters::Image::Algorithm< fpa::Filters::RegionGrow< CTBronchi::MoriLabellingTraits< _TInputImage, _TLabelImage > > >, _TLabelImage >
51 typedef _TInputImage TInputImage;
52 typedef _TLabelImage TLabelImage;
53 typedef CTBronchi::MoriLabellingTraits< TInputImage, TLabelImage > TTraits;
54 fpaTraitsMacro( typename, TTraits );
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;
62 typedef fpa::Functors::RegionGrow::BinaryThreshold< TInputValue > TLabelFunctor;
66 itkTypeMacro( CTBronchi::MoriLabelling, fpa::Filters::Image::RegionGrow );
69 TInputValue GetUpperThreshold( ) const;
70 void SetUpperThreshold( TInputValue t );
74 virtual ~MoriLabelling( );
76 virtual void _UpdateOutputValue( TNode& n ) override;
79 // Purposely not implemented.
80 MoriLabelling( const Self& other );
81 Self& operator=( const Self& other );
84 typename TLabelFunctor::Pointer m_LabelFunctor;
89 #ifndef ITK_MANUAL_INSTANTIATION
90 # include <CTBronchi/MoriLabelling.hxx>
91 #endif // ITK_MANUAL_INSTANTIATION
93 #endif // __CTBronchi__MoriLabelling__h__