#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
}
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( );