X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FBase%2FMori.h;h=c2ea39cff2c729c2f786a05c8f5cf5cee76a0c7e;hb=53d56cb3d8fe139843d5b2308f821cc05e7593e1;hp=ef8d7cc475d7e286e2392b394bbd6c7dcb494f76;hpb=89393f2267e42e921571c0184320d6c6382f34ab;p=FrontAlgorithms.git diff --git a/lib/fpa/Base/Mori.h b/lib/fpa/Base/Mori.h index ef8d7cc..c2ea39c 100644 --- a/lib/fpa/Base/Mori.h +++ b/lib/fpa/Base/Mori.h @@ -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 #include -#include +#include #include #include #include @@ -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; };