Retinex: Fixed wrong gaussian part for methods 'low' and 'uniform'

This commit is contained in:
heckflosse 2015-09-14 03:01:04 +02:00
parent 192569a6bd
commit 864ab0685d

View File

@ -70,20 +70,20 @@ void retinex_scales( float* scales, int nscales, int mode, int s)
if ( nscales == 1 ) { if ( nscales == 1 ) {
scales[0] = (float)s / 2.f; scales[0] = (float)s / 2.f;
} else if (nscales == 2) { } else if (nscales == 2) {
scales[0] = (float) s / 2.f; scales[1] = (float) s / 2.f;
scales[1] = (float) s; scales[0] = (float) s;
} else { } else {
float size_step = (float) s / (float) nscales; float size_step = (float) s / (float) nscales;
if (mode == 0) { if (mode == 0) {
for (int i = 0; i < nscales; ++i ) { for (int i = 0; i < nscales; ++i ) {
scales[i] = 2.0f + (float)i * size_step; scales[nscales - i - 1] = 2.0f + (float)i * size_step;
} }
} else if (mode == 1) { } else if (mode == 1) {
size_step = (float)log(s - 2.0f) / (float) nscales; size_step = (float)log(s - 2.0f) / (float) nscales;
for (int i = 0; i < nscales; ++i ) { for (int i = 0; i < nscales; ++i ) {
scales[i] = 2.0f + (float)pow (10.f, (i * size_step) / log (10.f)); scales[nscales - i - 1] = 2.0f + (float)pow (10.f, (i * size_step) / log (10.f));
} }
} else if (mode == 2) { } else if (mode == 2) {
size_step = (float) log(s - 2.0f) / (float) nscales; size_step = (float) log(s - 2.0f) / (float) nscales;