From cf51ccb38e68c3b513251b91560d5adc8e748926 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:12:18 +0200
Subject: [PATCH] ENH: input centroid file in the composite application

---
 .../app/otbKMeansClassification.cxx           | 21 ++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/Modules/Applications/AppClassification/app/otbKMeansClassification.cxx b/Modules/Applications/AppClassification/app/otbKMeansClassification.cxx
index eeb30c2499..41bbc998ce 100644
--- a/Modules/Applications/AppClassification/app/otbKMeansClassification.cxx
+++ b/Modules/Applications/AppClassification/app/otbKMeansClassification.cxx
@@ -81,9 +81,13 @@ protected:
     SetDefaultParameterInt("maxit", 1000);
     MandatoryOff("maxit");
     
-    AddParameter(ParameterType_String, "incentroid", "Maximum number of iterations");
-    SetParameterDescription("incentroid", "Maximum number of iterations for the learning step.");
-    MandatoryOff("incentroid");
+    AddParameter(ParameterType_String, "inmeans", "Maximum number of iterations");
+    SetParameterDescription("inmeans", "Maximum number of iterations for the learning step.");
+    MandatoryOff("inmeans");
+    
+    AddParameter(ParameterType_Bool, "normalizeinmeans", "Number of classes");
+    SetParameterDescription("normalizeinmeans", "Number of modes, which will be used to generate class membership.");
+    SetDefaultParameterInt("normalizeinmeans", true);
 
     AddParameter(ParameterType_OutputFilename, "outmeans", "Centroid filename");
     SetParameterDescription("outmeans", "Output text file containing centroid positions");
@@ -252,8 +256,15 @@ protected:
                                                         GetParameterInt("maxit"));
     GetInternalApplication("training")->SetParameterInt("classifier.sharkkm.k",
                                                         GetParameterInt("nc"));
-    GetInternalApplication("training")->SetParameterString("classifier.sharkkm.incentroid",
-                                                        GetParameterString("incentroid"));
+    if(IsParameterEnabled("inmeans") && HasValue("inmeans"))
+    {
+      GetInternalApplication("training")->SetParameterString("classifier.sharkkm.centroids",
+                                                        GetParameterString("inmeans"));
+      if(GetParameterInt("normalizeinmeans"))
+        GetInternalApplication("training")->SetParameterString("classifier.sharkkm.centroidstats",
+                                              GetInternalApplication("imgstats")->GetParameterString("out"));
+    }
+    
 
     if( IsParameterEnabled("rand"))
       GetInternalApplication("training")->SetParameterInt("rand", GetParameterInt("rand"));
-- 
GitLab