X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FImage%2FFunctors%2FGaussianModelEstimatorFunction.hxx;h=accfb27825bf66fb6a34918c325499aa149ceb24;hb=8fafb83c41ab35dfc25eb637170882a612924433;hp=c9adb715e337ee25a284a5764e3d3a149e822dc4;hpb=8cf92baeeefc45bc80a2d0eb2850e04b6089111f;p=FrontAlgorithms.git diff --git a/lib/fpa/Image/Functors/GaussianModelEstimatorFunction.hxx b/lib/fpa/Image/Functors/GaussianModelEstimatorFunction.hxx index c9adb71..accfb27 100644 --- a/lib/fpa/Image/Functors/GaussianModelEstimatorFunction.hxx +++ b/lib/fpa/Image/Functors/GaussianModelEstimatorFunction.hxx @@ -1,26 +1,52 @@ #ifndef __FPA__IMAGE__FUNCTORS__GAUSSIANMODELESTIMATORFUNCTION__HXX__ #define __FPA__IMAGE__FUNCTORS__GAUSSIANMODELESTIMATORFUNCTION__HXX__ +// ------------------------------------------------------------------------- +template< class I, class S > +bool fpa::Image::Functors::GaussianModelEstimatorFunction< I, S >:: +SaveModelToFile( const std::string& filename ) const +{ + this->m_Estimator->SaveModelToFile( filename ); +} + +// ------------------------------------------------------------------------- +template< class I, class S > +bool fpa::Image::Functors::GaussianModelEstimatorFunction< I, S >:: +LoadModelFromFile( const std::string& filename ) +{ + this->m_Estimator->LoadModelFromFile( filename ); + this->m_RealModelSupport = + this->m_ModelSupport + this->m_Estimator->GetNumberOfSamples( ); + this->m_Estimating = false; + this->Modified( ); +} + +// ------------------------------------------------------------------------- +template< class I, class S > +void fpa::Image::Functors::GaussianModelEstimatorFunction< I, S >:: +SetModelSupport( const unsigned long& s ) +{ + this->m_ModelSupport = s; + this->m_RealModelSupport = s; + this->Modified( ); +} + // ------------------------------------------------------------------------- template< class I, class S > bool fpa::Image::Functors::GaussianModelEstimatorFunction< I, S >:: Evaluate( const typename I::PixelType& rgb ) const { - if( !this->m_Estimating ) + if( !this->m_Estimating && this->m_ModelSupport > 0 ) { this->m_Estimator->AddSample( this->m_YPbPrFunction( rgb ) ); - if( this->m_Estimator->GetNumberOfSamples( ) == this->m_ModelSupport ) - { + if( this->m_Estimator->GetNumberOfSamples( ) == this->m_RealModelSupport ) this->m_Estimating = true; - this->m_Estimator->UpdateModel( ); - - } // fi return( true ); } else { S p = this->m_Estimator->Probability( this->m_YPbPrFunction( rgb ) ); - return( p >= this->m_Estimator->GetMinimumProbability( ) ); + return( p >= 0.3 ); } // fi } @@ -30,7 +56,8 @@ template< class I, class S > fpa::Image::Functors::GaussianModelEstimatorFunction< I, S >:: GaussianModelEstimatorFunction( ) : Superclass( ), - m_ModelSupport( 10 ) + m_ModelSupport( 10 ), + m_RealModelSupport( 10 ) { this->m_Estimator = TEstimator::New( ); this->m_Estimator->Clear( );