读入 lena 图像, 进行高斯模糊和高斯噪声退化; 分别利用函数 deconvwnr, deconvreg 和 deconvblind 恢复退化图像 lena_b_n, 并计算各自的峰值信噪比 PSNR; 分别在一个窗口中显示原始图像, 退化图像和恢复结果, 并给出MATLAB代码
时间: 2024-02-18 20:04:14 浏览: 86
基于Matlab的高斯模糊图像去噪方法研究
好的,以下是MATLAB代码实现:
```matlab
% 读入lena图像
lena = imread('lena.png');
lena = im2double(lena);
% 进行高斯模糊和高斯噪声退化
h = fspecial('gaussian', [5 5], 2);
lena_b = imfilter(lena, h, 'conv', 'circular');
lena_b_n = imnoise(lena_b, 'gaussian', 0, 0.01);
% 利用deconvwnr函数恢复退化图像lena_b_n
wnr_lena = deconvwnr(lena_b_n, h);
wnr_psnr = psnr(lena, wnr_lena);
% 利用deconvreg函数恢复退化图像lena_b_n
reg_lena = deconvreg(lena_b_n, h);
reg_psnr = psnr(lena, reg_lena);
% 利用deconvblind函数恢复退化图像lena_b_n
blind_lena = deconvblind(lena_b_n, h);
blind_psnr = psnr(lena, blind_lena);
% 在一个窗口中显示原始图像、退化图像和恢复结果
figure;
subplot(2,2,1); imshow(lena); title('Original Image');
subplot(2,2,2); imshow(lena_b_n); title('Degraded Image');
subplot(2,2,3); imshow(wnr_lena); title(['Restored Image (PSNR = ' num2str(wnr_psnr) ')']);
subplot(2,2,4); imshow(reg_lena); title(['Restored Image (PSNR = ' num2str(reg_psnr) ')']);
subplot(2,2,5); imshow(blind_lena); title(['Restored Image (PSNR = ' num2str(blind_psnr) ')']);
```
希望这个代码可以帮助你。
阅读全文