Denoise — Max

import numpy as np import cv2 import pywt from skimage.restoration import denoise_nl_means, denoise_bilateral from skimage.util import random_noise def max_denoise(image, sigma=0.1, h=1.15, wavelet='db8'): """ Apply maximum-strength denoising using a cascade of methods.

# Apply hard thresholding to detail coefficients def threshold_coeffs(coeff_list, thr): return [pywt.threshold(c, thr, mode='hard') for c in coeff_list] max denoise

return np.clip(denoised, 0, 1) if name == " main ": import matplotlib.pyplot as plt from skimage import data, img_as_float import numpy as np import cv2 import pywt from skimage

if denoised.ndim == 2: coeffs = list(coeffs) coeffs[1:] = threshold_coeffs(coeffs[1:], threshold) denoised = pywt.waverec2(coeffs, wavelet) else: coeffs = list(coeffs) coeffs[1:] = threshold_coeffs(coeffs[1:], threshold) denoised = pywt.waverec(coeffs, wavelet) thr): return [pywt.threshold(c

# 1. Strong Non-Local Means (preserves edges while smoothing flat regions) denoised = denoise_nl_means(image, h=h, sigma=sigma, fast_mode=True, patch_size=7, patch_distance=11, multichannel=(image.ndim==3))