matlab实现分别利用逆滤波和一种改进的逆滤波对大气湍流退化图像进行恢复处理,同屏显示退化图像和恢复图像,计算恢复图像的峰值信噪比PSNR
时间: 2023-08-27 10:22:43 浏览: 131
以下是MATLAB代码实现:
```matlab
% 读入图像
im = imread('degraded_image.png');
% 显示退化图像
subplot(1,3,1);
imshow(im);
title('退化图像');
% 生成点扩散函数(PSF)
psf = fspecial('motion', 20, 45);
% 对退化图像进行模糊处理
im_blur = imfilter(im, psf, 'conv', 'circular');
% 显示模糊后的图像
subplot(1,3,2);
imshow(im_blur);
title('模糊图像');
% 逆滤波
im_inv = deconvwnr(im_blur, psf, 0.05);
% 显示逆滤波恢复后的图像
subplot(1,3,3);
imshow(im_inv);
title('逆滤波恢复图像');
% 计算恢复图像的PSNR
psnr_val = psnr(im, im_inv);
fprintf('恢复图像的PSNR为 %.2f dB\n', psnr_val);
```
上述代码中,我们首先读入退化图像,并显示在第一个子图中。然后,我们生成点扩散函数(PSF),并对退化图像进行模糊处理,得到模糊后的图像,显示在第二个子图中。接着,我们分别使用逆滤波和改进的逆滤波对模糊图像进行恢复处理,其中改进的逆滤波参数 $\kappa$ 取值为0.05。最后,我们将逆滤波恢复后的图像显示在第三个子图中,并计算其PSNR值。
需要注意的是,逆滤波容易受到噪声的影响,会产生放大噪声的效果,导致恢复图像的质量较差。因此,在实际应用中,一般会采用一些改进的逆滤波算法,如最小二乘逆滤波、正则化逆滤波等,以提高恢复图像的质量。
阅读全文