Matlab 高斯低通滤波器去除椒盐噪声
Matlab 高斯低通滤波器去除椒盐噪声
本代码使用高斯低通滤波器对加入椒盐噪声后的图像进行滤波处理,以恢复图像的清晰度。
I = rgb2gray(imread('D:\matblab_21b\projects\picture\test.tif'));
IA = imnoise(I, 'salt & pepper'); %% 加入椒盐噪声
subplot(222), imshow(IA);
title('加入椒盐噪声后的图像');
[f1, f2] = freqspace(size(IA), 'meshgrid');
D = 100 / size(IA, 1);
r = f1.^2 + f2.^2;
Hd = ones(size(IA));
for i = 1:size(IA, 1)
for j = 1:size(IA, 2)
t = r(i, j) / (D * D);
Hd(i, j) = exp(-t);
end
end
Y = fft2(double(IA));
Y = fftshift(Y);
Ya = Y .* Hd;
Ya = ifftshift(Ya);
Ia = real(ifft2(Ya));
subplot(221), imshow(uint8(I));
title('原图像');
subplot(223), imshow(uint8(Ia));
title('高斯低通滤波处理');
代码说明:
- 首先,读入测试图像并加入椒盐噪声,然后显示加入噪声后的图像。
- 使用
freqspace函数生成频域网格,并计算出频域上的距离r。 - 根据高斯低通滤波器的公式,利用
exp函数计算出频率响应Hd。 - 最后对加入噪声后的图像进行傅里叶变换,并将变换后的频谱乘以
Hd得到滤波后的频谱Ya,再进行傅里叶反变换,得到滤波后的图像Ia。 - 最后,分别显示原图像、加噪后的图像和滤波后的图像。
原理:
高斯低通滤波器是一种线性滤波器,它通过在频域中衰减高频成分来平滑图像。其频率响应是一个高斯函数,中心频率对应于低频,边缘频率对应于高频。
代码中关键函数说明:
imread:读取图像文件imnoise:添加噪声freqspace:生成频域网格fft2:二维傅里叶变换fftshift:将频谱中心移到图像中心ifftshift:将频谱中心移回原点ifft2:二维傅里叶反变换imshow:显示图像
本代码示例演示了使用 Matlab 实现高斯低通滤波器去除椒盐噪声,可以帮助您理解图像处理中的频域滤波技术。您可以根据实际需求修改代码参数和图像文件,以实现不同的滤波效果。
原文地址: https://www.cveoy.top/t/topic/nAqA 著作权归作者所有。请勿转载和采集!