From ce282f5c97b3e5fef1893682b299a178c17badb3 Mon Sep 17 00:00:00 2001 From: Desmis Date: Thu, 14 Nov 2019 20:20:36 +0100 Subject: [PATCH] Fixed crash in wavelet level denoise --- rtengine/FTblockDN.cc | 6 ++++-- rtengine/ipwavelet.cc | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 128b78eb6..013cdad8f 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -2736,7 +2736,6 @@ void ImProcFunctions::ShrinkAllL(const wavelet_decomposition &WaveletCoeffs_L, f } } - int i = 0; #ifdef __SSE2__ const vfloat levelFactorv = F2V(levelFactor); @@ -2745,10 +2744,12 @@ void ImProcFunctions::ShrinkAllL(const wavelet_decomposition &WaveletCoeffs_L, f for (i = 0; i < W_L * H_L - 3; i += 4) { - const vfloat mad_Lv = LVFU(noisevarlum[i]) * levelFactorv; + // const vfloat mad_Lv = LVFU(noisevarlum[i]) * levelFactorv; + const vfloat mad_Lv = LVFU(nvl[i]) * levelFactorv; const vfloat magv = SQRV(LVFU(WavCoeffs_L[dir][i])); STVFU(sfave[i], magv / (magv + mad_Lv * xexpf(-magv / (ninev * mad_Lv)) + epsv)); } + #endif // few remaining pixels for (; i < W_L * H_L; ++i) { @@ -2773,6 +2774,7 @@ void ImProcFunctions::ShrinkAllL(const wavelet_decomposition &WaveletCoeffs_L, f //use smoothed shrinkage unless local shrinkage is much less WavCoeffs_L[dir][i] *= (SQR(sfaved[i]) + SQR(sf)) / (sfaved[i] + sf + eps); }//now luminance coefficients are denoised + delete [] nvl; } diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index bb750f005..454f4fed8 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -917,6 +917,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const float* noisevarlum = nullptr; // we need a dummy to pass it to WaveletDenoiseAllL WaveletDenoiseAllL (*Ldecomp, noisevarlum, madL, vari, edge, 1); + } //Flat curve for Contrast=f(H) in levels