我想应用我在标题中命名的去噪滤波器,该滤波器基于以下方程:
其中 d = 1 是标量常数扩散率参数,I(x, y) 是初始噪声图像,u(x, y, t) 是扩散时间 t(假设为 5、10 和 30)后获得的图像。但是,我很困惑要使用哪个函数以及如何在 python 中实现此目的?
这是示例图片:
来自我的博客的各向同性扩散过程的一个非常简单的实现将如下使用简单的梯度下降:
from skimage.io import imread
import scipy.ndimage as ndimage
def plot_image(iter):
plt.imshow(u), plt.axis('off'), plt.title(f'Gradient Decent Iter = {iter}')
plt.tight_layout()
plt.show()
u = imread('lena.jpg', True) # read grayscale image
u = u / u.max() # normalize
η = 0.1
for i in range(50):
u = u + η*ndimage.laplace(u) # gradient descent step: u <- u + η*∇.∇u
u = (u - u.min()) / (u.max() - u.min()) # normalize
plot_image(i)
Lena (Lenna) 图像的各向同性扩散将导致下一个动画中显示的输出: