diff --git a/rtdata/languages/default b/rtdata/languages/default
index 2a4943424..064c4dbdb 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -701,6 +701,7 @@ HISTORY_MSG_466;EvPixelShiftExp0
HISTORY_MSG_467;EvPixelShiftHoleFill
HISTORY_MSG_468;EvPixelShiftMedian
HISTORY_MSG_469;EvPixelShiftMotionMethod
+HISTORY_MSG_470;EvPixelShiftSmooth
HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
HISTORY_SNAPSHOT;Snapshot
@@ -1686,6 +1687,7 @@ TP_RAW_PIXELSHIFTMEDIAN;Median
TP_RAW_PIXELSHIFTMEDIAN3;Exclude selected frame from median
TP_RAW_PIXELSHIFTHOLEFILL;3x3 new: Fill holes
TP_RAW_PIXELSHIFTBLUR;3x3 new: Blur
+TP_RAW_PIXELSHIFTSMOOTH;3x3 new: Smooth transitions
TP_RAW_PIXELSHIFTEXP0;Experimental
TP_RAW_PIXELSHIFTGREEN;Check dual green
TP_RAW_PIXELSHIFTNONGREENCROSS;Check red/blue cross
@@ -1695,6 +1697,7 @@ TP_RAW_PIXELSHIFTMOTION;Motion detection level (deprecated)
TP_RAW_PIXELSHIFTMOTION_TOOLTIP;0 means no motion detection\n1 - 99 means motion will be detected according to this value. Increase value to increase detection rate\n100 means the Amaze demosaiced frame will be used
TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP;Fill holes in motion mask
TP_RAW_PIXELSHIFTBLUR_TOOLTIP;Blur motion mask
+TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions (requires 3x3 new Blur)
TP_RAW_PIXELSHIFTMEDIAN_TOOLTIP;Use median of all frames instead of selected frame for regions with motion.\nRemoves objects which are at different places in all frames.\nGives motion effect on slow moving (overlapping) objects.
TP_RAW_PIXELSHIFTMEDIAN3_TOOLTIP;Excludes selected frame from median.\nUseful if moving objects overlap in frame 2 and 3
TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a mask showing the regions with motion
diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc
index 1fde4156d..91aa972ee 100644
--- a/rtengine/pixelshift.cc
+++ b/rtengine/pixelshift.cc
@@ -906,6 +906,7 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RA
const float threshold = bayerParams.pixelShiftSum;
const bool experimental0 = bayerParams.pixelShiftExp0;
const bool holeFill = bayerParams.pixelShiftHoleFill;
+ const bool smoothTransitions = blurMap && bayerParams.pixelShiftSmooth;
static const float nReadK3II[] = { 3.4f, // ISO 100
3.1f, // ISO 125
@@ -1650,7 +1651,7 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RA
if(showMotion && showOnlyMask) { // we want only motion mask => paint areas without motion in pure black
red[i + offsY][j + offsX] = green[i + offsY][j + offsX] = blue[i + offsY][j + offsX] = 0.f;
} else {
- if(blurMap && experimental0) {
+ if(smoothTransitions) {
red[i + offsY][j + offsX] = intp(psMask[i][j], red[i + offsY][j + offsX], psRed[i][j] );
green[i + offsY][j + offsX] = intp(psMask[i][j],green[i + offsY][j + offsX],(psG1[i][j] + psG2[i][j]) / 2.f);
blue[i + offsY][j + offsX] = intp(psMask[i][j],blue[i + offsY][j + offsX], psBlue[i][j]);
diff --git a/rtengine/procevents.h b/rtengine/procevents.h
index 75b64d30d..86deb7d6d 100644
--- a/rtengine/procevents.h
+++ b/rtengine/procevents.h
@@ -497,6 +497,7 @@ enum ProcEvent {
EvPixelShiftMedian = 467,
EvPixelShiftMedian3 = 468,
EvPixelShiftMotionMethod = 469,
+ EvPixelShiftSmooth = 470,
NUMOFEVENTS
};
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index 0597be182..2edf7c77e 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -897,6 +897,7 @@ void RAWParams::BayerSensor::setPixelShiftDefaults()
pixelShiftMedian3 = false;
pixelShiftGreen = true;
pixelShiftBlur = true;
+ pixelShiftSmooth = true;
pixelShiftExp0 = false;
pixelShiftNonGreenCross = true;
pixelShiftNonGreenCross2 = false;
@@ -912,32 +913,6 @@ void RAWParams::setDefaults()
bayersensor.dcb_enhance = true;
//bayersensor.all_enhance = false;
bayersensor.lmmse_iterations = 2;
- bayersensor.pixelShiftMotion = 0;
- bayersensor.pixelShiftMotionCorrection = RAWParams::BayerSensor::Grid3x3New;
- bayersensor.pixelShiftMotionCorrectionMethod = RAWParams::BayerSensor::Automatic;
- bayersensor.pixelShiftStddevFactorGreen = 5.0;
- bayersensor.pixelShiftStddevFactorRed = 5.0;
- bayersensor.pixelShiftStddevFactorBlue = 5.0;
- bayersensor.pixelShiftEperIso = 0.0;
- bayersensor.pixelShiftNreadIso = 0.0;
- bayersensor.pixelShiftPrnu = 1.0;
- bayersensor.pixelShiftSigma = 1.0;
- bayersensor.pixelShiftSum = 3.0;
- bayersensor.pixelShiftRedBlueWeight = 0.7;
- bayersensor.pixelshiftShowMotion = false;
- bayersensor.pixelshiftShowMotionMaskOnly = false;
- bayersensor.pixelShiftAutomatic = true;
- bayersensor.pixelShiftNonGreenHorizontal = false;
- bayersensor.pixelShiftNonGreenVertical = false;
- bayersensor.pixelShiftHoleFill = true;
- bayersensor.pixelShiftMedian = false;
- bayersensor.pixelShiftMedian3 = false;
- bayersensor.pixelShiftGreen = true;
- bayersensor.pixelShiftBlur = true;
- bayersensor.pixelShiftExp0 = false;
- bayersensor.pixelShiftNonGreenCross = true;
- bayersensor.pixelShiftNonGreenCross2 = false;
- bayersensor.pixelShiftNonGreenAmaze = false;
bayersensor.black0 = 0.0;
bayersensor.black1 = 0.0;
bayersensor.black2 = 0.0;
@@ -3509,6 +3484,10 @@ int ProcParams::save (const Glib::ustring &fname, const Glib::ustring &fname2, b
keyFile.set_boolean ("RAW Bayer", "pixelShiftBlur", raw.bayersensor.pixelShiftBlur );
}
+ if (!pedited || pedited->raw.bayersensor.pixelShiftSmooth) {
+ keyFile.set_boolean ("RAW Bayer", "pixelShiftSmooth", raw.bayersensor.pixelShiftSmooth );
+ }
+
if (!pedited || pedited->raw.bayersensor.pixelShiftExp0) {
keyFile.set_boolean ("RAW Bayer", "pixelShiftExp0", raw.bayersensor.pixelShiftExp0 );
}
@@ -7757,6 +7736,14 @@ int ProcParams::load (const Glib::ustring &fname, ParamsEdited* pedited)
}
}
+ if (keyFile.has_key ("RAW Bayer", "pixelShiftSmooth")) {
+ raw.bayersensor.pixelShiftSmooth = keyFile.get_boolean("RAW Bayer", "pixelShiftSmooth");
+
+ if (pedited) {
+ pedited->raw.bayersensor.pixelShiftSmooth = true;
+ }
+ }
+
if (keyFile.has_key ("RAW Bayer", "pixelShiftExp0")) {
raw.bayersensor.pixelShiftExp0 = keyFile.get_boolean("RAW Bayer", "pixelShiftExp0");
@@ -8248,6 +8235,7 @@ bool ProcParams::operator== (const ProcParams& other)
&& raw.bayersensor.pixelShiftMedian3 == other.raw.bayersensor.pixelShiftMedian3
&& raw.bayersensor.pixelShiftGreen == other.raw.bayersensor.pixelShiftGreen
&& raw.bayersensor.pixelShiftBlur == other.raw.bayersensor.pixelShiftBlur
+ && raw.bayersensor.pixelShiftSmooth == other.raw.bayersensor.pixelShiftSmooth
&& raw.bayersensor.pixelShiftExp0 == other.raw.bayersensor.pixelShiftExp0
&& raw.bayersensor.pixelShiftNonGreenCross == other.raw.bayersensor.pixelShiftNonGreenCross
&& raw.bayersensor.pixelShiftNonGreenCross2 == other.raw.bayersensor.pixelShiftNonGreenCross2
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index 51d55bedc..dbf285fb2 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -1229,6 +1229,7 @@ public:
bool pixelShiftMedian3;
bool pixelShiftGreen;
bool pixelShiftBlur;
+ bool pixelShiftSmooth;
bool pixelShiftExp0;
bool pixelShiftNonGreenCross;
bool pixelShiftNonGreenCross2;
diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc
index 72fe3b76a..891f191b2 100644
--- a/rtengine/refreshmap.cc
+++ b/rtengine/refreshmap.cc
@@ -496,7 +496,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
DEMOSAIC, // EvPixelShiftHoleFill
DEMOSAIC, // EvPixelShiftMedian
DEMOSAIC, // EvPixelShiftMedian3
- DEMOSAIC // EvPixelShiftMotionMethod
+ DEMOSAIC, // EvPixelShiftMotionMethod
+ DEMOSAIC // EvPixelShiftSmooth
};
diff --git a/rtgui/bayerprocess.cc b/rtgui/bayerprocess.cc
index 8b8cc9be8..5d33ffe18 100644
--- a/rtgui/bayerprocess.cc
+++ b/rtgui/bayerprocess.cc
@@ -128,6 +128,10 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
pixelShiftBlur->set_tooltip_text (M("TP_RAW_PIXELSHIFTBLUR_TOOLTIP"));
pixelShiftOptions->pack_start(*pixelShiftBlur);
+ pixelShiftSmooth = Gtk::manage (new Gtk::CheckButton(M("TP_RAW_PIXELSHIFTSMOOTH")));
+ pixelShiftSmooth->set_tooltip_text (M("TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP"));
+ pixelShiftOptions->pack_start(*pixelShiftSmooth);
+
pixelShiftHoleFill = Gtk::manage (new Gtk::CheckButton(M("TP_RAW_PIXELSHIFTHOLEFILL")));
pixelShiftHoleFill->set_tooltip_text (M("TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP"));
pixelShiftOptions->pack_start(*pixelShiftHoleFill);
@@ -301,6 +305,7 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
pixelShiftMedian3conn = pixelShiftMedian3->signal_toggled().connect ( sigc::mem_fun(*this, &BayerProcess::pixelShiftMedian3Changed), true);
pixelShiftGreenconn = pixelShiftGreen->signal_toggled().connect ( sigc::mem_fun(*this, &BayerProcess::pixelShiftGreenChanged), true);
pixelShiftBlurconn = pixelShiftBlur->signal_toggled().connect ( sigc::mem_fun(*this, &BayerProcess::pixelShiftBlurChanged), true);
+ pixelShiftSmoothconn = pixelShiftSmooth->signal_toggled().connect ( sigc::mem_fun(*this, &BayerProcess::pixelShiftSmoothChanged), true);
pixelShiftExp0conn = pixelShiftExp0->signal_toggled().connect ( sigc::mem_fun(*this, &BayerProcess::pixelShiftExp0Changed), true);
pixelShiftNonGreenCrossconn = pixelShiftNonGreenCross->signal_toggled().connect ( sigc::mem_fun(*this, &BayerProcess::pixelShiftNonGreenCrossChanged), true);
pixelShiftNonGreenCross2conn = pixelShiftNonGreenCross2->signal_toggled().connect ( sigc::mem_fun(*this, &BayerProcess::pixelShiftNonGreenCross2Changed), true);
@@ -342,6 +347,7 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
pixelShiftMedian3->set_inconsistent(!pedited->raw.bayersensor.pixelShiftMedian3);
pixelShiftGreen->set_inconsistent(!pedited->raw.bayersensor.pixelShiftGreen);
pixelShiftBlur->set_inconsistent(!pedited->raw.bayersensor.pixelShiftBlur);
+ pixelShiftSmooth->set_inconsistent(!pedited->raw.bayersensor.pixelShiftSmooth);
pixelShiftExp0->set_inconsistent(!pedited->raw.bayersensor.pixelShiftExp0);
pixelShiftNonGreenCross->set_inconsistent(!pedited->raw.bayersensor.pixelShiftNonGreenCross);
pixelShiftNonGreenCross2->set_inconsistent(!pedited->raw.bayersensor.pixelShiftNonGreenCross2);
@@ -386,6 +392,7 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
pixelShiftMedian3->set_active(pp->raw.bayersensor.pixelShiftMedian3);
pixelShiftGreen->set_active(pp->raw.bayersensor.pixelShiftGreen);
pixelShiftBlur->set_active(pp->raw.bayersensor.pixelShiftBlur);
+ pixelShiftSmooth->set_active(pp->raw.bayersensor.pixelShiftSmooth);
pixelShiftExp0->set_active(pp->raw.bayersensor.pixelShiftExp0);
pixelShiftNonGreenCross->set_active(pp->raw.bayersensor.pixelShiftNonGreenCross);
pixelShiftNonGreenCross2->set_active(pp->raw.bayersensor.pixelShiftNonGreenCross2);
@@ -407,6 +414,7 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
pixelShiftHoleFill->set_sensitive(pixelShiftAutomatic->get_active () && pixelShiftMotionCorrection->get_active_row_number() == 5);
pixelShiftBlur->set_sensitive(pixelShiftAutomatic->get_active () && pixelShiftMotionCorrection->get_active_row_number() == 5);
+ pixelShiftSmooth->set_sensitive(pixelShiftAutomatic->get_active () && pixelShiftMotionCorrection->get_active_row_number() == 5 && pixelShiftBlur->get_active());
if (!batchMode) {
if (pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::methodstring[procparams::RAWParams::BayerSensor::dcb] ||
@@ -483,6 +491,7 @@ void BayerProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pe
pp->raw.bayersensor.pixelShiftMedian3 = pixelShiftMedian3->get_active();
pp->raw.bayersensor.pixelShiftGreen = pixelShiftGreen->get_active();
pp->raw.bayersensor.pixelShiftBlur = pixelShiftBlur->get_active();
+ pp->raw.bayersensor.pixelShiftSmooth = pixelShiftSmooth->get_active();
pp->raw.bayersensor.pixelShiftExp0 = pixelShiftExp0->get_active();
pp->raw.bayersensor.pixelShiftNonGreenCross = pixelShiftNonGreenCross->get_active();
pp->raw.bayersensor.pixelShiftNonGreenCross2 = pixelShiftNonGreenCross2->get_active();
@@ -529,6 +538,7 @@ void BayerProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pe
pedited->raw.bayersensor.pixelShiftMedian3 = !pixelShiftMedian3->get_inconsistent();
pedited->raw.bayersensor.pixelShiftGreen = !pixelShiftGreen->get_inconsistent();
pedited->raw.bayersensor.pixelShiftBlur = !pixelShiftBlur->get_inconsistent();
+ pedited->raw.bayersensor.pixelShiftSmooth = !pixelShiftSmooth->get_inconsistent();
pedited->raw.bayersensor.pixelShiftExp0 = !pixelShiftExp0->get_inconsistent();
pedited->raw.bayersensor.pixelShiftNonGreenCross = !pixelShiftNonGreenCross->get_inconsistent();
pedited->raw.bayersensor.pixelShiftNonGreenCross2 = !pixelShiftNonGreenCross2->get_inconsistent();
@@ -650,9 +660,11 @@ void BayerProcess::psMotionCorrectionChanged ()
if(pixelShiftMotionCorrection->get_active_row_number() == 5) {
pixelShiftBlur->set_sensitive(true);
pixelShiftHoleFill->set_sensitive(true);
+ pixelShiftSmooth->set_sensitive(pixelShiftBlur->get_active());
} else {
pixelShiftBlur->set_sensitive(false);
pixelShiftHoleFill->set_sensitive(false);
+ pixelShiftSmooth->set_sensitive(false);
}
if (listener) {
@@ -823,6 +835,7 @@ void BayerProcess::pixelShiftAutomaticChanged ()
pixelShiftMedian3->set_sensitive(pixelShiftAutomatic->get_active () && pixelShiftMedian->get_active());
pixelShiftGreen->set_sensitive(pixelShiftAutomatic->get_active ());
pixelShiftBlur->set_sensitive(pixelShiftAutomatic->get_active () && pixelShiftMotionCorrection->get_active_row_number() == 5);
+ pixelShiftSmooth->set_sensitive(pixelShiftAutomatic->get_active () && pixelShiftMotionCorrection->get_active_row_number() == 5 && pixelShiftBlur->get_active());
pixelShiftExp0->set_sensitive(pixelShiftAutomatic->get_active ());
pixelShiftNonGreenCross->set_sensitive(pixelShiftAutomatic->get_active ());
pixelShiftNonGreenCross2->set_sensitive(pixelShiftAutomatic->get_active ());
@@ -971,11 +984,33 @@ void BayerProcess::pixelShiftBlurChanged ()
lastDCBen = pixelShiftBlur->get_active ();
}
+ pixelShiftSmooth->set_sensitive(pixelShiftBlur->get_active ());
+
if (listener) {
listener->panelChanged (EvPixelShiftBlur, pixelShiftBlur->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED"));
}
}
+void BayerProcess::pixelShiftSmoothChanged ()
+{
+ if (batchMode) {
+ if (pixelShiftSmooth->get_inconsistent()) {
+ pixelShiftSmooth->set_inconsistent (false);
+ pixelShiftSmoothconn.block (true);
+ pixelShiftSmooth->set_active (false);
+ pixelShiftSmoothconn.block (false);
+ } else if (lastDCBen) {
+ pixelShiftSmooth->set_inconsistent (true);
+ }
+
+ lastDCBen = pixelShiftSmooth->get_active ();
+ }
+
+ if (listener) {
+ listener->panelChanged (EvPixelShiftSmooth, pixelShiftSmooth->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED"));
+ }
+}
+
void BayerProcess::pixelShiftExp0Changed ()
{
if (batchMode) {
diff --git a/rtgui/bayerprocess.h b/rtgui/bayerprocess.h
index e53cb6816..135c02df5 100644
--- a/rtgui/bayerprocess.h
+++ b/rtgui/bayerprocess.h
@@ -56,6 +56,7 @@ protected:
Gtk::CheckButton* pixelShiftNonGreenAmaze;
Gtk::CheckButton* pixelShiftGreen;
Gtk::CheckButton* pixelShiftBlur;
+ Gtk::CheckButton* pixelShiftSmooth;
Gtk::CheckButton* pixelShiftExp0;
Gtk::CheckButton* pixelShiftHoleFill;
Gtk::CheckButton* pixelShiftMedian;
@@ -75,7 +76,7 @@ protected:
sigc::connection methodconn, imagenumberconn, psmcconn, dcbEnhconn,
pixelShiftShowMotionconn, pixelShiftShowMotionMaskOnlyconn, pixelShiftAutomaticconn,
pixelShiftNonGreenHorizontalconn, pixelShiftNonGreenVerticalconn, pixelShiftHoleFillconn, pixelShiftMedianconn, pixelShiftMedian3conn, pixelShiftNonGreenCrossconn,
- pixelShiftNonGreenCross2conn, pixelShiftNonGreenAmazeconn, pixelShiftGreenconn, pixelShiftBlurconn, pixelShiftExp0conn, pixelShiftMotionMethodConn;
+ pixelShiftNonGreenCross2conn, pixelShiftNonGreenAmazeconn, pixelShiftGreenconn, pixelShiftBlurconn, pixelShiftSmoothconn, pixelShiftExp0conn, pixelShiftMotionMethodConn;
public:
BayerProcess ();
@@ -100,6 +101,7 @@ public:
void pixelShiftMedian3Changed();
void pixelShiftGreenChanged();
void pixelShiftBlurChanged();
+ void pixelShiftSmoothChanged();
void pixelShiftExp0Changed();
void pixelShiftNonGreenCrossChanged();
void pixelShiftNonGreenCross2Changed();
diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc
index 185341e32..061424acf 100644
--- a/rtgui/paramsedited.cc
+++ b/rtgui/paramsedited.cc
@@ -392,6 +392,7 @@ void ParamsEdited::set (bool v)
raw.bayersensor.pixelShiftMedian3 = v;
raw.bayersensor.pixelShiftGreen = v;
raw.bayersensor.pixelShiftBlur = v;
+ raw.bayersensor.pixelShiftSmooth = v;
raw.bayersensor.pixelShiftExp0 = v;
raw.bayersensor.pixelShiftNonGreenCross = v;
raw.bayersensor.pixelShiftNonGreenCross2 = v;
@@ -914,6 +915,7 @@ void ParamsEdited::initFrom (const std::vector
raw.bayersensor.pixelShiftMedian3 = raw.bayersensor.pixelShiftMedian3 && p.raw.bayersensor.pixelShiftMedian3 == other.raw.bayersensor.pixelShiftMedian3;
raw.bayersensor.pixelShiftGreen = raw.bayersensor.pixelShiftGreen && p.raw.bayersensor.pixelShiftGreen == other.raw.bayersensor.pixelShiftGreen;
raw.bayersensor.pixelShiftBlur = raw.bayersensor.pixelShiftBlur && p.raw.bayersensor.pixelShiftBlur == other.raw.bayersensor.pixelShiftBlur;
+ raw.bayersensor.pixelShiftSmooth = raw.bayersensor.pixelShiftSmooth && p.raw.bayersensor.pixelShiftSmooth == other.raw.bayersensor.pixelShiftSmooth;
raw.bayersensor.pixelShiftExp0 = raw.bayersensor.pixelShiftExp0 && p.raw.bayersensor.pixelShiftExp0 == other.raw.bayersensor.pixelShiftExp0;
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;
@@ -2418,6 +2420,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.raw.bayersensor.pixelShiftBlur = mods.raw.bayersensor.pixelShiftBlur;
}
+ if (raw.bayersensor.pixelShiftSmooth) {
+ toEdit.raw.bayersensor.pixelShiftSmooth = mods.raw.bayersensor.pixelShiftSmooth;
+ }
+
if (raw.bayersensor.pixelShiftExp0) {
toEdit.raw.bayersensor.pixelShiftExp0 = mods.raw.bayersensor.pixelShiftExp0;
}
@@ -2946,7 +2952,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 && pixelShiftExp0
+ && pixelShiftAutomatic && pixelShiftNonGreenHorizontal && pixelShiftNonGreenVertical && pixelShiftHoleFill && pixelShiftMedian && pixelShiftMedian3 && pixelShiftNonGreenCross && pixelShiftNonGreenCross2 && pixelShiftNonGreenAmaze && pixelShiftGreen && pixelShiftBlur && pixelShiftSmooth && pixelShiftExp0
&& linenoise && exBlack0 && exBlack1 && exBlack2 && exBlack3 && exTwoGreen;
}
diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h
index ceb8b82fd..23b0e240b 100644
--- a/rtgui/paramsedited.h
+++ b/rtgui/paramsedited.h
@@ -714,6 +714,7 @@ public:
bool pixelShiftMedian3;
bool pixelShiftGreen;
bool pixelShiftBlur;
+ bool pixelShiftSmooth;
bool pixelShiftExp0;
bool pixelShiftNonGreenCross;
bool pixelShiftNonGreenCross2;