From 23e60371ed29706b0780416b62134335405b1e76 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 24 Nov 2019 23:09:23 +0100 Subject: [PATCH 1/2] Use capture sharpening for pixelshift profiles --- rtdata/profiles/Pixel Shift/PS ISO Low.pp3 | 17 +++++------------ rtdata/profiles/Pixel Shift/PS No Motion.pp3 | 17 +++++------------ 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 b/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 index 5587b19e0..286b5a289 100644 --- a/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 +++ b/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 @@ -1,18 +1,8 @@ [Sharpening] -Enabled=true -Contrast=5 -Method=rld -DeconvRadius=0.75 -DeconvAmount=100 -DeconvDamping=0 -DeconvIterations=30 +Enabled=false [SharpenMicro] -Enabled=true -Contrast=15 -Matrix=false -Strength=20 -Uniformity=5 +Enabled=false [RAW] CA=true @@ -38,3 +28,6 @@ pixelShiftBlur=true pixelShiftSmoothFactor=0.69999999999999996 pixelShiftLmmse=false pixelShiftNonGreenCross=true + +[PostDemosaicSharpening] +Enabled=true diff --git a/rtdata/profiles/Pixel Shift/PS No Motion.pp3 b/rtdata/profiles/Pixel Shift/PS No Motion.pp3 index f1d889f97..0975251e2 100644 --- a/rtdata/profiles/Pixel Shift/PS No Motion.pp3 +++ b/rtdata/profiles/Pixel Shift/PS No Motion.pp3 @@ -1,18 +1,8 @@ [Sharpening] -Enabled=true -Contrast=5 -Method=rld -DeconvRadius=0.75 -DeconvAmount=100 -DeconvDamping=0 -DeconvIterations=30 +Enabled=false [SharpenMicro] -Enabled=true -Contrast=15 -Matrix=false -Strength=20 -Uniformity=5 +Enabled=false [RAW] CA=true @@ -22,3 +12,6 @@ Method=pixelshift PixelShiftMotion=0 PixelShiftMotionCorrection=5 PixelShiftMotionCorrectionMethod=0 + +[PostDemosaicSharpening] +Enabled=true From f054ed00e8f08cd256288b901fb3576a1f321618 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 25 Nov 2019 01:00:49 +0100 Subject: [PATCH 2/2] Pixelshift: optionally use RCD+VNG4 for motion parts --- rtengine/pixelshift.cc | 8 ++++++++ rtengine/procparams.cc | 1 + rtengine/procparams.h | 1 + 3 files changed, 10 insertions(+) diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index ff529697b..2e98b7b22 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -339,6 +339,8 @@ BENCHFUN lmmse_interpolate_omp(winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.lmmse_iterations); } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.dualDemosaicContrast, true); + } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::RCDVNG4)) { + dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[0]), red, green, blue, options.chunkSizeAMAZE, options.measure); } @@ -351,6 +353,8 @@ BENCHFUN lmmse_interpolate_omp(winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.lmmse_iterations); } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.dualDemosaicContrast, true); + } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::RCDVNG4)) { + dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], options.chunkSizeAMAZE, options.measure); } @@ -380,6 +384,10 @@ BENCHFUN procparams::RAWParams rawParamsTmp = rawParamsIn; rawParamsTmp.bayersensor.method = procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::AMAZEVNG4); dual_demosaic_RT (true, rawParamsTmp, winw, winh, rawData, red, green, blue, bayerParams.dualDemosaicContrast, true); + } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::RCDVNG4)) { + procparams::RAWParams rawParamsTmp = rawParamsIn; + rawParamsTmp.bayersensor.method = procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::RCDVNG4); + dual_demosaic_RT (true, rawParamsTmp, winw, winh, rawData, red, green, blue, bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, rawData, red, green, blue, options.chunkSizeAMAZE, options.measure); } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 9483c6a02..ba6fc237b 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2672,6 +2672,7 @@ const std::vector& RAWParams::BayerSensor::getPSDemosaicMethodStrin static const std::vector method_strings { "amaze", "amazevng4", + "rcdvng4", "lmmse" }; return method_strings; diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 01c54ffc5..c41e55872 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1388,6 +1388,7 @@ struct RAWParams { enum class PSDemosaicMethod { AMAZE, AMAZEVNG4, + RCDVNG4, LMMSE };