diff --git a/Modules/Applications/AppClassification/app/otbKMeansClassification.cxx b/Modules/Applications/AppClassification/app/otbKMeansClassification.cxx index 41bbc998ce2e7c04d0b749ac16cd56dc9de4212e..d26d606d459800f6de3db0b662aeec5fde42fa71 100644 --- a/Modules/Applications/AppClassification/app/otbKMeansClassification.cxx +++ b/Modules/Applications/AppClassification/app/otbKMeansClassification.cxx @@ -81,13 +81,18 @@ protected: SetDefaultParameterInt("maxit", 1000); MandatoryOff("maxit"); - AddParameter(ParameterType_String, "inmeans", "Maximum number of iterations"); - SetParameterDescription("inmeans", "Maximum number of iterations for the learning step."); - MandatoryOff("inmeans"); + AddParameter( ParameterType_Group, "inmeans", "Input centroids parameters" ); + SetParameterDescription( "inmeans", + "Group of parameters for used defined input centroids." ); + + AddParameter(ParameterType_InputFilename, "inmeans.in", "input centroids"); + SetParameterDescription("inmeans.in", "Input text file containing centroid posistions."); + MandatoryOff("inmeans.in"); - 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_Bool, "inmeans.normalize", "Normalize input centroids"); + SetParameterDescription("inmeans.normalize", "Normalize input centroids using the image statistics" + " computed during the execution of the application"); + SetDefaultParameterInt("inmeans.normalize", true); AddParameter(ParameterType_OutputFilename, "outmeans", "Centroid filename"); SetParameterDescription("outmeans", "Output text file containing centroid positions"); @@ -256,11 +261,11 @@ protected: GetParameterInt("maxit")); GetInternalApplication("training")->SetParameterInt("classifier.sharkkm.k", GetParameterInt("nc")); - if(IsParameterEnabled("inmeans") && HasValue("inmeans")) + if(IsParameterEnabled("inmeans.in") && HasValue("inmeans.in")) { GetInternalApplication("training")->SetParameterString("classifier.sharkkm.centroids", - GetParameterString("inmeans")); - if(GetParameterInt("normalizeinmeans")) + GetParameterString("inmeans.in")); + if(GetParameterInt("inmeans.normalize")) GetInternalApplication("training")->SetParameterString("classifier.sharkkm.centroidstats", GetInternalApplication("imgstats")->GetParameterString("out")); } diff --git a/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx b/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx index 86cd23e5193ec94a2f0abec18324879a5dc241de..12641430e54f77625d5912e2d6da7b1f84082f7b 100644 --- a/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx +++ b/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx @@ -45,16 +45,18 @@ void LearningApplicationBase<TInputValue, TOutputValue>::InitSharkKMeansParams() SetParameterInt("classifier.sharkkm.k", 2); SetParameterDescription("classifier.sharkkm.k", "The number of classes used for the kmeans algorithm. Default set to 2 class"); SetMinimumParameterIntValue("classifier.sharkkm.k", 2); - + + // Input centroids + AddParameter(ParameterType_InputFilename, "classifier.sharkkm.centroids", "input centroids"); + SetParameterDescription("classifier.sharkkm.centroids", "Text file containing input centroids."); + MandatoryOff("classifier.sharkkm.centroids"); + + // Centroid statistics AddParameter(ParameterType_InputFilename, "classifier.sharkkm.centroidstats", "Statistics file"); SetParameterDescription("classifier.sharkkm.centroidstats", "A XML file containing mean and standard deviation to center" - "and reduce the centroids before classification, produced by ComputeImagesStatistics application."); + "and reduce the centroids before the KMeans algorithm, produced by ComputeImagesStatistics application."); MandatoryOff("classifier.sharkkm.centroidstats"); - // Number of classes - 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"); } template<class TInputValue, class TOutputValue>