Improvement to Gaussian gradient
This commit is contained in:
@@ -275,6 +275,11 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
|
|||||||
moderetinex = 3;
|
moderetinex = 3;
|
||||||
}
|
}
|
||||||
for(int it=1; it<iter+1; it++) {//iter nb max of iterations
|
for(int it=1; it<iter+1; it++) {//iter nb max of iterations
|
||||||
|
float aahi = 49.f / 99.f; ////reduce sensibility 50%
|
||||||
|
float bbhi = 1.f - aahi;
|
||||||
|
float high;
|
||||||
|
high = bbhi + aahi * (float) deh.highl;
|
||||||
|
|
||||||
float grads;
|
float grads;
|
||||||
float grad=1.f;
|
float grad=1.f;
|
||||||
float sc = 3.f;
|
float sc = 3.f;
|
||||||
@@ -299,9 +304,28 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
|
|||||||
sc=-0.75f*it+5.75f;
|
sc=-0.75f*it+5.75f;
|
||||||
}
|
}
|
||||||
else if(gradient==5) {
|
else if(gradient==5) {
|
||||||
grad=0.9f*it+0.1f;
|
if(moderetinex!=3) {
|
||||||
|
grad=2.5f*it-1.5f;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
float aa=(11.f*high-1.f)/4.f;
|
||||||
|
float bb=1.f-aa;
|
||||||
|
grad=aa*it+bb;
|
||||||
|
}
|
||||||
sc=-0.75f*it+5.75f;
|
sc=-0.75f*it+5.75f;
|
||||||
}
|
}
|
||||||
|
else if(gradient==6) {
|
||||||
|
if(moderetinex!=3) {
|
||||||
|
grad=5.f*it-4.f;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
float aa=(21.f*high-1.f)/4.f;
|
||||||
|
float bb=1.f-aa;
|
||||||
|
grad=aa*it+bb;
|
||||||
|
}
|
||||||
|
sc=-0.75f*it+5.75f;
|
||||||
|
}
|
||||||
|
|
||||||
else if(gradient==-1) {
|
else if(gradient==-1) {
|
||||||
grad=-0.125f*it+1.125f;
|
grad=-0.125f*it+1.125f;
|
||||||
sc=3.f;
|
sc=3.f;
|
||||||
@@ -358,11 +382,13 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
strengthx=ks*strength;
|
strengthx=ks*strength;
|
||||||
|
/*
|
||||||
float aahi = 49.f / 99.f; ////reduce sensibility 50%
|
float aahi = 49.f / 99.f; ////reduce sensibility 50%
|
||||||
float bbhi = 1.f - aahi;
|
float bbhi = 1.f - aahi;
|
||||||
float high;
|
float high;
|
||||||
high = bbhi + aahi * (float) deh.highl;
|
high = bbhi + aahi * (float) deh.highl;
|
||||||
|
*/
|
||||||
|
printf("high=%f moderetinex=%d\n",high,moderetinex);
|
||||||
retinex_scales( RetinexScales, scal, moderetinex, nei/grad, high );
|
retinex_scales( RetinexScales, scal, moderetinex, nei/grad, high );
|
||||||
|
|
||||||
int H_L = height;
|
int H_L = height;
|
||||||
@@ -407,7 +433,8 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
|
|||||||
for ( int scale = scal - 1; scale >= 0; scale-- ) {
|
for ( int scale = scal - 1; scale >= 0; scale-- ) {
|
||||||
if(scale == scal - 1) {
|
if(scale == scal - 1) {
|
||||||
gaussianBlur<float> (src, out, W_L, H_L, RetinexScales[scale], buffer);
|
gaussianBlur<float> (src, out, W_L, H_L, RetinexScales[scale], buffer);
|
||||||
} else { // reuse result of last iteration
|
} else {
|
||||||
|
printf("reti=%f\n",RetinexScales[scale]);// reuse result of last iteration
|
||||||
gaussianBlur<float> (out, out, W_L, H_L, sqrtf(SQR(RetinexScales[scale]) - SQR(RetinexScales[scale + 1])), buffer);
|
gaussianBlur<float> (out, out, W_L, H_L, sqrtf(SQR(RetinexScales[scale]) - SQR(RetinexScales[scale + 1])), buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -144,7 +144,7 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"),
|
|||||||
transLabels->set_tooltip_markup (M("TP_RETINEX_TLABEL_TOOLTIP"));
|
transLabels->set_tooltip_markup (M("TP_RETINEX_TLABEL_TOOLTIP"));
|
||||||
transLabels2 = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER));
|
transLabels2 = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER));
|
||||||
|
|
||||||
scal = Gtk::manage (new Adjuster (M("TP_RETINEX_SCALES"), -1, 5., 1., 3.));
|
scal = Gtk::manage (new Adjuster (M("TP_RETINEX_SCALES"), -1, 6., 1., 3.));
|
||||||
iter = Gtk::manage (new Adjuster (M("TP_RETINEX_ITER"), 1, 5., 1., 1.));
|
iter = Gtk::manage (new Adjuster (M("TP_RETINEX_ITER"), 1, 5., 1., 1.));
|
||||||
grad = Gtk::manage (new Adjuster (M("TP_RETINEX_GRAD"), -2., 2., 1., 1.));
|
grad = Gtk::manage (new Adjuster (M("TP_RETINEX_GRAD"), -2., 2., 1., 1.));
|
||||||
grads = Gtk::manage (new Adjuster (M("TP_RETINEX_GRADS"), -2., 2., 1., 1.));
|
grads = Gtk::manage (new Adjuster (M("TP_RETINEX_GRADS"), -2., 2., 1., 1.));
|
||||||
|
Reference in New Issue
Block a user