已知含有噪声,使用维纳滤波器对运动模糊的图像进行恢复MATLAB 代码
时间: 2023-05-28 07:08:01 浏览: 308
以下是使用维纳滤波器对运动模糊图像进行恢复的MATLAB代码:
```matlab
% 读入运动模糊图像
img = imread('motion_blur_image.png');
% 添加高斯噪声
noisy_img = imnoise(img, 'gaussian', 0, 0.01);
% 设置运动模糊参数
len = 21; % 运动模糊核长度
theta = 11; % 运动模糊核角度
motion_psf = fspecial('motion', len, theta); % 生成运动模糊核
% 对图像进行运动模糊
blurred_img = imfilter(noisy_img, motion_psf, 'conv', 'circular');
% 使用维纳滤波器进行图像恢复
estimated_nsr = 0.001; % 估计噪声方差
wnr_img = deconvwnr(blurred_img, motion_psf, estimated_nsr);
% 显示原图像、含噪声图像和恢复图像
subplot(1,3,1); imshow(img); title('Original Image');
subplot(1,3,2); imshow(noisy_img); title('Noisy Image');
subplot(1,3,3); imshow(wnr_img); title('Restored Image');
```
在上述代码中,我们首先读入运动模糊图像,并添加高斯噪声。然后,我们设置运动模糊参数并在图像上应用运动模糊。接下来,我们使用`deconvwnr`函数对模糊图像进行维纳滤波器恢复,并估计噪声方差。最后,我们使用`subplot`函数显示原始图像、含噪声图像和恢复图像。
阅读全文