LA - new tool - Color appearance (Cam16 & JzCzHz) (#6377)
* Gui improvments * Several improvments GUI Jz algo * Change function La for lightess Jz * SH jzazbz first * enable Jz SH * Clean code * Disabled Munsell correction when Jz * Change tooltip and Cam16 Munsell * GUI for CzHz and HzHz curves * Enable curves Hz(Hz) Cz(Hz) * Improve Cz chroma * Jz100 reference refine * Change limit Jz100 * Refine link between jz100 and peak adaptation * Improve GUI * Various improvment PQ PU gamut * Change defaults settings * forgotten PL in gamutjz * Small changes and comment * Change gamujz parameter * disabled gamut Jz too slow * Jzazbz curve Jz(Hz) * reenable gamutjz * small changes * Change tooltip * Change labels tooltips * Jzazbz only on advanced mode * GUI improvments * Change tooltip * Change default values and tooltip * Added tooltip Jz * Disabled Jz gamut * Change gamma color and light - remove exposure * Gamma for exposure and DR * gamma Sharp * Gamma vibrance * gamma optimizations * Change tooltips * Optimization PQ * LA GUI for tone curve Ciecam * LA ciecam Enable curve lightness - brightness * LA ciecam GUI color curve * LA ciecam enable color curve * Change tooltip and default values * Enable Jz curve * Enable Cz(Cz) curve * Enable Cz(Jz) curve * Added Log encoding to ciecam * Improvment algorithm remapping * Reenable forgotten listener logencodchanged * Change Jz tooltips * Reenable dynamic range and exposure * First change GUI auto ciecam * 2nd fixed ciecam auto * Improve GUI maskbackground curves * Enable activspot for la ciecam * set sensitive sliders La ciecam when auto scene conditions * Change internal calculations see comments * Checcbox ForceJz to 1 * Change tool position - change order CAM model * Expander for Jzczhz * Remove unused code * GUI changes * Change labels CAM16 Jzazbz * Change slider brightness parameters * improvment SH jz * Some changes to brightness Jz * Fixed scene conditions auto * Renable forgotten change * Prepare calculation Zcam * Prepare Iz for zcam * First GUI Zcam * Improve GUI Zcam * Calculate Qz white - brightness of the reference white * Prepare for PQ - eventually * Init LUT ZCAMBrightCurveJz and ZCAMBrightCurveQz * prepare zcam achromatic variables * First zcam * Change algo step 5 zcam * Another change original algo * Another change to original algo * first colorfullness * Fixed bad behavior threshold and change c c2 surround parameters * added saturation Zcam * Change parameters surround * Enable chroma zcam * change chroma and lightness formula * disable OMP for 2nd process Zcam * Improvment zcam for some high-light images * Change parameters overflow zcam * Change parmeters high datas * another change to retrieve... * Simplify code matrix conversion xyz-jzazbz * Adjust internam parameters zcam * Change some parameters - clean code * Enable PQCam16 * Enable PQ Cam16 - disable ZCAM * remove warning compilation message * Change GUI jzczhz * Fixed bad behavior remaping jz * Remove forgotten parameter - hide Jz100 - PU adaptation- chnage tooltips * Another change to chroma parameter * Small changes * If verbose display in console Cam16 informations * If verbose display in console source saturation colorfullness * Change to La calculation for ciecam * Change GUI cam16 - jzczhz - remove cam16 and jzczhz * Disable exposure compensation to calculate La for all Ciecam and Log encoding * Change label Cam16 and jzczhz * Improve GUI Jz * Other improvment GUI Jz Cam16 * verify nan Jz and ciecam matrix to avoid crash * Enable La manual for Jz to change PU-adaptation * Improve calculation to avoid crash Jz and Cam16 matrix * Fixed crash with local contrast in cam16 * Clean code loccont * First step GUI Cie mask * GUI part 2 - Cie * Build cieMask * Gui part 3 cie * Valid llcieMask * Valid llcieMask * Pass GUI curves parameters to iplocallab.cc * 2nd pass parameters from GUI to iplocallab.cc * Init first functions modifications * Add expander to cam16 adjustments * First test mask cie * Various improvment GUI - tooltips - process * Take into account Yb cam16 for Jz - reenable warm-cool * Surround source Cam16 before Jz * Improve GUI and process * Fixed bug and bad behavior last commit * Fixed bug chroma mask - improve GUI - Relative luminance for Jz * Increase sensitivity mask chroma * Improve Jz with saturation Z - improve GUI Jzczhz * Small code improvment * Another change mask C and enable mask for Cam16 and Jz * Some changes * Enable denoise chroma mask * Small change LIM01 normchromar * Enable Zcam matrix * Improve chroma curves...mask and boudaries * take into account recursive slider in settings * Change tooltip - improvment to C curve (denoise C - best value in curves - etc.) - remove Zcam button * Change tooltips * First part GUI - local contrast wavelet Jz * Passed parameters GUI local contrast wav jz to rtengine * save config wavelet jz * first try wavelet local contrast Jz * Add tooltips * Simplify code wavelet local contrast * take into account edge wavelet performance in Wavelet Jz * Fixed overflow jz when usig botth contradt and wavelt local jz contrast * Adapt size winGdiHandles in filepanel to avoid crash in Windows multieditor * First GUI part Clarity wavelet Jz * First try wavelet Jz Cz clarity * Added tooltips * Small change to enable wavelet jz * Disabled (commented) all Zcam code * Improve behavior when SH local-contrast and Clarity are use both * Change limit PQremap jz * Clean and optimize code * Reenable mjjz * Change settings guidedfilter wavelet Jz * Fixed crash when revory based on lum mask negative * Change tooltip * Fixed ad behavior auto mean and absolute luminance * Remove warning in console * Fixed bad behavior auto Log encoding - bad behavior curves L(H) Jz * Fixed another bad behavior - reenable curves color and light L(H) C(H) * first transposition Lab Jz for curves H * Change mask boundary for Jz * Various improvment to H curves Jz * Add amountchrom to Hcurve Color and Light * Improve gray boundary curves behavior * reenable Jz curve H(H) - soft radius * Improve guidefilter Jz H curve * Threshold chroma Jz(Hz) * Enable guidedfilter chroma curve H * improve GUI curves Hz * Checkbutton chroma for curve Jz(Hz) * Change event selectspot * Clean and small optimization code * Another clean code * Change calculation Hz references for curves Hz * Clean code * Various changes to GF and GUI * Another change to Chroma for Jz(H) * Change GUI sensitive Jz100 adapdjzcie * Improve code for Jz100 * Change default value skin-protection to 0 instead of 50 * Clean code * Remove BENCHFUN for ciecam * small correction to huejz_to_huehsv2 conversion * Added missing plum parameter for jch2xyz_ciecam02float * another small change to huejz_to_huehsv2 * Improvment to huelab_to_huehsv2 and some double functions * Fixed warning hide parameters in lgtm-com * Fixed ? Missing retuen statement in lgtm-com * Change behavior Log encoding whith PQ Cam16 * Small improvment to Jz PU adaptation * Added forgoten to_one for Cz slider * Replace 0.707... by RT_SQRT1_2 - change some settings chroma * Improvment to getAutoLogloc * Fixed crash with array in getAutoLogloc * First try Jz Log encoding * Forgotten Cz * Various improvment GUI setlogscale - Jz log encoding * Change labels tooltips Jz log * Change wrong clipcz value * Change tooltip auto scene conditions * Fixed bad behavior blackevjz whiteevjz * Small improvment to LA Log encoding std * Avoid bad behavior Jz log when enable Relative luminance * Change sourcegray jz calculation * Revert last change * Clean and comment code * Review tooltips thanks to Wayne - harmonize response La log encoding and Jz Log encoding * Always force Dynamic Range evaluation in full frame mode for Jz log encoding * Remove unused code * Small optimizations sigmoid Cam16 and Jz * Comment code * Change parameters deltaE for HDR * Various improvment to Jz - La - sigmoid - log encoding * Basic support for Sony ILCE-7M4 in camconst.json * German translation Spot Removal (#6388) * Filmnegative German translation (#6389) * (Temporarily) disable `ftree-loop-vectorize` for GCC 11 because of #6384 * Added BlacEv WhiteEv to sigmoidJz * Improve GUI for BlackEv WhiteEv * Change location SigmoidJz in Iplocallab * Improvment GUI and sensitivity sliders strength sigmoid * Change labels Co-authored-by: Thanatomanic <6567747+Thanatomanic@users.noreply.github.com> Co-authored-by: Anna <simonanna@gmx.net>
This commit is contained in:
@@ -150,6 +150,7 @@ Locallab::Locallab():
|
||||
// Tool list widget
|
||||
toollist(Gtk::manage(new LocallabToolList())),
|
||||
|
||||
// expcie(Gtk::manage(new Locallabcie())),
|
||||
// Other widgets
|
||||
resetshowButton(Gtk::manage(new Gtk::Button(M("TP_LOCALLAB_RESETSHOW"))))
|
||||
{
|
||||
@@ -179,6 +180,7 @@ Locallab::Locallab():
|
||||
addTool(toolpanel, &expshadhigh);
|
||||
addTool(toolpanel, &expvibrance);
|
||||
addTool(toolpanel, &explog);
|
||||
addTool(toolpanel, &expcie);
|
||||
addTool(toolpanel, &expexpose);
|
||||
addTool(toolpanel, &expmask);
|
||||
addTool(toolpanel, &expsoft);
|
||||
@@ -311,6 +313,7 @@ void Locallab::read(const rtengine::procparams::ProcParams* pp, const ParamsEdit
|
||||
r->laplac = true; //pp->locallab.spots.at(i).laplac;
|
||||
r->deltae = pp->locallab.spots.at(i).deltae;
|
||||
r->scopemask = pp->locallab.spots.at(i).scopemask;
|
||||
r->denoichmask = pp->locallab.spots.at(i).denoichmask;
|
||||
r->shortc = pp->locallab.spots.at(i).shortc;
|
||||
r->lumask = pp->locallab.spots.at(i).lumask;
|
||||
r->savrest = pp->locallab.spots.at(i).savrest;
|
||||
@@ -492,6 +495,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
r->laplac = newSpot->laplac;
|
||||
r->deltae = newSpot->deltae;
|
||||
r->scopemask = newSpot->scopemask;
|
||||
r->denoichmask = newSpot->denoichmask;
|
||||
r->shortc = newSpot->shortc;
|
||||
r->lumask = newSpot->lumask;
|
||||
r->savrest = newSpot->savrest;
|
||||
@@ -651,18 +655,19 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
toollist->addToolRow(tool->getToolName(), toolNb);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// Update locallab tools mask background
|
||||
if (pp->locallab.selspot < (int)maskBackRef.size()) {
|
||||
const double huer = maskBackRef.at(pp->locallab.selspot).huer;
|
||||
const double lumar = maskBackRef.at(pp->locallab.selspot).lumar;
|
||||
const double chromar = maskBackRef.at(pp->locallab.selspot).chromar;
|
||||
const float fab = maskBackRef.at(pp->locallab.selspot).fab;
|
||||
|
||||
for (auto tool : locallabTools) {
|
||||
tool->refChanged(huer, lumar, chromar);
|
||||
tool->refChanged(huer, lumar, chromar, fab);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
// Update Locallab Retinex tool min/max
|
||||
if (pp->locallab.selspot < (int)retiMinMax.size()) {
|
||||
const double cdma = retiMinMax.at(pp->locallab.selspot).cdma;
|
||||
@@ -801,6 +806,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
r->laplac = newSpot->laplac;
|
||||
r->deltae = newSpot->deltae;
|
||||
r->scopemask = newSpot->scopemask;
|
||||
r->denoichmask = newSpot->denoichmask;
|
||||
r->shortc = newSpot->shortc;
|
||||
r->lumask = newSpot->lumask;
|
||||
r->savrest = newSpot->savrest;
|
||||
@@ -956,6 +962,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
pp->locallab.spots.at(pp->locallab.selspot).laplac = r->laplac;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).deltae = r->deltae;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).scopemask = r->scopemask;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).denoichmask = r->denoichmask;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).shortc = r->shortc;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lumask = r->lumask;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).savrest = r->savrest;
|
||||
@@ -1036,7 +1043,7 @@ void Locallab::minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int
|
||||
const double cdmin = retiMinMax.at(selspot).cdmin;
|
||||
const double mini = retiMinMax.at(selspot).mini;
|
||||
const double maxi = retiMinMax.at(selspot).maxi;
|
||||
const double Tmean = retiMinMax.at(selspot).Tmean;
|
||||
const double Tmean = retiMinMax.at(selspot).Tmean;
|
||||
const double Tsigma = retiMinMax.at(selspot).Tsigma;
|
||||
const double Tmin = retiMinMax.at(selspot).Tmin;
|
||||
const double Tmax = retiMinMax.at(selspot).Tmax;
|
||||
@@ -1045,12 +1052,28 @@ void Locallab::minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int
|
||||
}
|
||||
}
|
||||
|
||||
void Locallab::logencodChanged(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg)
|
||||
void Locallab::logencodChanged(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg, const bool autocomput, const bool autocie, const float jz1)
|
||||
{
|
||||
// Update Locallab Log Encoding accordingly
|
||||
explog.updateAutocompute(blackev, whiteev, sourceg, sourceab, targetg);
|
||||
}
|
||||
// Update Locallab Log Encoding and Ciecam accordingly
|
||||
if(autocomput) {
|
||||
explog.updateAutocompute(blackev, whiteev, sourceg, sourceab, targetg, jz1);
|
||||
}
|
||||
if(autocie) {
|
||||
expcie.updateAutocompute(blackev, whiteev, sourceg, sourceab, targetg, jz1);
|
||||
}
|
||||
|
||||
}
|
||||
void Locallab::refChanged2(float *huerefp, float *chromarefp, float *lumarefp, float *fabrefp, int selspot)
|
||||
{
|
||||
const double huer = huerefp[selspot];
|
||||
const double lumar = lumarefp[selspot];
|
||||
const double chromar = chromarefp[selspot];
|
||||
const float fab = fabrefp[selspot];
|
||||
for (auto tool : locallabTools) {
|
||||
tool->refChanged(huer, lumar, chromar, fab);
|
||||
}
|
||||
}
|
||||
/*
|
||||
void Locallab::refChanged(const std::vector<locallabRef> &ref, int selspot)
|
||||
{
|
||||
// Saving transmitted mask background data
|
||||
@@ -1061,13 +1084,14 @@ void Locallab::refChanged(const std::vector<locallabRef> &ref, int selspot)
|
||||
const double huer = maskBackRef.at(selspot).huer;
|
||||
const double lumar = maskBackRef.at(selspot).lumar;
|
||||
const double chromar = maskBackRef.at(selspot).chromar;
|
||||
const float fab = maskBackRef.at(selspot).fab;
|
||||
|
||||
for (auto tool : locallabTools) {
|
||||
tool->refChanged(huer, lumar, chromar);
|
||||
tool->refChanged(huer, lumar, chromar, fab);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
void Locallab::resetMaskVisibility()
|
||||
{
|
||||
// Indicate to spot control panel that no more mask preview is active
|
||||
@@ -1088,20 +1112,20 @@ Locallab::llMaskVisibility Locallab::getMaskVisibility() const
|
||||
const bool prevDeltaE = expsettings->isDeltaEPrevActive();
|
||||
|
||||
// Get mask preview from Locallab tools
|
||||
int colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask;
|
||||
int colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask, cieMask;
|
||||
|
||||
for (auto tool : locallabTools) {
|
||||
tool->getMaskView(colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask);
|
||||
tool->getMaskView(colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask, cieMask);
|
||||
}
|
||||
|
||||
// Indicate to spot control panel if one mask preview is active
|
||||
const bool isMaskActive = (colorMask == 0) || (colorMaskinv == 0) || (expMask == 0) || (expMaskinv == 0) ||
|
||||
(shMask == 0) || (shMaskinv == 0) || (vibMask == 0) || (softMask == 0) ||
|
||||
(blMask == 0) || (tmMask == 0) || (retiMask == 0) || (sharMask == 0) ||
|
||||
(lcMask == 0) || (cbMask == 0) || (logMask == 0) || (maskMask == 0);
|
||||
(lcMask == 0) || (cbMask == 0) || (logMask == 0) || (maskMask == 0) || (cieMask == 0);
|
||||
expsettings->setMaskPrevActive(isMaskActive);
|
||||
|
||||
return {prevDeltaE, colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask};
|
||||
return {prevDeltaE, colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask, cieMask};
|
||||
}
|
||||
|
||||
void Locallab::resetshowPressed()
|
||||
|
Reference in New Issue
Block a user