读入 cameraman 图像, 进行运动模糊和高斯噪声退化; 利用函数 deconvblind 恢复退化图像 cameraman_b_n, 并计算峰值信噪比 PSNR; 在一个窗口中显示原始图像, 退化图像和恢复结果, 并给出MATLAB代码
时间: 2024-02-18 13:05:13 浏览: 105
好的,以下是MATLAB代码:
```matlab
% 读入cameraman图像
cameraman = imread('cameraman.tif');
% 进行运动模糊
PSF = fspecial('motion', 20, 45);
motion_blur = imfilter(cameraman, PSF, 'conv', 'circular');
% 加入高斯噪声
noise_mean = 0;
noise_var = 0.0001;
motion_blur = imnoise(motion_blur, 'gaussian', noise_mean, noise_var);
% 恢复退化图像
estimated_nsr = noise_var / var(cameraman(:));
cameraman_b_n = deconvblind(motion_blur, PSF, 10, estimated_nsr);
% 计算峰值信噪比PSNR
PSNR = psnr(cameraman, cameraman_b_n);
% 在一个窗口中显示原始图像,退化图像和恢复结果
figure;
subplot(1,3,1); imshow(cameraman); title('Original Image');
subplot(1,3,2); imshow(motion_blur); title('Degraded Image');
subplot(1,3,3); imshow(cameraman_b_n); title('Restored Image');
% 输出PSNR结果
disp(['PSNR: ', num2str(PSNR), ' dB']);
```
希望能帮到你!
阅读全文