pixelshift: changed formula for adaptive motion detection
This commit is contained in:
@@ -1662,8 +1662,8 @@ TP_RAW_PIXELSHIFTMOTIONCORRECTION_TOOLTIP;1 = 2 pixels\n3 = 3x3 grid\n5 = 5x5 gr
|
|||||||
TP_RAW_PIXELSHIFTSHOWMOTION;Show motion
|
TP_RAW_PIXELSHIFTSHOWMOTION;Show motion
|
||||||
TP_RAW_PIXELSHIFTSTDDEVFACTOR;StdDev factor
|
TP_RAW_PIXELSHIFTSTDDEVFACTOR;StdDev factor
|
||||||
TP_RAW_PIXELSHIFTEPERISO;e per ISO
|
TP_RAW_PIXELSHIFTEPERISO;e per ISO
|
||||||
TP_RAW_PIXELSHIFTNREADISO;nRead per ISO
|
TP_RAW_PIXELSHIFTNREADISO;nRead
|
||||||
TP_RAW_PIXELSHIFTPRNU;PRNU
|
TP_RAW_PIXELSHIFTPRNU;PRNU (%)
|
||||||
TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
|
TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
|
||||||
TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
|
TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
|
||||||
TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
|
TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
|
||||||
|
@@ -43,7 +43,8 @@ float greenDiff(float a, float b, bool adaptive, float scale, float stddevFactor
|
|||||||
float diff = std::fabs(a - b) / (std::max(a, b) + 0.01f);
|
float diff = std::fabs(a - b) / (std::max(a, b) + 0.01f);
|
||||||
if(adaptive) {
|
if(adaptive) {
|
||||||
float avg = (a+b)/2.f;
|
float avg = (a+b)/2.f;
|
||||||
avg *= scale;
|
avg *= scale; // revert the colour scaling
|
||||||
|
prnu *= (avg * eperIso);
|
||||||
float stddev = sqrtf(avg * eperIso + nreadIso * nreadIso + prnu * prnu);
|
float stddev = sqrtf(avg * eperIso + nreadIso * nreadIso + prnu * prnu);
|
||||||
float korr = stddevFactor * stddev / (a * scale);
|
float korr = stddevFactor * stddev / (a * scale);
|
||||||
diff -= korr;
|
diff -= korr;
|
||||||
@@ -78,7 +79,8 @@ void RawImageSource::pixelshift_simple(int winx, int winy, int winw, int winh, b
|
|||||||
|
|
||||||
// const float eperIso = 0.75f * idata->getISOSpeed() / 100;
|
// const float eperIso = 0.75f * idata->getISOSpeed() / 100;
|
||||||
eperIso *= (idata->getISOSpeed() / 100);
|
eperIso *= (idata->getISOSpeed() / 100);
|
||||||
nreadIso *= (idata->getISOSpeed() / 100);
|
// nreadIso *= (idata->getISOSpeed() / 100);
|
||||||
|
prnu /= 100.f;
|
||||||
// const float nreadIso = 5.f * idata->getISOSpeed() / 100;
|
// const float nreadIso = 5.f * idata->getISOSpeed() / 100;
|
||||||
// const float prnu = 1.f;
|
// const float prnu = 1.f;
|
||||||
// const float stddevFactor = 4.f;
|
// const float stddevFactor = 4.f;
|
||||||
|
@@ -132,7 +132,7 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
|
|||||||
pixelShiftEperIso->show();
|
pixelShiftEperIso->show();
|
||||||
pixelShiftOptions->pack_start(*pixelShiftEperIso);
|
pixelShiftOptions->pack_start(*pixelShiftEperIso);
|
||||||
|
|
||||||
pixelShiftNreadIso = Gtk::manage (new Adjuster (M("TP_RAW_PIXELSHIFTNREADISO"), 1.0, 10.0, 0.5, 5.0));
|
pixelShiftNreadIso = Gtk::manage (new Adjuster (M("TP_RAW_PIXELSHIFTNREADISO"), 1.0, 10.0, 0.05, 3.45));
|
||||||
pixelShiftNreadIso->setAdjusterListener (this);
|
pixelShiftNreadIso->setAdjusterListener (this);
|
||||||
// pixelShiftStddevFactor->set_tooltip_markup (M("TP_RAW_PIXELSHIFTSTDDEVFACTOR_TOOLTIP"));
|
// pixelShiftStddevFactor->set_tooltip_markup (M("TP_RAW_PIXELSHIFTSTDDEVFACTOR_TOOLTIP"));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user