From dd4eb44971e0db2c6074f273e54ff51dc831982e Mon Sep 17 00:00:00 2001 From: Pandagrapher Date: Sun, 19 Apr 2020 15:19:48 +0200 Subject: [PATCH] Merge Locallab tool "Denoise" into Locallab tool "Blur & Noise" --- rtdata/languages/default | 8 +- rtengine/iplocallab.cc | 2 +- rtengine/procevents.h | 2 +- rtengine/procparams.cc | 131 +++++++--------- rtengine/procparams.h | 31 ++-- rtgui/locallab.cc | 2 - rtgui/locallab.h | 1 - rtgui/locallabtools.cc | 283 ++++++++++++++++++++++++++++++++--- rtgui/locallabtools.h | 51 ++----- rtgui/locallabtools2.cc | 316 --------------------------------------- rtgui/paramsedited.cc | 214 ++++++++++++-------------- rtgui/paramsedited.h | 31 ++-- 12 files changed, 465 insertions(+), 607 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 0d7d46fab..bbd91e908 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -2269,7 +2269,6 @@ TP_LOCALLAB_CURVENSOB2;Combined HueChroma + Contrast threshold (experimental) TP_LOCALLAB_DARKRETI;Darkness TP_LOCALLAB_LIGHTRETI;Lightness TP_LOCALLAB_THRESRETI;Threshold -TP_LOCALLAB_DENOIS;Denoise TP_LOCALLAB_DEHAZ;Dehaze TP_LOCALLAB_EXPMETHOD_TOOLTIP;Standard : use an algorithm similar as main Exposure but in L*a*b* and taking account of deltaE.\n\nLaplacian & PDE : use another algorithm also with deltaE and with Poisson equation to solve Laplacian in Fourier space.\nPDE lead to very different results and needs differents settings that Standard\nMay be usefull for low exposure.\nPDE reduce artifacts and noise. TP_LOCALLAB_FFTW;Use Fast Fourier Transform @@ -2426,7 +2425,7 @@ TP_LOCALLAB_VIBRANCE;Vibrance TP_LOCALLAB_WARM;Warm - Cool & Color artifacts TP_LOCALLAB_WARM_TOOLTIP;This slider use Ciecam algorithm and acts as White Balance, it can warm or cool the area selected.\nIt can also in some cases reduce color artifacts. TP_LOCALLAB_SPOTNAME;New Spot -TP_LOCALLAB_BLUFR;Smooth - Blur - Grain (& additional denoise) +TP_LOCALLAB_BLUFR;Smooth - Blur - Grain - Denoise TP_LOCALLAB_BLUMETHOD_TOOLTIP;To blur the background and isolate the foreground:\n*Blur the background by a RT-spot fully covering the image (high values for scope and transition) - normal or inverse.\n*Isolate the foreground by one or more excluding RT-spot with the tools you want (increse scope), you can use a mask to enhance and amplify the effects.\n\nThis module can be used in additional noise reduction,including "median" and "Guided filter" TP_LOCALLAB_BLUR;Gaussian Blur - Noise - Grain TP_LOCALLAB_BLURCBDL;Blur levels 0-1-2-3-4 @@ -2850,13 +2849,12 @@ TP_LOCALLAB_EXP_TOOLNAME;Locallab Exposure TP_LOCALLAB_SH_TOOLNAME;Locallab Shadows Highlight TP_LOCALLAB_VIB_TOOLNAME;Locallab Vibrance TP_LOCALLAB_SOFT_TOOLNAME;Locallab Soft Light -TP_LOCALLAB_BLUR_TOOLNAME;Locallab Blur & Noise +TP_LOCALLAB_BLUR_TOOLNAME;Locallab Blur, Noise & Denoise TP_LOCALLAB_TONE_TOOLNAME;Locallab Tone Mapping TP_LOCALLAB_RET_TOOLNAME;Locallab Retinex TP_LOCALLAB_SHARP_TOOLNAME;Locallab Sharpening TP_LOCALLAB_LC_TOOLNAME;Locallab Local Constrast TP_LOCALLAB_CBDL_TOOLNAME;Locallab CBDL -TP_LOCALLAB_DEN_TOOLNAME;Locallab Denoise TP_LOCALLAB_LOG_TOOLNAME;Locallab Encoding log TP_LOCALLAB_WAMASKCOL;Ψ Mask Wavelet level TP_LOCALLAB_WARM;Warm - Cool & Color artifacts @@ -2877,6 +2875,8 @@ TP_LOCALLAB_WAVMASK;Ψ Mask Levels local contrast TP_LOCALLAB_WAVMED;Ψ Wavelet normal TP_LOCALLAB_WEDIANHI;Median Hi TP_LOCALLAB_WHITE_EV;White Ev +TP_LOCALLAB_BLNOI_EXP;Blur & Noise +TP_LOCALLAB_DENOI_EXP;Denoise TP_LOCAL_HEIGHT;Bottom TP_LOCAL_HEIGHT_T;Top TP_LOCAL_WIDTH;Right diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index 4b297879f..78a4a24cb 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -794,7 +794,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.shapmet = 1; } - lp.denoiena = locallab.spots.at(sp).expdenoi; + lp.denoiena = locallab.spots.at(sp).expblur; bool wavcurveden = false; float local_noiself = 0.f; diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 2101275e8..eb4aa1484 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -602,7 +602,7 @@ enum ProcEventCode { Evlocallabchromacbdl = 576, EvlocallabThresho = 577, Evlocallabsensicb = 578, - EvLocenadenoi = 579, + // EvLocenadenoi = 579, Evlocallabnoiselumf = 580, Evlocallabnoiselumc = 581, Evlocallabnoiselumdetail = 582, diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 7a817050d..925d90bcc 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2636,6 +2636,20 @@ LocallabParams::LocallabSpot::LocallabSpot() : blurMethod("norm"), medMethod("33"), activlum(true), + noiselumf(0.), + noiselumf0(0.), + noiselumf2(0.), + noiselumc(0.), + noiselumdetail(0.), + noiselequal(7), + noisechrof(0.), + noisechroc(0.), + noisechrodetail(0.), + adjblur(0), + bilateral(0), + sensiden(20), + detailthr(0), + locwavcurveden{(double)FCT_MinMaxCPoints, 0.0, 0.0, 0.0, 0.35, 0.5, 0., 0.35, 0.35, 1.0, 0.0, 0.35, 0.35}, CCmaskblcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35}, LLmaskblcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35}, HHmaskblcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35}, @@ -2811,23 +2825,6 @@ LocallabParams::LocallabSpot::LocallabSpot() : slomaskcb(0.0), lapmaskcb(0.0), Lmaskcbcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0}, - // Denoise - visidenoi(false), - expdenoi(false), - noiselumf(0.), - noiselumf0(0.), - noiselumf2(0.), - noiselumc(0.), - noiselumdetail(0.), - noiselequal(7), - noisechrof(0.), - noisechroc(0.), - noisechrodetail(0.), - adjblur(0), - bilateral(0), - sensiden(20), - detailthr(0), - locwavcurveden{(double)FCT_MinMaxCPoints, 0.0, 0.0, 0.0, 0.35, 0.5, 0., 0.35, 0.35, 1.0, 0.0, 0.35, 0.35}, // Log encoding visilog(false), explog(false), @@ -3081,6 +3078,20 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const && blurMethod == other.blurMethod && medMethod == other.medMethod && activlum == other.activlum + && noiselumf == other.noiselumf + && noiselumf0 == other.noiselumf0 + && noiselumf2 == other.noiselumf2 + && noiselumc == other.noiselumc + && noiselumdetail == other.noiselumdetail + && noiselequal == other.noiselequal + && noisechrof == other.noisechrof + && noisechroc == other.noisechroc + && noisechrodetail == other.noisechrodetail + && adjblur == other.adjblur + && bilateral == other.bilateral + && sensiden == other.sensiden + && detailthr == other.detailthr + && locwavcurveden == other.locwavcurveden && CCmaskblcurve == other.CCmaskblcurve && LLmaskblcurve == other.LLmaskblcurve && HHmaskblcurve == other.HHmaskblcurve @@ -3265,23 +3276,6 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const && slomaskcb == other.slomaskcb && lapmaskcb == other.lapmaskcb && Lmaskcbcurve == other.Lmaskcbcurve - // Denoise - && visidenoi == other.visidenoi - && expdenoi == other.expdenoi - && noiselumf == other.noiselumf - && noiselumf0 == other.noiselumf0 - && noiselumf2 == other.noiselumf2 - && noiselumc == other.noiselumc - && noiselumdetail == other.noiselumdetail - && noiselequal == other.noiselequal - && noisechrof == other.noisechrof - && noisechroc == other.noisechroc - && noisechrodetail == other.noisechrodetail - && adjblur == other.adjblur - && bilateral == other.bilateral - && sensiden == other.sensiden - && detailthr == other.detailthr - && locwavcurveden == other.locwavcurveden // Log encoding && visilog == other.visilog && explog == other.explog @@ -4509,6 +4503,20 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blurMethod, "Locallab", "BlurMethod_" + std::to_string(i), spot.blurMethod, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).medMethod, "Locallab", "MedMethod_" + std::to_string(i), spot.medMethod, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).activlum, "Locallab", "activlum_" + std::to_string(i), spot.activlum, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumf, "Locallab", "noiselumf_" + std::to_string(i), spot.noiselumf, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumf0, "Locallab", "noiselumf0_" + std::to_string(i), spot.noiselumf0, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumf2, "Locallab", "noiselumf2_" + std::to_string(i), spot.noiselumf2, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumc, "Locallab", "noiselumc_" + std::to_string(i), spot.noiselumc, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumdetail, "Locallab", "noiselumdetail_" + std::to_string(i), spot.noiselumdetail, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselequal, "Locallab", "noiselequal_" + std::to_string(i), spot.noiselequal, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noisechrof, "Locallab", "noisechrof_" + std::to_string(i), spot.noisechrof, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noisechroc, "Locallab", "noisechroc_" + std::to_string(i), spot.noisechroc, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noisechrodetail, "Locallab", "noisechrodetail_" + std::to_string(i), spot.noisechrodetail, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).adjblur, "Locallab", "Adjblur_" + std::to_string(i), spot.adjblur, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).bilateral, "Locallab", "Bilateral_" + std::to_string(i), spot.bilateral, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensiden, "Locallab", "Sensiden_" + std::to_string(i), spot.sensiden, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).detailthr, "Locallab", "Detailthr_" + std::to_string(i), spot.detailthr, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).locwavcurveden, "Locallab", "LocwavCurveden_" + std::to_string(i), spot.locwavcurveden, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).CCmaskblcurve, "Locallab", "CCmaskblCurve_" + std::to_string(i), spot.CCmaskblcurve, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmaskblcurve, "Locallab", "LLmaskblCurve_" + std::to_string(i), spot.LLmaskblcurve, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHmaskblcurve, "Locallab", "HHmaskblCurve_" + std::to_string(i), spot.HHmaskblcurve, keyFile); @@ -4694,24 +4702,6 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->locallab.spots.at(i).lapmaskcb, "Locallab", "Lapmaskcb_" + std::to_string(i), spot.lapmaskcb, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).Lmaskcbcurve, "Locallab", "LmaskcbCurve_" + std::to_string(i), spot.Lmaskcbcurve, keyFile); } - // Denoise - if ((!pedited || pedited->locallab.spots.at(i).visidenoi) && spot.visidenoi) { - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expdenoi, "Locallab", "Expdenoi_" + std::to_string(i), spot.expdenoi, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumf, "Locallab", "noiselumf_" + std::to_string(i), spot.noiselumf, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumf0, "Locallab", "noiselumf0_" + std::to_string(i), spot.noiselumf0, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumf2, "Locallab", "noiselumf2_" + std::to_string(i), spot.noiselumf2, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumc, "Locallab", "noiselumc_" + std::to_string(i), spot.noiselumc, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselumdetail, "Locallab", "noiselumdetail_" + std::to_string(i), spot.noiselumdetail, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noiselequal, "Locallab", "noiselequal_" + std::to_string(i), spot.noiselequal, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noisechrof, "Locallab", "noisechrof_" + std::to_string(i), spot.noisechrof, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noisechroc, "Locallab", "noisechroc_" + std::to_string(i), spot.noisechroc, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).noisechrodetail, "Locallab", "noisechrodetail_" + std::to_string(i), spot.noisechrodetail, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).adjblur, "Locallab", "Adjblur_" + std::to_string(i), spot.adjblur, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).bilateral, "Locallab", "Bilateral_" + std::to_string(i), spot.bilateral, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensiden, "Locallab", "Sensiden_" + std::to_string(i), spot.sensiden, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).detailthr, "Locallab", "Detailthr_" + std::to_string(i), spot.detailthr, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).locwavcurveden, "Locallab", "LocwavCurveden_" + std::to_string(i), spot.locwavcurveden, keyFile); - } // Log encoding if ((!pedited || pedited->locallab.spots.at(i).visilog) && spot.visilog) { saveToKeyfile(!pedited || pedited->locallab.spots.at(i).explog, "Locallab", "Explog_" + std::to_string(i), spot.explog, keyFile); @@ -6102,6 +6092,20 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Locallab", "BlurMethod_" + std::to_string(i), pedited, spot.blurMethod, spotEdited.blurMethod); assignFromKeyfile(keyFile, "Locallab", "MedMethod_" + std::to_string(i), pedited, spot.medMethod, spotEdited.medMethod); assignFromKeyfile(keyFile, "Locallab", "activlum_" + std::to_string(i), pedited, spot.activlum, spotEdited.activlum); + assignFromKeyfile(keyFile, "Locallab", "noiselumf_" + std::to_string(i), pedited, spot.noiselumf, spotEdited.noiselumf); + assignFromKeyfile(keyFile, "Locallab", "noiselumf0_" + std::to_string(i), pedited, spot.noiselumf0, spotEdited.noiselumf0); + assignFromKeyfile(keyFile, "Locallab", "noiselumf2_" + std::to_string(i), pedited, spot.noiselumf2, spotEdited.noiselumf2); + assignFromKeyfile(keyFile, "Locallab", "noiselumc_" + std::to_string(i), pedited, spot.noiselumc, spotEdited.noiselumc); + assignFromKeyfile(keyFile, "Locallab", "noiselumdetail_" + std::to_string(i), pedited, spot.noiselumdetail, spotEdited.noiselumdetail); + assignFromKeyfile(keyFile, "Locallab", "noiselequal_" + std::to_string(i), pedited, spot.noiselequal, spotEdited.noiselequal); + assignFromKeyfile(keyFile, "Locallab", "noisechrof_" + std::to_string(i), pedited, spot.noisechrof, spotEdited.noisechrof); + assignFromKeyfile(keyFile, "Locallab", "noisechroc_" + std::to_string(i), pedited, spot.noisechroc, spotEdited.noisechroc); + assignFromKeyfile(keyFile, "Locallab", "noisechrodetail_" + std::to_string(i), pedited, spot.noisechrodetail, spotEdited.noisechrodetail); + assignFromKeyfile(keyFile, "Locallab", "Adjblur_" + std::to_string(i), pedited, spot.adjblur, spotEdited.adjblur); + assignFromKeyfile(keyFile, "Locallab", "Bilateral_" + std::to_string(i), pedited, spot.bilateral, spotEdited.bilateral); + assignFromKeyfile(keyFile, "Locallab", "Sensiden_" + std::to_string(i), pedited, spot.sensiden, spotEdited.sensiden); + assignFromKeyfile(keyFile, "Locallab", "Detailthr_" + std::to_string(i), pedited, spot.detailthr, spotEdited.detailthr); + assignFromKeyfile(keyFile, "Locallab", "LocwavCurveden_" + std::to_string(i), pedited, spot.locwavcurveden, spotEdited.locwavcurveden); assignFromKeyfile(keyFile, "Locallab", "CCmaskblCurve_" + std::to_string(i), pedited, spot.CCmaskblcurve, spotEdited.CCmaskblcurve); assignFromKeyfile(keyFile, "Locallab", "LLmaskblCurve_" + std::to_string(i), pedited, spot.LLmaskblcurve, spotEdited.LLmaskblcurve); assignFromKeyfile(keyFile, "Locallab", "HHmaskblCurve_" + std::to_string(i), pedited, spot.HHmaskblcurve, spotEdited.HHmaskblcurve); @@ -6266,8 +6270,6 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Locallab", "localedgMethod_" + std::to_string(i), pedited, spot.localedgMethod, spotEdited.localedgMethod); assignFromKeyfile(keyFile, "Locallab", "localneiMethod_" + std::to_string(i), pedited, spot.localneiMethod, spotEdited.localneiMethod); assignFromKeyfile(keyFile, "Locallab", "LocwavCurve_" + std::to_string(i), pedited, spot.locwavcurve, spotEdited.locwavcurve); - - assignFromKeyfile(keyFile, "Locallab", "LoclevwavCurve_" + std::to_string(i), pedited, spot.loclevwavcurve, spotEdited.loclevwavcurve); assignFromKeyfile(keyFile, "Locallab", "LocconwavCurve_" + std::to_string(i), pedited, spot.locconwavcurve, spotEdited.locconwavcurve); assignFromKeyfile(keyFile, "Locallab", "LoccompwavCurve_" + std::to_string(i), pedited, spot.loccompwavcurve, spotEdited.loccompwavcurve); @@ -6322,27 +6324,6 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Locallab", "Slomaskcb_" + std::to_string(i), pedited, spot.slomaskcb, spotEdited.slomaskcb); assignFromKeyfile(keyFile, "Locallab", "Lapmaskcb_" + std::to_string(i), pedited, spot.lapmaskcb, spotEdited.lapmaskcb); assignFromKeyfile(keyFile, "Locallab", "LmaskcbCurve_" + std::to_string(i), pedited, spot.Lmaskcbcurve, spotEdited.Lmaskcbcurve); - // Denoise - spot.visidenoi = assignFromKeyfile(keyFile, "Locallab", "Expdenoi_" + std::to_string(i), pedited, spot.expdenoi, spotEdited.expdenoi); - - if (spot.visidenoi) { - spotEdited.visidenoi = true; - } - - assignFromKeyfile(keyFile, "Locallab", "noiselumf_" + std::to_string(i), pedited, spot.noiselumf, spotEdited.noiselumf); - assignFromKeyfile(keyFile, "Locallab", "noiselumf0_" + std::to_string(i), pedited, spot.noiselumf0, spotEdited.noiselumf0); - assignFromKeyfile(keyFile, "Locallab", "noiselumf2_" + std::to_string(i), pedited, spot.noiselumf2, spotEdited.noiselumf2); - assignFromKeyfile(keyFile, "Locallab", "noiselumc_" + std::to_string(i), pedited, spot.noiselumc, spotEdited.noiselumc); - assignFromKeyfile(keyFile, "Locallab", "noiselumdetail_" + std::to_string(i), pedited, spot.noiselumdetail, spotEdited.noiselumdetail); - assignFromKeyfile(keyFile, "Locallab", "noiselequal_" + std::to_string(i), pedited, spot.noiselequal, spotEdited.noiselequal); - assignFromKeyfile(keyFile, "Locallab", "noisechrof_" + std::to_string(i), pedited, spot.noisechrof, spotEdited.noisechrof); - assignFromKeyfile(keyFile, "Locallab", "noisechroc_" + std::to_string(i), pedited, spot.noisechroc, spotEdited.noisechroc); - assignFromKeyfile(keyFile, "Locallab", "noisechrodetail_" + std::to_string(i), pedited, spot.noisechrodetail, spotEdited.noisechrodetail); - assignFromKeyfile(keyFile, "Locallab", "Adjblur_" + std::to_string(i), pedited, spot.adjblur, spotEdited.adjblur); - assignFromKeyfile(keyFile, "Locallab", "Bilateral_" + std::to_string(i), pedited, spot.bilateral, spotEdited.bilateral); - assignFromKeyfile(keyFile, "Locallab", "Sensiden_" + std::to_string(i), pedited, spot.sensiden, spotEdited.sensiden); - assignFromKeyfile(keyFile, "Locallab", "Detailthr_" + std::to_string(i), pedited, spot.detailthr, spotEdited.detailthr); - assignFromKeyfile(keyFile, "Locallab", "LocwavCurveden_" + std::to_string(i), pedited, spot.locwavcurveden, spotEdited.locwavcurveden); // Log encoding spot.visilog = assignFromKeyfile(keyFile, "Locallab", "Explog_" + std::to_string(i), pedited, spot.explog, spotEdited.explog); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index aa4bfa7d3..5a61eb2d0 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1179,6 +1179,20 @@ struct LocallabParams { Glib::ustring blurMethod; // norm, inv Glib::ustring medMethod; // none, 33, 55, 77, 99 bool activlum; + double noiselumf; + double noiselumf0; + double noiselumf2; + double noiselumc; + double noiselumdetail; + int noiselequal; + double noisechrof; + double noisechroc; + double noisechrodetail; + int adjblur; + int bilateral; + int sensiden; + int detailthr; + std::vector locwavcurveden; std::vector CCmaskblcurve; std::vector LLmaskblcurve; std::vector HHmaskblcurve; @@ -1354,23 +1368,6 @@ struct LocallabParams { double slomaskcb; double lapmaskcb; std::vector Lmaskcbcurve; - // Denoise - bool visidenoi; - bool expdenoi; - double noiselumf; - double noiselumf0; - double noiselumf2; - double noiselumc; - double noiselumdetail; - int noiselequal; - double noisechrof; - double noisechroc; - double noisechrodetail; - int adjblur; - int bilateral; - int sensiden; - int detailthr; - std::vector locwavcurveden; // Log encoding bool visilog; bool explog; diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index e91cbbd70..233a5e708 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -160,7 +160,6 @@ Locallab::Locallab(): expsharp(Gtk::manage(new LocallabSharp())), expcontrast(Gtk::manage(new LocallabContrast())), expcbdl(Gtk::manage(new LocallabCBDL())), - expdenoi(Gtk::manage(new LocallabDenoise())), explog(Gtk::manage(new LocallabLog())), // Other widgets @@ -196,7 +195,6 @@ Locallab::Locallab(): addTool(toolpanel, expsharp); addTool(toolpanel, expcontrast); addTool(toolpanel, expcbdl); - addTool(toolpanel, expdenoi); addTool(toolpanel, explog); panel->pack_start(*toolpanel, false, false); diff --git a/rtgui/locallab.h b/rtgui/locallab.h index 51cde7671..5ff545669 100644 --- a/rtgui/locallab.h +++ b/rtgui/locallab.h @@ -113,7 +113,6 @@ private: LocallabSharp* const expsharp; LocallabContrast* const expcontrast; LocallabCBDL* const expcbdl; - LocallabDenoise* const expdenoi; LocallabLog* const explog; std::vector locallabTools; diff --git a/rtgui/locallabtools.cc b/rtgui/locallabtools.cc index 6a85ce03f..fe909a01d 100644 --- a/rtgui/locallabtools.cc +++ b/rtgui/locallabtools.cc @@ -30,6 +30,9 @@ #define MINRAD 1.5 #define MAXRAD 10000 #define CENTERRAD 100 +#define MINCHRO 0. +#define MAXCHRO 150. +#define MAXCHROCC 100. using namespace rtengine; using namespace procparams; @@ -5126,7 +5129,7 @@ void LocallabSoft::updateSoftGUI() LocallabBlur::LocallabBlur(): LocallabTool(this, M("TP_LOCALLAB_BLUR_TOOLNAME"), M("TP_LOCALLAB_BLUFR"), true), - // Blur & Noise specific widgets + // Blur, Noise & Denoise specific widgets blMethod(Gtk::manage(new MyComboBoxText())), fftwbl(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_FFTWBLUR")))), radius(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RADIUS"), MINRAD, MAXRAD, 0.1, 1.5, nullptr, nullptr, &blurSlider2radius, &blurRadius2Slider))), @@ -5144,6 +5147,21 @@ LocallabBlur::LocallabBlur(): blurMethod(Gtk::manage(new MyComboBoxText())), chroMethod(Gtk::manage(new MyComboBoxText())), activlum(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ACTIV")))), + LocalcurveEditorwavden(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_WAVDEN"))), + wavshapeden(static_cast(LocalcurveEditorwavden->addCurve(CT_Flat, "", nullptr, false, false))), + noiselumf0(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMFINEZERO"), MINCHRO, MAXCHRO, 0.01, 0.))), + noiselumf(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMFINE"), MINCHRO, MAXCHRO, 0.01, 0.))), + noiselumf2(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMFINETWO"), MINCHRO, MAXCHRO, 0.01, 0.))), + noiselumc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMCOARSE"), MINCHRO, MAXCHROCC, 0.01, 0.))), + noiselumdetail(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMDETAIL"), 0., 100., 0.01, 0.))), + noiselequal(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELEQUAL"), -2, 10, 1, 7, Gtk::manage(new RTImage("circle-white-small.png")), Gtk::manage(new RTImage("circle-black-small.png"))))), + noisechrof(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISECHROFINE"), MINCHRO, MAXCHRO, 0.01, 0.))), + noisechroc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISECHROCOARSE"), MINCHRO, MAXCHROCC, 0.01, 0.))), + noisechrodetail(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISECHRODETAIL"), 0., 100., 0.01, 0.))), + detailthr(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DETAILTHR"), 0, 100, 1, 0))), + adjblur(Gtk::manage(new Adjuster(M("TP_LOCALLAB_ADJ"), -100., 100., 1., 0., Gtk::manage(new RTImage("circle-blue-small.png")), Gtk::manage(new RTImage("circle-red-small.png"))))), + bilateral(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BILATERAL"), 0, 100, 1, 0))), + sensiden(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIDEN"), 0, 100, 1, 20))), expmaskbl(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_SHOWPLUS")))), showmaskblMethod(Gtk::manage(new MyComboBoxText())), enablMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))), @@ -5172,10 +5190,8 @@ LocallabBlur::LocallabBlur(): const bool showtooltip = options.showtooltip; const int complexsoft = options.complexity; - // Parameter Blur & Noise specific widgets - if (showtooltip) { - exp->set_tooltip_markup(M("TP_LOCALLAB_BLUMETHOD_TOOLTIP")); - } + // Parameter Blur, Noise & Denoise specific widgets + blMethod->append(M("TP_LOCALLAB_BLUR")); blMethod->append(M("TP_LOCALLAB_BLMED")); @@ -5242,6 +5258,51 @@ LocallabBlur::LocallabBlur(): activlumConn = activlum->signal_toggled().connect(sigc::mem_fun(*this, &LocallabBlur::activlumChanged)); + LocalcurveEditorwavden->setCurveListener(this); + + wavshapeden->setIdentityValue(0.); + wavshapeden->setResetCurve(FlatCurveType(defSpot.locwavcurveden.at(0)), defSpot.locwavcurveden); + + if (showtooltip) { + wavshapeden->setTooltip(M("TP_LOCALLAB_WASDEN_TOOLTIP")); + } + + LocalcurveEditorwavden->curveListComplete(); + + noiselumf0->setAdjusterListener(this); + + noiselumf->setAdjusterListener(this); + + noiselumf2->setAdjusterListener(this); + + if (showtooltip) { + noiselumc->set_tooltip_text(M("TP_LOCALLAB_NOISECHROC_TOOLTIP")); + } + + noiselumc->setAdjusterListener(this); + + noiselumdetail->setAdjusterListener(this); + + noiselequal->setAdjusterListener(this); + + noisechrof->setAdjusterListener(this); + + if (showtooltip) { + noisechroc->set_tooltip_text(M("TP_LOCALLAB_NOISECHROC_TOOLTIP")); + } + + noisechroc->setAdjusterListener(this); + + noisechrodetail->setAdjusterListener(this); + + detailthr->setAdjusterListener(this); + + adjblur->setAdjusterListener(this); + + bilateral->setAdjusterListener(this); + + sensiden->setAdjusterListener(this); + setExpandAlignProperties(expmaskbl, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); if (showtooltip) { @@ -5350,30 +5411,70 @@ LocallabBlur::LocallabBlur(): csThresholdblur->setAdjusterListener(this); - // Add Blur & Noise specific widgets to GUI - pack_start(*blMethod); + // Add Blur, Noise & Denoise specific widgets to GUI + MyExpander* const expblnoise = Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_BLNOI_EXP"))); + setExpandAlignProperties(expblnoise, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); - if (complexsoft < 2) { - pack_start(*fftwbl, Gtk::PACK_SHRINK, 0); + if (showtooltip) { + expblnoise->set_tooltip_markup(M("TP_LOCALLAB_BLUMETHOD_TOOLTIP")); } - pack_start(*radius); - pack_start(*strength); + expblnoise->set_expanded(false); + ToolParamBlock* const blnoisebox = Gtk::manage(new ToolParamBlock()); + blnoisebox->pack_start(*blMethod); + + if (complexsoft < 2) { + blnoisebox->pack_start(*fftwbl, Gtk::PACK_SHRINK, 0); + } + + blnoisebox->pack_start(*radius); + blnoisebox->pack_start(*strength); ToolParamBlock* const grainBox = Gtk::manage(new ToolParamBlock()); grainBox->pack_start(*isogr); grainBox->pack_start(*strengr); grainBox->pack_start(*scalegr); grainFrame->add(*grainBox); - pack_start(*grainFrame); - pack_start(*medMethod); - pack_start(*itera); - pack_start(*guidbl); - pack_start(*strbl); - pack_start(*epsbl); - pack_start(*sensibn); - pack_start(*blurMethod); - pack_start(*chroMethod); - // pack_start(*activlum); + blnoisebox->pack_start(*grainFrame); + blnoisebox->pack_start(*medMethod); + blnoisebox->pack_start(*itera); + blnoisebox->pack_start(*guidbl); + blnoisebox->pack_start(*strbl); + blnoisebox->pack_start(*epsbl); + blnoisebox->pack_start(*sensibn); + blnoisebox->pack_start(*blurMethod); + blnoisebox->pack_start(*chroMethod); + // blnoisebox->pack_start(*activlum); + expblnoise->add(*blnoisebox, false); + pack_start(*expblnoise); + MyExpander* const expdenoise = Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI_EXP"))); + setExpandAlignProperties(expdenoise, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); + + if (showtooltip) { + expdenoise->set_tooltip_markup(M("TP_LOCALLAB_DENOI_TOOLTIP")); + } + + expdenoise->set_expanded(false); + ToolParamBlock* const denoisebox = Gtk::manage(new ToolParamBlock()); + Gtk::Frame* const wavFrame = Gtk::manage(new Gtk::Frame()); + ToolParamBlock* const wavBox = Gtk::manage(new ToolParamBlock()); + wavBox->pack_start(*LocalcurveEditorwavden, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor + // wavBox->pack_start(*noiselumf0); + // wavBox->pack_start(*noiselumf); + // wavBox->pack_start(*noiselumf2); + // wavBox->pack_start(*noiselumc); + wavBox->pack_start(*noiselumdetail); + wavBox->pack_start(*noiselequal); + wavBox->pack_start(*noisechrof); + wavBox->pack_start(*noisechroc); + wavBox->pack_start(*noisechrodetail); + wavBox->pack_start(*detailthr); + wavBox->pack_start(*adjblur); + wavFrame->add(*wavBox); + denoisebox->pack_start(*wavFrame); + denoisebox->pack_start(*bilateral); + denoisebox->pack_start(*sensiden); + expdenoise->add(*denoisebox, false); + pack_start(*expdenoise); ToolParamBlock* const maskblBox = Gtk::manage(new ToolParamBlock()); maskblBox->pack_start(*showmaskblMethod, Gtk::PACK_SHRINK, 4); maskblBox->pack_start(*enablMask, Gtk::PACK_SHRINK, 0); @@ -5420,6 +5521,7 @@ LocallabBlur::~LocallabBlur() delete maskblCurveEditorG; delete mask2blCurveEditorG; delete mask2blCurveEditorGwav; + delete LocalcurveEditorwavden; } void LocallabBlur::resetMaskView() @@ -5537,6 +5639,20 @@ void LocallabBlur::read(const rtengine::procparams::ProcParams* pp, const Params } activlum->set_active(pp->locallab.spots.at(index).activlum); + wavshapeden->setCurve(pp->locallab.spots.at(index).locwavcurveden); + noiselumf0->setValue(pp->locallab.spots.at(index).noiselumf0); + noiselumf->setValue(pp->locallab.spots.at(index).noiselumf); + noiselumf2->setValue(pp->locallab.spots.at(index).noiselumf2); + noiselumc->setValue(pp->locallab.spots.at(index).noiselumc); + noiselumdetail->setValue(pp->locallab.spots.at(index).noiselumdetail); + noiselequal->setValue((double)pp->locallab.spots.at(index).noiselequal); + noisechrof->setValue(pp->locallab.spots.at(index).noisechrof); + noisechroc->setValue(pp->locallab.spots.at(index).noisechroc); + noisechrodetail->setValue(pp->locallab.spots.at(index).noisechrodetail); + detailthr->setValue((double)pp->locallab.spots.at(index).detailthr); + adjblur->setValue((double)pp->locallab.spots.at(index).adjblur); + bilateral->setValue((double)pp->locallab.spots.at(index).bilateral); + sensiden->setValue((double)pp->locallab.spots.at(index).sensiden); enablMask->set_active(pp->locallab.spots.at(index).enablMask); CCmaskblshape->setCurve(pp->locallab.spots.at(index).CCmaskblcurve); LLmaskblshape->setCurve(pp->locallab.spots.at(index).LLmaskblcurve); @@ -5646,6 +5762,20 @@ void LocallabBlur::write(rtengine::procparams::ProcParams* pp, ParamsEdited* ped } pp->locallab.spots.at(index).activlum = activlum->get_active(); + pp->locallab.spots.at(index).locwavcurveden = wavshapeden->getCurve(); + pp->locallab.spots.at(index).noiselumf0 = noiselumf0->getValue(); + pp->locallab.spots.at(index).noiselumf = noiselumf->getValue(); + pp->locallab.spots.at(index).noiselumf2 = noiselumf2->getValue(); + pp->locallab.spots.at(index).noiselumc = noiselumc->getValue(); + pp->locallab.spots.at(index).noiselumdetail = noiselumdetail->getValue(); + pp->locallab.spots.at(index).noiselequal = noiselequal->getIntValue(); + pp->locallab.spots.at(index).noisechrof = noisechrof->getValue(); + pp->locallab.spots.at(index).noisechroc = noisechroc->getValue(); + pp->locallab.spots.at(index).noisechrodetail = noisechrodetail->getValue(); + pp->locallab.spots.at(index).detailthr = detailthr->getIntValue(); + pp->locallab.spots.at(index).adjblur = adjblur->getIntValue(); + pp->locallab.spots.at(index).bilateral = bilateral->getIntValue(); + pp->locallab.spots.at(index).sensiden = sensiden->getIntValue(); pp->locallab.spots.at(index).enablMask = enablMask->get_active(); pp->locallab.spots.at(index).LLmaskblcurve = LLmaskblshape->getCurve(); pp->locallab.spots.at(index).CCmaskblcurve = CCmaskblshape->getCurve(); @@ -5685,6 +5815,19 @@ void LocallabBlur::setDefaults(const rtengine::procparams::ProcParams* defParams strbl->setDefault((double)defSpot.strbl); epsbl->setDefault((double)defSpot.epsbl); sensibn->setDefault((double)defSpot.sensibn); + noiselumf0->setDefault(defSpot.noiselumf0); + noiselumf->setDefault(defSpot.noiselumf); + noiselumf2->setDefault(defSpot.noiselumf2); + noiselumc->setDefault(defSpot.noiselumc); + noiselumdetail->setDefault(defSpot.noiselumdetail); + noiselequal->setDefault((double)defSpot.noiselequal); + noisechrof->setDefault(defSpot.noisechrof); + noisechroc->setDefault(defSpot.noisechroc); + noisechrodetail->setDefault(defSpot.noisechrodetail); + detailthr->setDefault((double)defSpot.detailthr); + adjblur->setDefault((double)defSpot.adjblur); + bilateral->setDefault((double)defSpot.bilateral); + sensiden->setDefault((double)defSpot.sensiden); strumaskbl->setDefault(defSpot.strumaskbl); blendmaskbl->setDefault((double)defSpot.blendmaskbl); radmaskbl->setDefault(defSpot.radmaskbl); @@ -5772,6 +5915,97 @@ void LocallabBlur::adjusterChanged(Adjuster* a, double newval) } } + if (a == noiselumf0) { + if (listener) { + listener->panelChanged(Evlocallabnoiselumf0, + noiselumf0->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == noiselumf) { + if (listener) { + listener->panelChanged(Evlocallabnoiselumf, + noiselumf->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == noiselumf2) { + if (listener) { + listener->panelChanged(Evlocallabnoiselumf2, + noiselumf2->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == noiselumc) { + if (listener) { + listener->panelChanged(Evlocallabnoiselumc, + noiselumc->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == noiselumdetail) { + if (listener) { + listener->panelChanged(Evlocallabnoiselumdetail, + noiselumdetail->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == noiselequal) { + if (listener) { + listener->panelChanged(Evlocallabnoiselequal, + noiselequal->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == noisechrof) { + if (listener) { + listener->panelChanged(Evlocallabnoisechrof, + noisechrof->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == noisechroc) { + if (listener) { + listener->panelChanged(Evlocallabnoisechroc, + noisechroc->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == noisechrodetail) { + if (listener) { + listener->panelChanged(Evlocallabnoisechrodetail, + noisechrodetail->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == detailthr) { + if (listener) { + listener->panelChanged(Evlocallabdetailthr, + detailthr->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == adjblur) { + if (listener) { + listener->panelChanged(Evlocallabadjblur, + adjblur->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == bilateral) { + if (listener) { + listener->panelChanged(Evlocallabbilateral, + bilateral->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == sensiden) { + if (listener) { + listener->panelChanged(Evlocallabsensiden, + sensiden->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + if (a == strumaskbl) { if (listener) { listener->panelChanged(Evlocallabstrumaskbl, @@ -5843,6 +6077,13 @@ void LocallabBlur::adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int ne void LocallabBlur::curveChanged(CurveEditor* ce) { if (isLocActivated && exp->getEnabled()) { + if (ce == wavshapeden) { + if (listener) { + listener->panelChanged(EvlocallabwavCurveden, + M("HISTORY_CUSTOMCURVE") + " (" + escapeHtmlChars(spotName) + ")"); + } + } + if (ce == CCmaskblshape) { if (listener) { listener->panelChanged(EvlocallabCCmaskblshape, diff --git a/rtgui/locallabtools.h b/rtgui/locallabtools.h index df194cc24..d7e54403d 100644 --- a/rtgui/locallabtools.h +++ b/rtgui/locallabtools.h @@ -582,6 +582,21 @@ private: MyComboBoxText* const blurMethod; MyComboBoxText* const chroMethod; Gtk::CheckButton* const activlum; + CurveEditorGroup* const LocalcurveEditorwavden; + FlatCurveEditor* const wavshapeden; + Adjuster* const noiselumf0; + Adjuster* const noiselumf; + Adjuster* const noiselumf2; + Adjuster* const noiselumc; + Adjuster* const noiselumdetail; + Adjuster* const noiselequal; + Adjuster* const noisechrof; + Adjuster* const noisechroc; + Adjuster* const noisechrodetail; + Adjuster* const detailthr; + Adjuster* const adjblur; + Adjuster* const bilateral; + Adjuster* const sensiden; MyExpander* const expmaskbl; MyComboBoxText* const showmaskblMethod; Gtk::CheckButton* const enablMask; @@ -1048,42 +1063,6 @@ private: void lumacontrastPlusPressed(); }; -/* ==== LocallabDenoise ==== */ -class LocallabDenoise: - public Gtk::VBox, - public LocallabTool -{ -private: - CurveEditorGroup* const LocalcurveEditorwavden; - FlatCurveEditor* const wavshapeden; - Adjuster* const noiselumf0; - Adjuster* const noiselumf; - Adjuster* const noiselumf2; - Adjuster* const noiselumc; - Adjuster* const noiselumdetail; - Adjuster* const noiselequal; - Adjuster* const noisechrof; - Adjuster* const noisechroc; - Adjuster* const noisechrodetail; - Adjuster* const detailthr; - Adjuster* const adjblur; - Adjuster* const bilateral; - Adjuster* const sensiden; - -public: - LocallabDenoise(); - ~LocallabDenoise(); - - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void adjusterChanged(Adjuster* a, double newval); - void curveChanged(CurveEditor* ce); - -private: - void enabledChanged(); -}; - /* ==== LocallabLog ==== */ class LocallabLog: public Gtk::VBox, diff --git a/rtgui/locallabtools2.cc b/rtgui/locallabtools2.cc index 9f5a23767..a8d01f9a7 100644 --- a/rtgui/locallabtools2.cc +++ b/rtgui/locallabtools2.cc @@ -25,9 +25,6 @@ #include "locallab.h" #include "rtimage.h" -#define MINCHRO 0. -#define MAXCHRO 150. -#define MAXCHROCC 100. #define MINNEIGH 0.1 #define MAXNEIGH 1500 #define CENTERNEIGH 200 @@ -4135,319 +4132,6 @@ void LocallabCBDL::lumacontrastPlusPressed() adjusterChanged(multiplier[0], multiplier[0]->getValue()); // Value isn't used } -/* ==== LocallabDenoise ==== */ -LocallabDenoise::LocallabDenoise(): - LocallabTool(this, M("TP_LOCALLAB_DEN_TOOLNAME"), M("TP_LOCALLAB_DENOIS"), true), - - // Denoise specific widgets - LocalcurveEditorwavden(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_WAVDEN"))), - wavshapeden(static_cast(LocalcurveEditorwavden->addCurve(CT_Flat, "", nullptr, false, false))), - noiselumf0(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMFINEZERO"), MINCHRO, MAXCHRO, 0.01, 0.))), - noiselumf(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMFINE"), MINCHRO, MAXCHRO, 0.01, 0.))), - noiselumf2(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMFINETWO"), MINCHRO, MAXCHRO, 0.01, 0.))), - noiselumc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMCOARSE"), MINCHRO, MAXCHROCC, 0.01, 0.))), - noiselumdetail(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMDETAIL"), 0., 100., 0.01, 0.))), - noiselequal(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELEQUAL"), -2, 10, 1, 7, Gtk::manage(new RTImage("circle-white-small.png")), Gtk::manage(new RTImage("circle-black-small.png"))))), - noisechrof(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISECHROFINE"), MINCHRO, MAXCHRO, 0.01, 0.))), - noisechroc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISECHROCOARSE"), MINCHRO, MAXCHROCC, 0.01, 0.))), - noisechrodetail(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISECHRODETAIL"), 0., 100., 0.01, 0.))), - detailthr(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DETAILTHR"), 0, 100, 1, 0))), - adjblur(Gtk::manage(new Adjuster(M("TP_LOCALLAB_ADJ"), -100., 100., 1., 0., Gtk::manage(new RTImage("circle-blue-small.png")), Gtk::manage(new RTImage("circle-red-small.png"))))), - bilateral(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BILATERAL"), 0, 100, 1, 0))), - sensiden(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIDEN"), 0, 100, 1, 20))) -{ - const bool showtooltip = options.showtooltip; - - const LocallabParams::LocallabSpot defSpot; - - // Parameter Denoise specific widgets - if (showtooltip) { - exp->set_tooltip_markup(M("TP_LOCALLAB_DENOI_TOOLTIP")); - } - - LocalcurveEditorwavden->setCurveListener(this); - - wavshapeden->setIdentityValue(0.); - wavshapeden->setResetCurve(FlatCurveType(defSpot.locwavcurveden.at(0)), defSpot.locwavcurveden); - - if (showtooltip) { - wavshapeden->setTooltip(M("TP_LOCALLAB_WASDEN_TOOLTIP")); - } - - LocalcurveEditorwavden->curveListComplete(); - - noiselumf0->setAdjusterListener(this); - - noiselumf->setAdjusterListener(this); - - noiselumf2->setAdjusterListener(this); - - if (showtooltip) { - noiselumc->set_tooltip_text(M("TP_LOCALLAB_NOISECHROC_TOOLTIP")); - } - - noiselumc->setAdjusterListener(this); - - noiselumdetail->setAdjusterListener(this); - - noiselequal->setAdjusterListener(this); - - noisechrof->setAdjusterListener(this); - - if (showtooltip) { - noisechroc->set_tooltip_text(M("TP_LOCALLAB_NOISECHROC_TOOLTIP")); - } - - noisechroc->setAdjusterListener(this); - - noisechrodetail->setAdjusterListener(this); - - detailthr->setAdjusterListener(this); - - adjblur->setAdjusterListener(this); - - bilateral->setAdjusterListener(this); - - sensiden->setAdjusterListener(this); - - // Add Denoise specific widgets to GUI - Gtk::Frame* const wavFrame = Gtk::manage(new Gtk::Frame()); - ToolParamBlock* const wavBox = Gtk::manage(new ToolParamBlock()); - wavBox->pack_start(*LocalcurveEditorwavden, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor - // wavBox->pack_start(*noiselumf0); - // wavBox->pack_start(*noiselumf); - // wavBox->pack_start(*noiselumf2); - // wavBox->pack_start(*noiselumc); - wavBox->pack_start(*noiselumdetail); - wavBox->pack_start(*noiselequal); - wavBox->pack_start(*noisechrof); - wavBox->pack_start(*noisechroc); - wavBox->pack_start(*noisechrodetail); - wavBox->pack_start(*detailthr); - wavBox->pack_start(*adjblur); - wavFrame->add(*wavBox); - pack_start(*wavFrame); - pack_start(*bilateral); - pack_start(*sensiden); -} - -LocallabDenoise::~LocallabDenoise() -{ - delete LocalcurveEditorwavden; -} - -void LocallabDenoise::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) -{ - // Disable all listeners - disableListener(); - - // Update GUI to selected spot value - const int index = pp->locallab.selspot; - - if (index < (int)pp->locallab.spots.size()) { - spotName = pp->locallab.spots.at(index).name; // Update spot name according to selected spot - - exp->set_visible(pp->locallab.spots.at(index).visidenoi); - exp->setEnabled(pp->locallab.spots.at(index).expdenoi); - - wavshapeden->setCurve(pp->locallab.spots.at(index).locwavcurveden); - noiselumf0->setValue(pp->locallab.spots.at(index).noiselumf0); - noiselumf->setValue(pp->locallab.spots.at(index).noiselumf); - noiselumf2->setValue(pp->locallab.spots.at(index).noiselumf2); - noiselumc->setValue(pp->locallab.spots.at(index).noiselumc); - noiselumdetail->setValue(pp->locallab.spots.at(index).noiselumdetail); - noiselequal->setValue((double)pp->locallab.spots.at(index).noiselequal); - noisechrof->setValue(pp->locallab.spots.at(index).noisechrof); - noisechroc->setValue(pp->locallab.spots.at(index).noisechroc); - noisechrodetail->setValue(pp->locallab.spots.at(index).noisechrodetail); - detailthr->setValue((double)pp->locallab.spots.at(index).detailthr); - adjblur->setValue((double)pp->locallab.spots.at(index).adjblur); - bilateral->setValue((double)pp->locallab.spots.at(index).bilateral); - sensiden->setValue((double)pp->locallab.spots.at(index).sensiden); - } - - // Enable all listeners - enableListener(); - - // Note: No need to manage pedited as batch mode is deactivated for Locallab -} - -void LocallabDenoise::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) -{ - const int index = pp->locallab.selspot; - - if (index < (int)pp->locallab.spots.size()) { - pp->locallab.spots.at(index).expdenoi = exp->getEnabled(); - pp->locallab.spots.at(index).visidenoi = exp->get_visible(); - - pp->locallab.spots.at(index).locwavcurveden = wavshapeden->getCurve(); - pp->locallab.spots.at(index).noiselumf0 = noiselumf0->getValue(); - pp->locallab.spots.at(index).noiselumf = noiselumf->getValue(); - pp->locallab.spots.at(index).noiselumf2 = noiselumf2->getValue(); - pp->locallab.spots.at(index).noiselumc = noiselumc->getValue(); - pp->locallab.spots.at(index).noiselumdetail = noiselumdetail->getValue(); - pp->locallab.spots.at(index).noiselequal = noiselequal->getIntValue(); - pp->locallab.spots.at(index).noisechrof = noisechrof->getValue(); - pp->locallab.spots.at(index).noisechroc = noisechroc->getValue(); - pp->locallab.spots.at(index).noisechrodetail = noisechrodetail->getValue(); - pp->locallab.spots.at(index).detailthr = detailthr->getIntValue(); - pp->locallab.spots.at(index).adjblur = adjblur->getIntValue(); - pp->locallab.spots.at(index).bilateral = bilateral->getIntValue(); - pp->locallab.spots.at(index).sensiden = sensiden->getIntValue(); - } - - // Note: No need to manage pedited as batch mode is deactivated for Locallab -} - -void LocallabDenoise::setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited) -{ - const int index = defParams->locallab.selspot; - - if (index < (int)defParams->locallab.spots.size()) { - const LocallabParams::LocallabSpot defSpot = defParams->locallab.spots.at(index); - - // Set default values for adjuster widgets - noiselumf0->setDefault(defSpot.noiselumf0); - noiselumf->setDefault(defSpot.noiselumf); - noiselumf2->setDefault(defSpot.noiselumf2); - noiselumc->setDefault(defSpot.noiselumc); - noiselumdetail->setDefault(defSpot.noiselumdetail); - noiselequal->setDefault((double)defSpot.noiselequal); - noisechrof->setDefault(defSpot.noisechrof); - noisechroc->setDefault(defSpot.noisechroc); - noisechrodetail->setDefault(defSpot.noisechrodetail); - detailthr->setDefault((double)defSpot.detailthr); - adjblur->setDefault((double)defSpot.adjblur); - bilateral->setDefault((double)defSpot.bilateral); - sensiden->setDefault((double)defSpot.sensiden); - } - - // Note: No need to manage pedited as batch mode is deactivated for Locallab -} - -void LocallabDenoise::adjusterChanged(Adjuster* a, double newval) -{ - if (isLocActivated && exp->getEnabled()) { - if (a == noiselumf0) { - if (listener) { - listener->panelChanged(Evlocallabnoiselumf0, - noiselumf0->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == noiselumf) { - if (listener) { - listener->panelChanged(Evlocallabnoiselumf, - noiselumf->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == noiselumf2) { - if (listener) { - listener->panelChanged(Evlocallabnoiselumf2, - noiselumf2->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == noiselumc) { - if (listener) { - listener->panelChanged(Evlocallabnoiselumc, - noiselumc->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == noiselumdetail) { - if (listener) { - listener->panelChanged(Evlocallabnoiselumdetail, - noiselumdetail->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == noiselequal) { - if (listener) { - listener->panelChanged(Evlocallabnoiselequal, - noiselequal->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == noisechrof) { - if (listener) { - listener->panelChanged(Evlocallabnoisechrof, - noisechrof->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == noisechroc) { - if (listener) { - listener->panelChanged(Evlocallabnoisechroc, - noisechroc->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == noisechrodetail) { - if (listener) { - listener->panelChanged(Evlocallabnoisechrodetail, - noisechrodetail->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == detailthr) { - if (listener) { - listener->panelChanged(Evlocallabdetailthr, - detailthr->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == adjblur) { - if (listener) { - listener->panelChanged(Evlocallabadjblur, - adjblur->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == bilateral) { - if (listener) { - listener->panelChanged(Evlocallabbilateral, - bilateral->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - - if (a == sensiden) { - if (listener) { - listener->panelChanged(Evlocallabsensiden, - sensiden->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); - } - } - } -} - -void LocallabDenoise::curveChanged(CurveEditor* ce) -{ - if (isLocActivated && exp->getEnabled()) { - if (ce == wavshapeden) { - if (listener) { - listener->panelChanged(EvlocallabwavCurveden, - M("HISTORY_CUSTOMCURVE") + " (" + escapeHtmlChars(spotName) + ")"); - } - } - } -} - -void LocallabDenoise::enabledChanged() -{ - if (isLocActivated) { - if (listener) { - if (exp->getEnabled()) { - listener->panelChanged(EvLocenadenoi, - M("GENERAL_ENABLED") + " (" + escapeHtmlChars(spotName) + ")"); - } else { - listener->panelChanged(EvLocenadenoi, - M("GENERAL_DISABLED") + " (" + escapeHtmlChars(spotName) + ")"); - } - } - } -} - /* ==== LocallabLog ==== */ LocallabLog::LocallabLog(): LocallabTool(this, M("TP_LOCALLAB_LOG_TOOLNAME"), M("TP_LOCALLAB_LOG"), false), diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 134383cba..8c3434597 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -1178,6 +1178,20 @@ void ParamsEdited::initFrom(const std::vector& locallab.spots.at(j).blurMethod = locallab.spots.at(j).blurMethod && pSpot.blurMethod == otherSpot.blurMethod; locallab.spots.at(j).medMethod = locallab.spots.at(j).medMethod && pSpot.medMethod == otherSpot.medMethod; locallab.spots.at(j).activlum = locallab.spots.at(j).activlum && pSpot.activlum == otherSpot.activlum; + locallab.spots.at(j).noiselumf = locallab.spots.at(j).noiselumf && pSpot.noiselumf == otherSpot.noiselumf; + locallab.spots.at(j).noiselumf0 = locallab.spots.at(j).noiselumf0 && pSpot.noiselumf0 == otherSpot.noiselumf0; + locallab.spots.at(j).noiselumf2 = locallab.spots.at(j).noiselumf2 && pSpot.noiselumf2 == otherSpot.noiselumf2; + locallab.spots.at(j).noiselumc = locallab.spots.at(j).noiselumc && pSpot.noiselumc == otherSpot.noiselumc; + locallab.spots.at(j).noiselumdetail = locallab.spots.at(j).noiselumdetail && pSpot.noiselumdetail == otherSpot.noiselumdetail; + locallab.spots.at(j).noiselequal = locallab.spots.at(j).noiselequal && pSpot.noiselequal == otherSpot.noiselequal; + locallab.spots.at(j).noisechrof = locallab.spots.at(j).noisechrof && pSpot.noisechrof == otherSpot.noisechrof; + locallab.spots.at(j).noisechroc = locallab.spots.at(j).noisechroc && pSpot.noisechroc == otherSpot.noisechroc; + locallab.spots.at(j).noisechrodetail = locallab.spots.at(j).noisechrodetail && pSpot.noisechrodetail == otherSpot.noisechrodetail; + locallab.spots.at(j).adjblur = locallab.spots.at(j).adjblur && pSpot.adjblur == otherSpot.adjblur; + locallab.spots.at(j).bilateral = locallab.spots.at(j).bilateral && pSpot.bilateral == otherSpot.bilateral; + locallab.spots.at(j).sensiden = locallab.spots.at(j).sensiden && pSpot.sensiden == otherSpot.sensiden; + locallab.spots.at(j).detailthr = locallab.spots.at(j).detailthr && pSpot.detailthr == otherSpot.detailthr; + locallab.spots.at(j).locwavcurveden = locallab.spots.at(j).locwavcurveden && pSpot.locwavcurveden == otherSpot.locwavcurveden; locallab.spots.at(j).CCmaskblcurve = locallab.spots.at(j).CCmaskblcurve && pSpot.CCmaskblcurve == otherSpot.CCmaskblcurve; locallab.spots.at(j).LLmaskblcurve = locallab.spots.at(j).LLmaskblcurve && pSpot.LLmaskblcurve == otherSpot.LLmaskblcurve; locallab.spots.at(j).HHmaskblcurve = locallab.spots.at(j).HHmaskblcurve && pSpot.HHmaskblcurve == otherSpot.HHmaskblcurve; @@ -1357,23 +1371,6 @@ void ParamsEdited::initFrom(const std::vector& locallab.spots.at(j).slomaskcb = locallab.spots.at(j).slomaskcb && pSpot.slomaskcb == otherSpot.slomaskcb; locallab.spots.at(j).lapmaskcb = locallab.spots.at(j).lapmaskcb && pSpot.lapmaskcb == otherSpot.lapmaskcb; locallab.spots.at(j).Lmaskcbcurve = locallab.spots.at(j).Lmaskcbcurve && pSpot.Lmaskcbcurve == otherSpot.Lmaskcbcurve; - // Denoise - locallab.spots.at(j).visidenoi = locallab.spots.at(j).visidenoi && pSpot.visidenoi == otherSpot.visidenoi; - locallab.spots.at(j).expdenoi = locallab.spots.at(j).expdenoi && pSpot.expdenoi == otherSpot.expdenoi; - locallab.spots.at(j).noiselumf = locallab.spots.at(j).noiselumf && pSpot.noiselumf == otherSpot.noiselumf; - locallab.spots.at(j).noiselumf0 = locallab.spots.at(j).noiselumf0 && pSpot.noiselumf0 == otherSpot.noiselumf0; - locallab.spots.at(j).noiselumf2 = locallab.spots.at(j).noiselumf2 && pSpot.noiselumf2 == otherSpot.noiselumf2; - locallab.spots.at(j).noiselumc = locallab.spots.at(j).noiselumc && pSpot.noiselumc == otherSpot.noiselumc; - locallab.spots.at(j).noiselumdetail = locallab.spots.at(j).noiselumdetail && pSpot.noiselumdetail == otherSpot.noiselumdetail; - locallab.spots.at(j).noiselequal = locallab.spots.at(j).noiselequal && pSpot.noiselequal == otherSpot.noiselequal; - locallab.spots.at(j).noisechrof = locallab.spots.at(j).noisechrof && pSpot.noisechrof == otherSpot.noisechrof; - locallab.spots.at(j).noisechroc = locallab.spots.at(j).noisechroc && pSpot.noisechroc == otherSpot.noisechroc; - locallab.spots.at(j).noisechrodetail = locallab.spots.at(j).noisechrodetail && pSpot.noisechrodetail == otherSpot.noisechrodetail; - locallab.spots.at(j).adjblur = locallab.spots.at(j).adjblur && pSpot.adjblur == otherSpot.adjblur; - locallab.spots.at(j).bilateral = locallab.spots.at(j).bilateral && pSpot.bilateral == otherSpot.bilateral; - locallab.spots.at(j).sensiden = locallab.spots.at(j).sensiden && pSpot.sensiden == otherSpot.sensiden; - locallab.spots.at(j).detailthr = locallab.spots.at(j).detailthr && pSpot.detailthr == otherSpot.detailthr; - locallab.spots.at(j).locwavcurveden = locallab.spots.at(j).locwavcurveden && pSpot.locwavcurveden == otherSpot.locwavcurveden; // Log encoding locallab.spots.at(j).visilog = locallab.spots.at(j).visilog && pSpot.visilog == otherSpot.visilog; locallab.spots.at(j).explog = locallab.spots.at(j).explog && pSpot.explog == otherSpot.explog; @@ -3705,6 +3702,62 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).activlum = mods.locallab.spots.at(i).activlum; } + if (locallab.spots.at(i).noiselumf) { + toEdit.locallab.spots.at(i).noiselumf = mods.locallab.spots.at(i).noiselumf; + } + + if (locallab.spots.at(i).noiselumf0) { + toEdit.locallab.spots.at(i).noiselumf0 = mods.locallab.spots.at(i).noiselumf0; + } + + if (locallab.spots.at(i).noiselumf2) { + toEdit.locallab.spots.at(i).noiselumf2 = mods.locallab.spots.at(i).noiselumf2; + } + + if (locallab.spots.at(i).noiselumc) { + toEdit.locallab.spots.at(i).noiselumc = mods.locallab.spots.at(i).noiselumc; + } + + if (locallab.spots.at(i).noiselumdetail) { + toEdit.locallab.spots.at(i).noiselumdetail = mods.locallab.spots.at(i).noiselumdetail; + } + + if (locallab.spots.at(i).noiselequal) { + toEdit.locallab.spots.at(i).noiselequal = mods.locallab.spots.at(i).noiselequal; + } + + if (locallab.spots.at(i).noisechrof) { + toEdit.locallab.spots.at(i).noisechrof = mods.locallab.spots.at(i).noisechrof; + } + + if (locallab.spots.at(i).noisechroc) { + toEdit.locallab.spots.at(i).noisechroc = mods.locallab.spots.at(i).noisechroc; + } + + if (locallab.spots.at(i).noisechrodetail) { + toEdit.locallab.spots.at(i).noisechrodetail = mods.locallab.spots.at(i).noisechrodetail; + } + + if (locallab.spots.at(i).adjblur) { + toEdit.locallab.spots.at(i).adjblur = mods.locallab.spots.at(i).adjblur; + } + + if (locallab.spots.at(i).bilateral) { + toEdit.locallab.spots.at(i).bilateral = mods.locallab.spots.at(i).bilateral; + } + + if (locallab.spots.at(i).sensiden) { + toEdit.locallab.spots.at(i).sensiden = mods.locallab.spots.at(i).sensiden; + } + + if (locallab.spots.at(i).detailthr) { + toEdit.locallab.spots.at(i).detailthr = mods.locallab.spots.at(i).detailthr; + } + + if (locallab.spots.at(i).locwavcurveden) { + toEdit.locallab.spots.at(i).locwavcurveden = mods.locallab.spots.at(i).locwavcurveden; + } + if (locallab.spots.at(i).CCmaskblcurve) { toEdit.locallab.spots.at(i).CCmaskblcurve = mods.locallab.spots.at(i).CCmaskblcurve; } @@ -4392,71 +4445,6 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).Lmaskcbcurve = mods.locallab.spots.at(i).Lmaskcbcurve; } - // Denoise - if (locallab.spots.at(i).visidenoi) { - toEdit.locallab.spots.at(i).visidenoi = mods.locallab.spots.at(i).visidenoi; - } - - if (locallab.spots.at(i).expdenoi) { - toEdit.locallab.spots.at(i).expdenoi = mods.locallab.spots.at(i).expdenoi; - } - - if (locallab.spots.at(i).noiselumf) { - toEdit.locallab.spots.at(i).noiselumf = mods.locallab.spots.at(i).noiselumf; - } - - if (locallab.spots.at(i).noiselumf0) { - toEdit.locallab.spots.at(i).noiselumf0 = mods.locallab.spots.at(i).noiselumf0; - } - - if (locallab.spots.at(i).noiselumf2) { - toEdit.locallab.spots.at(i).noiselumf2 = mods.locallab.spots.at(i).noiselumf2; - } - - if (locallab.spots.at(i).noiselumc) { - toEdit.locallab.spots.at(i).noiselumc = mods.locallab.spots.at(i).noiselumc; - } - - if (locallab.spots.at(i).noiselumdetail) { - toEdit.locallab.spots.at(i).noiselumdetail = mods.locallab.spots.at(i).noiselumdetail; - } - - if (locallab.spots.at(i).noiselequal) { - toEdit.locallab.spots.at(i).noiselequal = mods.locallab.spots.at(i).noiselequal; - } - - if (locallab.spots.at(i).noisechrof) { - toEdit.locallab.spots.at(i).noisechrof = mods.locallab.spots.at(i).noisechrof; - } - - if (locallab.spots.at(i).noisechroc) { - toEdit.locallab.spots.at(i).noisechroc = mods.locallab.spots.at(i).noisechroc; - } - - if (locallab.spots.at(i).noisechrodetail) { - toEdit.locallab.spots.at(i).noisechrodetail = mods.locallab.spots.at(i).noisechrodetail; - } - - if (locallab.spots.at(i).adjblur) { - toEdit.locallab.spots.at(i).adjblur = mods.locallab.spots.at(i).adjblur; - } - - if (locallab.spots.at(i).bilateral) { - toEdit.locallab.spots.at(i).bilateral = mods.locallab.spots.at(i).bilateral; - } - - if (locallab.spots.at(i).sensiden) { - toEdit.locallab.spots.at(i).sensiden = mods.locallab.spots.at(i).sensiden; - } - - if (locallab.spots.at(i).detailthr) { - toEdit.locallab.spots.at(i).detailthr = mods.locallab.spots.at(i).detailthr; - } - - if (locallab.spots.at(i).locwavcurveden) { - toEdit.locallab.spots.at(i).locwavcurveden = mods.locallab.spots.at(i).locwavcurveden; - } - // Log encoding if (locallab.spots.at(i).visilog) { toEdit.locallab.spots.at(i).visilog = mods.locallab.spots.at(i).visilog; @@ -5703,6 +5691,20 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) : blurMethod(v), medMethod(v), activlum(v), + noiselumf(v), + noiselumf0(v), + noiselumf2(v), + noiselumc(v), + noiselumdetail(v), + noiselequal(v), + noisechrof(v), + noisechroc(v), + noisechrodetail(v), + adjblur(v), + bilateral(v), + sensiden(v), + detailthr(v), + locwavcurveden(v), CCmaskblcurve(v), LLmaskblcurve(v), HHmaskblcurve(v), @@ -5878,23 +5880,6 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) : slomaskcb(v), lapmaskcb(v), Lmaskcbcurve(v), - // Denoise - visidenoi(v), - expdenoi(v), - noiselumf(v), - noiselumf0(v), - noiselumf2(v), - noiselumc(v), - noiselumdetail(v), - noiselequal(v), - noisechrof(v), - noisechroc(v), - noisechrodetail(v), - adjblur(v), - bilateral(v), - sensiden(v), - detailthr(v), - locwavcurveden(v), // Log encoding visilog(v), explog(v), @@ -6141,6 +6126,20 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v) blurMethod = v; medMethod = v; activlum = v; + noiselumf = v; + noiselumf0 = v; + noiselumf2 = v; + noiselumc = v; + noiselumdetail = v; + noiselequal = v; + noisechrof = v; + noisechroc = v; + noisechrodetail = v; + adjblur = v; + bilateral = v; + sensiden = v; + detailthr = v; + locwavcurveden = v; CCmaskblcurve = v; LLmaskblcurve = v; HHmaskblcurve = v; @@ -6320,23 +6319,6 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v) slomaskcb = v; lapmaskcb = v; Lmaskcbcurve = v; - // Denoise - visidenoi = v; - expdenoi = v; - noiselumf = v; - noiselumf0 = v; - noiselumf2 = v; - noiselumc = v; - noiselumdetail = v; - noiselequal = v; - noisechrof = v; - noisechroc = v; - noisechrodetail = v; - adjblur = v; - bilateral = v; - sensiden = v; - detailthr = v; - locwavcurveden = v; // Log encoding visilog = v; explog = v; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 41b16626e..98b0cd4a2 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -607,6 +607,20 @@ public: bool blurMethod; bool medMethod; bool activlum; + bool noiselumf; + bool noiselumf0; + bool noiselumf2; + bool noiselumc; + bool noiselumdetail; + bool noiselequal; + bool noisechrof; + bool noisechroc; + bool noisechrodetail; + bool adjblur; + bool bilateral; + bool sensiden; + bool detailthr; + bool locwavcurveden; bool CCmaskblcurve; bool LLmaskblcurve; bool HHmaskblcurve; @@ -782,23 +796,6 @@ public: bool slomaskcb; bool lapmaskcb; bool Lmaskcbcurve; - // Denoise - bool visidenoi; - bool expdenoi; - bool noiselumf; - bool noiselumf0; - bool noiselumf2; - bool noiselumc; - bool noiselumdetail; - bool noiselequal; - bool noisechrof; - bool noisechroc; - bool noisechrodetail; - bool adjblur; - bool bilateral; - bool sensiden; - bool detailthr; - bool locwavcurveden; // Log encoding bool visilog; bool explog;