MATLAB 高斯低通滤波去除椒盐噪声
本段代码使用 MATLAB 实现对含有椒盐噪声的图像进行高斯低通滤波处理。
首先读入一张灰度图像,并加入椒盐噪声。然后通过 freqspace 函数生成频域坐标,计算每个位置到图像中心的距离,并根据距离计算滤波器的响应值。接着对原图像进行二维傅里叶变换,并进行频域平移。然后将频域图像与滤波器相乘,再进行频域平移。最后进行二维傅里叶反变换,得到滤波后的图像。最后将原图像、加噪后的图像和滤波后的图像分别显示在子图中。
代码:
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('高斯低通滤波处理');
原文地址: https://www.cveoy.top/t/topic/nAq4 著作权归作者所有。请勿转载和采集!