+++ /dev/null
-// =========================================================================
-// @author Leonardo Florez Valencia
-// @email florez-l@javeriana.edu.co
-// =========================================================================
-
-#ifndef __fpa__Base__Mori__h__
-#define __fpa__Base__Mori__h__
-
-#include <deque>
-#include <set>
-#include <itkConceptChecking.h>
-#include <itkFunctionBase.h>
-
-#include <ivq/ITK/PeakDetector.h>
-#include <fpa/Base/Functors/RegionGrow/BinaryThreshold.h>
-
-namespace fpa
-{
- namespace Base
- {
- /**
- */
- template< class _TAlgorithm >
- class Mori
- : public _TAlgorithm
- {
- public:
- typedef Mori Self;
- typedef _TAlgorithm Superclass;
- typedef itk::SmartPointer< Self > Pointer;
- typedef itk::SmartPointer< const Self > ConstPointer;
-
- typedef typename _TAlgorithm::TNode TNode;
- typedef typename _TAlgorithm::TNodes TNodes;
- typedef typename _TAlgorithm::TInputValue TInputValue;
- typedef typename _TAlgorithm::TOutputValue TOutputValue;
- typedef typename _TAlgorithm::TFrontId TFrontId;
- typedef typename _TAlgorithm::TVertex TVertex;
-
- 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:
- itkConceptMacro(
- Check_TOutputValue,
- ( itk::Concept::IsUnsignedInteger< TOutputValue > )
- );
-
- 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,
- 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 _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;
- virtual unsigned long _QueueSize( ) const override;
- virtual void _PrepareSeeds( TNodes& nodes ) override;
-
- private:
- // Purposely not implemented.
- Mori( const Self& other );
- Self& operator=( const Self& other );
-
- protected:
- typename TPredicate::Pointer m_Predicate;
-
- 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
-
-} // ecapseman
-
-#ifndef ITK_MANUAL_INSTANTIATION
-# include <fpa/Base/Mori.hxx>
-#endif // ITK_MANUAL_INSTANTIATION
-
-#endif // __fpa__Base__Mori__h__
-
-// eof - $RCSfile$