Enable ToneMapping when Cam02 enabled and Ciecam disabled (#7190)

This commit is contained in:
Desmis 2024-09-17 08:30:11 +02:00 committed by GitHub
parent 348c8e8894
commit 7cdfa941c2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 22 additions and 19 deletions

View File

@ -812,9 +812,11 @@ void Crop::update(int todo)
} }
const bool needstransform = parent->ipf.needsTransform(skips(parent->fw, skip), skips(parent->fh, skip), parent->imgsrc->getRotateDegree(), parent->imgsrc->getMetaData()); const bool needstransform = parent->ipf.needsTransform(skips(parent->fw, skip), skips(parent->fh, skip), parent->imgsrc->getRotateDegree(), parent->imgsrc->getMetaData());
const bool cam02 = params.colorappearance.modelmethod == "02" && params.colorappearance.enabled;
// transform // transform
// if (needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled)) { // if (needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled)) {
if (needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && params.colorappearance.modelmethod != "02")) { if (needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !cam02)) {
if (!transCrop) { if (!transCrop) {
transCrop = new Imagefloat(cropw, croph); transCrop = new Imagefloat(cropw, croph);
} }
@ -836,7 +838,7 @@ void Crop::update(int todo)
} }
// if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) { // if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) {
if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && params.colorappearance.modelmethod != "02") { if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !cam02) {
const int W = baseCrop->getWidth(); const int W = baseCrop->getWidth();
const int H = baseCrop->getHeight(); const int H = baseCrop->getHeight();
@ -1333,7 +1335,7 @@ void Crop::update(int todo)
parent->ipf.labColorCorrectionRegions(labnCrop); parent->ipf.labColorCorrectionRegions(labnCrop);
// if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { // if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) {
if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (params.colorappearance.modelmethod != "02")) { if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!cam02)) {
parent->ipf.EPDToneMap(labnCrop, 0, skip); parent->ipf.EPDToneMap(labnCrop, 0, skip);
} }
@ -1341,7 +1343,7 @@ void Crop::update(int todo)
// for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled // for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled
if (skip == 1) { if (skip == 1) {
// if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) { // if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) {
if ((params.colorappearance.enabled && !settings->autocielab) || (params.colorappearance.modelmethod != "02")) { if ((params.colorappearance.enabled && !settings->autocielab) || (!cam02)) {
parent->ipf.impulsedenoise(labnCrop); parent->ipf.impulsedenoise(labnCrop);
parent->ipf.defringe(labnCrop); parent->ipf.defringe(labnCrop);
} }
@ -1349,7 +1351,7 @@ void Crop::update(int todo)
parent->ipf.MLsharpen(labnCrop); parent->ipf.MLsharpen(labnCrop);
// if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) { // if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) {
if ((params.colorappearance.enabled && !settings->autocielab) || (params.colorappearance.modelmethod != "02")) { if ((params.colorappearance.enabled && !settings->autocielab) || (!cam02)) {
parent->ipf.MLmicrocontrast(labnCrop); parent->ipf.MLmicrocontrast(labnCrop);
parent->ipf.sharpening(labnCrop, params.sharpening, parent->sharpMask); parent->ipf.sharpening(labnCrop, params.sharpening, parent->sharpMask);
} }
@ -1359,7 +1361,7 @@ void Crop::update(int todo)
if (params.dirpyrequalizer.cbdlMethod == "aft") { if (params.dirpyrequalizer.cbdlMethod == "aft") {
// if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled))) { // if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled))) {
if (((params.colorappearance.enabled && !settings->autocielab) || (params.colorappearance.modelmethod != "02"))) { if (((params.colorappearance.enabled && !settings->autocielab) || (!cam02))) {
parent->ipf.dirpyrequalizer(labnCrop, skip); parent->ipf.dirpyrequalizer(labnCrop, skip);
// parent->ipf.Lanczoslab (labnCrop,labnCrop , 1.f/skip); // parent->ipf.Lanczoslab (labnCrop,labnCrop , 1.f/skip);
} }

View File

@ -875,9 +875,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
// Remove transformation if unneeded // Remove transformation if unneeded
bool needstransform = ipf.needsTransform(fw, fh, imgsrc->getRotateDegree(), imgsrc->getMetaData()); bool needstransform = ipf.needsTransform(fw, fh, imgsrc->getRotateDegree(), imgsrc->getMetaData());
const bool cam02 = params->colorappearance.modelmethod == "02" && params->colorappearance.enabled;
// if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && !params->colorappearance.enabled))) { // if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && !params->colorappearance.enabled))) {
if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && params->colorappearance.modelmethod != "02"))) { if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && !cam02))) {
// Forking the image // Forking the image
assert(oprevi); assert(oprevi);
Imagefloat *op = oprevi; Imagefloat *op = oprevi;
@ -900,7 +900,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
} }
// if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && !params->colorappearance.enabled) { // if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && !params->colorappearance.enabled) {
if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && params->colorappearance.modelmethod != "02") { if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && !cam02) {
const int W = oprevi->getWidth(); const int W = oprevi->getWidth();
const int H = oprevi->getHeight(); const int H = oprevi->getHeight();
LabImage labcbdl(W, H); LabImage labcbdl(W, H);
@ -1845,13 +1845,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
ipf.labColorCorrectionRegions(nprevl); ipf.labColorCorrectionRegions(nprevl);
// if ((params->colorappearance.enabled && !params->colorappearance.tonecie) || (!params->colorappearance.enabled)) { // if ((params->colorappearance.enabled && !params->colorappearance.tonecie) || (!params->colorappearance.enabled)) {
if ((params->colorappearance.enabled && !params->colorappearance.tonecie) || (params->colorappearance.modelmethod != "02")) { if ((params->colorappearance.enabled && !params->colorappearance.tonecie) || (!cam02)) {
ipf.EPDToneMap(nprevl, 0, scale); ipf.EPDToneMap(nprevl, 0, scale);
} }
if (params->dirpyrequalizer.cbdlMethod == "aft") { if (params->dirpyrequalizer.cbdlMethod == "aft") {
// if (((params->colorappearance.enabled && !settings->autocielab) || (!params->colorappearance.enabled))) { // if (((params->colorappearance.enabled && !settings->autocielab) || (!params->colorappearance.enabled))) {
if (((params->colorappearance.enabled && !settings->autocielab) || (params->colorappearance.modelmethod != "02"))) { if (((params->colorappearance.enabled && !settings->autocielab) || (!cam02))) {
ipf.dirpyrequalizer(nprevl, scale); ipf.dirpyrequalizer(nprevl, scale);
} }
} }

View File

@ -1516,9 +1516,10 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT
bool cam02 = params.colorappearance.modelmethod == "02" && params.colorappearance.enabled;
// if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || !params.colorappearance.enabled) { // if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || !params.colorappearance.enabled) {
if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || params.colorappearance.modelmethod != "02") { if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || !cam02) {
ipf.EPDToneMap (labView, 5, 6); ipf.EPDToneMap (labView, 5, 6);
} }

View File

@ -1007,7 +1007,6 @@ private:
} }
} }
} }
//colorappearance.modelmethod == "02"
bool execcam = false; bool execcam = false;
//execcam => work around for pre-ciecam in LA: about 0.1 second //execcam => work around for pre-ciecam in LA: about 0.1 second
@ -1526,9 +1525,10 @@ private:
ipf.chromiLuminanceCurve(nullptr, 1, labView, labView, curve1, curve2, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy); ipf.chromiLuminanceCurve(nullptr, 1, labView, labView, curve1, curve2, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy);
const bool cam02 = params.colorappearance.modelmethod == "02" && params.colorappearance.enabled;
// if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { // if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) {
if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (params.colorappearance.modelmethod != "02")) { if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!cam02)) {
ipf.EPDToneMap(labView, 0, 1); ipf.EPDToneMap(labView, 0, 1);
} }
@ -1539,7 +1539,7 @@ private:
// for all treatments Defringe, Sharpening, Contrast detail ,Microcontrast they are activated if "CIECAM" function are disabled // for all treatments Defringe, Sharpening, Contrast detail ,Microcontrast they are activated if "CIECAM" function are disabled
// if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) { // if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) {
if ((params.colorappearance.enabled && !settings->autocielab) || (params.colorappearance.modelmethod != "02")) { if ((params.colorappearance.enabled && !settings->autocielab) || (!cam02)) {
ipf.impulsedenoise(labView); ipf.impulsedenoise(labView);
ipf.defringe(labView); ipf.defringe(labView);
} }
@ -1550,13 +1550,13 @@ private:
if (params.sharpenMicro.enabled) { if (params.sharpenMicro.enabled) {
// if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) { // if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) {
if ((params.colorappearance.enabled && !settings->autocielab) || (params.colorappearance.modelmethod != "02")) { if ((params.colorappearance.enabled && !settings->autocielab) || (!cam02)) {
ipf.MLmicrocontrast(labView); //!params.colorappearance.sharpcie ipf.MLmicrocontrast(labView); //!params.colorappearance.sharpcie
} }
} }
// if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) && params.sharpening.enabled) { // if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) && params.sharpening.enabled) {
if (((params.colorappearance.enabled && !settings->autocielab) || (params.colorappearance.modelmethod != "02")) && params.sharpening.enabled) { if (((params.colorappearance.enabled && !settings->autocielab) || (!cam02)) && params.sharpening.enabled) {
ipf.sharpening(labView, params.sharpening); ipf.sharpening(labView, params.sharpening);
} }
@ -1566,7 +1566,7 @@ private:
// directional pyramid wavelet // directional pyramid wavelet
if (params.dirpyrequalizer.cbdlMethod == "aft") { if (params.dirpyrequalizer.cbdlMethod == "aft") {
// if ((params.colorappearance.enabled && !settings->autocielab) || !params.colorappearance.enabled) { // if ((params.colorappearance.enabled && !settings->autocielab) || !params.colorappearance.enabled) {
if ((params.colorappearance.enabled && !settings->autocielab) || params.colorappearance.modelmethod != "02") { if ((params.colorappearance.enabled && !settings->autocielab) || !cam02) {
ipf.dirpyrequalizer(labView, 1); //TODO: this is the luminance tonecurve, not the RGB one ipf.dirpyrequalizer(labView, 1); //TODO: this is the luminance tonecurve, not the RGB one
} }
} }
@ -1945,7 +1945,7 @@ private:
} }
// bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili && !params.colorappearance.enabled; // bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili && !params.colorappearance.enabled;
bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili && params.colorappearance.modelmethod != "02"; bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili && !cam02;
///////////// Custom output gamma has been removed, the user now has to create ///////////// Custom output gamma has been removed, the user now has to create
///////////// a new output profile with the ICCProfileCreator ///////////// a new output profile with the ICCProfileCreator