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