]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Image/Functors/GaussianModelEstimatorFunction.hxx
Gaussian estimation region grow updated
[FrontAlgorithms.git] / lib / fpa / Image / Functors / GaussianModelEstimatorFunction.hxx
index c9adb715e337ee25a284a5764e3d3a149e822dc4..accfb27825bf66fb6a34918c325499aa149ceb24 100644 (file)
@@ -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( );