通过python模拟各向同性线性扩散平滑

问题描述 投票:0回答:1

我想应用我在标题中命名的去噪滤波器,该滤波器基于以下方程:

在此输入图片描述

其中 d = 1 是标量常数扩散率参数,I(x, y) 是初始噪声图像,u(x, y, t) 是扩散时间 t(假设为 5、10 和 30)后获得的图像。但是,我很困惑要使用哪个函数以及如何在 python 中实现此目的?

这是示例图片:

python opencv smoothing
1个回答
0
投票

来自我的博客的各向同性扩散过程的一个非常简单的实现将如下使用简单的梯度下降:

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) 图像的各向同性扩散将导致下一个动画中显示的输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.