]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Base/Mori.h
...
[FrontAlgorithms.git] / lib / fpa / Base / Mori.h
index ef8d7cc475d7e286e2392b394bbd6c7dcb494f76..c2ea39cff2c729c2f786a05c8f5cf5cee76a0c7e 100644 (file)
@@ -3,12 +3,15 @@
 // @email florez-l@javeriana.edu.co
 // =========================================================================
 
+// https://stackoverflow.com/questions/22583391/peak-signal-detection-in-realtime-timeseries-data
+
+
 #ifndef __fpa__Base__Mori__h__
 #define __fpa__Base__Mori__h__
 
 #include <deque>
 #include <set>
-#include <map>
+#include <vector>
 #include <itkConceptChecking.h>
 #include <itkFunctionBase.h>
 #include <fpa/Base/Functors/RegionGrow/BinaryThreshold.h>
@@ -39,7 +42,7 @@ namespace fpa
       typedef std::deque< TNode >     TQueue;
       typedef std::set< TInputValue > TThresholds;
       typedef std::pair< TInputValue, unsigned long > TSignalData;
-      typedef std::map< TFrontId, TSignalData >       TSignal;
+      typedef std::vector< TSignalData >              TSignal;
       typedef fpa::Base::Functors::RegionGrow::BinaryThreshold< TInputValue > TPredicate;
 
     public:
@@ -51,6 +54,15 @@ namespace fpa
       itkGetConstMacro( InsideValue, TOutputValue );
       itkSetMacro( InsideValue, TOutputValue );
 
+      itkGetConstReferenceMacro( Signal, TSignal );
+      itkGetConstMacro( SignalLag, unsigned long );
+      itkGetConstMacro( SignalThreshold, double );
+      itkGetConstMacro( SignalInfluence, double );
+
+      itkSetMacro( SignalLag, unsigned long );
+      itkSetMacro( SignalThreshold, double );
+      itkSetMacro( SignalInfluence, double );
+
     public:
       virtual itk::ModifiedTimeType GetMTime( ) const override;
 
@@ -64,13 +76,14 @@ namespace fpa
         const TInputValue& end,
         const TInputValue& delta
         );
+      unsigned long GetNumberOfEvaluatedThresholds( ) const;
+      TInputValue GetOptimumThreshold( ) const;
 
     protected:
       Mori( );
       virtual ~Mori( );
 
       virtual void _BeforeGenerateData( ) override;
-      virtual void _AfterGenerateData( ) override;
       virtual void _FinishOneLoop( ) override;
       virtual void _ComputeOutputValue( TNode& n ) override;
       virtual void _UpdateOutputValue( TNode& n ) override;
@@ -92,7 +105,17 @@ namespace fpa
       TQueue m_Queues[ 2 ];
       unsigned int m_CurrentQueue;
       unsigned long m_Count;
+
       TSignal m_Signal;
+      unsigned long m_SignalLag;
+      double m_SignalThreshold;
+      double m_SignalInfluence;
+      std::vector< double > m_FilteredSignal;
+      std::vector< double > m_SignalAverages;
+      std::vector< double > m_SignalDeviations;
+      std::vector< short >  m_SignalPeaks;
+      double m_CurrentAverage;
+      double m_CurrentVariance;
 
       TOutputValue m_InsideValue;
     };