From 520557912b8f2358b649058fcfe826cdb8cf37c8 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 22 Nov 2016 16:35:11 +0100 Subject: [PATCH] pixelshift: changed formula for adaptive motion detection --- rtdata/languages/default | 4 ++-- rtengine/pixelshift.cc | 6 ++++-- rtgui/bayerprocess.cc | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 8520b8c36..01d5270e1 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1662,8 +1662,8 @@ TP_RAW_PIXELSHIFTMOTIONCORRECTION_TOOLTIP;1 = 2 pixels\n3 = 3x3 grid\n5 = 5x5 gr TP_RAW_PIXELSHIFTSHOWMOTION;Show motion TP_RAW_PIXELSHIFTSTDDEVFACTOR;StdDev factor TP_RAW_PIXELSHIFTEPERISO;e per ISO -TP_RAW_PIXELSHIFTNREADISO;nRead per ISO -TP_RAW_PIXELSHIFTPRNU;PRNU +TP_RAW_PIXELSHIFTNREADISO;nRead +TP_RAW_PIXELSHIFTPRNU;PRNU (%) 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_LABEL;Sensor with X-Trans Matrix diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index e88c4bfeb..c4c7d2c7d 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -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); if(adaptive) { 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 korr = stddevFactor * stddev / (a * scale); 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; 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 prnu = 1.f; // const float stddevFactor = 4.f; diff --git a/rtgui/bayerprocess.cc b/rtgui/bayerprocess.cc index 867d911e5..63705e472 100644 --- a/rtgui/bayerprocess.cc +++ b/rtgui/bayerprocess.cc @@ -132,7 +132,7 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA pixelShiftEperIso->show(); 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); // pixelShiftStddevFactor->set_tooltip_markup (M("TP_RAW_PIXELSHIFTSTDDEVFACTOR_TOOLTIP"));