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('高斯低通滤波处理');

代码说明:

  1. 首先,读入测试图像并加入椒盐噪声,然后显示加入噪声后的图像。
  2. 使用 freqspace 函数生成频域网格,并计算出频域上的距离 r
  3. 根据高斯低通滤波器的公式,利用 exp 函数计算出频率响应 Hd
  4. 最后对加入噪声后的图像进行傅里叶变换,并将变换后的频谱乘以 Hd 得到滤波后的频谱 Ya,再进行傅里叶反变换,得到滤波后的图像 Ia
  5. 最后,分别显示原图像、加噪后的图像和滤波后的图像。

原理:

高斯低通滤波器是一种线性滤波器,它通过在频域中衰减高频成分来平滑图像。其频率响应是一个高斯函数,中心频率对应于低频,边缘频率对应于高频。

代码中关键函数说明:

  • imread:读取图像文件
  • imnoise:添加噪声
  • freqspace:生成频域网格
  • fft2:二维傅里叶变换
  • fftshift:将频谱中心移到图像中心
  • ifftshift:将频谱中心移回原点
  • ifft2:二维傅里叶反变换
  • imshow:显示图像

本代码示例演示了使用 Matlab 实现高斯低通滤波器去除椒盐噪声,可以帮助您理解图像处理中的频域滤波技术。您可以根据实际需求修改代码参数和图像文件,以实现不同的滤波效果。

Matlab 高斯低通滤波器去除椒盐噪声

原文地址: https://www.cveoy.top/t/topic/nAqA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录