diff --git a/Code/Markov/otbMRFOptimizer.h b/Code/Markov/otbMRFOptimizer.h
index 35411a505c4c4d30526a418de95ef21ce1bbe1bd..0471fce984dc2e59116e2a16f4c9b06337e253bf 100644
--- a/Code/Markov/otbMRFOptimizer.h
+++ b/Code/Markov/otbMRFOptimizer.h
@@ -20,6 +20,7 @@
 
 #include "itkObject.h"
 #include "itkObjectFactory.h"
+#include "itkArray.h"
 
 namespace otb
 {
@@ -52,19 +53,27 @@ class ITK_EXPORT MRFOptimizer : public itk::Object
     
     void SetParameters( const ParametersType & parameters )
     {
-      bool modified = false;
-      for( unsigned int i=0; i<m_NumberOfParameters; i++ )
-      {
+      if( parameters.Size() != m_NumberOfParameters )
+	{	
+	  itkExceptionMacro(<<"Invalid number of parameters");
+	}
+      m_Parameters = parameters;
+      this->Modified();
+      /*
+	bool modified = false;
+	for( unsigned int i=0; i<m_NumberOfParameters; i++ )
+	{
         if (m_Parameters[i] != parameters[i])
         {
-          m_Parameters[i] = parameters[i];
-          modified = true;
+	m_Parameters[i] = parameters[i];
+	modified = true;
         }
-      }
-      if (modified)
-      {
+	}
+	if (modified)
+	{
         this->Modified();
-      }
+	}
+      */
     }
     
     virtual bool Compute(double deltaEnergy)