用Matlab写一段逆滤波法恢复图像的代码
时间: 2023-05-28 11:02:25 浏览: 102
以下是一个简单的使用逆滤波法恢复图像的 Matlab 代码示例:
```matlab
% 读入待处理的图像
input_image = imread('input_image.png');
% 显示待处理的图像
imshow(input_image);
title('原始图像');
% 生成一个高斯模糊核,模拟图像模糊
kernel_size = 15;
sigma = 5;
blur_kernel = fspecial('gaussian', [kernel_size kernel_size], sigma);
% 对图像进行模糊
blur_image = imfilter(input_image, blur_kernel, 'conv', 'replicate');
% 显示模糊后的图像
imshow(blur_image);
title('模糊后的图像');
% 生成逆滤波核
invert_kernel = fftshift(ifft2(fft2(blur_image)./fft2(input_image)));
% 利用逆滤波核对模糊图像进行反卷积操作,恢复原始图像
restore_image = imfilter(blur_image, invert_kernel, 'conv', 'replicate');
% 显示恢复后的图像
imshow(restore_image);
title('恢复后的图像');
```
此代码生成一个高斯模糊核来模拟图像模糊,然后使用逆滤波法恢复原始图像。 运行代码可以看到,原始图像通过模糊后变得模糊不清,而使用逆滤波法后,图像被成功恢复到原始状态。 注意,实际应用中逆滤波法可能会产生噪声和伪影,因此需要使用更高级的恢复算法。
阅读全文