From 62eb970aeeb6a472c7fd990e1128175d997127c6 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 17 Nov 2019 14:13:28 +0100 Subject: [PATCH] Capture sharpening: xtrans auto radius calculation bugfix --- rtengine/capturesharpening.cc | 81 ----------------------------------- 1 file changed, 81 deletions(-) diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index e271de2e6..55d2d3378 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -488,87 +488,6 @@ float calcRadiusXtrans(const float * const *rawData, int W, int H, float lowerLi } } } - const float valtl = rawData[row][col]; - const float valtr = rawData[row][col + 1]; - const float valbl = rawData[row + 1][col]; - const float valbr = rawData[row + 1][col + 1]; - if (valtl > 1.f) { - const float maxValtltr = std::max(valtl, valtr); - if (valtr > 1.f && maxValtltr > lowerLimit) { - const float minVal = std::min(valtl, valtr); - if (UNLIKELY(maxValtltr > maxRatio * minVal)) { - bool clipped = false; - if (maxValtltr == valtl) { // check for influence by clipped green in neighborhood - if (rtengine::max(rawData[row - 1][col - 1], valtr, valbl, valbr) >= upperLimit) { - clipped = true; - } - } else { // check for influence by clipped green in neighborhood - if (rtengine::max(rawData[row - 1][col + 2], valtl, valbl, valbr) >= upperLimit) { - clipped = true; - } - } - if (!clipped) { - maxRatio = maxValtltr / minVal; - } - } - } - const float maxValtlbl = std::max(valtl, valbl); - if (valbl > 1.f && maxValtlbl > lowerLimit) { - const float minVal = std::min(valtl, valbl); - if (UNLIKELY(maxValtlbl > maxRatio * minVal)) { - bool clipped = false; - if (maxValtlbl == valtl) { // check for influence by clipped green in neighborhood - if (rtengine::max(rawData[row - 1][col - 1], valtr, valbl, valbr) >= upperLimit) { - clipped = true; - } - } else { // check for influence by clipped green in neighborhood - if (rtengine::max(valtl, valtr, rawData[row + 2][col - 1], valbr) >= upperLimit) { - clipped = true; - } - } - if (!clipped) { - maxRatio = maxValtlbl / minVal; - } - } - } - } - if (valbr > 1.f) { - const float maxValblbr = std::max(valbl, valbr); - if (valbl > 1.f && maxValblbr > lowerLimit) { - const float minVal = std::min(valbl, valbr); - if (UNLIKELY(maxValblbr > maxRatio * minVal)) { - bool clipped = false; - if (maxValblbr == valbr) { // check for influence by clipped green in neighborhood - if (rtengine::max(valtl, valtr, valbl, rawData[row + 2][col + 2]) >= upperLimit) { - clipped = true; - } - } else { // check for influence by clipped green in neighborhood - if (rtengine::max(valtl, valtr, rawData[row + 2][col - 1], valbr) >= upperLimit) { - clipped = true; - } - } - if (!clipped) { - maxRatio = maxValblbr / minVal; - } - } - } - const float maxValtrbr = std::max(valtr, valbr); - if (valtr > 1.f && maxValtrbr > lowerLimit) { - const float minVal = std::min(valtr, valbr); - if (UNLIKELY(maxValtrbr > maxRatio * minVal)) { - if (maxValtrbr == valbr) { // check for influence by clipped green in neighborhood - if (rtengine::max(valtl, valtr, valbl, rawData[row + 2][col + 2]) >= upperLimit) { - continue; - } - } else { // check for influence by clipped green in neighborhood - if (rtengine::max(rawData[row - 1][col + 2], valtl, valbl, valbr) >= upperLimit) { - continue; - } - } - maxRatio = maxValtrbr / minVal; - } - } - } } } return std::sqrt((1.f / (std::log(1.f / maxRatio) / 2.f)) / -2.f);