用matlab实现分别利用逆滤波和一种改进的逆滤波对大气湍流退化图像进行恢复处理,同屏显示退化图像和恢复图像,计算恢复图像的峰值信噪比PSNR。
时间: 2023-08-27 08:22:36 浏览: 75
好的,下面是用Matlab实现分别利用逆滤波和一种改进的逆滤波对大气湍流退化图像进行恢复处理的步骤:
1. 读取大气湍流退化图像
```matlab
I = imread('degraded_image.png');
```
2. 对退化图像进行傅里叶变换
```matlab
F = fft2(I);
```
3. 构造退化函数H
```matlab
[N, M] = size(I);
[X, Y] = meshgrid(1:M,1:N);
cx = round(M/2);
cy = round(N/2);
D0 = 10;
H = exp(-1j*pi*((X-cx).^2+(Y-cy).^2)./(D0^2));
```
4. 对退化函数H进行逆滤波处理
```matlab
G = F./H;
J = real(ifft2(G));
```
5. 对退化函数H进行改进的逆滤波处理
```matlab
k = 0.1; % 恢复增益
G1 = conj(H)./(abs(H).^2+k);
G2 = F.*G1;
J1 = real(ifft2(G2));
```
6. 计算恢复图像的峰值信噪比PSNR
```matlab
psnr1 = psnr(J, I);
psnr2 = psnr(J1, I);
```
7. 同屏显示退化图像和恢复图像
```matlab
figure;
subplot(2,2,1); imshow(I); title('退化图像');
subplot(2,2,2); imshow(J,[]); title(['逆滤波恢复图像, PSNR=',num2str(psnr1)]);
subplot(2,2,3); imshow(I); title('退化图像');
subplot(2,2,4); imshow(J1,[]); title(['改进的逆滤波恢复图像, PSNR=',num2str(psnr2)]);
```
希望这些信息能够帮助到您!
阅读全文