Wavelet Improve Chroma with link contrast levels
This commit is contained in:
parent
62fd0a0401
commit
ad207e003c
@ -2416,6 +2416,7 @@ void ImProcFunctions::WaveletcontAllL(LabImage * labco, float ** varhue, float *
|
|||||||
float effect = cp.bluwav;
|
float effect = cp.bluwav;
|
||||||
float offs = 1.f;
|
float offs = 1.f;
|
||||||
float * beta = new float[Wlvl_L * Hlvl_L];
|
float * beta = new float[Wlvl_L * Hlvl_L];
|
||||||
|
|
||||||
for (int co = 0; co < Hlvl_L * Wlvl_L; co++) {
|
for (int co = 0; co < Hlvl_L * Wlvl_L; co++) {
|
||||||
beta[co] = 1.f;
|
beta[co] = 1.f;
|
||||||
}
|
}
|
||||||
@ -2746,6 +2747,7 @@ void ImProcFunctions::WaveletcontAllAB(LabImage * labco, float ** varhue, float
|
|||||||
float effect = cp.bluwav;
|
float effect = cp.bluwav;
|
||||||
float offs = 1.f;
|
float offs = 1.f;
|
||||||
float * beta = new float[Wlvl_ab * Hlvl_ab];
|
float * beta = new float[Wlvl_ab * Hlvl_ab];
|
||||||
|
|
||||||
for (int co = 0; co < Wlvl_ab * Hlvl_ab; co++) {
|
for (int co = 0; co < Wlvl_ab * Hlvl_ab; co++) {
|
||||||
beta[co] = 1.f;
|
beta[co] = 1.f;
|
||||||
}
|
}
|
||||||
@ -3887,13 +3889,43 @@ void ImProcFunctions::ContAllAB(LabImage * labco, int maxlvl, float ** varhue, f
|
|||||||
//to adjust increase contrast with local contrast
|
//to adjust increase contrast with local contrast
|
||||||
bool useSkinControl = (skinprot != 0.f);
|
bool useSkinControl = (skinprot != 0.f);
|
||||||
|
|
||||||
|
float mea[10];
|
||||||
|
float effect = cp.sigmacol;
|
||||||
|
float betaab = 1.f;
|
||||||
|
float offs = 1.f;
|
||||||
|
float alphaC = 1.f;
|
||||||
|
|
||||||
|
calceffect(level, meanab, sigmaab, mea, effect, offs);
|
||||||
|
|
||||||
|
|
||||||
float alphaC = (1024.f + 15.f * cpMul * cpChrom / 50.f) / 1024.f ;
|
|
||||||
|
|
||||||
for (int i = 0; i < W_ab * H_ab; i++) {
|
for (int i = 0; i < W_ab * H_ab; i++) {
|
||||||
|
float WavCab = std::fabs(WavCoeffs_ab[dir][i]);
|
||||||
|
|
||||||
|
if (WavCab < mea[0]) {
|
||||||
|
betaab = 0.05f;
|
||||||
|
} else if (WavCab < mea[1]) {
|
||||||
|
betaab = 0.2f;
|
||||||
|
} else if (WavCab < mea[2]) {
|
||||||
|
betaab = 0.7f;
|
||||||
|
} else if (WavCab < mea[3]) {
|
||||||
|
betaab = 1.f; //standard
|
||||||
|
} else if (WavCab < mea[4]) {
|
||||||
|
betaab = 1.f;
|
||||||
|
} else if (WavCab < mea[5]) {
|
||||||
|
betaab = 0.8f; //+sigma
|
||||||
|
} else if (WavCab < mea[6]) {
|
||||||
|
betaab = 0.6f;
|
||||||
|
} else if (WavCab < mea[7]) {
|
||||||
|
betaab = 0.4f;
|
||||||
|
} else if (WavCab < mea[8]) {
|
||||||
|
betaab = 0.2f; // + 2 sigma
|
||||||
|
} else if (WavCab < mea[9]) {
|
||||||
|
betaab = 0.1f;
|
||||||
|
} else {
|
||||||
|
betaab = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
float scale = 1.f;
|
||||||
|
|
||||||
if (useSkinControl) {
|
if (useSkinControl) {
|
||||||
int ii = i / W_ab;
|
int ii = i / W_ab;
|
||||||
int jj = i - ii * W_ab;
|
int jj = i - ii * W_ab;
|
||||||
@ -3901,7 +3933,6 @@ void ImProcFunctions::ContAllAB(LabImage * labco, int maxlvl, float ** varhue, f
|
|||||||
float modhue = varhue[ii][jj];
|
float modhue = varhue[ii][jj];
|
||||||
float modchro = varchrom[ii * 2][jj * 2];
|
float modchro = varchrom[ii * 2][jj * 2];
|
||||||
// hue chroma skin with initial lab data
|
// hue chroma skin with initial lab data
|
||||||
float scale = 1.f;
|
|
||||||
|
|
||||||
if (skinprot > 0.f) {
|
if (skinprot > 0.f) {
|
||||||
Color::SkinSatCbdl2(LL100, modhue, modchro, skinprot, scale, true, cp.b_l, cp.t_l, cp.t_r, cp.b_r, 0); //0 for skin and extand
|
Color::SkinSatCbdl2(LL100, modhue, modchro, skinprot, scale, true, cp.b_l, cp.t_l, cp.t_r, cp.b_r, 0); //0 for skin and extand
|
||||||
@ -3910,9 +3941,10 @@ void ImProcFunctions::ContAllAB(LabImage * labco, int maxlvl, float ** varhue, f
|
|||||||
scale = (scale == 1.f) ? factorHard : 1.f;
|
scale = (scale == 1.f) ? factorHard : 1.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
alphaC = (1024.f + 15.f * cpMul * cpChrom * scale / 50.f) / 1024.f ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
alphaC = (1024.f + 15.f * cpMul * cpChrom * betaab * scale / 50.f) / 1024.f ;
|
||||||
|
|
||||||
WavCoeffs_ab[dir][i] *= alphaC;
|
WavCoeffs_ab[dir][i] *= alphaC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2426,7 +2426,7 @@ void Wavelet::CHmethodUpdateUI()
|
|||||||
if (!batchMode) {
|
if (!batchMode) {
|
||||||
if (CHmethod->get_active_row_number() == 0) {
|
if (CHmethod->get_active_row_number() == 0) {
|
||||||
CHSLmethod->show();
|
CHSLmethod->show();
|
||||||
sigmacol->show();
|
// sigmacol->show();
|
||||||
pastlev->hide();
|
pastlev->hide();
|
||||||
satlev->hide();
|
satlev->hide();
|
||||||
chroma->hide();
|
chroma->hide();
|
||||||
@ -2446,7 +2446,7 @@ void Wavelet::CHmethodUpdateUI()
|
|||||||
}
|
}
|
||||||
} else if (CHmethod->get_active_row_number() == 1) {
|
} else if (CHmethod->get_active_row_number() == 1) {
|
||||||
CHSLmethod->show();
|
CHSLmethod->show();
|
||||||
sigmacol->show();
|
// sigmacol->show();
|
||||||
pastlev->show();
|
pastlev->show();
|
||||||
satlev->show();
|
satlev->show();
|
||||||
chroma->show();
|
chroma->show();
|
||||||
@ -2466,7 +2466,7 @@ void Wavelet::CHmethodUpdateUI()
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
chro->show();
|
chro->show();
|
||||||
sigmacol->hide();
|
// sigmacol->hide();
|
||||||
pastlev->hide();
|
pastlev->hide();
|
||||||
satlev->hide();
|
satlev->hide();
|
||||||
chroma->hide();
|
chroma->hide();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user