Change int by double cbdl - local contrast - shape detection
This commit is contained in:
parent
35b8b77d53
commit
cc3dd0f6e2
@ -392,7 +392,7 @@ public:
|
||||
void dehazeloc(Imagefloat *rgb, float deha, float depth);
|
||||
void ToneMapFattal02(Imagefloat *rgb);
|
||||
void localContrast(LabImage *lab);
|
||||
void localContrastloc(LabImage *lab, int scale, int rad, int amo, int darkn, int lightn, float **loctemp);
|
||||
void localContrastloc(LabImage *lab, int scale, int rad, float amo, float darkn, float lightn, float **loctemp);
|
||||
void colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread);
|
||||
void shadowsHighlights(LabImage *lab);
|
||||
void softLight(LabImage *lab);
|
||||
|
@ -69,14 +69,14 @@ void ImProcFunctions::localContrast(LabImage *lab)
|
||||
}
|
||||
}
|
||||
|
||||
void ImProcFunctions::localContrastloc(LabImage *lab, int scale, int rad, int amo, int darkn, int lightn, float **loctemp)
|
||||
void ImProcFunctions::localContrastloc(LabImage *lab, int scale, int rad, float amo, float darkn, float lightn, float **loctemp)
|
||||
{
|
||||
|
||||
const int width = lab->W;
|
||||
const int height = lab->H;
|
||||
const float a = (float)(amo) / 100.f;
|
||||
const float dark = (float)(darkn) / 100.f;
|
||||
const float light = (float)(lightn) / 100.f;
|
||||
const float a = amo;
|
||||
const float dark = darkn;
|
||||
const float light = lightn;
|
||||
array2D<float> buf(width, height);
|
||||
const float sigma = (float)(rad) / scale;
|
||||
|
||||
@ -97,7 +97,6 @@ void ImProcFunctions::localContrastloc(LabImage *lab, int scale, int rad, int am
|
||||
bufval *= (bufval > 0.f) ? light : dark;
|
||||
}
|
||||
|
||||
// lab->L[y][x] = std::max(0.0001f, lab->L[y][x] + bufval);
|
||||
loctemp[y][x] = std::max(0.0001f, lab->L[y][x] + bufval);
|
||||
|
||||
}
|
||||
|
@ -367,7 +367,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
||||
|
||||
float thre = locallab.spots.at(sp).thresh;
|
||||
|
||||
if (thre > 8 || thre < 0) {//to avoid artifacts if user does not clear cache with new settings. Can be suppressed after
|
||||
if (thre > 8.f || thre < 0.f) {//to avoid artifacts if user does not clear cache with new settings. Can be suppressed after
|
||||
thre = 2.f;
|
||||
}
|
||||
|
||||
@ -442,10 +442,10 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
||||
float multi[5];
|
||||
|
||||
for (int y = 0; y < 5; y++) {
|
||||
multi[y] = ((float) locallab.spots.at(sp).mult[y]) / 100.f;
|
||||
multi[y] = ((float) locallab.spots.at(sp).mult[y]);
|
||||
}
|
||||
|
||||
float thresho = ((float)locallab.spots.at(sp).threshold) / 100.f;
|
||||
float thresho = ((float)locallab.spots.at(sp).threshold);
|
||||
float chromcbdl = (float)locallab.spots.at(sp).chromacbdl;
|
||||
|
||||
int local_chroma = locallab.spots.at(sp).chroma;
|
||||
@ -477,7 +477,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
||||
int local_transit = locallab.spots.at(sp).transit;
|
||||
double radius = (double) locallab.spots.at(sp).radius;
|
||||
double sharradius = ((double) locallab.spots.at(sp).sharradius);
|
||||
double lcamount = ((double) locallab.spots.at(sp).lcamount) / 100.;
|
||||
double lcamount = ((double) locallab.spots.at(sp).lcamount);
|
||||
double sharblurr = ((double) locallab.spots.at(sp).sharblur);
|
||||
int local_sensisha = locallab.spots.at(sp).sensisha;
|
||||
int local_sharamount = locallab.spots.at(sp).sharamount;
|
||||
|
@ -2343,7 +2343,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
spotMethod("norm"),
|
||||
sensiexclu(12),
|
||||
structexclu(0),
|
||||
struc(4),
|
||||
struc(4.0),
|
||||
shapeMethod("IND"),
|
||||
locX(250),
|
||||
locXL(250),
|
||||
@ -2354,7 +2354,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
circrad(18),
|
||||
qualityMethod("enh"),
|
||||
transit(60),
|
||||
thresh(2),
|
||||
thresh(2.0),
|
||||
iter(2.0),
|
||||
// Color & Light
|
||||
expcolor(false),
|
||||
@ -2456,15 +2456,15 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
// Local Contrast
|
||||
expcontrast(false),
|
||||
lcradius(80),
|
||||
lcamount(0),
|
||||
lcdarkness(100),
|
||||
lclightness(100),
|
||||
lcamount(0.0),
|
||||
lcdarkness(1.0),
|
||||
lclightness(1.0),
|
||||
sensilc(19),
|
||||
// Contrast by detail levels
|
||||
expcbdl(false),
|
||||
mult{100.0, 100.0, 100.0, 100.0, 100.0},
|
||||
mult{1.0, 1.0, 1.0, 1.0, 1.0},
|
||||
chromacbdl(0),
|
||||
threshold(20.0),
|
||||
threshold(0.2),
|
||||
sensicb(15),
|
||||
// Denoise
|
||||
expdenoi(false),
|
||||
|
@ -943,7 +943,7 @@ struct LocallabParams {
|
||||
Glib::ustring spotMethod; // norm, exc
|
||||
int sensiexclu;
|
||||
int structexclu;
|
||||
int struc;
|
||||
double struc;
|
||||
Glib::ustring shapeMethod; // IND, SYM, INDSL, SYMSL
|
||||
int locX;
|
||||
int locXL;
|
||||
@ -954,7 +954,7 @@ struct LocallabParams {
|
||||
int circrad;
|
||||
Glib::ustring qualityMethod; // none, std, enh, enhsup, contr, sob2
|
||||
int transit;
|
||||
int thresh;
|
||||
double thresh;
|
||||
double iter;
|
||||
// Color & Light
|
||||
bool expcolor;
|
||||
@ -1058,9 +1058,9 @@ struct LocallabParams {
|
||||
// Local Contrast
|
||||
bool expcontrast;
|
||||
int lcradius;
|
||||
int lcamount;
|
||||
int lcdarkness;
|
||||
int lclightness;
|
||||
double lcamount;
|
||||
double lcdarkness;
|
||||
double lclightness;
|
||||
int sensilc;
|
||||
// Contrast by detail levels
|
||||
bool expcbdl;
|
||||
|
@ -48,7 +48,7 @@ ControlSpotPanel::ControlSpotPanel():
|
||||
sensiexclu_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIEXCLU"), 0, 100, 1, 12))),
|
||||
structexclu_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))),
|
||||
|
||||
struc_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_THRES"), 1, 12, 1, 4))),
|
||||
struc_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_THRES"), 1.0, 12.0, 0.1, 4.0))),
|
||||
locX_(Gtk::manage(new Adjuster(M("TP_LOCAL_WIDTH"), 0, 2250, 1, 250))),
|
||||
locXL_(Gtk::manage(new Adjuster(M("TP_LOCAL_WIDTH_L"), 0, 2250, 1, 250))),
|
||||
locY_(Gtk::manage(new Adjuster(M("TP_LOCAL_HEIGHT"), 0, 2250, 1, 250))),
|
||||
@ -57,8 +57,8 @@ ControlSpotPanel::ControlSpotPanel():
|
||||
centerY_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CENTER_Y"), -1000, 1000, 1, 0))),
|
||||
circrad_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CIRCRADIUS"), 2, 150, 1, 18))),
|
||||
transit_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_TRANSIT"), 5, 95, 1, 60))),
|
||||
thresh_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_THRESDELTAE"), 0, 8, 1, 2))),
|
||||
iter_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_PROXI"), 0.2, 4., 0.1, 2.))),
|
||||
thresh_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_THRESDELTAE"), 0.0, 8.0, 0.1, 2.0))),
|
||||
iter_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_PROXI"), 0.2, 4.0, 0.1, 2.0))),
|
||||
|
||||
lastObject_(-1),
|
||||
lastCoord_(new Coord()),
|
||||
@ -232,7 +232,6 @@ ControlSpotPanel::ControlSpotPanel():
|
||||
artifFrame->set_tooltip_text(M("TP_LOCALLAB_ARTIF_TOOLTIP"));
|
||||
ToolParamBlock* const artifBox = Gtk::manage(new ToolParamBlock());
|
||||
thresh_->setAdjusterListener(this);
|
||||
// struc_->set_tooltip_text(M("TP_LOCALLAB_STRUC_TOOLTIP"));
|
||||
struc_->setAdjusterListener(this);
|
||||
artifBox->pack_start(*struc_);
|
||||
artifBox->pack_start(*thresh_);
|
||||
@ -718,7 +717,7 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
||||
}
|
||||
|
||||
if (a == struc_) {
|
||||
row[spots_.struc] = (int) struc_->getValue();
|
||||
row[spots_.struc] = struc_->getValue();
|
||||
|
||||
if (listener) {
|
||||
listener->panelChanged(EvLocallabSpotStruc, struc_->getTextValue());
|
||||
@ -823,7 +822,7 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
||||
}
|
||||
|
||||
if (a == thresh_) {
|
||||
row[spots_.thresh] = (int) thresh_->getValue();
|
||||
row[spots_.thresh] = thresh_->getValue();
|
||||
|
||||
if (listener) {
|
||||
listener->panelChanged(EvLocallabSpotThresh, thresh_->getTextValue());
|
||||
@ -1910,7 +1909,7 @@ void ControlSpotPanel::setDefaults(const ProcParams * defParams, const ParamsEdi
|
||||
|
||||
sensiexclu_->setDefault((double)defSpot->sensiexclu);
|
||||
structexclu_->setDefault((double)defSpot->structexclu);
|
||||
struc_->setDefault((double)defSpot->struc);
|
||||
struc_->setDefault(defSpot->struc);
|
||||
locX_->setDefault((double)defSpot->locX);
|
||||
locXL_->setDefault((double)defSpot->locXL);
|
||||
locY_->setDefault((double)defSpot->locY);
|
||||
@ -1919,7 +1918,7 @@ void ControlSpotPanel::setDefaults(const ProcParams * defParams, const ParamsEdi
|
||||
centerY_->setDefault((double)defSpot->centerY);
|
||||
circrad_->setDefault((double)defSpot->circrad);
|
||||
transit_->setDefault((double)defSpot->transit);
|
||||
thresh_->setDefault((double)defSpot->thresh);
|
||||
thresh_->setDefault(defSpot->thresh);
|
||||
// iter_->setDefault((double)defSpot->iter);
|
||||
iter_->setDefault(defSpot->iter);
|
||||
|
||||
|
@ -49,7 +49,7 @@ public:
|
||||
int spotMethod; // 0 = Normal, 1 = Excluding
|
||||
int sensiexclu;
|
||||
int structexclu;
|
||||
int struc;
|
||||
double struc;
|
||||
int shapeMethod; // 0 = Independent (mouse), 1 = Symmetrical (mouse), 2 = Independent (mouse + sliders), 3 = Symmetrical (mouse + sliders)
|
||||
int locX;
|
||||
int locXL;
|
||||
@ -60,7 +60,7 @@ public:
|
||||
int circrad;
|
||||
int qualityMethod; // 0 = Standard, 1 = Enhanced, 2 = Enhanced + chroma denoise
|
||||
int transit;
|
||||
int thresh;
|
||||
double thresh;
|
||||
double iter;
|
||||
};
|
||||
|
||||
@ -261,7 +261,7 @@ private:
|
||||
Gtk::TreeModelColumn<int> spotMethod; // 0 = Normal, 1 = Excluding
|
||||
Gtk::TreeModelColumn<int> sensiexclu;
|
||||
Gtk::TreeModelColumn<int> structexclu;
|
||||
Gtk::TreeModelColumn<int> struc;
|
||||
Gtk::TreeModelColumn<double> struc;
|
||||
Gtk::TreeModelColumn<int> shapeMethod; // 0 = Independent (mouse), 1 = Symmetrical (mouse), 2 = Independent (mouse + sliders), 3 = Symmetrical (mouse + sliders)
|
||||
Gtk::TreeModelColumn<int> locX;
|
||||
Gtk::TreeModelColumn<int> locXL;
|
||||
@ -272,7 +272,7 @@ private:
|
||||
Gtk::TreeModelColumn<int> circrad;
|
||||
Gtk::TreeModelColumn<int> qualityMethod; // 0 = Standard, 1 = Enhanced, 2 = Enhanced + chroma denoise
|
||||
Gtk::TreeModelColumn<int> transit;
|
||||
Gtk::TreeModelColumn<int> thresh;
|
||||
Gtk::TreeModelColumn<double> thresh;
|
||||
Gtk::TreeModelColumn<double> iter;
|
||||
};
|
||||
|
||||
|
@ -128,13 +128,13 @@ Locallab::Locallab():
|
||||
sensisha(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIS"), 0, 100, 1, 19))),
|
||||
// Local Contrast
|
||||
lcradius(Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_RADIUS"), 20, 200, 1, 80))),
|
||||
lcamount(Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_AMOUNT"), 0, 100, 1, 0))),
|
||||
lcdarkness(Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_DARKNESS"), 0, 300, 1, 100))),
|
||||
lclightness(Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_LIGHTNESS"), 0, 300, 1, 100))),
|
||||
lcamount(Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_AMOUNT"), 0, 1.0, 0.01, 0))),
|
||||
lcdarkness(Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_DARKNESS"), 0, 3.0, 0.01, 1.0))),
|
||||
lclightness(Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_LIGHTNESS"), 0, 3.0, 0.01, 1.0))),
|
||||
sensilc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIS"), 0, 100, 1, 19))),
|
||||
// Contrast by detail levels
|
||||
chromacbdl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMACBDL"), 0, 300, 1, 0))),
|
||||
threshold(Gtk::manage(new Adjuster(M("TP_DIRPYREQUALIZER_THRESHOLD"), 0, 100, 1, 20))),
|
||||
threshold(Gtk::manage(new Adjuster(M("TP_DIRPYREQUALIZER_THRESHOLD"), 0, 1., 0.01, 0.2))),
|
||||
sensicb(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSICB"), 0, 100, 1, 15))),
|
||||
// Denoise
|
||||
noiselumf(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMFINE"), MINCHRO, MAXCHRO, 1, 0))),
|
||||
@ -744,7 +744,7 @@ Locallab::Locallab():
|
||||
ss += Glib::ustring::compose(" (%1)", M("TP_DIRPYREQUALIZER_LUMACOARSEST"));
|
||||
}
|
||||
|
||||
multiplier[i] = Gtk::manage(new Adjuster(ss, 0, 400, 1, 100));
|
||||
multiplier[i] = Gtk::manage(new Adjuster(ss, 0.0, 4.0, 0.01, 1.0));
|
||||
multiplier[i]->setAdjusterListener(this);
|
||||
}
|
||||
|
||||
@ -1026,7 +1026,7 @@ void Locallab::lumaneutralPressed()
|
||||
// printf("lumaneutralPressed\n");
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
multiplier[i]->setValue(100);
|
||||
multiplier[i]->setValue(1.0);
|
||||
}
|
||||
|
||||
// Raise event (only for first multiplier because associated event concerns all multipliers)
|
||||
@ -1621,15 +1621,15 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
// Local Contrast
|
||||
pp->locallab.spots.at(pp->locallab.selspot).expcontrast = expcontrast->getEnabled();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lcradius = lcradius->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lcamount = lcamount->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lcdarkness = lcdarkness->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lclightness = lclightness->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lcamount = lcamount->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lcdarkness = lcdarkness->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lclightness = lclightness->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).sensilc = sensilc->getIntValue();
|
||||
// Contrast by detail levels
|
||||
pp->locallab.spots.at(pp->locallab.selspot).expcbdl = expcbdl->getEnabled();
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
pp->locallab.spots.at(pp->locallab.selspot).mult[i] = multiplier[i]->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).mult[i] = multiplier[i]->getValue();
|
||||
}
|
||||
|
||||
pp->locallab.spots.at(pp->locallab.selspot).chromacbdl = chromacbdl->getIntValue();
|
||||
@ -2645,9 +2645,9 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
sensisha->setDefault((double)defSpot->sensisha);
|
||||
// Local Contrast
|
||||
lcradius->setDefault((double)defSpot->lcradius);
|
||||
lcamount->setDefault((double)defSpot->lcamount);
|
||||
lcdarkness->setDefault((double)defSpot->lcdarkness);
|
||||
lclightness->setDefault((double)defSpot->lclightness);
|
||||
lcamount->setDefault(defSpot->lcamount);
|
||||
lcdarkness->setDefault(defSpot->lcdarkness);
|
||||
lclightness->setDefault(defSpot->lclightness);
|
||||
sensilc->setDefault((double)defSpot->sensilc);
|
||||
|
||||
// Contrast by detail levels
|
||||
|
Loading…
x
Reference in New Issue
Block a user