From a91c76dc70add8ed020e32316e9b87ee02755547 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 11 Apr 2019 07:47:14 +0200 Subject: [PATCH] Improve scope for Denoise and change sensitivity for BlurNoise --- rtengine/iplocallab.cc | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index d060e24b3..4f8582ec9 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -1261,6 +1261,11 @@ void ImProcFunctions::DeNoise_Local(int call, const struct local_params& lp, in #pragma omp parallel if (multiThread) #endif { + const int limscope = 80; + const float mindE = 2.f + MINSCOPE * lp.sensden * lp.thr; + const float maxdE = 5.f + MAXSCOPE * lp.sensden * (1 + 0.1f * lp.thr); + const float mindElim = 2.f + MINSCOPE * limscope * lp.thr; + const float maxdElim = 5.f + MAXSCOPE * limscope * (1 + 0.1f * lp.thr); #ifdef _OPENMP #pragma omp for schedule(dynamic,16) @@ -1307,12 +1312,21 @@ void ImProcFunctions::DeNoise_Local(int call, const struct local_params& lp, in float dEa = sqrt(1.2f * SQR(refa - origblur->a[y][x] / 327.6f) + 1.f * SQR(refb - origblur->b[y][x] / 327.8f) + 0.8f * SQR(lumaref - rL)); float dEb = sqrt(1.f * SQR(refa - origblur->a[y][x] / 327.6f) + 1.2f * SQR(refb - origblur->b[y][x] / 327.8f) + 0.8f * SQR(lumaref - rL)); - float mindE = 2.f + MINSCOPE * lp.sensden * lp.thr; - float maxdE = 5.f + MAXSCOPE * lp.sensden * (1 + 0.1f * lp.thr); +// float mindE = 2.f + MINSCOPE * lp.sensden * lp.thr; +// float maxdE = 5.f + MAXSCOPE * lp.sensden * (1 + 0.1f * lp.thr); float reducdEL = 1.f; float reducdEa = 1.f; float reducdEb = 1.f; + if (levred == 7){ + calcreducdE(dEL, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, lp.sensden , reducdEL); + calcreducdE(dEa, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, lp.sensden , reducdEa); + calcreducdE(dEb, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, lp.sensden , reducdEb); + reducdEL = SQR(reducdEL); + reducdEa = SQR(reducdEa); + reducdEb = SQR(reducdEb); + } + /* float ar = 1.f / (mindE - maxdE); float br = - ar * maxdE; @@ -1371,7 +1385,7 @@ void ImProcFunctions::DeNoise_Local(int call, const struct local_params& lp, in reducdEa = 1.f; reducdEL = 1.f; } - +*/ switch (zone) { case 0: { // outside selection and outside transition zone => no effect, keep original values transformed->L[y][x] = original->L[y][x]; @@ -1473,7 +1487,7 @@ void ImProcFunctions::BlurNoise_Local(LabImage * tmp1, const float hueref, const const int limscope = 80; const int begy = int (lp.yc - lp.lyT); const int begx = int (lp.xc - lp.lxL); - const float mindE = 2.f + MINSCOPE * lp.sensbn * lp.thr; + const float mindE = 4.f + MINSCOPE * lp.sensbn * lp.thr;//best usage ?? with blurnoise const float maxdE = 5.f + MAXSCOPE * lp.sensbn * (1 + 0.1f * lp.thr); const float mindElim = 2.f + MINSCOPE * limscope * lp.thr; const float maxdElim = 5.f + MAXSCOPE * limscope * (1 + 0.1f * lp.thr);