]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Image/RegionGrowWithMultipleThresholds.h
Some more debug... almost there
[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 bool _UpdateResult( _TNode& n );
59       virtual void _BeforeLoop( );
60       virtual void _AfterLoop( );
61
62     private:
63       RegionGrowWithMultipleThresholds( const Self& ); // Not impl.
64       void operator=( const Self& );                   // Not impl.
65
66     protected:
67       TThresholds m_Thresholds;
68       double m_DerivativeThreshold;
69       THistogram m_Histogram;
70     };
71
72   } // ecapseman
73
74 } // ecapseman
75
76 #include <fpa/Image/RegionGrowWithMultipleThresholds.hxx>
77
78 #endif // __FPA__IMAGE__REGIONGROWWITHMULTIPLETHRESHOLDS__H__
79
80 // eof - $RCSfile$