diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index f9b241646..37adc53d2 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -390,9 +390,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall int local_sensiv = locallab.spots.at(sp).sensiv; int local_sensiex = locallab.spots.at(sp).sensiex; - if (locallab.spots.at(sp).qualityMethod == "std") { - lp.qualmet = 0; - } else if (locallab.spots.at(sp).qualityMethod == "enh") { + if (locallab.spots.at(sp).qualityMethod == "enh") { lp.qualmet = 1; } else if (locallab.spots.at(sp).qualityMethod == "enhden") { lp.qualmet = 2; @@ -3451,7 +3449,8 @@ void ImProcFunctions::Exclude_Local(int sen, float **deltaso, float **buflight, #else // float rhue = xatan2f(origblur->b[y][x], origblur->a[y][x]); #endif - float rL = original->L[y][x] / 327.68f; + float rL = origblur->L[y][x] / 327.68f; + // float rLor = original->L[y][x] / 327.68f; float cli = 1.f; float clc = 1.f; @@ -3490,14 +3489,15 @@ void ImProcFunctions::Exclude_Local(int sen, float **deltaso, float **buflight, affsob = 1.f / pow((1.f + rsob), SQR(SQR(rs - minrs))); } } - - dE = affde * sqrt(SQR(refa - origblur->a[y][x] / 327.68f) + SQR(refb - origblur->b[y][x] / 327.68f) + SQR(lumaref - rL)); - + // affsob = 1.f; + dE = sqrt(SQR(refa - origblur->a[y][x] / 327.68f) + SQR(refb - origblur->b[y][x] / 327.68f) + SQR(lumaref - rL)); + // float dEor = affde * sqrt(SQR(refa - original->a[y][x] / 327.68f) + SQR(refb - original->b[y][x] / 327.68f) + SQR(lumaref - rLor)); cli = (buflight[loy - begy][lox - begx]); clc = (bufchro[loy - begy][lox - begx]); float reducdE = 0.f; +// float reducdEor = 0.f; float mindE = 2.f + minscope * varsens * lp.thr; float maxdE = 5.f + maxscope * varsens * (1 + 0.1f * lp.thr); @@ -3508,24 +3508,37 @@ void ImProcFunctions::Exclude_Local(int sen, float **deltaso, float **buflight, if (dE > maxdE) { reducdE = 0.f; } +// if (dEor > maxdE) { +// reducdEor = 0.f; +// } if (dE > mindE && dE <= maxdE) { reducdE = ar * dE + br; } +// if (dEor > mindE && dEor <= maxdE) { +// reducdEor = ar * dEor + br; +// } if (dE <= mindE) { reducdE = 1.f; } +// if (dEor <= mindE) { +// reducdEor = 1.f; +// } reducdE = pow(reducdE, lp.iterat); if (varsens > 99) { reducdE = 1.f; +// reducdEor = 1.f; } + affde = reducdE; - float realstrdE = reducdE * cli; - float realstrchdE = reducdE * clc; + // float realstrdE = reducdE * cli; + // float realstrchdE = reducdE * clc; + float realstrdE = cli; + float realstrchdE = clc; if (rL > 0.1f) { //to avoid crash with very low gamut in rare cases ex : L=0.01 a=0.5 b=-0.9 @@ -3543,18 +3556,18 @@ void ImProcFunctions::Exclude_Local(int sen, float **deltaso, float **buflight, float difL; difL = rsv->L[loy - begy][lox - begx] - original->L[y][x]; - difL *= factorx * (100.f + realstrdE) / 100.f; + difL *= factorx; // * (100.f + realstrdE) / 100.f; - transformed->L[y][x] = CLIP(original->L[y][x] + difL * affsob); + transformed->L[y][x] = CLIP(original->L[y][x] + difL * affsob * affde); float difa, difb; difa = rsv->a[loy - begy][lox - begx] - original->a[y][x]; difb = rsv->b[loy - begy][lox - begx] - original->b[y][x]; - difa *= factorx * (100.f + realstrchdE) / 100.f; - difb *= factorx * (100.f + realstrchdE) / 100.f; - transformed->a[y][x] = CLIPC(original->a[y][x] + difa * affsob); - transformed->b[y][x] = CLIPC(original->b[y][x] + difb * affsob); + difa *= factorx; // * (100.f + realstrchdE) / 100.f; + difb *= factorx; // * (100.f + realstrchdE) / 100.f; + transformed->a[y][x] = CLIPC(original->a[y][x] + difa * affsob * affde); + transformed->b[y][x] = CLIPC(original->b[y][x] + difb * affsob * affde); break; @@ -3564,18 +3577,18 @@ void ImProcFunctions::Exclude_Local(int sen, float **deltaso, float **buflight, float difL; difL = rsv->L[loy - begy][lox - begx] - original->L[y][x]; - difL *= (100.f + realstrdE) / 100.f; + // difL *= (100.f + realstrdE) / 100.f; - transformed->L[y][x] = CLIP(original->L[y][x] + difL * affsob); + transformed->L[y][x] = CLIP(original->L[y][x] + difL * affsob* affde); float difa, difb; difa = rsv->a[loy - begy][lox - begx] - original->a[y][x]; difb = rsv->b[loy - begy][lox - begx] - original->b[y][x]; - difa *= (100.f + realstrchdE) / 100.f; - difb *= (100.f + realstrchdE) / 100.f; + // difa *= (100.f + realstrchdE) / 100.f; + // difb *= (100.f + realstrchdE) / 100.f; - transformed->a[y][x] = CLIPC(original->a[y][x] + difa * affsob); - transformed->b[y][x] = CLIPC(original->b[y][x] + difb * affsob); + transformed->a[y][x] = CLIPC(original->a[y][x] + difa * affsob * affde); + transformed->b[y][x] = CLIPC(original->b[y][x] + difb * affsob * affde); } } diff --git a/rtgui/controlspotpanel.cc b/rtgui/controlspotpanel.cc index d6de673a4..978a7866f 100644 --- a/rtgui/controlspotpanel.cc +++ b/rtgui/controlspotpanel.cc @@ -170,7 +170,6 @@ ControlSpotPanel::ControlSpotPanel(): structexclu_->setAdjusterListener(this); excluBox->pack_start(*sensiexclu_); excluBox->pack_start(*structexclu_); - // excluBox->pack_start(*struc_); // Uncomment this line to use the struc_ adjuster excluFrame->add(*excluBox); pack_start(*excluFrame); diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index a1a401156..45ee20801 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -1132,13 +1132,10 @@ void Locallab::read(const ProcParams* pp, const ParamsEdited* pedited) r->centerY = pp->locallab.spots.at(i).centerY; r->circrad = pp->locallab.spots.at(i).circrad; - /* if (pp->locallab.spots.at(i).qualityMethod == "std") { - r->qualityMethod = 0; - }*/ if (pp->locallab.spots.at(i).qualityMethod == "enh") { - r->qualityMethod = 1; + r->qualityMethod = 0; } else { - r->qualityMethod = 2; + r->qualityMethod = 1; } r->transit = pp->locallab.spots.at(i).transit; @@ -1234,12 +1231,10 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited) r->centerY = newSpot->centerY; r->circrad = newSpot->circrad; - /* if (newSpot->qualityMethod == "std") { + if (newSpot->qualityMethod == "enh") { r->qualityMethod = 0; - } */ if (newSpot->qualityMethod == "enh") { - r->qualityMethod = 1; } else { - r->qualityMethod = 2; + r->qualityMethod = 1; } r->transit = newSpot->transit; @@ -1421,12 +1416,10 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited) r->centerY = newSpot->centerY; r->circrad = newSpot->circrad; - if (newSpot->qualityMethod == "std") { + if (newSpot->qualityMethod == "enh") { r->qualityMethod = 0; - } else if (newSpot->qualityMethod == "enh") { - r->qualityMethod = 1; } else { - r->qualityMethod = 2; + r->qualityMethod = 1; } r->transit = newSpot->transit; @@ -1510,9 +1503,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited) pp->locallab.spots.at(pp->locallab.selspot).centerY = r->centerY; pp->locallab.spots.at(pp->locallab.selspot).circrad = r->circrad; - /* if (r->qualityMethod == 0) { - pp->locallab.spots.at(pp->locallab.selspot).qualityMethod = "std"; - } */ if (r->qualityMethod == 1) { + if (r->qualityMethod == 0) { pp->locallab.spots.at(pp->locallab.selspot).qualityMethod = "enh"; } else { pp->locallab.spots.at(pp->locallab.selspot).qualityMethod = "enhden";