diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index fecc73e7d..5522107e0 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -197,23 +197,16 @@ void extract_channels(Imagefloat *img, array2D &r, array2D &g, arr const int W = img->getWidth(); const int H = img->getHeight(); -#ifdef _OPENMP - #pragma omp parallel for if (multithread) -#endif - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - r[y][x] = img->r(y, x); - g[y][x] = img->g(y, x); - b[y][x] = img->b(y, x); - } - } + array2D imgR(W, H, img->r.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(imgR, imgR, r, radius, epsilon, multithread); - guidedFilter(r, r, r, radius, epsilon, multithread); - guidedFilter(g, g, g, radius, epsilon, multithread); - guidedFilter(b, b, b, radius, epsilon, multithread); + array2D imgG(W, H, img->g.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(imgG, imgG, g, radius, epsilon, multithread); + + array2D imgB(W, H, img->b.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(imgB, imgB, b, radius, epsilon, multithread); } - } // namespace