// @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>
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:
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;
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;
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;
};