用维纳滤波器进行图片恢复MATLAB代码
时间: 2023-05-28 12:07:40 浏览: 206
基于STFT的自适应维纳滤波器附matlab代码 上传.zip
这里提供一个简单的MATLAB代码示例,用于使用维纳滤波器进行图像恢复:
```matlab
% 读取待处理的图像
img = imread('lena.png');
% 生成模糊图像
h = fspecial('motion', 50, 45);
blurred = imfilter(img, h, 'conv', 'circular');
% 计算噪声方差
noise_var = var(im2double(blurred(:)));
% 计算维纳滤波器
wiener_filter = deconvwnr(blurred, h, noise_var);
% 显示结果
figure;
subplot(1, 3, 1);
imshow(img);
title('原始图像');
subplot(1, 3, 2);
imshow(blurred);
title('模糊图像');
subplot(1, 3, 3);
imshow(wiener_filter);
title('维纳滤波器恢复');
```
在这个代码中,我们先读取了一张图像,并使用 `fspecial` 函数生成了一个模糊核。然后,我们使用 `imfilter` 函数将模糊核应用到原始图像上,生成了一个模糊图像。接下来,我们计算了噪声方差,并使用 `deconvwnr` 函数计算了维纳滤波器。最后,我们将原始图像、模糊图像和使用维纳滤波器恢复的图像在一个图像窗口中进行了展示。
需要注意的是,这个代码示例只是一个简单的演示,实际应用中需要根据具体情况进行调整和优化。
阅读全文