Если кто еще не понял: остаток от деления суммы в бинах выше среднего на число бинов раскидывается равномерно по бинам с шагом (число_бинов / остаток). Примерно так:
... // redistribute excess equally avg = sum / nbins; for (k=0; k < nbins; k++) { bins[k] += avg; } sum %= nbins; // redistribute reminder if (sum) { d = nbins / sum; for (k=0; k < nbins && sum; k+=d) { bins[k]++; sum--; } }
Только выровнять освещенность серого. Кстати, вариации на тему [[CL]A]HE, как показали эксперименты, для этого годятся еще меньше, чем самопальные "локально-компандерные" алгоритмы.
Comments 15
Reply
...
// redistribute excess equally
avg = sum / nbins;
for (k=0; k < nbins; k++) {
bins[k] += avg;
}
sum %= nbins;
// redistribute reminder
if (sum) {
d = nbins / sum;
for (k=0; k < nbins && sum; k+=d) {
bins[k]++;
sum--;
}
}
Reply
Reply
Reply
(The comment has been removed)
Reply
(The comment has been removed)
Reply
Leave a comment