iplocallab.cc: further cleanups
This commit is contained in:
parent
bdef177e87
commit
f6714b2171
@ -4106,9 +4106,9 @@ void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int
|
||||
}
|
||||
|
||||
if (rad != 0.f) {
|
||||
const float blur = rad < 0.f ? -1.f / rad : 1.f + rad;
|
||||
const int r1 = max(int(4 / sk * blur + 0.5), 1);
|
||||
const int r2 = max(int(25 / sk * blur + 0.5), 1);
|
||||
const float tmpblur = rad < 0.f ? -1.f / rad : 1.f + rad;
|
||||
const int r1 = std::max<int>(4 / sk * tmpblur + 0.5, 1);
|
||||
const int r2 = std::max<int>(25 / sk * tmpblur + 0.5, 1);
|
||||
|
||||
constexpr float epsilmax = 0.0005f;
|
||||
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 level = level_bl; level < maxlvl; ++level) {
|
||||
if (MaxP[level] > 0.f && mean[level] != 0.f && sigma[level] != 0.f) {
|
||||
int W_L = wdspot->level_W(level);
|
||||
int H_L = wdspot->level_H(level);
|
||||
const int W_L = wdspot->level_W(level);
|
||||
const int H_L = wdspot->level_H(level);
|
||||
float **wav_L = wdspot->level_coeffs(level);
|
||||
float effect = lp.sigmalc2;
|
||||
float offs = 1.f;
|
||||
const float effect = lp.sigmalc2;
|
||||
constexpr float offset = 1.f;
|
||||
float mea[10];
|
||||
calceffect(level, mean, sigma, mea, effect, offs);
|
||||
float insigma = 0.666f; //SD
|
||||
float logmax = log(MaxP[level]); //log Max
|
||||
float rapX = (mean[level] + lp.sigmalc2 * sigma[level]) / MaxP[level]; //rapport between sD / max
|
||||
float inx = log(insigma);
|
||||
float iny = log(rapX);
|
||||
float rap = inx / iny; //koef
|
||||
float asig = 0.166f / (sigma[level] * lp.sigmalc2);
|
||||
float bsig = 0.5f - asig * mean[level];
|
||||
float amean = 0.5f / mean[level];
|
||||
calceffect(level, mean, sigma, mea, effect, offset);
|
||||
constexpr float insigma = 0.666f; //SD
|
||||
const float logmax = std::log(MaxP[level]); //log Max
|
||||
const float rapX = (mean[level] + lp.sigmalc2 * sigma[level]) / MaxP[level]; //rapport between sD / max
|
||||
const float inx = std::log(insigma);
|
||||
const float iny = std::log(rapX);
|
||||
const float rap = inx / iny; //koef
|
||||
const float asig = 0.166f / (sigma[level] * lp.sigmalc2);
|
||||
const float bsig = 0.5f - asig * mean[level];
|
||||
const float amean = 0.5f / mean[level];
|
||||
|
||||
#ifdef _OPENMP
|
||||
#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 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;
|
||||
|
||||
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];
|
||||
|
||||
if (std::fabs(val) >= (mean[level] + lp.sigmalc2 * sigma[level])) { //for max
|
||||
float valcour = xlogf(std::fabs(val));
|
||||
float valc = valcour - logmax;
|
||||
float vald = valc * rap;
|
||||
absciss = xexpf(vald);
|
||||
const float valc = xlogf(std::fabs(val)) - logmax;
|
||||
absciss = xexpf(valc * rap);
|
||||
} else if (std::fabs(val) >= mean[level]) {
|
||||
absciss = asig * std::fabs(val) + bsig;
|
||||
} 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 H_L = wdspot->level_H(0);
|
||||
float *koeLi[12];
|
||||
float maxkoeLi[12];
|
||||
float * beta = nullptr;
|
||||
beta = new float[W_L * H_L];
|
||||
float maxkoeLi[12] = {0.f};
|
||||
float *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++) {
|
||||
maxkoeLi[y] = 0.f; //9
|
||||
}
|
||||
|
||||
koeLibuffer = new float[12 * H_L * W_L]; //12
|
||||
|
||||
for (int i = 0; i < 12; i++) { //9
|
||||
for (int i = 0; i < 12; i++) {
|
||||
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++) {
|
||||
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 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 dir = 1; dir < 4; dir++) {
|
||||
int W_L = wdspot->level_W(lvl);
|
||||
int H_L = wdspot->level_H(lvl);
|
||||
const int W_L = wdspot->level_W(lvl);
|
||||
const int H_L = wdspot->level_H(lvl);
|
||||
float **wav_L = wdspot->level_coeffs(lvl);
|
||||
float effect = lp.sigmaed;
|
||||
float offs = 1.f;
|
||||
const float effect = lp.sigmaed;
|
||||
constexpr float offset = 1.f;
|
||||
float mea[10];
|
||||
for (int co = 0; co < H_L * W_L; co++) {
|
||||
beta[co] = 1.f;
|
||||
}
|
||||
calceffect(lvl, mean, sigma, mea, effect, offs);
|
||||
calceffect(lvl, mean, sigma, mea, effect, offset);
|
||||
|
||||
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]) {
|
||||
beta[co] = 0.05f;
|
||||
@ -8134,14 +8118,12 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float
|
||||
beta[co] = 0.05f;
|
||||
}
|
||||
}
|
||||
// printf("Chromablu=%f \n", chromablu);
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
tmC.free();
|
||||
|
||||
delete [] tmCBuffer;
|
||||
float aamp = 1.f + lp.thigw / 100.f;
|
||||
|
||||
for (int lvl = 0; lvl < 4; lvl++) {
|
||||
@ -10180,7 +10162,8 @@ 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(
|
||||
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& cllocalcurve, bool localclutili,
|
||||
@ -10216,17 +10199,21 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
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,
|
||||
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
|
||||
if (params->locallab.enabled) {
|
||||
if (!params->locallab.enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
BENCHFUN
|
||||
#ifdef _DEBUG
|
||||
// init variables to display Munsell corrections
|
||||
MunsellDebugInfo* MunsDebugInfo = new MunsellDebugInfo();
|
||||
#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;
|
||||
calcLocalParams(sp, oW, oH, params->locallab, lp, prevDeltaE, llColorMask, llColorMaskinv, llExpMask, llExpMaskinv, llSHMask, llSHMaskinv, llvibMask, lllcMask, llsharMask, llcbMask, llretiMask, llsoftMask, lltmMask, llblMask, locwavCurveden, locwavdenutili);
|
||||
|
||||
@ -15882,6 +15869,5 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
delete MunsDebugInfo;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user