基于Matlab的维纳滤波器在图像恢复中的应用

1.首先,导入原始图片;之后,在原图的基础上模拟运动模糊。

2.假设没有噪声,使用维纳滤波器对运动模糊的图像进行恢复。

3.已知含有噪声,使用维纳滤波器对运动模糊的图像进行恢复。

Matlab程序:

% 维纳滤波器的图像恢复,关于维纳滤波函数有wiener2和deconvwnr,分别适用于灰度图像和彩色图像

I = im2double(imread('Rabbit.jpg'));
figure();
subplot(2,2,1);
imshow(I);
title('原始图片');

% 模拟运动模糊。
LEN = 21;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');

% 模拟附加噪声。
noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, 'gaussian', ...
                  noise_mean, noise_var);
subplot(2,2,2);
imshow(blurred_noisy)
title('模拟模糊和噪点')

% 假设没有噪音,请尝试恢复。
estimated_nsr = 0;
wnr2 = deconvwnr(blurred_noisy, PSF, estimated_nsr);
subplot(2,2,3);
imshow(wnr2)
title('使用NSR = 0,恢复模糊的图像')

% 尝试使用对信号噪声功率的更好估计来进行恢复
% ratio.
estimated_nsr = noise_var / var(I(:));
wnr3 = deconvwnr(blurred_noisy, PSF, estimated_nsr);
subplot(2,2,4);
imshow(wnr3)
title('使用估计的NSR恢复模糊的噪点图像');

程序运行效果:

结论:通过对比下面两个结果图,可以发现维纳滤波使用有估计的NSR,图像恢复的效果较明显。

 

 

你可能感兴趣的:(图像处理,信号处理)