读入 lena 图像, 进行高斯模糊和高斯噪声退化; 分别利用函数 deconvwnr, deconvreg 和 deconvblind 恢复退化图像 lena_b_n, 并计算各自的峰值信噪比 PSNR; 分别在一个窗口中显示原始图像, 退化图像和恢复结果, 并给出MATLAB代码
时间: 2024-02-18 09:03:37 浏览: 57
基于Matlab的高斯模糊图像去噪方法研究
好的,我知道了。下面是MATLAB代码实现:
```matlab
% 读入lena图像
lena = imread('lena.png');
% 显示原始图像
figure;
subplot(1,3,1);
imshow(lena);
title('Original Image');
% 进行高斯模糊和高斯噪声退化
h = fspecial('gaussian', [5 5], 2);
lena_b = imfilter(lena, h, 'circular');
lena_b_n = imnoise(lena_b, 'gaussian', 0, 0.01);
% 显示退化图像
subplot(1,3,2);
imshow(lena_b_n);
title('Degraded Image');
% 利用deconvwnr函数恢复退化图像
lena_deconvwnr = deconvwnr(lena_b_n, h);
% 计算峰值信噪比PSNR
psnr_deconvwnr = psnr(lena_deconvwnr, lena);
% 显示恢复结果
subplot(1,3,3);
imshow(lena_deconvwnr);
title(['Restored Image, PSNR = ' num2str(psnr_deconvwnr)]);
% 利用deconvreg函数恢复退化图像
lena_deconvreg = deconvreg(lena_b_n, h);
% 计算峰值信噪比PSNR
psnr_deconvreg = psnr(lena_deconvreg, lena);
% 显示恢复结果
figure;
subplot(1,3,1);
imshow(lena);
title('Original Image');
subplot(1,3,2);
imshow(lena_b_n);
title('Degraded Image');
subplot(1,3,3);
imshow(lena_deconvreg);
title(['Restored Image, PSNR = ' num2str(psnr_deconvreg)]);
% 利用deconvblind函数恢复退化图像
lena_deconvblind = deconvblind(lena_b_n, h);
% 计算峰值信噪比PSNR
psnr_deconvblind = psnr(lena_deconvblind, lena);
% 显示恢复结果
figure;
subplot(1,3,1);
imshow(lena);
title('Original Image');
subplot(1,3,2);
imshow(lena_b_n);
title('Degraded Image');
subplot(1,3,3);
imshow(lena_deconvblind);
title(['Restored Image, PSNR = ' num2str(psnr_deconvblind)]);
```
注意,这里使用了三个函数:deconvwnr、deconvreg和deconvblind,分别对应于维纳滤波、正则化滤波和盲反卷积。这些函数需要在MATLAB Image Processing Toolbox中使用。
阅读全文