From 8ba27e509cf2fd5c414d0785e719fa682bfb25ad Mon Sep 17 00:00:00 2001 From: ariotte <ariotte@PC-EII16.admr.insa> Date: Mon, 25 Jun 2018 14:26:17 +0200 Subject: [PATCH] commenting changing order in Lloydmax Quantization --- app/Operations/Quantification.cpp | 37 ++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/app/Operations/Quantification.cpp b/app/Operations/Quantification.cpp index 4c10fb6..7e848a5 100644 --- a/app/Operations/Quantification.cpp +++ b/app/Operations/Quantification.cpp @@ -203,8 +203,21 @@ Quantification Quantification::lloydMaxQuant(int size, const Image* image, unsig while(cpt > 0 && diff_mean >=1 ){ - // calcul des nouveaux niveaux de quantification - + // calcul des nouveaux seuils de quantification + for (int i=0; i<size-1;i++){ + diff[i] = quant._threshold[i]; + + //centrage des seuils de décision entre chaque niveaux de quantification + quant._threshold[i] = (quant._values[i]+quant._values[i+1])/2; + + diff[i] = abs(diff[i] - quant._threshold[i]); + } + + + + + // Calcul des nouveaux niveaux de quantification + // Premier niveau baricentre entre 0 et le premier seuil som_lum = 0; nb_points = 0; for(int j = 0; j < quant._threshold[0]; j++){ @@ -227,7 +240,9 @@ Quantification Quantification::lloydMaxQuant(int size, const Image* image, unsig if(nb_points > 0) quant._values[j]= (int) (som_lum/nb_points); else quant._values[j] = (quant._threshold[j]+quant._threshold[j+1])/2; } - + + + // Dernier niveau baricentre entre le max et le dernier seuil som_lum = 0; nb_points = 0; for(int j = quant._threshold[size-2]; j < N_MAX_THRESHOLD; j++) { @@ -238,16 +253,12 @@ Quantification Quantification::lloydMaxQuant(int size, const Image* image, unsig if(nb_points > 0) quant._values[size -1] = (som_lum/nb_points); else quant._values[size-1] = (quant._threshold[size-2] + N_MAX_THRESHOLD)/2 ; - // calcul des nouveaux seuils de quantification - for (int i=0; i<size-1;i++){ - diff[i] = quant._threshold[i]; - - //centrage des seuils de décision entre chaque niveaux de quantification - quant._threshold[i] = (quant._values[i]+quant._values[i+1])/2; - - diff[i] = abs(diff[i] - quant._threshold[i]); - } - + + + + + + //calcul de la condition d'arret (moyenne des écarts < 1 ) for(int i = 0; i<size-1 ; i++){ -- GitLab