]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Image/RegionGrowWithMultipleThresholds.h
5156b33dbd9bce73614bd7c28734fd4be82aa37b
[FrontAlgorithms.git] / lib / fpa / Image / RegionGrowWithMultipleThresholds.h
1 #ifndef __FPA__IMAGE__REGIONGROWWITHMULTIPLETHRESHOLDS__H__
2 #define __FPA__IMAGE__REGIONGROWWITHMULTIPLETHRESHOLDS__H__
3
4 #include <map>
5 #include <set>
6 #include <fpa/Image/RegionGrowWithMultipleCriteria.h>
7 #include <fpa/Image/Functors/RegionGrowThresholdFunction.h>
8
9 namespace fpa
10 {
11   namespace Image
12   {
13     /**
14      * @param I Input image type
15      */
16     template< class I >
17     class RegionGrowWithMultipleThresholds
18       : public RegionGrowWithMultipleCriteria< I >
19     {
20     public:
21       typedef RegionGrowWithMultipleThresholds    Self;
22       typedef RegionGrowWithMultipleCriteria< I > Superclass;
23       typedef itk::SmartPointer< Self >           Pointer;
24       typedef itk::SmartPointer< const Self >     ConstPointer;
25
26       typedef typename I::PixelType TPixel;
27
28       typedef std::map< TPixel, unsigned long >        THistogram;
29       typedef typename Superclass::TBaseAlgorithm      TBaseAlgorithm;
30       typedef typename Superclass::TMembershipFunction TMembershipFunction;
31       typedef typename Superclass::TFunctions          TFunctions;
32
33       typedef std::set< TPixel >                                   TThresholds;
34       typedef fpa::Image::Functors::RegionGrowThresholdFunction< I > TFunction;
35
36     protected:
37       typedef typename TBaseAlgorithm::_TNode _TNode;
38
39     public:
40       itkNewMacro( Self );
41       itkTypeMacro( RegionGrowWithMultipleThresholds, RegionGrow );
42
43       itkGetConstMacro( DerivativeThreshold, double );
44       itkSetMacro( DerivativeThreshold, double );
45
46     public:
47       void AddThreshold( const TPixel& v );
48       void AddThresholds(
49         const TPixel& t0,
50         const TPixel& t1,
51         const unsigned int& s
52         );
53
54     protected:
55       RegionGrowWithMultipleThresholds( );
56       virtual ~RegionGrowWithMultipleThresholds( );
57
58       virtual void _BeforeMainLoop( );
59       virtual void _AfterMainLoop( );
60       virtual void _AfterLoop( );
61       virtual bool _UpdateResult( _TNode& n );
62
63     private:
64       RegionGrowWithMultipleThresholds( const Self& ); // Not impl.
65       void operator=( const Self& );                   // Not impl.
66
67     protected:
68       TThresholds m_Thresholds;
69       double m_DerivativeThreshold;
70       THistogram m_Histogram;
71     };
72
73   } // ecapseman
74
75 } // ecapseman
76
77 #include <fpa/Image/RegionGrowWithMultipleThresholds.hxx>
78
79 #endif // __FPA__IMAGE__REGIONGROWWITHMULTIPLETHRESHOLDS__H__
80
81 // eof - $RCSfile$