From e147ef3b31e7f1efa3dad996cb7661809f85f277 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 09:55:38 +0200 Subject: [PATCH] BUG: fix offset formula: -mean/stddev --- .../include/otbTrainSharkKMeans.hxx | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx b/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx index 366b6fd9b8..4b10b50533 100644 --- a/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx +++ b/Modules/Applications/AppClassification/include/otbTrainSharkKMeans.hxx @@ -85,21 +85,18 @@ void LearningApplicationBase<TInputValue, TOutputValue>::TrainSharkKMeans( auto stddevMeasurementVector = statisticsReader->GetStatisticVectorByName("stddev"); // Convert itk Variable Length Vector to shark Real Vector - shark::RealVector meanMeasurementRV(meanMeasurementVector.Size()); - for (unsigned int i = 0; i<meanMeasurementVector.Size(); ++i) - { - // Substract the mean - meanMeasurementRV[i] = - meanMeasurementVector[i]; - } - + shark::RealVector offsetRV(meanMeasurementVector.Size()); shark::RealVector stddevMeasurementRV(stddevMeasurementVector.Size()); - for (unsigned int i = 0; i<stddevMeasurementVector.Size(); ++i) + + assert(meanMeasurementVector.Size()==stddevMeasurementVector.Size()); + for (unsigned int i = 0; i<meanMeasurementVector.Size(); ++i) { stddevMeasurementRV[i] = stddevMeasurementVector[i]; + // Substract the normalized mean + offsetRV[i] = - meanMeasurementVector[i]/stddevMeasurementVector[i]; } - shark::Normalizer<> normalizer(stddevMeasurementRV, meanMeasurementRV); - + shark::Normalizer<> normalizer(stddevMeasurementRV, offsetRV); centroidData = normalizer(centroidData); } -- GitLab