diff --git a/Code/Markov/otbMRFEnergy.h b/Code/Markov/otbMRFEnergy.h
index 9c98ac1c0d05791d25fcc1b694b718f11fffa2af..3aafb37c99166ff5595f38487cb3d7ed288735b8 100644
--- a/Code/Markov/otbMRFEnergy.h
+++ b/Code/Markov/otbMRFEnergy.h
@@ -133,10 +133,10 @@ public:
 
 protected:
   // The constructor and destructor.
-  MRFEnergy()
-  {
-    m_NumberOfParameters = 1;
-  };
+  MRFEnergy() :
+    m_NumberOfParameters(1),
+    m_Parameters(0)
+  {};
   virtual ~MRFEnergy() {};
   unsigned int m_NumberOfParameters;
   ParametersType m_Parameters;
@@ -221,11 +221,10 @@ public:
 
 protected:
   // The constructor and destructor.
-  MRFEnergy()
-  {
-    m_NumberOfParameters = 1;
-    m_Parameters=0;
-  };
+  MRFEnergy():
+    m_NumberOfParameters(1),
+    m_Parameters(0)
+  {};
   virtual ~MRFEnergy() {};
   unsigned int m_NumberOfParameters;
   ParametersType m_Parameters;
diff --git a/Code/Markov/otbMRFEnergyEdgeFidelity.h b/Code/Markov/otbMRFEnergyEdgeFidelity.h
index 06511e438049ba46b5738258ef13b7787d41edc3..9ce2940f97460b574a1ccae9bf7595283790c51f 100644
--- a/Code/Markov/otbMRFEnergyEdgeFidelity.h
+++ b/Code/Markov/otbMRFEnergyEdgeFidelity.h
@@ -20,7 +20,6 @@
 #define __otbMRFEnergyEdgeFidelity_h
 
 #include "otbMRFEnergy.h"
-#define vnl_math_sqr(x) ((x)*(x))
 
 namespace otb
 {
diff --git a/Code/Markov/otbMRFEnergyGaussian.h b/Code/Markov/otbMRFEnergyGaussian.h
index f939bb3bfd461ede4dd163ff3ebf8a5879a56ea0..374cfee97841fdeca99cd31f6d4a53ab58209241 100644
--- a/Code/Markov/otbMRFEnergyGaussian.h
+++ b/Code/Markov/otbMRFEnergyGaussian.h
@@ -23,8 +23,6 @@
 
 #include "otbMath.h"
 
-#define vnl_math_sqr(x) ((x)*(x))
-
 namespace otb
 {
 /**
diff --git a/Code/Markov/otbMRFEnergyGaussianClassification.h b/Code/Markov/otbMRFEnergyGaussianClassification.h
index d280b5770ca1fd23d71bc5bedc5d1e0bc4e67c02..52c0d3b13cacd58975534f535c45e06b52e17b17 100644
--- a/Code/Markov/otbMRFEnergyGaussianClassification.h
+++ b/Code/Markov/otbMRFEnergyGaussianClassification.h
@@ -21,8 +21,6 @@
 #include "otbMRFEnergy.h"
 #include "otbMath.h"
 
-#define vnl_math_sqr(x) ((x)*(x))
-
 namespace otb
 {
 /**
diff --git a/Code/Markov/otbMRFOptimizer.h b/Code/Markov/otbMRFOptimizer.h
index 1b75bfc5dd892147c9577504ff8de5279ec3c13e..ec343eee07910c395ff6e2bc89b303e7f0ade1db 100644
--- a/Code/Markov/otbMRFOptimizer.h
+++ b/Code/Markov/otbMRFOptimizer.h
@@ -67,10 +67,10 @@ public:
   virtual bool Compute(double deltaEnergy) = 0;
 
 protected:
-  MRFOptimizer()
-  {
-    m_Parameters=1;
-  }
+  MRFOptimizer() :
+    m_NumberOfParameters(1),
+    m_Parameters(1)
+  {}
   virtual ~MRFOptimizer() {}
   unsigned int m_NumberOfParameters;
   ParametersType m_Parameters;
diff --git a/Code/Markov/otbMRFSampler.h b/Code/Markov/otbMRFSampler.h
index be46d94106ec67588422f7ae740b371d303a761a..e94fd94dded5f19ac046245fe4c1a75d2eb20578 100644
--- a/Code/Markov/otbMRFSampler.h
+++ b/Code/Markov/otbMRFSampler.h
@@ -94,16 +94,16 @@ protected:
 
 protected:
   // The constructor and destructor.
-  MRFSampler()
+  MRFSampler():
+    m_NumberOfClasses(1),
+    m_EnergyBefore(1.0),
+    m_EnergyAfter(1.0),
+    m_DeltaEnergy(1.0),
+    m_EnergyCurrent(1.0),
+    m_Lambda(1.0)
   {
     m_EnergyRegularization = EnergyRegularizationType::New();
-    m_EnergyFidelity =  EnergyFidelityType::New(),
-                        m_NumberOfClasses =1;
-    m_EnergyBefore = 1.;
-    m_EnergyAfter = 1.;
-    m_DeltaEnergy = 1.;
-    m_EnergyCurrent = 1.;
-    m_Lambda = 1.;
+    m_EnergyFidelity =  EnergyFidelityType::New();
   };
   virtual ~MRFSampler() {};
 
diff --git a/Code/Markov/otbMRFSamplerRandomMAP.h b/Code/Markov/otbMRFSamplerRandomMAP.h
index 1be1680d817b50866c6ef7f2c3f144051a4921fd..a46218e2415a525f380d657e7c409159eb848a5d 100644
--- a/Code/Markov/otbMRFSamplerRandomMAP.h
+++ b/Code/Markov/otbMRFSamplerRandomMAP.h
@@ -31,7 +31,7 @@ namespace otb
    * This is one sampler to be used int he MRF framework. This sampler select the
    * value randomly according to the apriori probability.
    *
- * The probability is defined from the energy as:
+   * The probability is defined from the energy as:
    *
    *  \f[ P(X=x)= \frac{1}{Z} \exp^{-U(x)}  \f]
    *
@@ -70,15 +70,15 @@ public:
 
   void SetNumberOfClasses(const unsigned int nClasses)
   {
-    if (nClasses != this->m_NumberOfClasses || energiesInvalid == true)
+    if (nClasses != this->m_NumberOfClasses || m_EnergiesInvalid == true)
     {
       this->m_NumberOfClasses = nClasses;
-      if (energy != NULL)
-        free(energy);
-      if (repartitionFunction != NULL)
-        free(repartitionFunction);
-      energy = (double *) calloc(this->m_NumberOfClasses, sizeof(double));
-      repartitionFunction = (double *) calloc(this->m_NumberOfClasses, sizeof(double));
+      if (m_Energy != NULL)
+        free(m_Energy);
+      if (m_RepartitionFunction != NULL)
+        free(m_RepartitionFunction);
+      m_Energy = (double *) calloc(this->m_NumberOfClasses, sizeof(double));
+      m_RepartitionFunction = (double *) calloc(this->m_NumberOfClasses, sizeof(double));
       this->Modified();
     }
   }
@@ -107,9 +107,9 @@ public:
       this->m_EnergyCurrent += this->m_Lambda
                                * this->m_EnergyRegularization->GetValue(itRegul, static_cast<LabelledImagePixelType>(valueCurrent));
 
-      energy[valueCurrent] = this->m_EnergyCurrent;
-      repartitionFunction[valueCurrent] = vcl_exp(-this->m_EnergyCurrent)+totalProba;
-      totalProba = repartitionFunction[valueCurrent];
+      m_Energy[valueCurrent] = this->m_EnergyCurrent;
+      m_RepartitionFunction[valueCurrent] = vcl_exp(-this->m_EnergyCurrent)+totalProba;
+      totalProba = m_RepartitionFunction[valueCurrent];
 
     }
 
@@ -118,7 +118,7 @@ public:
     //double select = (m_Generator->GetIntegerVariate()/(double(RAND_MAX)+1) * totalProba);
     double select = (m_Generator->GetIntegerVariate()/(double(itk::NumericTraits<RandomGeneratorType::IntegerType>::max())+1) * totalProba);
     valueCurrent = 0;
-    while ( valueCurrent<this->GetNumberOfClasses() && repartitionFunction[valueCurrent] <= select)
+    while ( valueCurrent<this->GetNumberOfClasses() && m_RepartitionFunction[valueCurrent] <= select)
     {
       valueCurrent++;
     }
@@ -132,7 +132,7 @@ public:
     if ( this->m_Value != static_cast<LabelledImagePixelType>(valueCurrent))
     {
       this->m_Value = static_cast<LabelledImagePixelType>(valueCurrent);
-      this->m_EnergyAfter = energy[static_cast<unsigned int>(valueCurrent)];
+      this->m_EnergyAfter = m_Energy[static_cast<unsigned int>(valueCurrent)];
     }
 
     this->m_DeltaEnergy=  this->m_EnergyAfter - this->m_EnergyBefore;
@@ -152,26 +152,26 @@ public:
 
 protected:
   // The constructor and destructor.
-  MRFSamplerRandomMAP()
+  MRFSamplerRandomMAP():
+    m_RepartitionFunction(NULL),
+    m_Energy(NULL),
+    m_EnergiesInvalid(true)
   {
-    energy=NULL;
-    repartitionFunction=NULL;
-    energiesInvalid = true;
     m_Generator = RandomGeneratorType::New();
     m_Generator->SetSeed();
   }
   virtual ~MRFSamplerRandomMAP()
   {
-    if (energy != NULL)
-      free(energy);
-    if (repartitionFunction != NULL)
-      free(repartitionFunction);
+    if (m_Energy != NULL)
+      free(m_Energy);
+    if (m_RepartitionFunction != NULL)
+      free(m_RepartitionFunction);
   }
 
 private:
-  double * repartitionFunction;
-  double * energy;
-  bool energiesInvalid;
+  double * m_RepartitionFunction;
+  double * m_Energy;
+  bool m_EnergiesInvalid;
   RandomGeneratorType::Pointer m_Generator;
 };
 }
diff --git a/Code/Markov/otbMarkovRandomFieldFilter.h b/Code/Markov/otbMarkovRandomFieldFilter.h
index 38b88184656d47379b107d430906afa0472d4967..0c2598d98a61d34dee9cd2286a504900f67e6c07 100644
--- a/Code/Markov/otbMarkovRandomFieldFilter.h
+++ b/Code/Markov/otbMarkovRandomFieldFilter.h
@@ -367,7 +367,6 @@ protected:
 
   unsigned int              m_NumberOfClasses;
   unsigned int              m_MaximumNumberOfIterations;
-  unsigned int              m_KernelSize;
 
   int                       m_ErrorCounter;
   double                    m_ImageDeltaEnergy;
diff --git a/Code/Markov/otbMarkovRandomFieldFilter.txx b/Code/Markov/otbMarkovRandomFieldFilter.txx
index f88bf3bfe10a5bb408d685b88e8262eede476dff..3ba9992995faeb9547a239517bcbaee71d3c7d69 100644
--- a/Code/Markov/otbMarkovRandomFieldFilter.txx
+++ b/Code/Markov/otbMarkovRandomFieldFilter.txx
@@ -22,10 +22,9 @@
 
 namespace otb
 {
-/** ATTENTION : j'ai passe les initialisation dans le constructeur car certaines plateformes (dont NEMO) n'aiment cette maniere d'initialiser*/
 template<class TInputImage, class TClassifiedImage>
 MarkovRandomFieldFilter<TInputImage,TClassifiedImage>
-::MarkovRandomFieldFilter(void)/* :
+::MarkovRandomFieldFilter(void) :
   m_NumberOfClasses(0),
   m_MaximumNumberOfIterations(50),
   m_ErrorCounter(0),
@@ -34,24 +33,12 @@ MarkovRandomFieldFilter<TInputImage,TClassifiedImage>
   m_TotalNumberOfValidPixelsInOutputImage(1),
   m_TotalNumberOfPixelsInInputImage(1),
   m_ErrorTolerance(0.0),
-  m_SmoothingFactor(1),
+  m_SmoothingFactor(1.0),
   m_NumberOfIterations(0),
-  m_StopCondition(MaximumNumberOfIterations),
-  m_ExternalClassificationSet(false)
-             */
+  m_Lambda(1.0),
+  m_ExternalClassificationSet(false),
+  m_StopCondition(MaximumNumberOfIterations)
 {
-  m_NumberOfClasses = 0;
-  m_MaximumNumberOfIterations = 50;
-  m_ErrorCounter = 0;
-  m_ImageDeltaEnergy = 0.0;
-  m_NeighborhoodRadius = 1;
-  m_TotalNumberOfValidPixelsInOutputImage = 1;
-  m_TotalNumberOfPixelsInInputImage = 1;
-  m_ErrorTolerance = 0.0;
-  m_SmoothingFactor = 1;
-  m_NumberOfIterations = 0;
-  m_StopCondition = MaximumNumberOfIterations;
-  m_ExternalClassificationSet = false;
   m_Generator = RandomGeneratorType::New();
   m_Generator->SetSeed();