编写一个利用维纳滤波方法进行图像复原的MATLAB
时间: 2024-05-03 08:17:19 浏览: 123
以下是一个简单的MATLAB代码,用于利用维纳滤波方法进行图像复原:
```matlab
%% 读取图像
I = imread('lena.jpg');
figure, imshow(I), title('原始图像');
%% 添加噪声
In = imnoise(I, 'gaussian', 0, 0.01);
figure, imshow(In), title('添加高斯噪声后的图像');
%% 维纳滤波
K = fspecial('gaussian', [5 5], 2); % 高斯滤波器
J = deconvwnr(In, K, 0.001); % 维纳滤波
figure, imshow(J), title('维纳滤波恢复图像');
```
首先,读取原始图像,并在此基础上添加高斯噪声。然后,使用`fspecial`函数创建一个高斯滤波器,该滤波器的大小为$5\times5$,标准差为$2$。最后,使用`deconvwnr`函数对添加噪声的图像进行维纳滤波处理,并将结果显示出来。
请注意,维纳滤波需要估计图像和噪声的功率谱密度,这里使用了一个简单的常数来估计噪声功率。在实际应用中,可能需要更准确的估计。此外,维纳滤波也可能会引入一些伪影,这也需要进行适当的调整。
阅读全文