From 36fe0f800f4fa26649b47ac8aa03feb464df13fb Mon Sep 17 00:00:00 2001 From: Hombre57 Date: Wed, 19 Jul 2017 02:14:40 +0200 Subject: [PATCH] Ehnance preview accuracy of Tone Mapping (EPD) tool (issue #2233) --- rtengine/dcrop.cc | 2 +- rtengine/improccoordinator.cc | 2 +- rtengine/improcfun.cc | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 5fc55fa98..1f11d18ce 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -809,7 +809,7 @@ void Crop::update (int todo) parent->ipf.vibrance (labnCrop); if((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { - parent->ipf.EPDToneMap(labnCrop, 5, 1); + parent->ipf.EPDToneMap(labnCrop, 5, skip); } //parent->ipf.EPDToneMap(labnCrop, 5, 1); //Go with much fewer than normal iterates for fast redisplay. diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 237af8436..5c4e9469e 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -633,7 +633,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) ipf.vibrance(nprevl); if((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { - ipf.EPDToneMap(nprevl, 5, 1); + ipf.EPDToneMap(nprevl, 5, scale); } // for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index fcbde90e4..cab120a57 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -6438,7 +6438,7 @@ void ImProcFunctions::EPDToneMapCIE (CieImage *ncie, float a_w, float c_, float //Jacques Desmis : always Iterates=5 for compatibility images between preview and output - epd.CompressDynamicRange (Qpr, (float)sca / skip, (float)edgest, Compression, DetailBoost, Iterates, rew); + epd.CompressDynamicRange (Qpr, sca / (float)skip, edgest, Compression, DetailBoost, Iterates, rew); //Restore past range, also desaturate a bit per Mantiuk's Color correction for tone mapping. float s = (1.0f + 38.7889f) * powf (Compression, 1.5856f) / (1.0f + 38.7889f * powf (Compression, 1.5856f)); @@ -6473,7 +6473,7 @@ void ImProcFunctions::EPDToneMapCIE (CieImage *ncie, float a_w, float c_, float if(Iterates == 0) Iterates = (unsigned int)(edgest*15.0); - epd.CompressDynamicRange(Qpr2, (float)sca/skip, (float)edgest, Compression2, DetailBoost2, Iterates, rew, Qpr2); + epd.CompressDynamicRange(Qpr2, sca/(float)skip, edgest, Compression2, DetailBoost2, Iterates, rew, Qpr2); //Restore past range, also desaturate a bit per Mantiuk's Color correction for tone mapping. float s2 = (1.0f + 38.7889f)*powf(Compression, 1.5856f)/(1.0f + 38.7889f*powf(Compression, 1.5856f)); @@ -6585,7 +6585,7 @@ void ImProcFunctions::EPDToneMap (LabImage *lab, unsigned int Iterates, int skip fwrite(L, N, sizeof(float), f); fclose(f);*/ - epd.CompressDynamicRange (L, sca / float (skip), edgest, Compression, DetailBoost, Iterates, rew); + epd.CompressDynamicRange (L, sca / float(skip), edgest, Compression, DetailBoost, Iterates, rew); //Restore past range, also desaturate a bit per Mantiuk's Color correction for tone mapping. float s = (1.0f + 38.7889f) * powf (Compression, 1.5856f) / (1.0f + 38.7889f * powf (Compression, 1.5856f));