帮我写一段matlab代码,实现图像的主动退化并用逆滤波方法对图像进行复原
时间: 2024-11-13 09:18:25 浏览: 42
当然可以。在MATLAB中,你可以使用一些内置函数来实现图像的主动退化(如高斯模糊或椒盐噪声添加)以及逆滤波方法(如Wiener滤波)。这里是一个简单的例子:
```matlab
% 导入图像
img = imread('your_image.jpg'); % 替换为你要处理的图片文件名
% 主动退化(这里以高斯模糊为例)
sigma = 2; % 高斯核的标准差,可以根据需求调整
blurred_img = imfilter(img, fspecial('gaussian', [5 5], sigma));
% 模拟椒盐噪声(如果需要,替换为saltAndPepperNoise)
salt_percent = 0.05; % 盐噪声的比例
pepper_percent = 0.05;
noisy_img = saltAndPepperNoise(blurred_img, salt_percent, pepper_percent);
% 对图像进行逆滤波复原(这里使用Wiener滤波)
recovered_img = wiener(noisy_img);
% 显示原始、退化及复原后的图像
subplot(2, 2, 1), imshow(img, 'InitialMagnification', 'fit');
title('Original Image');
subplot(2, 2, 2), imshow(blurred_img, 'InitialMagnification', 'fit');
title('Blurred Image');
subplot(2, 2, 3), imshow(noisy_img, 'InitialMagnification', 'fit');
title('Noisy Image');
subplot(2, 2, 4), imshow(recovered_img, 'InitialMagnification', 'fit');
title('Recovered Image');
function noisy_img = saltAndPepperNoise(img, salt_percent, pepper_percent)
noisy_img = img + (rand(size(img)) < salt_percent) - 0.5;
noisy_img = noisy_img + (rand(size(img)) < pepper_percent) * 0.5;
end
```
别忘了替换`'your_image.jpg'`为你实际要处理的图像文件路径。运行这段代码会显示原始图像、模糊图像、添加噪声后的图像以及经过Wiener滤波复原后的图像。
阅读全文