From d4168b665ee8735178f1be989bbda4cb314fe1fe Mon Sep 17 00:00:00 2001 From: "Gregory R. Lee" Date: Wed, 10 Aug 2016 18:33:02 -0400 Subject: [PATCH] MAINT: more memory efficient multichannel implementation also make multichannel default to False to match other denoising routines --- skimage/restoration/_denoise.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/skimage/restoration/_denoise.py b/skimage/restoration/_denoise.py index 795d3602..4e724447 100644 --- a/skimage/restoration/_denoise.py +++ b/skimage/restoration/_denoise.py @@ -394,7 +394,8 @@ def _wavelet_threshold(img, wavelet, threshold=None, sigma=None, mode='soft'): return pywt.waverecn(denoised_coeffs, wavelet) -def denoise_wavelet(img, multichannel, sigma=None, wavelet='db1', mode='soft'): +def denoise_wavelet(img, sigma=None, wavelet='db1', mode='soft', + multichannel=False): """Performs wavelet denoising on an image. Parameters @@ -458,9 +459,10 @@ def denoise_wavelet(img, multichannel, sigma=None, wavelet='db1', mode='soft'): img = img_as_float(img) if multichannel: - out = np.stack([_wavelet_threshold(img[..., c], wavelet=wavelet, - mode=mode, sigma=sigma) - for c in range(img.ndim)], axis=-1) + out = np.empty_like(img) + for c in range(img.ndim): + out[..., c] = _wavelet_threshold(img[..., c], wavelet=wavelet, + mode=mode, sigma=sigma) else: out = _wavelet_threshold(img, wavelet=wavelet, mode=mode, sigma=sigma)