X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FBase%2FMori.hxx;fp=lib%2Ffpa%2FBase%2FMori.hxx;h=0000000000000000000000000000000000000000;hb=3c639e5da479c7216a0a302ffa156ac6762caeed;hp=723e6fa285839562ccff88590825bcb14b47712b;hpb=5bf766068f54d061d3816f4950a076c3cf3a4d8b;p=FrontAlgorithms.git diff --git a/lib/fpa/Base/Mori.hxx b/lib/fpa/Base/Mori.hxx deleted file mode 100644 index 723e6fa..0000000 --- a/lib/fpa/Base/Mori.hxx +++ /dev/null @@ -1,321 +0,0 @@ -// ========================================================================= -// @author Leonardo Florez Valencia -// @email florez-l@javeriana.edu.co -// ========================================================================= - -#ifndef __fpa__Base__Mori__hxx__ -#define __fpa__Base__Mori__hxx__ - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -itk::ModifiedTimeType fpa::Base::Mori< _TAlgorithm >:: -GetMTime( ) const -{ - itk::ModifiedTimeType t = this->Superclass::GetMTime( ); - itk::ModifiedTimeType q = this->m_Predicate->GetMTime( ); - return( ( q < t )? q: t ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -typename fpa::Base::Mori< _TAlgorithm >:: -TOutputValue fpa::Base::Mori< _TAlgorithm >:: -GetOutsideValue( ) const -{ - return( this->GetInitValue( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -SetOutsideValue( const TOutputValue& v ) -{ - this->SetInitValue( v ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -unsigned long fpa::Base::Mori< _TAlgorithm >:: -GetSignalKernelSize( ) const -{ - return( this->m_PeakDetector.GetKernelSize( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -double fpa::Base::Mori< _TAlgorithm >:: -GetSignalThreshold( ) const -{ - return( this->m_PeakDetector.GetThreshold( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -double fpa::Base::Mori< _TAlgorithm >:: -GetSignalInfluence( ) const -{ - return( this->m_PeakDetector.GetInfluence( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -SetSignalKernelSize( unsigned long k ) -{ - this->m_PeakDetector.SetKernelSize( k ); - this->Modified( ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -SetSignalThreshold( double t ) -{ - this->m_PeakDetector.SetThreshold( t ); - this->Modified( ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -SetSignalInfluence( double i ) -{ - this->m_PeakDetector.SetInfluence( i ); - this->Modified( ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -ClearThresholds( ) -{ - this->m_Thresholds.clear( ); - this->Modified( ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -AddThreshold( const TInputValue& thr ) -{ - if( this->m_Thresholds.insert( thr ).second ) - this->Modified( ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -SetThresholds( - const TInputValue& init, - const TInputValue& end, - const TInputValue& delta - ) -{ - for( TInputValue thr = init; thr <= end; thr += delta ) - this->AddThreshold( thr ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -const typename fpa::Base::Mori< _TAlgorithm >:: -TThresholds& fpa::Base::Mori< _TAlgorithm >:: -GetThresholds( ) const -{ - return( this->m_Thresholds ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -unsigned long fpa::Base::Mori< _TAlgorithm >:: -GetNumberOfEvaluatedThresholds( ) const -{ - return( this->m_PeakDetector.GetNumberOfSamples( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -typename fpa::Base::Mori< _TAlgorithm >:: -TInputValue fpa::Base::Mori< _TAlgorithm >:: -GetOptimumThreshold( ) const -{ - TInputValue thr = TInputValue( 0 ); - unsigned long n = this->m_PeakDetector.GetNumberOfSamples( ); - if( n > 1 ) - thr = TInputValue( this->m_PeakDetector.GetXValues( )[ n - 2 ] ); - return( thr ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -GetSignalValues( unsigned long i, double& x, double& y, TPeak& p ) const -{ - if( i < this->m_PeakDetector.GetNumberOfSamples( ) ) - { - x = this->m_PeakDetector.GetXValues( )[ i ]; - y = this->m_PeakDetector.GetYValues( )[ i ]; - p = this->m_PeakDetector.GetPeaks( )[ i ]; - - } // fi -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -fpa::Base::Mori< _TAlgorithm >:: -Mori( ) - : Superclass( ), - m_InsideValue( TOutputValue( 1 ) ) -{ - this->SetInitValue( TOutputValue( 0 ) ); - this->m_Predicate = TPredicate::New( ); - this->m_Predicate->StrictOff( ); - if( std::numeric_limits< TInputValue >::is_integer ) - this->m_MinimumThreshold = std::numeric_limits< TInputValue >::min( ); - else - this->m_MinimumThreshold = -std::numeric_limits< TInputValue >::max( ); - this->m_PeakDetector.SetKernelSize( 20 ); - this->m_PeakDetector.SetThreshold( 500 ); - this->m_PeakDetector.SetInfluence( 0.5 ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -fpa::Base::Mori< _TAlgorithm >:: -~Mori( ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -_BeforeGenerateData( ) -{ - this->Superclass::_BeforeGenerateData( ); - - // Prepare queues - this->_QueueClear( ); - this->m_CurrQueue = 0; - - // Prepare iteration over all thresholds - this->m_CurrThr = this->m_Thresholds.begin( ); - this->m_Predicate->SetLower( *( this->m_CurrThr ) ); - this->m_CurrThr++; - this->m_Predicate->SetUpper( *( this->m_CurrThr ) ); - - // Prepare counting signal - this->m_CurrCount = double( 0 ); - this->m_PeakDetector.Clear( ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -_FinishOneLoop( ) -{ - if( this->m_Queues[ this->m_CurrQueue ].size( ) == 0 ) - { - // Update peak detector - TPeak p = this->m_PeakDetector.AddValue( - *this->m_CurrThr, this->m_CurrCount - ); - this->m_CurrThr++; - this->m_CurrQueue = ( this->m_CurrQueue + 1 ) % 2; - if( this->m_CurrThr != this->m_Thresholds.end( ) ) - { - // Update predicate and counting value - this->m_Predicate->SetUpper( *( this->m_CurrThr ) ); - this->m_CurrCount = double( 0 ); - - // Peak detected? -> stop! - if( - p == TPeakDetector::PosPeak && - this->m_MinimumThreshold < *( this->m_CurrThr ) - ) - this->_QueueClear( ); - } - else - this->_QueueClear( ); - - } // fi -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -_ComputeOutputValue( TNode& n ) -{ - // Do nothing!!! -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -_UpdateOutputValue( TNode& n ) -{ - TInputValue value = this->_GetInputValue( n.Vertex ); - bool inside = this->m_Predicate->Evaluate( value ); - if( !inside ) - { - n.Value = this->m_InitValue; - n.FrontId++; - this->m_Queues[ ( this->m_CurrQueue + 1 ) % 2 ].push_back( n ); - n.FrontId = 0; - } - else - { - n.Value = this->m_InsideValue; - this->m_CurrCount += double( 1 ); - - } // fi - this->Superclass::_UpdateOutputValue( n ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -_QueueClear( ) -{ - this->m_Queues[ 0 ].clear( ); - this->m_Queues[ 1 ].clear( ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -typename fpa::Base::Mori< _TAlgorithm >:: -TNode fpa::Base::Mori< _TAlgorithm >:: -_QueuePop( ) -{ - TNode n = this->m_Queues[ this->m_CurrQueue ].front( ); - this->m_Queues[ this->m_CurrQueue ].pop_front( ); - return( n ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -_QueuePush( const TNode& node ) -{ - this->m_Queues[ this->m_CurrQueue ].push_back( node ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -unsigned long fpa::Base::Mori< _TAlgorithm >:: -_QueueSize( ) const -{ - return( this->m_Queues[ this->m_CurrQueue ].size( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TAlgorithm > -void fpa::Base::Mori< _TAlgorithm >:: -_PrepareSeeds( TNodes& nodes ) -{ - typename TNodes::iterator nIt = nodes.begin( ); - for( ; nIt != nodes.end( ); ++nIt ) - nIt->Value = this->m_InitValue; -} - -#endif // __fpa__Base__Mori__hxx__ - -// eof - $RCSfile$