]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Base/Mori.h
...
[FrontAlgorithms.git] / lib / fpa / Base / Mori.h
index d9277845fd365a80541769d891c7bbceda872aa0..27f6915a671a8893805afc193973e9eb491278fc 100644 (file)
@@ -10,6 +10,8 @@
 #include <set>
 #include <itkConceptChecking.h>
 #include <itkFunctionBase.h>
+
+#include <ivq/ITK/PeakDetector.h>
 #include <fpa/Base/Functors/RegionGrow/BinaryThreshold.h>
 
 namespace fpa
@@ -37,6 +39,10 @@ namespace fpa
 
       typedef std::deque< TNode >     TQueue;
       typedef std::set< TInputValue > TThresholds;
+
+      typedef ivq::ITK::PeakDetector TPeakDetector;
+      typedef TPeakDetector::TPeak   TPeak;
+
       typedef fpa::Base::Functors::RegionGrow::BinaryThreshold< TInputValue > TPredicate;
 
     public:
@@ -48,27 +54,45 @@ namespace fpa
       itkGetConstMacro( InsideValue, TOutputValue );
       itkSetMacro( InsideValue, TOutputValue );
 
+      itkGetConstMacro( MinimumThreshold, TInputValue );
+      itkSetMacro( MinimumThreshold, TInputValue );
+
     public:
       virtual itk::ModifiedTimeType GetMTime( ) const override;
 
       TOutputValue GetOutsideValue( ) const;
       void SetOutsideValue( const TOutputValue& v );
 
+      unsigned long GetSignalKernelSize( ) const;
+      double GetSignalThreshold( ) const;
+      double GetSignalInfluence( ) const;
+
+      void SetSignalKernelSize( unsigned long k );
+      void SetSignalThreshold( double t );
+      void SetSignalInfluence( double i );
+
       void ClearThresholds( );
       void AddThreshold( const TInputValue& thr );
       void SetThresholds(
         const TInputValue& init,
         const TInputValue& end,
-        unsigned long number_of_thresholds
+        const TInputValue& delta
         );
+      const TThresholds& GetThresholds( ) const;
+      unsigned long GetNumberOfEvaluatedThresholds( ) const;
+      TInputValue GetOptimumThreshold( ) const;
+      void GetSignalValues(
+        unsigned long i, double& x, double& y, TPeak& p
+        ) const;
 
     protected:
       Mori( );
       virtual ~Mori( );
 
       virtual void _BeforeGenerateData( ) override;
-      virtual void _AfterGenerateData( ) override;
-      virtual TOutputValue _ComputeOutputValue( const TNode& n ) override;
+      virtual void _FinishOneLoop( ) override;
+      virtual void _ComputeOutputValue( TNode& n ) override;
+      virtual void _UpdateOutputValue( TNode& n ) override;
       virtual void _QueueClear( ) override;
       virtual TNode _QueuePop( ) override;
       virtual void _QueuePush( const TNode& node ) override;
@@ -82,11 +106,17 @@ namespace fpa
 
     protected:
       typename TPredicate::Pointer m_Predicate;
-      TThresholds m_Thresholds;
-      TQueue m_Queues[ 2 ];
-      unsigned int m_CurrentQueue;
 
       TOutputValue m_InsideValue;
+      TInputValue  m_MinimumThreshold;
+      TThresholds  m_Thresholds;
+      typename TThresholds::const_iterator m_CurrThr;
+
+      TQueue       m_Queues[ 2 ];
+      unsigned int m_CurrQueue;
+      double       m_CurrCount;
+
+      TPeakDetector m_PeakDetector;
     };
 
   } // ecapseman