iplocallab.cc: further cleanups

This commit is contained in:
Ingo Weyrich 2020-06-01 15:31:50 +02:00
parent bdef177e87
commit f6714b2171
2 changed files with 4895 additions and 4909 deletions

View File

@ -285,40 +285,40 @@ public:
void calc_ref(int sp, LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &chromarefblur, double &lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, float &avg, const LocwavCurve & locwavCurveden, bool locwavdenutili); void calc_ref(int sp, LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &chromarefblur, double &lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, float &avg, const LocwavCurve & locwavCurveden, bool locwavdenutili);
void copy_ref(LabImage* spotbuffer, LabImage* original, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp, double &huerefspot, double &chromarefspot, double &lumarefspot); void copy_ref(LabImage* spotbuffer, LabImage* original, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp, double &huerefspot, double &chromarefspot, double &lumarefspot);
void paste_ref(LabImage* spotbuffer, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp); void paste_ref(LabImage* spotbuffer, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp);
void Lab_Local(int call, int sp, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, LabImage* lastorig, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, const LocretitransCurve &locRETtransCcurve, void Lab_Local(int call, int sp, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, LabImage* lastorig, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve& locRETgainCcurve, const LocretitransCurve &locRETtransCcurve,
const LUTf& lllocalcurve, bool locallutili, const LUTf& lllocalcurve, bool locallutili,
const LUTf& cllocalcurve, bool localclutili, const LUTf& cllocalcurve, bool localclutili,
const LUTf& lclocalcurve, bool locallcutili, const LUTf& lclocalcurve, bool locallcutili,
const LocLHCurve& loclhCurve, const LocHHCurve & lochhCurve, const LocLHCurve& loclhCurve, const LocHHCurve& lochhCurve,
const LUTf& lmasklocalcurve, bool localmaskutili, const LUTf& lmasklocalcurve, bool localmaskutili,
const LUTf& lmaskexplocalcurve, bool localmaskexputili, const LUTf& lmaskexplocalcurve, bool localmaskexputili,
const LUTf& lmaskSHlocalcurve, bool localmaskSHutili, const LUTf& lmaskSHlocalcurve, bool localmaskSHutili,
const LUTf& lmaskviblocalcurve, bool localmaskvibutili, const LUTf& lmaskviblocalcurve, bool localmaskvibutili,
const LUTf & lmasktmlocalcurve, bool localmasktmutili, const LUTf& lmasktmlocalcurve, bool localmasktmutili,
LUTf & lmaskretilocalcurve, bool localmaskretiutili, LUTf& lmaskretilocalcurve, bool localmaskretiutili,
const LUTf& lmaskcblocalcurve, bool localmaskcbutili, const LUTf& lmaskcblocalcurve, bool localmaskcbutili,
const LUTf& lmaskbllocalcurve, bool localmaskblutili, const LUTf& lmaskbllocalcurve, bool localmaskblutili,
const LUTf& lmasklclocalcurve, bool localmasklcutili, const LUTf& lmasklclocalcurve, bool localmasklcutili,
const LocCCmaskCurve & locccmasCurve, bool lcmasutili, const LocLLmaskCurve & locllmasCurve, bool llmasutili, const LocHHmaskCurve & lochhmasCurve, bool lhmasutili, const LocHHmaskCurve & lochhhmasCurve, bool lhhmasutili, const LocCCmaskCurve& locccmasCurve, bool lcmasutili, const LocLLmaskCurve& locllmasCurve, bool llmasutili, const LocHHmaskCurve& lochhmasCurve, bool lhmasutili, const LocHHmaskCurve& lochhhmasCurve, bool lhhmasutili,
const LocCCmaskCurve & locccmasexpCurve, bool lcmasexputili, const LocLLmaskCurve & locllmasexpCurve, bool llmasexputili, const LocHHmaskCurve & lochhmasexpCurve, bool lhmasexputili, const LocCCmaskCurve& locccmasexpCurve, bool lcmasexputili, const LocLLmaskCurve& locllmasexpCurve, bool llmasexputili, const LocHHmaskCurve& lochhmasexpCurve, bool lhmasexputili,
const LocCCmaskCurve & locccmasSHCurve, bool lcmasSHutili, const LocLLmaskCurve & locllmasSHCurve, bool llmasSHutili, const LocHHmaskCurve & lochhmasSHCurve, bool lhmasSHutili, const LocCCmaskCurve& locccmasSHCurve, bool lcmasSHutili, const LocLLmaskCurve& locllmasSHCurve, bool llmasSHutili, const LocHHmaskCurve& lochhmasSHCurve, bool lhmasSHutili,
const LocCCmaskCurve & locccmasvibCurve, bool lcmasvibutili, const LocLLmaskCurve & locllmasvibCurve, bool llmasvibutili, const LocHHmaskCurve & lochhmasvibCurve, bool lhmasvibutili, const LocCCmaskCurve& locccmasvibCurve, bool lcmasvibutili, const LocLLmaskCurve& locllmasvibCurve, bool llmasvibutili, const LocHHmaskCurve& lochhmasvibCurve, bool lhmasvibutili,
const LocCCmaskCurve & locccmascbCurve, bool lcmascbutili, const LocLLmaskCurve & locllmascbCurve, bool llmascbutili, const LocHHmaskCurve & lochhmascbCurve, bool lhmascbutili, const LocCCmaskCurve& locccmascbCurve, bool lcmascbutili, const LocLLmaskCurve& locllmascbCurve, bool llmascbutili, const LocHHmaskCurve& lochhmascbCurve, bool lhmascbutili,
const LocCCmaskCurve & locccmasretiCurve, bool lcmasretiutili, const LocLLmaskCurve & locllmasretiCurve, bool llmasretiutili, const LocHHmaskCurve & lochhmasretiCurve, bool lhmasretiutili, const LocCCmaskCurve& locccmasretiCurve, bool lcmasretiutili, const LocLLmaskCurve& locllmasretiCurve, bool llmasretiutili, const LocHHmaskCurve& lochhmasretiCurve, bool lhmasretiutili,
const LocCCmaskCurve & locccmastmCurve, bool lcmastmutili, const LocLLmaskCurve & locllmastmCurve, bool llmastmutili, const LocHHmaskCurve & lochhmastmCurve, bool lhmastmutili, const LocCCmaskCurve& locccmastmCurve, bool lcmastmutili, const LocLLmaskCurve& locllmastmCurve, bool llmastmutili, const LocHHmaskCurve& lochhmastmCurve, bool lhmastmutili,
const LocCCmaskCurve & locccmasblCurve, bool lcmasblutili, const LocLLmaskCurve & locllmasblCurve, bool llmasblutili, const LocHHmaskCurve & lochhmasblCurve, bool lhmasblutili, const LocCCmaskCurve& locccmasblCurve, bool lcmasblutili, const LocLLmaskCurve& locllmasblCurve, bool llmasblutili, const LocHHmaskCurve& lochhmasblCurve, bool lhmasblutili,
const LocCCmaskCurve & locccmaslcCurve, bool lcmaslcutili, const LocLLmaskCurve & locllmaslcCurve, bool llmaslcutili, const LocHHmaskCurve & lochhmaslcCurve, bool lhmaslcutili, const LocCCmaskCurve& locccmaslcCurve, bool lcmaslcutili, const LocLLmaskCurve& locllmaslcCurve, bool llmaslcutili, const LocHHmaskCurve& lochhmaslcCurve, bool lhmaslcutili,
const LocwavCurve & loclmasCurveblwav, bool lmasutiliblwav, const LocwavCurve& loclmasCurveblwav, bool lmasutiliblwav,
const LocwavCurve & loclmasCurvecolwav, bool lmasutilicolwav, const LocwavCurve& loclmasCurvecolwav, bool lmasutilicolwav,
const LocwavCurve & locwavCurve, bool locwavutili, const LocwavCurve& locwavCurve, bool locwavutili,
const LocwavCurve & loclevwavCurve, bool loclevwavutili, const LocwavCurve& loclevwavCurve, bool loclevwavutili,
const LocwavCurve & locconwavCurve, bool locconwavutili, const LocwavCurve& locconwavCurve, bool locconwavutili,
const LocwavCurve & loccompwavCurve, bool loccompwavutili, const LocwavCurve& loccompwavCurve, bool loccompwavutili,
const LocwavCurve & loccomprewavCurve, bool loccomprewavutili, const LocwavCurve& loccomprewavCurve, bool loccomprewavutili,
const LocwavCurve & locwavCurveden, bool locwavdenutili, const LocwavCurve& locwavCurveden, bool locwavdenutili,
const LocwavCurve & locedgwavCurve, bool locedgwavutili, const LocwavCurve& locedgwavCurve, bool locedgwavutili,
bool LHutili, bool HHutili, const LUTf& cclocalcurve, bool localcutili, LUTf & rgblocalcurve, bool localrgbutili, bool localexutili, const LUTf& exlocalcurve, const LUTf& hltonecurveloc, const LUTf& shtonecurveloc, const LUTf& tonecurveloc, const LUTf& lightCurveloc, bool LHutili, bool HHutili, const LUTf& cclocalcurve, bool localcutili, LUTf& rgblocalcurve, bool localrgbutili, bool localexutili, const LUTf& exlocalcurve, const LUTf& hltonecurveloc, const LUTf& shtonecurveloc, const LUTf& tonecurveloc, const LUTf& lightCurveloc,
double & huerefblur, double &chromarefblur, double & lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int &lastsav, double& huerefblur, double &chromarefblur, double& lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int &lastsav,
bool prevDeltaE, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, bool prevDeltaE, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax);

View File

@ -4106,9 +4106,9 @@ void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int
} }
if (rad != 0.f) { if (rad != 0.f) {
const float blur = rad < 0.f ? -1.f / rad : 1.f + rad; const float tmpblur = rad < 0.f ? -1.f / rad : 1.f + rad;
const int r1 = max(int(4 / sk * blur + 0.5), 1); const int r1 = std::max<int>(4 / sk * tmpblur + 0.5, 1);
const int r2 = max(int(25 / sk * blur + 0.5), 1); const int r2 = std::max<int>(25 / sk * tmpblur + 0.5, 1);
constexpr float epsilmax = 0.0005f; constexpr float epsilmax = 0.0005f;
constexpr float epsilmin = 0.00001f; constexpr float epsilmin = 0.00001f;
@ -7727,22 +7727,22 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float
for (int dir = 1; dir < 4; dir++) { for (int dir = 1; dir < 4; dir++) {
for (int level = level_bl; level < maxlvl; ++level) { for (int level = level_bl; level < maxlvl; ++level) {
if (MaxP[level] > 0.f && mean[level] != 0.f && sigma[level] != 0.f) { if (MaxP[level] > 0.f && mean[level] != 0.f && sigma[level] != 0.f) {
int W_L = wdspot->level_W(level); const int W_L = wdspot->level_W(level);
int H_L = wdspot->level_H(level); const int H_L = wdspot->level_H(level);
float **wav_L = wdspot->level_coeffs(level); float **wav_L = wdspot->level_coeffs(level);
float effect = lp.sigmalc2; const float effect = lp.sigmalc2;
float offs = 1.f; constexpr float offset = 1.f;
float mea[10]; float mea[10];
calceffect(level, mean, sigma, mea, effect, offs); calceffect(level, mean, sigma, mea, effect, offset);
float insigma = 0.666f; //SD constexpr float insigma = 0.666f; //SD
float logmax = log(MaxP[level]); //log Max const float logmax = std::log(MaxP[level]); //log Max
float rapX = (mean[level] + lp.sigmalc2 * sigma[level]) / MaxP[level]; //rapport between sD / max const float rapX = (mean[level] + lp.sigmalc2 * sigma[level]) / MaxP[level]; //rapport between sD / max
float inx = log(insigma); const float inx = std::log(insigma);
float iny = log(rapX); const float iny = std::log(rapX);
float rap = inx / iny; //koef const float rap = inx / iny; //koef
float asig = 0.166f / (sigma[level] * lp.sigmalc2); const float asig = 0.166f / (sigma[level] * lp.sigmalc2);
float bsig = 0.5f - asig * mean[level]; const float bsig = 0.5f - asig * mean[level];
float amean = 0.5f / mean[level]; const float amean = 0.5f / mean[level];
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel for if (multiThread) #pragma omp parallel for if (multiThread)
@ -7750,7 +7750,7 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float
for (int y = 0; y < H_L; y++) { for (int y = 0; y < H_L; y++) {
for (int x = 0; x < W_L; x++) { for (int x = 0; x < W_L; x++) {
float WavCL = std::fabs(wav_L[dir][y * W_L + x]); const float WavCL = std::fabs(wav_L[dir][y * W_L + x]);
float beta; float beta;
if (WavCL < mea[0]) { if (WavCL < mea[0]) {
@ -7781,10 +7781,8 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float
float &val = wav_L[dir][y * W_L + x]; float &val = wav_L[dir][y * W_L + x];
if (std::fabs(val) >= (mean[level] + lp.sigmalc2 * sigma[level])) { //for max if (std::fabs(val) >= (mean[level] + lp.sigmalc2 * sigma[level])) { //for max
float valcour = xlogf(std::fabs(val)); const float valc = xlogf(std::fabs(val)) - logmax;
float valc = valcour - logmax; absciss = xexpf(valc * rap);
float vald = valc * rap;
absciss = xexpf(vald);
} else if (std::fabs(val) >= mean[level]) { } else if (std::fabs(val) >= mean[level]) {
absciss = asig * std::fabs(val) + bsig; absciss = asig * std::fabs(val) + bsig;
} else { } else {
@ -8059,34 +8057,23 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float
int W_L = wdspot->level_W(0);//provisory W_L H_L int W_L = wdspot->level_W(0);//provisory W_L H_L
int H_L = wdspot->level_H(0); int H_L = wdspot->level_H(0);
float *koeLi[12]; float *koeLi[12];
float maxkoeLi[12]; float maxkoeLi[12] = {0.f};
float * beta = nullptr; float *beta = new float[W_L * H_L];
beta = new float[W_L * H_L];
float *koeLibuffer = nullptr; float *koeLibuffer = new float[12 * H_L * W_L]; //12
for (int y = 0; y < 12; y++) { for (int i = 0; i < 12; i++) {
maxkoeLi[y] = 0.f; //9
}
koeLibuffer = new float[12 * H_L * W_L]; //12
for (int i = 0; i < 12; i++) { //9
koeLi[i] = &koeLibuffer[i * W_L * H_L]; koeLi[i] = &koeLibuffer[i * W_L * H_L];
} }
for (int j = 0; j < 12; j++) //9 for (int j = 0; j < 12; j++) {
for (int i = 0; i < W_L * H_L; i++) { for (int i = 0; i < W_L * H_L; i++) {
koeLi[j][i] = 0.f; koeLi[j][i] = 0.f;
} }
float *tmCBuffer = new float[H_L * W_L];
float *tmC[H_L];
for (int i = 0; i < H_L; i++) {
tmC[i] = &tmCBuffer[i * W_L];
} }
array2D<float> tmC(W_L, H_L);
float gradw = lp.gradw; float gradw = lp.gradw;
float tloww = lp.tloww; float tloww = lp.tloww;
@ -8096,19 +8083,16 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float
for (int lvl = 0; lvl < 4; lvl++) { for (int lvl = 0; lvl < 4; lvl++) {
for (int dir = 1; dir < 4; dir++) { for (int dir = 1; dir < 4; dir++) {
int W_L = wdspot->level_W(lvl); const int W_L = wdspot->level_W(lvl);
int H_L = wdspot->level_H(lvl); const int H_L = wdspot->level_H(lvl);
float **wav_L = wdspot->level_coeffs(lvl); float **wav_L = wdspot->level_coeffs(lvl);
float effect = lp.sigmaed; const float effect = lp.sigmaed;
float offs = 1.f; constexpr float offset = 1.f;
float mea[10]; float mea[10];
for (int co = 0; co < H_L * W_L; co++) { calceffect(lvl, mean, sigma, mea, effect, offset);
beta[co] = 1.f;
}
calceffect(lvl, mean, sigma, mea, effect, offs);
for (int co = 0; co < H_L * W_L; co++) { for (int co = 0; co < H_L * W_L; co++) {
float WavCL = std::fabs(wav_L[dir][co]); const float WavCL = std::fabs(wav_L[dir][co]);
if (WavCL < mea[0]) { if (WavCL < mea[0]) {
beta[co] = 0.05f; beta[co] = 0.05f;
@ -8134,14 +8118,12 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float
beta[co] = 0.05f; beta[co] = 0.05f;
} }
} }
// printf("Chromablu=%f \n", chromablu);
calckoe(wav_L, gradw, tloww, koeLi, lvl, dir, W_L, H_L, edd, maxkoeLi, tmC); calckoe(wav_L, gradw, tloww, koeLi, lvl, dir, W_L, H_L, edd, maxkoeLi, tmC);
// return convolution KoeLi and maxkoeLi of level 0 1 2 3 and Dir Horiz, Vert, Diag // return convolution KoeLi and maxkoeLi of level 0 1 2 3 and Dir Horiz, Vert, Diag
} }
} }
tmC.free();
delete [] tmCBuffer;
float aamp = 1.f + lp.thigw / 100.f; float aamp = 1.f + lp.thigw / 100.f;
for (int lvl = 0; lvl < 4; lvl++) { for (int lvl = 0; lvl < 4; lvl++) {
@ -10180,53 +10162,58 @@ void clarimerge(struct local_params& lp, float &mL, float &mC, bool &exec, LabIm
} }
} }
void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * original, LabImage * transformed, LabImage * reserved, LabImage * lastorig, int cx, int cy, int oW, int oH, int sk, void ImProcFunctions::Lab_Local(
const LocretigainCurve & locRETgainCcurve, const LocretitransCurve & locRETtransCcurve, int call, int sp, float** shbuffer, LabImage * original, LabImage * transformed, LabImage * reserved, LabImage * lastorig, int cx, int cy, int oW, int oH, int sk,
const LocretigainCurve& locRETgainCcurve, const LocretitransCurve& locRETtransCcurve,
const LUTf& lllocalcurve, bool locallutili, const LUTf& lllocalcurve, bool locallutili,
const LUTf& cllocalcurve, bool localclutili, const LUTf& cllocalcurve, bool localclutili,
const LUTf& lclocalcurve, bool locallcutili, const LUTf& lclocalcurve, bool locallcutili,
const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocLHCurve& loclhCurve, const LocHHCurve& lochhCurve,
const LUTf& lmasklocalcurve, bool localmaskutili, const LUTf& lmasklocalcurve, bool localmaskutili,
const LUTf& lmaskexplocalcurve, bool localmaskexputili, const LUTf& lmaskexplocalcurve, bool localmaskexputili,
const LUTf& lmaskSHlocalcurve, bool localmaskSHutili, const LUTf& lmaskSHlocalcurve, bool localmaskSHutili,
const LUTf& lmaskviblocalcurve, bool localmaskvibutili, const LUTf& lmaskviblocalcurve, bool localmaskvibutili,
const LUTf& lmasktmlocalcurve, bool localmasktmutili, const LUTf& lmasktmlocalcurve, bool localmasktmutili,
LUTf & lmaskretilocalcurve, bool localmaskretiutili, LUTf& lmaskretilocalcurve, bool localmaskretiutili,
const LUTf& lmaskcblocalcurve, bool localmaskcbutili, const LUTf& lmaskcblocalcurve, bool localmaskcbutili,
const LUTf& lmaskbllocalcurve, bool localmaskblutili, const LUTf& lmaskbllocalcurve, bool localmaskblutili,
const LUTf& lmasklclocalcurve, bool localmasklcutili, const LUTf& lmasklclocalcurve, bool localmasklcutili,
const LocCCmaskCurve & locccmasCurve, bool lcmasutili, const LocLLmaskCurve & locllmasCurve, bool llmasutili, const LocHHmaskCurve & lochhmasCurve, bool lhmasutili, const LocHHmaskCurve & lochhhmasCurve, bool lhhmasutili, const LocCCmaskCurve& locccmasCurve, bool lcmasutili, const LocLLmaskCurve& locllmasCurve, bool llmasutili, const LocHHmaskCurve& lochhmasCurve, bool lhmasutili, const LocHHmaskCurve& lochhhmasCurve, bool lhhmasutili,
const LocCCmaskCurve & locccmasexpCurve, bool lcmasexputili, const LocLLmaskCurve & locllmasexpCurve, bool llmasexputili, const LocHHmaskCurve & lochhmasexpCurve, bool lhmasexputili, const LocCCmaskCurve& locccmasexpCurve, bool lcmasexputili, const LocLLmaskCurve& locllmasexpCurve, bool llmasexputili, const LocHHmaskCurve& lochhmasexpCurve, bool lhmasexputili,
const LocCCmaskCurve & locccmasSHCurve, bool lcmasSHutili, const LocLLmaskCurve & locllmasSHCurve, bool llmasSHutili, const LocHHmaskCurve & lochhmasSHCurve, bool lhmasSHutili, const LocCCmaskCurve& locccmasSHCurve, bool lcmasSHutili, const LocLLmaskCurve& locllmasSHCurve, bool llmasSHutili, const LocHHmaskCurve& lochhmasSHCurve, bool lhmasSHutili,
const LocCCmaskCurve & locccmasvibCurve, bool lcmasvibutili, const LocLLmaskCurve & locllmasvibCurve, bool llmasvibutili, const LocHHmaskCurve & lochhmasvibCurve, bool lhmasvibutili, const LocCCmaskCurve& locccmasvibCurve, bool lcmasvibutili, const LocLLmaskCurve& locllmasvibCurve, bool llmasvibutili, const LocHHmaskCurve& lochhmasvibCurve, bool lhmasvibutili,
const LocCCmaskCurve & locccmascbCurve, bool lcmascbutili, const LocLLmaskCurve & locllmascbCurve, bool llmascbutili, const LocHHmaskCurve & lochhmascbCurve, bool lhmascbutili, const LocCCmaskCurve& locccmascbCurve, bool lcmascbutili, const LocLLmaskCurve& locllmascbCurve, bool llmascbutili, const LocHHmaskCurve& lochhmascbCurve, bool lhmascbutili,
const LocCCmaskCurve & locccmasretiCurve, bool lcmasretiutili, const LocLLmaskCurve & locllmasretiCurve, bool llmasretiutili, const LocHHmaskCurve & lochhmasretiCurve, bool lhmasretiutili, const LocCCmaskCurve& locccmasretiCurve, bool lcmasretiutili, const LocLLmaskCurve& locllmasretiCurve, bool llmasretiutili, const LocHHmaskCurve& lochhmasretiCurve, bool lhmasretiutili,
const LocCCmaskCurve & locccmastmCurve, bool lcmastmutili, const LocLLmaskCurve & locllmastmCurve, bool llmastmutili, const LocHHmaskCurve & lochhmastmCurve, bool lhmastmutili, const LocCCmaskCurve& locccmastmCurve, bool lcmastmutili, const LocLLmaskCurve& locllmastmCurve, bool llmastmutili, const LocHHmaskCurve& lochhmastmCurve, bool lhmastmutili,
const LocCCmaskCurve & locccmasblCurve, bool lcmasblutili, const LocLLmaskCurve & locllmasblCurve, bool llmasblutili, const LocHHmaskCurve & lochhmasblCurve, bool lhmasblutili, const LocCCmaskCurve& locccmasblCurve, bool lcmasblutili, const LocLLmaskCurve& locllmasblCurve, bool llmasblutili, const LocHHmaskCurve& lochhmasblCurve, bool lhmasblutili,
const LocCCmaskCurve & locccmaslcCurve, bool lcmaslcutili, const LocLLmaskCurve & locllmaslcCurve, bool llmaslcutili, const LocHHmaskCurve & lochhmaslcCurve, bool lhmaslcutili, const LocCCmaskCurve& locccmaslcCurve, bool lcmaslcutili, const LocLLmaskCurve& locllmaslcCurve, bool llmaslcutili, const LocHHmaskCurve& lochhmaslcCurve, bool lhmaslcutili,
const LocwavCurve & loclmasCurveblwav, bool lmasutiliblwav, const LocwavCurve& loclmasCurveblwav, bool lmasutiliblwav,
const LocwavCurve & loclmasCurvecolwav, bool lmasutilicolwav, const LocwavCurve& loclmasCurvecolwav, bool lmasutilicolwav,
const LocwavCurve & locwavCurve, bool locwavutili, const LocwavCurve& locwavCurve, bool locwavutili,
const LocwavCurve & loclevwavCurve, bool loclevwavutili, const LocwavCurve& loclevwavCurve, bool loclevwavutili,
const LocwavCurve & locconwavCurve, bool locconwavutili, const LocwavCurve& locconwavCurve, bool locconwavutili,
const LocwavCurve & loccompwavCurve, bool loccompwavutili, const LocwavCurve& loccompwavCurve, bool loccompwavutili,
const LocwavCurve & loccomprewavCurve, bool loccomprewavutili, const LocwavCurve& loccomprewavCurve, bool loccomprewavutili,
const LocwavCurve & locwavCurveden, bool locwavdenutili, const LocwavCurve& locwavCurveden, bool locwavdenutili,
const LocwavCurve & locedgwavCurve, bool locedgwavutili, const LocwavCurve& locedgwavCurve, bool locedgwavutili,
bool LHutili, bool HHutili, const LUTf& cclocalcurve, bool localcutili, LUTf & rgblocalcurve, bool localrgbutili, bool localexutili, const LUTf& exlocalcurve, const LUTf& hltonecurveloc, const LUTf& shtonecurveloc, const LUTf& tonecurveloc, const LUTf& lightCurveloc, bool LHutili, bool HHutili, const LUTf& cclocalcurve, bool localcutili, LUTf& rgblocalcurve, bool localrgbutili, bool localexutili, const LUTf& exlocalcurve, const LUTf& hltonecurveloc, const LUTf& shtonecurveloc, const LUTf& tonecurveloc, const LUTf& lightCurveloc,
double & huerefblur, double & chromarefblur, double & lumarefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref, int &lastsav, double& huerefblur, double& chromarefblur, double& lumarefblur, double& hueref, double& chromaref, double& lumaref, double& sobelref, int &lastsav,
bool prevDeltaE, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, bool prevDeltaE, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
float & minCD, float & maxCD, float & mini, float & maxi, float & Tmean, float & Tsigma, float & Tmin, float & Tmax) float& minCD, float& maxCD, float& mini, float& maxi, float& Tmean, float& Tsigma, float& Tmin, float& Tmax
)
{ {
//general call of others functions : important return hueref, chromaref, lumaref //general call of others functions : important return hueref, chromaref, lumaref
if (params->locallab.enabled) { if (!params->locallab.enabled) {
return;
}
BENCHFUN BENCHFUN
#ifdef _DEBUG #ifdef _DEBUG
// init variables to display Munsell corrections // init variables to display Munsell corrections
MunsellDebugInfo* MunsDebugInfo = new MunsellDebugInfo(); MunsellDebugInfo* MunsDebugInfo = new MunsellDebugInfo();
#endif #endif
int del = 3; // to avoid crash with [loy - begy] and [lox - begx] and bfh bfw // with gtk2 [loy - begy-1] [lox - begx -1 ] and del = 1 constexpr int del = 3; // to avoid crash with [loy - begy] and [lox - begx] and bfh bfw // with gtk2 [loy - begy-1] [lox - begx -1 ] and del = 1
struct local_params lp; struct local_params lp;
calcLocalParams(sp, oW, oH, params->locallab, lp, prevDeltaE, llColorMask, llColorMaskinv, llExpMask, llExpMaskinv, llSHMask, llSHMaskinv, llvibMask, lllcMask, llsharMask, llcbMask, llretiMask, llsoftMask, lltmMask, llblMask, locwavCurveden, locwavdenutili); calcLocalParams(sp, oW, oH, params->locallab, lp, prevDeltaE, llColorMask, llColorMaskinv, llExpMask, llExpMaskinv, llSHMask, llSHMaskinv, llvibMask, lllcMask, llsharMask, llcbMask, llretiMask, llsoftMask, lltmMask, llblMask, locwavCurveden, locwavdenutili);
@ -15881,7 +15868,6 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
#ifdef _DEBUG #ifdef _DEBUG
delete MunsDebugInfo; delete MunsDebugInfo;
#endif #endif
}
} }
} }