Improvment Denoise -- how to deal with yellow noise and others quality improvment issue2131
This commit is contained in:
@@ -84,6 +84,11 @@ DirPyrDenoise::DirPyrDenoise () : Gtk::VBox(), FoldableToolPanel(this) {
|
||||
// perform->show();
|
||||
gamma->show();
|
||||
// perform->set_active (true);
|
||||
|
||||
enhance = Gtk::manage (new Gtk::CheckButton (M("TP_DIRPYRDENOISE_ENH")));
|
||||
enhance->set_active (false);
|
||||
enhance->set_tooltip_text (M("TP_DIRPYRDENOISE_ENH_TOOLTIP"));
|
||||
|
||||
|
||||
pack_start (*luma);
|
||||
pack_start (*Ldetail);
|
||||
@@ -92,7 +97,10 @@ DirPyrDenoise::DirPyrDenoise () : Gtk::VBox(), FoldableToolPanel(this) {
|
||||
pack_start (*bluechro);
|
||||
|
||||
pack_start (*gamma);
|
||||
pack_start (*enhance);
|
||||
|
||||
// pack_start (*perform);
|
||||
enhanConn = enhance->signal_toggled().connect( sigc::mem_fun(*this, &DirPyrDenoise::enhanceChanged) );
|
||||
|
||||
}
|
||||
|
||||
@@ -119,14 +127,17 @@ void DirPyrDenoise::read (const ProcParams* pp, const ParamsEdited* pedited) {
|
||||
|
||||
gamma->setEditedState (pedited->dirpyrDenoise.gamma ? Edited : UnEdited);
|
||||
enabled->set_inconsistent (!pedited->dirpyrDenoise.enabled);
|
||||
enhance->set_inconsistent (!pedited->dirpyrDenoise.enhance);
|
||||
// perform->set_inconsistent (!pedited->dirpyrDenoise.perform);
|
||||
}
|
||||
// perfconn.block (true);
|
||||
enabled->set_active (pp->dirpyrDenoise.enabled);
|
||||
enhance->set_active (pp->dirpyrDenoise.enhance);
|
||||
// perform->set_active (pp->dirpyrDenoise.perform);
|
||||
|
||||
// perfconn.block (false);
|
||||
lastEnabled = pp->dirpyrDenoise.enabled;
|
||||
lastenhance = pp->dirpyrDenoise.enhance;
|
||||
// lastperform = pp->dirpyrDenoise.perform;
|
||||
luma->setValue (pp->dirpyrDenoise.luma);
|
||||
Ldetail->setValue (pp->dirpyrDenoise.Ldetail);
|
||||
@@ -150,6 +161,7 @@ void DirPyrDenoise::write (ProcParams* pp, ParamsEdited* pedited) {
|
||||
pp->dirpyrDenoise.bluechro = bluechro->getValue ();
|
||||
pp->dirpyrDenoise.gamma = gamma->getValue ();
|
||||
pp->dirpyrDenoise.enabled = enabled->get_active();
|
||||
pp->dirpyrDenoise.enhance = enhance->get_active();
|
||||
// pp->dirpyrDenoise.perform = perform->get_active();
|
||||
|
||||
if (pedited) {
|
||||
@@ -161,6 +173,7 @@ void DirPyrDenoise::write (ProcParams* pp, ParamsEdited* pedited) {
|
||||
pedited->dirpyrDenoise.bluechro = bluechro->getEditedState ();
|
||||
pedited->dirpyrDenoise.gamma = gamma->getEditedState ();
|
||||
pedited->dirpyrDenoise.enabled = !enabled->get_inconsistent();
|
||||
pedited->dirpyrDenoise.enhance = !enhance->get_inconsistent();
|
||||
// pedited->dirpyrDenoise.perform = !perform->get_inconsistent();
|
||||
}
|
||||
if (dmethod->get_active_row_number()==0)
|
||||
@@ -248,6 +261,30 @@ void DirPyrDenoise::enabledChanged () {
|
||||
listener->panelChanged (EvDPDNEnabled, M("GENERAL_DISABLED"));
|
||||
}
|
||||
}
|
||||
|
||||
void DirPyrDenoise::enhanceChanged () {
|
||||
|
||||
if (batchMode) {
|
||||
if (enhance->get_inconsistent()) {
|
||||
enhance->set_inconsistent (false);
|
||||
enhanConn.block (true);
|
||||
enhance->set_active (false);
|
||||
enhanConn.block (false);
|
||||
}
|
||||
else if (lastenhance)
|
||||
enhance->set_inconsistent (true);
|
||||
|
||||
lastenhance = enhance->get_active ();
|
||||
}
|
||||
|
||||
if (listener) {
|
||||
if (enhance->get_active ())
|
||||
listener->panelChanged (EvDPDNenhance, M("GENERAL_ENABLED"));
|
||||
else
|
||||
listener->panelChanged (EvDPDNenhance, M("GENERAL_DISABLED"));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void DirPyrDenoise::perform_toggled () {
|
||||
|
||||
|
@@ -36,6 +36,10 @@ class DirPyrDenoise : public Gtk::VBox, public AdjusterListener, public Foldable
|
||||
Gtk::CheckButton* enabled;
|
||||
bool lastEnabled;
|
||||
sigc::connection enaConn;
|
||||
Gtk::CheckButton* enhance;
|
||||
bool lastenhance;
|
||||
sigc::connection enhanConn;
|
||||
|
||||
// Gtk::CheckButton* perform;
|
||||
// bool lastperform;
|
||||
// sigc::connection perfconn;
|
||||
@@ -54,6 +58,7 @@ class DirPyrDenoise : public Gtk::VBox, public AdjusterListener, public Foldable
|
||||
|
||||
void adjusterChanged (Adjuster* a, double newval);
|
||||
void enabledChanged ();
|
||||
void enhanceChanged ();
|
||||
// void perform_toggled ();
|
||||
void dmethodChanged ();
|
||||
|
||||
|
@@ -152,6 +152,7 @@ void ParamsEdited::set (bool v) {
|
||||
impulseDenoise.enabled = v;
|
||||
impulseDenoise.thresh = v;
|
||||
dirpyrDenoise.enabled = v;
|
||||
dirpyrDenoise.enhance = v;
|
||||
// dirpyrDenoise.perform = v;
|
||||
dirpyrDenoise.luma = v;
|
||||
dirpyrDenoise.Ldetail = v;
|
||||
@@ -433,6 +434,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
|
||||
impulseDenoise.thresh = impulseDenoise.thresh && p.impulseDenoise.thresh == other.impulseDenoise.thresh;
|
||||
|
||||
dirpyrDenoise.enabled = dirpyrDenoise.enabled && p.dirpyrDenoise.enabled == other.dirpyrDenoise.enabled;
|
||||
dirpyrDenoise.enhance = dirpyrDenoise.enhance && p.dirpyrDenoise.enhance == other.dirpyrDenoise.enhance;
|
||||
// dirpyrDenoise.perform = dirpyrDenoise.perform && p.dirpyrDenoise.perform == other.dirpyrDenoise.perform;
|
||||
dirpyrDenoise.luma = dirpyrDenoise.luma && p.dirpyrDenoise.luma == other.dirpyrDenoise.luma;
|
||||
dirpyrDenoise.Ldetail = dirpyrDenoise.Ldetail && p.dirpyrDenoise.Ldetail == other.dirpyrDenoise.Ldetail;
|
||||
@@ -714,6 +716,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
|
||||
if (impulseDenoise.thresh) toEdit.impulseDenoise.thresh = mods.impulseDenoise.thresh;
|
||||
|
||||
if (dirpyrDenoise.enabled) toEdit.dirpyrDenoise.enabled = mods.dirpyrDenoise.enabled;
|
||||
if (dirpyrDenoise.enhance) toEdit.dirpyrDenoise.enhance = mods.dirpyrDenoise.enhance;
|
||||
if (dirpyrDenoise.luma) toEdit.dirpyrDenoise.luma = dontforceSet && options.baBehav[ADDSET_DIRPYRDN_LUMA] ? toEdit.dirpyrDenoise.luma + mods.dirpyrDenoise.luma : mods.dirpyrDenoise.luma;
|
||||
if (dirpyrDenoise.Ldetail) toEdit.dirpyrDenoise.Ldetail = dontforceSet && options.baBehav[ADDSET_DIRPYRDN_LUMDET] ? toEdit.dirpyrDenoise.Ldetail + mods.dirpyrDenoise.Ldetail : mods.dirpyrDenoise.Ldetail;
|
||||
if (dirpyrDenoise.chroma) toEdit.dirpyrDenoise.chroma = dontforceSet && options.baBehav[ADDSET_DIRPYRDN_CHROMA] ? toEdit.dirpyrDenoise.chroma + mods.dirpyrDenoise.chroma : mods.dirpyrDenoise.chroma;
|
||||
|
@@ -233,6 +233,7 @@ class DirPyrDenoiseParamsEdited {
|
||||
|
||||
public:
|
||||
bool enabled;
|
||||
bool enhance;
|
||||
bool Ldetail;
|
||||
bool luma;
|
||||
bool chroma;
|
||||
|
Reference in New Issue
Block a user