GUI improvment and re-introduce scale

This commit is contained in:
Desmis
2016-02-12 12:51:46 +01:00
parent b449e0827b
commit a21deef3de
10 changed files with 98 additions and 67 deletions

View File

@@ -671,6 +671,7 @@ HISTORY_MSG_437;Retinex - M - Method
HISTORY_MSG_438;Retinex - M - Equalizer
HISTORY_MSG_439;Retinex - Preview
HISTORY_MSG_440;Retinex - Gain transmission
HISTORY_MSG_441;Retinex - Scale
HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
HISTORY_SNAPSHOT;Snapshot
@@ -1665,10 +1666,11 @@ TP_RETINEX_CURVEEDITOR_LH;Strength=f(H)
TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Strength according to hue Strength=f(H)\nThis curve also acts on chroma when using the "Highlight" retinex method.
TP_RETINEX_CURVEEDITOR_MAP;L=f(L)
TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts!
TP_RETINEX_EQUAL;Equalizer
TP_RETINEX_FREEGAMMA;Free gamma
TP_RETINEX_GAIN;Gain
TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
TP_RETINEX_GAINOFFS;Gain and Brightness (offset)
TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
TP_RETINEX_GAMMA;Gamma
TP_RETINEX_GAMMA_FREE;Free
TP_RETINEX_GAMMA_HIGH;High
@@ -1686,6 +1688,7 @@ TP_RETINEX_HIGHLIGHT;Highlight threshold
TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool.
TP_RETINEX_HSLSPACE_LIN;HSL-Linear
TP_RETINEX_HSLSPACE_LOG;HSL-Logarithmic
TP_RETINEX_ITERF;Tone mapping
TP_RETINEX_ITER;Iterations (Tone-mapping)
TP_RETINEX_ITER_TOOLTIP;Simulate a tone-mapping operator.\nHigh values increase the processing time.
TP_RETINEX_LABEL;Retinex
@@ -1707,17 +1710,19 @@ TP_RETINEX_MLABEL_TOOLTIP;Should be near min=0 max=32768\nRestored image with no
TP_RETINEX_NEIGHBOR;Radius
TP_RETINEX_NEUTRAL;Reset
TP_RETINEX_NEUTRAL_TIP;Reset all sliders and curves to their default values.
TP_RETINEX_OFFSET;Brightness (offset)
TP_RETINEX_OFFSET;Offset (brightness)
TP_RETINEX_SCALES;Gaussian gradient
TP_RETINEX_SCALES_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Scale and radius are reduced when iterations increase, and conversely.
TP_RETINEX_SETTINGS;Settings
TP_RETINEX_SLOPE;Free gamma slope
TP_RETINEX_SKAL;Scale
TP_RETINEX_STRENGTH;Strength
TP_RETINEX_THRESHOLD;Threshold
TP_RETINEX_THRESHOLD_TOOLTIP;Limits in/out.\nIn = image source,\nOut = image gauss.
TP_RETINEX_TLABEL;TM Min=%1 Max=%2 Mean=%3 Sigma=%4
TP_RETINEX_TLABEL2;TM Tm=%1 TM=%2
TP_RETINEX_TLABEL_TOOLTIP;Transmission map result.\nMin and Max are used by Variance.\nMean and Sigma.\nTm=Min TM=Max of transmission map.
TP_RETINEX_TRANF;Transmission
TP_RETINEX_TRANSMISSION;Transmission map
TP_RETINEX_GAINTRANSMISSION;Gain transmission
TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplfy or reduce transmission-map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate : gain

View File

@@ -236,6 +236,7 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
bool higplus = false ;
float elogt;
float hl = deh.baselog;
scal = deh.skal;
if(hl >= 2.71828f) {
elogt = 2.71828f + SQR(SQR(hl - 2.71828f));
@@ -292,11 +293,11 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
float grads;
float grad = 1.f;
float sc = 3.f;
float sc = scal;
if(gradient == 0) {
grad = 1.f;
sc = 3.f;
sc = scal;//3.f
} else if(gradient == 1) {
grad = 0.25f * it + 0.75f;
sc = -0.5f * it + 4.5f;
@@ -336,6 +337,10 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
sc = 3.f;
}
if(iter == 1) {
sc = scal;
}
float varx;
float limdx, ilimdx;
@@ -396,7 +401,7 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
}
strengthx = ks * strength;
//printf("scale=%d\n", scal);
retinex_scales( RetinexScales, scal, moderetinex, nei / grad, high );
float *src[H_L] ALIGNED16;

View File

@@ -467,6 +467,7 @@ enum ProcEvent {
EvRetinexmapcurve = 437,
EvviewMethod = 438,
EvRetinexgaintransmission = 439,
EvLskal = 440,
NUMOFEVENTS
};
}

View File

@@ -158,7 +158,7 @@ void RetinexParams::setDefaults()
{
enabled = false;
str = 20;
scal = 3;
scal = 0;
iter = 1;
grad = 1;
grads = 1;
@@ -177,7 +177,7 @@ void RetinexParams::setDefaults()
radius = 40;
baselog = 2.71828;
// grbl = 50;
skal = 3;
retinexMethod = "high";
mapMethod = "none";
viewMethod = "none";
@@ -1536,9 +1536,9 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2, bool fnameAbsol
keyFile.set_double ("Retinex", "baselog", retinex.baselog);
}
// if (!pedited || pedited->retinex.grbl) {
// keyFile.set_integer ("Retinex", "grbl", retinex.grbl);
// }
if (!pedited || pedited->retinex.skal) {
keyFile.set_integer ("Retinex", "skal", retinex.skal);
}
if (!pedited || pedited->retinex.retinexMethod) {
keyFile.set_string ("Retinex", "RetinexMethod", retinex.retinexMethod);
@@ -4065,14 +4065,14 @@ int ProcParams::load (Glib::ustring fname, ParamsEdited* pedited)
}
}
/* if (keyFile.has_key ("Retinex", "grbl")) {
retinex.grbl = keyFile.get_integer ("Retinex", "grbl");
if (keyFile.has_key ("Retinex", "skal")) {
retinex.skal = keyFile.get_integer ("Retinex", "skal");
if (pedited) {
pedited->retinex.grbl = true;
pedited->retinex.skal = true;
}
}
*/
if (keyFile.has_key ("Retinex", "CDCurve")) {
retinex.cdcurve = keyFile.get_double_list ("Retinex", "CDCurve");
@@ -7568,7 +7568,7 @@ bool ProcParams::operator== (const ProcParams& other)
&& retinex.radius == other.retinex.radius
&& retinex.baselog == other.retinex.baselog
// && retinex.grbl == other.retinex.grbl
&& retinex.skal == other.retinex.skal
&& retinex.offs == other.retinex.offs
&& retinex.retinexMethod == other.retinex.retinexMethod
&& retinex.mapMethod == other.retinex.mapMethod

View File

@@ -310,7 +310,7 @@ public:
int limd;
int highl;
double baselog;
// int grbl;
int skal;
bool medianmap;
RetinexParams ();
void setDefaults();

View File

@@ -466,7 +466,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
RETINEX, // EvmapMethod
DEMOSAIC, // EvRetinexmapcurve
DEMOSAIC, // EvviewMethod
RETINEX // EvRetinexgaintransmission
RETINEX, // EvRetinexgaintransmission
RETINEX //EvLskal
};

View File

@@ -73,7 +73,7 @@ void ParamsEdited::set (bool v)
retinex.limd = v;
retinex.highl = v;
retinex.baselog = v;
// retinex.grbl = v;
retinex.skal = v;
retinex.medianmap = v;
retinex.transmissionCurve = v;
retinex.gaintransmissionCurve = v;
@@ -565,7 +565,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
retinex.limd = retinex.limd && p.retinex.limd == other.retinex.limd;
retinex.highl = retinex.highl && p.retinex.highl == other.retinex.highl;
retinex.baselog = retinex.baselog && p.retinex.baselog == other.retinex.baselog;
// retinex.grbl = retinex.grbl && p.retinex.grbl == other.retinex.grbl;
retinex.skal = retinex.skal && p.retinex.skal == other.retinex.skal;
retinex.medianmap = retinex.medianmap && p.retinex.medianmap == other.retinex.medianmap;
retinex.highlights = retinex.highlights && p.retinex.highlights == other.retinex.highlights;
retinex.htonalwidth = retinex.htonalwidth && p.retinex.htonalwidth == other.retinex.htonalwidth;
@@ -1166,9 +1166,9 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.retinex.baselog = mods.retinex.baselog;
}
// if (retinex.grbl) {
// toEdit.retinex.grbl = mods.retinex.grbl;
// }
if (retinex.skal) {
toEdit.retinex.skal = mods.retinex.skal;
}
if (retinex.gain) {
toEdit.retinex.gain = dontforceSet && options.baBehav[ADDSET_RETI_GAIN] ? toEdit.retinex.gain + mods.retinex.gain : mods.retinex.gain;

View File

@@ -78,7 +78,7 @@ public:
bool limd;
bool highl;
bool baselog;
// bool grbl;
bool skal;
bool method;
bool transmissionCurve;
bool gaintransmissionCurve;

View File

@@ -54,6 +54,9 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"),
dhbox->pack_start(*retinexcolorspace);
retinexVBox->pack_start(*dhbox);
Gtk::VBox *equalVBox = Gtk::manage (new Gtk::VBox());
equalFrame = Gtk::manage (new Gtk::Frame(M("TP_RETINEX_EQUAL")));
// Histogram equalizer Lab curve
curveEditorGD = new CurveEditorGroup (options.lastRetinexDir, M("TP_RETINEX_CONTEDIT_LAB"));
@@ -164,8 +167,8 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"),
offs = Gtk::manage (new Adjuster (M("TP_RETINEX_OFFSET"), -1000, 5000, 1, 0));
// vart = Gtk::manage (new Adjuster (M("TP_RETINEX_VARIANCE"), 50, 500, 1, 125));
limd = Gtk::manage (new Adjuster (M("TP_RETINEX_THRESHOLD"), 2, 100, 1, 8));
baselog = Gtk::manage (new Adjuster (M("TP_RETINEX_BASELOG"), 1.1, 100., 0.001, 2.718));
// grbl = Gtk::manage (new Adjuster (M("TP_RETINEX_HIGHLIGHT3"), 1, 100, 1, 50));
baselog = Gtk::manage (new Adjuster (M("TP_RETINEX_BASELOG"), 1., 10., 1., 3.));
skal = Gtk::manage (new Adjuster (M("TP_RETINEX_SKAL"), 1, 10, 1, 3));
gain->set_tooltip_markup (M("TP_RETINEX_GAIN_TOOLTIP"));
scal->set_tooltip_markup (M("TP_RETINEX_SCALES_TOOLTIP"));
iter->set_tooltip_markup (M("TP_RETINEX_ITER_TOOLTIP"));
@@ -267,54 +270,68 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"),
settingsVBox->pack_start (*transLabels2);
transLabels2->show ();
settingsVBox->pack_start (*curveEditorGD, Gtk::PACK_SHRINK, 4);
equalVBox->pack_start (*curveEditorGD, Gtk::PACK_SHRINK, 4);
curveEditorGD->show();
settingsVBox->pack_start (*curveEditorGDH, Gtk::PACK_SHRINK, 4);
equalVBox->pack_start (*curveEditorGDH, Gtk::PACK_SHRINK, 4);
curveEditorGDH->show();
settingsVBox->pack_start (*curveEditorGH, Gtk::PACK_SHRINK, 4);
equalVBox->pack_start (*curveEditorGH, Gtk::PACK_SHRINK, 4);
curveEditorGH->show();
gambox->pack_start(*gammaretinex);
settingsVBox->pack_start(*gambox);
equalVBox->pack_start(*gambox);
gammaretinex->show();
settingsVBox->pack_start (*gam);
equalVBox->pack_start (*gam);
gam->show ();
settingsVBox->pack_start (*slope);
equalVBox->pack_start (*slope);
slope->show ();
equalFrame->add(*equalVBox);
settingsVBox->pack_start (*equalFrame);
settingsVBox->pack_start (*iter);
Gtk::VBox *iterVBox = Gtk::manage (new Gtk::VBox());
iterFrame = Gtk::manage (new Gtk::Frame(M("TP_RETINEX_ITERF")));
iterVBox->pack_start (*iter);
iter->show ();
settingsVBox->pack_start (*scal);
iterVBox->pack_start (*scal);
scal->show ();
settingsVBox->pack_start (*grad);
iterVBox->pack_start (*grad);
grad->show ();
settingsVBox->pack_start (*grads);
iterVBox->pack_start (*grads);
grads->show ();
settingsVBox->pack_start (*limd);
limd->show ();
iterFrame->add(*iterVBox);
settingsVBox->pack_start (*iterFrame);
settingsVBox->pack_start( *transmissionCurveEditorG, Gtk::PACK_SHRINK, 2);
Gtk::VBox *tranVBox = Gtk::manage (new Gtk::VBox());
tranFrame = Gtk::manage (new Gtk::Frame(M("TP_RETINEX_TRANF")));
tranVBox->pack_start( *transmissionCurveEditorG, Gtk::PACK_SHRINK, 2);
transmissionCurveEditorG->show();
settingsVBox->pack_start (*medianmap);
tranVBox->pack_start (*skal);
skal->show ();
tranVBox->pack_start (*limd);
limd->show ();
tranVBox->pack_start (*medianmap);
medianmap->show ();
// settingsVBox->pack_start (*gain);
// gain->show ();
tranFrame->add(*tranVBox);
settingsVBox->pack_start (*tranFrame);
// settingsVBox->pack_start (*vart);
// vart->show ();
Gtk::VBox *gainBox = Gtk::manage (new Gtk::VBox());
Gtk::HSeparator *separator = Gtk::manage (new Gtk::HSeparator());
@@ -360,8 +377,6 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"),
// settingsVBox->pack_start (*baselog);
// baselog->show ();
// settingsVBox->pack_start (*grbl);
// grbl->show ();
// settingsVBox->pack_start (*Gtk::manage (new Gtk::HSeparator()));
@@ -495,12 +510,12 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"),
s_tonalwidth->delay = 200;
}
/* grbl->setAdjusterListener (this);
skal->setAdjusterListener (this);
if (grbl->delay < 200) {
grbl->delay = 200;
if (skal->delay < 200) {
skal->delay = 200;
}
*/
pack_start (*retinexVBox);
p1Frame->add(*p1VBox);
pack_start (*p1Frame, Gtk::PACK_EXPAND_WIDGET, 4);
@@ -685,7 +700,7 @@ void Retinex::read (const ProcParams* pp, const ParamsEdited* pedited)
limd->setEditedState (pedited->retinex.limd ? Edited : UnEdited);
highl->setEditedState (pedited->retinex.highl ? Edited : UnEdited);
baselog->setEditedState (pedited->retinex.baselog ? Edited : UnEdited);
// grbl->setEditedState (pedited->retinex.grbl ? Edited : UnEdited);
skal->setEditedState (pedited->retinex.skal ? Edited : UnEdited);
set_inconsistent (multiImage && !pedited->retinex.enabled);
medianmap->set_inconsistent (!pedited->retinex.medianmap);
radius->setEditedState (pedited->retinex.radius ? Edited : UnEdited);
@@ -745,7 +760,8 @@ void Retinex::read (const ProcParams* pp, const ParamsEdited* pedited)
shadows->setValue (pp->retinex.shadows);
s_tonalwidth->setValue (pp->retinex.stonalwidth);
// grbl->setValue (pp->retinex.grbl);
skal->setValue (pp->retinex.skal);
if(pp->retinex.iter == 1) {
grad->set_sensitive(false);
scal->set_sensitive(false);
@@ -864,7 +880,7 @@ void Retinex::write (ProcParams* pp, ParamsEdited* pedited)
pp->retinex.limd = (int)limd->getValue ();
pp->retinex.highl = (int)highl->getValue ();
pp->retinex.baselog = baselog->getValue ();
// pp->retinex.grbl = (int)grbl->getValue ();
pp->retinex.skal = (int)skal->getValue ();
pp->retinex.cdcurve = cdshape->getCurve ();
pp->retinex.lhcurve = lhshape->getCurve ();
pp->retinex.cdHcurve = cdshapeH->getCurve ();
@@ -902,7 +918,7 @@ void Retinex::write (ProcParams* pp, ParamsEdited* pedited)
pedited->retinex.limd = limd->getEditedState ();
pedited->retinex.highl = highl->getEditedState ();
pedited->retinex.baselog = baselog->getEditedState ();
// pedited->retinex.grbl = grbl->getEditedState ();
pedited->retinex.skal = skal->getEditedState ();
pedited->retinex.cdcurve = !cdshape->isUnChanged ();
pedited->retinex.cdHcurve = !cdshapeH->isUnChanged ();
pedited->retinex.transmissionCurve = !transmissionShape->isUnChanged ();
@@ -1164,7 +1180,7 @@ void Retinex::setDefaults (const ProcParams* defParams, const ParamsEdited* pedi
limd->setDefault (defParams->retinex.limd);
highl->setDefault (defParams->retinex.highl);
baselog->setDefault (defParams->retinex.baselog);
// grbl->setDefault (defParams->retinex.grbl);
skal->setDefault (defParams->retinex.skal);
gam->setDefault (defParams->retinex.gam);
slope->setDefault (defParams->retinex.slope);
@@ -1187,7 +1203,7 @@ void Retinex::setDefaults (const ProcParams* defParams, const ParamsEdited* pedi
limd->setDefaultEditedState (pedited->retinex.limd ? Edited : UnEdited);
highl->setDefaultEditedState (pedited->retinex.highl ? Edited : UnEdited);
baselog->setDefaultEditedState (pedited->retinex.baselog ? Edited : UnEdited);
// grbl->setDefaultEditedState (pedited->retinex.grbl ? Edited : UnEdited);
skal->setDefaultEditedState (pedited->retinex.skal ? Edited : UnEdited);
gam->setDefaultEditedState (pedited->retinex.gam ? Edited : UnEdited);
slope->setDefaultEditedState (pedited->retinex.slope ? Edited : UnEdited);
@@ -1205,7 +1221,7 @@ void Retinex::setDefaults (const ProcParams* defParams, const ParamsEdited* pedi
limd->setDefaultEditedState (Irrelevant);
highl->setDefaultEditedState (Irrelevant);
baselog->setDefaultEditedState (Irrelevant);
// grbl->setDefaultEditedState (Irrelevant);
skal->setDefaultEditedState (Irrelevant);
str->setDefaultEditedState (Irrelevant);
scal->setDefaultEditedState (Irrelevant);
iter->setDefaultEditedState (Irrelevant);
@@ -1278,8 +1294,8 @@ void Retinex::adjusterChanged (Adjuster* a, double newval)
listener->panelChanged (EvLhighl, highl->getTextValue());
} else if (a == baselog) {
listener->panelChanged (EvLbaselog, baselog->getTextValue());
// } else if (a == grbl) {
// listener->panelChanged (EvLgrbl, grbl->getTextValue());
} else if (a == skal) {
listener->panelChanged (EvLskal, skal->getTextValue());
} else if (a == gam) {
listener->panelChanged (EvLgam, gam->getTextValue());
} else if (a == slope) {
@@ -1446,7 +1462,7 @@ void Retinex::setBatchMode (bool batchMode)
shadows->showEditedCB ();
s_tonalwidth->showEditedCB ();
// grbl->showEditedCB ();
skal->showEditedCB ();
curveEditorGD->setBatchMode (batchMode);
curveEditorGDH->setBatchMode (batchMode);
transmissionCurveEditorG->setBatchMode (batchMode);

View File

@@ -35,7 +35,7 @@ protected:
Adjuster* limd;
Adjuster* highl;
Adjuster* baselog;
Adjuster* grbl;
Adjuster* skal;
Adjuster* gam;
Adjuster* slope;
Adjuster* highlights;
@@ -77,6 +77,9 @@ protected:
Gtk::Label* transLabels;
Gtk::Label* transLabels2;
Gtk::Frame *gainFrame;
Gtk::Frame *tranFrame;
Gtk::Frame *iterFrame;
Gtk::Frame *equalFrame;
DiagonalCurveEditor* cdshape;
DiagonalCurveEditor* cdshapeH;