Pixelshift: Added per channel brightness equalization
This commit is contained in:
@@ -101,6 +101,11 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
|
||||
pixelShiftEqualBright->set_tooltip_text (M("TP_RAW_PIXELSHIFTEQUALBRIGHT_TOOLTIP"));
|
||||
pixelShiftFrame->pack_start(*pixelShiftEqualBright);
|
||||
|
||||
pixelShiftEqualBrightChannel = Gtk::manage (new CheckBox(M("TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL"), multiImage));
|
||||
pixelShiftEqualBrightChannel->setCheckBoxListener (this);
|
||||
pixelShiftEqualBrightChannel->set_tooltip_text (M("TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP"));
|
||||
pixelShiftFrame->pack_start(*pixelShiftEqualBrightChannel);
|
||||
|
||||
Gtk::HBox* hb3 = Gtk::manage (new Gtk::HBox ());
|
||||
hb3->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_RAW_PIXELSHIFTMOTIONMETHOD") + ": ")), Gtk::PACK_SHRINK, 4);
|
||||
pixelShiftMotionMethod = Gtk::manage (new MyComboBoxText ());
|
||||
@@ -372,6 +377,8 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
|
||||
pixelShiftSmooth->setValue (pp->raw.bayersensor.pixelShiftSmoothFactor);
|
||||
pixelShiftLmmse->setValue (pp->raw.bayersensor.pixelShiftLmmse);
|
||||
pixelShiftEqualBright->setValue (pp->raw.bayersensor.pixelShiftEqualBright);
|
||||
pixelShiftEqualBrightChannel->set_sensitive (pp->raw.bayersensor.pixelShiftEqualBright);
|
||||
pixelShiftEqualBrightChannel->setValue (pp->raw.bayersensor.pixelShiftEqualBrightChannel);
|
||||
pixelShiftNonGreenCross->setValue (pp->raw.bayersensor.pixelShiftNonGreenCross);
|
||||
ccSteps->setValue (pp->raw.bayersensor.ccSteps);
|
||||
lmmseIterations->setValue (pp->raw.bayersensor.lmmse_iterations);
|
||||
@@ -421,6 +428,7 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
|
||||
pixelShiftSmooth->setEditedState ( pedited->raw.bayersensor.pixelShiftSmooth ? Edited : UnEdited);
|
||||
pixelShiftLmmse->setEdited (pedited->raw.bayersensor.pixelShiftLmmse);
|
||||
pixelShiftEqualBright->setEdited (pedited->raw.bayersensor.pixelShiftEqualBright);
|
||||
pixelShiftEqualBrightChannel->setEdited (pedited->raw.bayersensor.pixelShiftEqualBrightChannel);
|
||||
pixelShiftNonGreenCross->setEdited (pedited->raw.bayersensor.pixelShiftNonGreenCross);
|
||||
lmmseIterations->setEditedState ( pedited->raw.bayersensor.lmmseIterations ? Edited : UnEdited);
|
||||
pixelShiftEperIso->setEditedState ( pedited->raw.bayersensor.pixelShiftEperIso ? Edited : UnEdited);
|
||||
@@ -524,6 +532,7 @@ void BayerProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pe
|
||||
pp->raw.bayersensor.pixelShiftSmoothFactor = pixelShiftSmooth->getValue();
|
||||
pp->raw.bayersensor.pixelShiftLmmse = pixelShiftLmmse->getLastActive ();
|
||||
pp->raw.bayersensor.pixelShiftEqualBright = pixelShiftEqualBright->getLastActive ();
|
||||
pp->raw.bayersensor.pixelShiftEqualBrightChannel = pixelShiftEqualBrightChannel->getLastActive ();
|
||||
pp->raw.bayersensor.pixelShiftNonGreenCross = pixelShiftNonGreenCross->getLastActive ();
|
||||
#ifdef PIXELSHIFTDEV
|
||||
pp->raw.bayersensor.pixelShiftStddevFactorGreen = pixelShiftStddevFactorGreen->getValue();
|
||||
@@ -575,6 +584,7 @@ void BayerProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pe
|
||||
pedited->raw.bayersensor.pixelShiftSmooth = pixelShiftSmooth->getEditedState();
|
||||
pedited->raw.bayersensor.pixelShiftLmmse = !pixelShiftLmmse->get_inconsistent();
|
||||
pedited->raw.bayersensor.pixelShiftEqualBright = !pixelShiftEqualBright->get_inconsistent();
|
||||
pedited->raw.bayersensor.pixelShiftEqualBrightChannel = !pixelShiftEqualBrightChannel->get_inconsistent();
|
||||
pedited->raw.bayersensor.pixelShiftNonGreenCross = !pixelShiftNonGreenCross->get_inconsistent();
|
||||
#ifdef PIXELSHIFTDEV
|
||||
pedited->raw.bayersensor.pixelShiftStddevFactorGreen = pixelShiftStddevFactorGreen->getEditedState ();
|
||||
@@ -839,9 +849,16 @@ void BayerProcess::checkBoxToggled (CheckBox* c, CheckValue newval)
|
||||
listener->panelChanged (EvPixelShiftLmmse, pixelShiftLmmse->getValueAsStr ());
|
||||
}
|
||||
} else if (c == pixelShiftEqualBright) {
|
||||
if (!batchMode) {
|
||||
pixelShiftEqualBrightChannel->set_sensitive(newval != CheckValue::off);
|
||||
}
|
||||
if (listener) {
|
||||
listener->panelChanged (EvPixelShiftEqualBright, pixelShiftEqualBright->getValueAsStr ());
|
||||
}
|
||||
} else if (c == pixelShiftEqualBrightChannel) {
|
||||
if (listener) {
|
||||
listener->panelChanged (EvPixelShiftEqualBrightChannel, pixelShiftEqualBrightChannel->getValueAsStr ());
|
||||
}
|
||||
} else if (c == pixelShiftNonGreenCross) {
|
||||
if (listener) {
|
||||
listener->panelChanged (EvPixelShiftNonGreenCross, pixelShiftNonGreenCross->getValueAsStr ());
|
||||
|
@@ -51,6 +51,7 @@ protected:
|
||||
CheckBox* pixelShiftMedian;
|
||||
CheckBox* pixelShiftLmmse;
|
||||
CheckBox* pixelShiftEqualBright;
|
||||
CheckBox* pixelShiftEqualBrightChannel;
|
||||
Adjuster* pixelShiftSmooth;
|
||||
Adjuster* pixelShiftEperIso;
|
||||
Adjuster* pixelShiftSigma;
|
||||
|
@@ -397,6 +397,7 @@ void ParamsEdited::set (bool v)
|
||||
raw.bayersensor.pixelShiftExp0 = v;
|
||||
raw.bayersensor.pixelShiftLmmse = v;
|
||||
raw.bayersensor.pixelShiftEqualBright = v;
|
||||
raw.bayersensor.pixelShiftEqualBrightChannel = v;
|
||||
raw.bayersensor.pixelShiftNonGreenCross = v;
|
||||
raw.bayersensor.pixelShiftNonGreenCross2 = v;
|
||||
raw.bayersensor.pixelShiftNonGreenAmaze = v;
|
||||
@@ -923,6 +924,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
|
||||
raw.bayersensor.pixelShiftExp0 = raw.bayersensor.pixelShiftExp0 && p.raw.bayersensor.pixelShiftExp0 == other.raw.bayersensor.pixelShiftExp0;
|
||||
raw.bayersensor.pixelShiftLmmse = raw.bayersensor.pixelShiftLmmse && p.raw.bayersensor.pixelShiftLmmse == other.raw.bayersensor.pixelShiftLmmse;
|
||||
raw.bayersensor.pixelShiftEqualBright = raw.bayersensor.pixelShiftEqualBright && p.raw.bayersensor.pixelShiftEqualBright == other.raw.bayersensor.pixelShiftEqualBright;
|
||||
raw.bayersensor.pixelShiftEqualBrightChannel = raw.bayersensor.pixelShiftEqualBrightChannel && p.raw.bayersensor.pixelShiftEqualBrightChannel == other.raw.bayersensor.pixelShiftEqualBrightChannel;
|
||||
raw.bayersensor.pixelShiftNonGreenCross = raw.bayersensor.pixelShiftNonGreenCross && p.raw.bayersensor.pixelShiftNonGreenCross == other.raw.bayersensor.pixelShiftNonGreenCross;
|
||||
raw.bayersensor.pixelShiftNonGreenCross2 = raw.bayersensor.pixelShiftNonGreenCross2 && p.raw.bayersensor.pixelShiftNonGreenCross2 == other.raw.bayersensor.pixelShiftNonGreenCross2;
|
||||
raw.bayersensor.pixelShiftNonGreenAmaze = raw.bayersensor.pixelShiftNonGreenAmaze && p.raw.bayersensor.pixelShiftNonGreenAmaze == other.raw.bayersensor.pixelShiftNonGreenAmaze;
|
||||
@@ -2446,6 +2448,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
|
||||
toEdit.raw.bayersensor.pixelShiftEqualBright = mods.raw.bayersensor.pixelShiftEqualBright;
|
||||
}
|
||||
|
||||
if (raw.bayersensor.pixelShiftEqualBrightChannel) {
|
||||
toEdit.raw.bayersensor.pixelShiftEqualBrightChannel = mods.raw.bayersensor.pixelShiftEqualBrightChannel;
|
||||
}
|
||||
|
||||
if (raw.bayersensor.pixelShiftNonGreenCross) {
|
||||
toEdit.raw.bayersensor.pixelShiftNonGreenCross = mods.raw.bayersensor.pixelShiftNonGreenCross;
|
||||
}
|
||||
@@ -2970,7 +2976,7 @@ bool RAWParamsEdited::BayerSensor::isUnchanged() const
|
||||
return method && imageNum && dcbIterations && dcbEnhance && lmmseIterations/*&& allEnhance*/ && greenEq
|
||||
&& pixelShiftMotion && pixelShiftMotionCorrection && pixelShiftMotionCorrectionMethod && pixelShiftStddevFactorGreen && pixelShiftStddevFactorRed && pixelShiftStddevFactorBlue && pixelShiftEperIso
|
||||
&& pixelShiftNreadIso && pixelShiftPrnu && pixelShiftSigma && pixelShiftSum && pixelShiftRedBlueWeight && pixelShiftShowMotion && pixelShiftShowMotionMaskOnly
|
||||
&& pixelShiftAutomatic && pixelShiftNonGreenHorizontal && pixelShiftNonGreenVertical && pixelShiftHoleFill && pixelShiftMedian && pixelShiftMedian3 && pixelShiftNonGreenCross && pixelShiftNonGreenCross2 && pixelShiftNonGreenAmaze && pixelShiftGreen && pixelShiftBlur && pixelShiftSmooth && pixelShiftExp0 && pixelShiftLmmse && pixelShiftEqualBright
|
||||
&& pixelShiftAutomatic && pixelShiftNonGreenHorizontal && pixelShiftNonGreenVertical && pixelShiftHoleFill && pixelShiftMedian && pixelShiftMedian3 && pixelShiftNonGreenCross && pixelShiftNonGreenCross2 && pixelShiftNonGreenAmaze && pixelShiftGreen && pixelShiftBlur && pixelShiftSmooth && pixelShiftExp0 && pixelShiftLmmse && pixelShiftEqualBright && pixelShiftEqualBrightChannel
|
||||
&& linenoise && exBlack0 && exBlack1 && exBlack2 && exBlack3 && exTwoGreen;
|
||||
}
|
||||
|
||||
|
@@ -718,6 +718,7 @@ public:
|
||||
bool pixelShiftExp0;
|
||||
bool pixelShiftLmmse;
|
||||
bool pixelShiftEqualBright;
|
||||
bool pixelShiftEqualBrightChannel;
|
||||
bool pixelShiftNonGreenCross;
|
||||
bool pixelShiftNonGreenCross2;
|
||||
bool pixelShiftNonGreenAmaze;
|
||||
|
Reference in New Issue
Block a user