From 0076217d5ea318d9356a631d978924cef0ba282b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9dric=20Traizet?= <cedric.traizet@c-s.fr>
Date: Wed, 17 Apr 2019 11:11:49 +0200
Subject: [PATCH] BUG: fix scale formula :1/stddev

---
 .../AppClassification/include/otbTrainSharkKMeans.hxx       | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx b/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx
index 4b10b50533..86cd23e519 100644
--- a/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx
+++ b/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx
@@ -52,7 +52,7 @@ void LearningApplicationBase<TInputValue, TOutputValue>::InitSharkKMeansParams()
   MandatoryOff("classifier.sharkkm.centroidstats");
   
   // Number of classes
-  AddParameter(ParameterType_String, "classifier.sharkkm.centroids", "Number of classes for the kmeans algorithm");
+  AddParameter(ParameterType_InputFilename, "classifier.sharkkm.centroids", "Number of classes for the kmeans algorithm");
   SetParameterDescription("classifier.sharkkm.centroids", "The number of classes used for the kmeans algorithm. Default set to 2 class");
   MandatoryOff("classifier.sharkkm.centroids");
 }
@@ -73,7 +73,7 @@ void LearningApplicationBase<TInputValue, TOutputValue>::TrainSharkKMeans(
   classifier->SetK( k );
 
   // Initialize centroids from file
-  if(HasValue("classifier.sharkkm.centroids"))
+  if(IsParameterEnabled("classifier.sharkkm.centroids") && HasValue("classifier.sharkkm.centroids"))
   {
     shark::Data<shark::RealVector> centroidData;
     shark::importCSV(centroidData, GetParameterString( "classifier.sharkkm.centroids"), ' ');
@@ -91,7 +91,7 @@ void LearningApplicationBase<TInputValue, TOutputValue>::TrainSharkKMeans(
       assert(meanMeasurementVector.Size()==stddevMeasurementVector.Size());
       for (unsigned int i = 0; i<meanMeasurementVector.Size(); ++i)
       {
-        stddevMeasurementRV[i] = stddevMeasurementVector[i];
+        stddevMeasurementRV[i] = 1/stddevMeasurementVector[i];
         // Substract the normalized mean
         offsetRV[i] = - meanMeasurementVector[i]/stddevMeasurementVector[i];
       }
-- 
GitLab