Blur residual luma and chroma
This commit is contained in:
@@ -65,6 +65,8 @@ struct cont_params {
|
||||
float thH;
|
||||
float conres;
|
||||
float conresH;
|
||||
float blurres;
|
||||
float blurcres;
|
||||
float radius;
|
||||
float chrores;
|
||||
bool oldsh;
|
||||
@@ -396,6 +398,8 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const
|
||||
cp.radius = waparams.radius;
|
||||
cp.chrores = waparams.reschro;
|
||||
cp.oldsh = waparams.oldsh;
|
||||
cp.blurres = waparams.resblur;
|
||||
cp.blurcres = waparams.resblurc;
|
||||
//cp.hueres=waparams.reshue;
|
||||
cp.hueres = 2.f;
|
||||
cp.th = float(waparams.thr);
|
||||
@@ -1910,7 +1914,25 @@ void ImProcFunctions::WaveletcontAllL(LabImage * labco, float ** varhue, float *
|
||||
}
|
||||
}
|
||||
|
||||
//Blur luma
|
||||
if(cp.blurres != 0.f && cp.resena) {
|
||||
float rad = cp.blurres / skip;
|
||||
float * bef = new float[W_L * H_L];
|
||||
float * aft = new float[W_L * H_L];
|
||||
|
||||
for (int i = 0; i < H_L * W_L; i++) {
|
||||
bef[i] = WavCoeffs_L0[i];
|
||||
}
|
||||
boxblur(bef, aft, rad, W_L, H_L, false);
|
||||
|
||||
for (int i = 0; i < H_L * W_L; i++) {
|
||||
WavCoeffs_L0[i] = aft[i];
|
||||
}
|
||||
|
||||
delete bef;
|
||||
delete aft;
|
||||
}
|
||||
//
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel num_threads(wavNestedLevels) if(wavNestedLevels>1)
|
||||
#endif
|
||||
@@ -2054,15 +2076,15 @@ void ImProcFunctions::WaveletcontAllL(LabImage * labco, float ** varhue, float *
|
||||
|
||||
// end
|
||||
}
|
||||
bool wavcurvecomp = false;//not enable if 0.75
|
||||
bool wavcurvecomp = false;//not enable if 0.75
|
||||
|
||||
if (wavblcurve) {
|
||||
for (int i = 0; i < 500; i++) {
|
||||
if (wavblcurve[i] != 0.) {
|
||||
wavcurvecomp = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (wavblcurve) {
|
||||
for (int i = 0; i < 500; i++) {
|
||||
if (wavblcurve[i] != 0.) {
|
||||
wavcurvecomp = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic) collapse(2)
|
||||
@@ -2298,16 +2320,36 @@ void ImProcFunctions::WaveletcontAllAB(LabImage * labco, float ** varhue, float
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Blur chroma
|
||||
if(cp.blurcres != 0.f && cp.resena) {
|
||||
float rad = cp.blurcres / skip;
|
||||
float * bef = new float[W_L * H_L];
|
||||
float * aft = new float[W_L * H_L];
|
||||
|
||||
bool wavcurvecomp = false;//not enable if 0.75
|
||||
for (int i = 0; i < H_L * W_L; i++) {
|
||||
bef[i] = WavCoeffs_ab0[i];
|
||||
}
|
||||
boxblur(bef, aft, rad, W_L, H_L, false);
|
||||
|
||||
if (wavblcurve) {
|
||||
for (int i = 0; i < 500; i++) {
|
||||
if (wavblcurve[i] != 0.) {
|
||||
wavcurvecomp = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < H_L * W_L; i++) {
|
||||
WavCoeffs_ab0[i] = aft[i];
|
||||
}
|
||||
|
||||
delete bef;
|
||||
delete aft;
|
||||
}
|
||||
|
||||
|
||||
bool wavcurvecomp = false;//not enable if 0.75
|
||||
|
||||
if (wavblcurve) {
|
||||
for (int i = 0; i < 500; i++) {
|
||||
if (wavblcurve[i] != 0.) {
|
||||
wavcurvecomp = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic) collapse(2)
|
||||
|
||||
@@ -2291,6 +2291,8 @@ WaveletParams::WaveletParams() :
|
||||
rescon(0),
|
||||
resconH(0),
|
||||
reschro(0),
|
||||
resblur(0),
|
||||
resblurc(0),
|
||||
tmrs(0),
|
||||
edgs(1.4),
|
||||
scale(1.),
|
||||
@@ -2404,6 +2406,8 @@ bool WaveletParams::operator ==(const WaveletParams& other) const
|
||||
&& rescon == other.rescon
|
||||
&& resconH == other.resconH
|
||||
&& reschro == other.reschro
|
||||
&& resblur == other.resblur
|
||||
&& resblurc == other.resblurc
|
||||
&& tmrs == other.tmrs
|
||||
&& edgs == other.edgs
|
||||
&& scale == other.scale
|
||||
@@ -3601,6 +3605,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || pedited->wavelet.thrH, "Wavelet", "ThresholdResidHighLight", wavelet.thrH, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->wavelet.radius, "Wavelet", "Residualradius", wavelet.radius, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->wavelet.reschro, "Wavelet", "Residualchroma", wavelet.reschro, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->wavelet.resblur, "Wavelet", "Residualblur", wavelet.resblur, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->wavelet.resblurc, "Wavelet", "Residualblurc", wavelet.resblurc, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->wavelet.tmrs, "Wavelet", "ResidualTM", wavelet.tmrs, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->wavelet.edgs, "Wavelet", "ResidualEDGS", wavelet.edgs, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->wavelet.scale, "Wavelet", "ResidualSCALE", wavelet.scale, keyFile);
|
||||
@@ -4719,6 +4725,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Wavelet", "ResidualcontShadow", pedited, wavelet.rescon, pedited->wavelet.rescon);
|
||||
assignFromKeyfile(keyFile, "Wavelet", "ResidualcontHighlight", pedited, wavelet.resconH, pedited->wavelet.resconH);
|
||||
assignFromKeyfile(keyFile, "Wavelet", "Residualchroma", pedited, wavelet.reschro, pedited->wavelet.reschro);
|
||||
assignFromKeyfile(keyFile, "Wavelet", "Residualblur", pedited, wavelet.resblur, pedited->wavelet.resblur);
|
||||
assignFromKeyfile(keyFile, "Wavelet", "Residualblurc", pedited, wavelet.resblurc, pedited->wavelet.resblurc);
|
||||
assignFromKeyfile(keyFile, "Wavelet", "ResidualTM", pedited, wavelet.tmrs, pedited->wavelet.tmrs);
|
||||
assignFromKeyfile(keyFile, "Wavelet", "ResidualEDGS", pedited, wavelet.edgs, pedited->wavelet.edgs);
|
||||
assignFromKeyfile(keyFile, "Wavelet", "ResidualSCALE", pedited, wavelet.scale, pedited->wavelet.scale);
|
||||
|
||||
@@ -1250,6 +1250,8 @@ struct WaveletParams {
|
||||
int rescon;
|
||||
int resconH;
|
||||
int reschro;
|
||||
int resblur;
|
||||
int resblurc;
|
||||
double tmrs;
|
||||
double edgs;
|
||||
double scale;
|
||||
|
||||
Reference in New Issue
Block a user