matlab,频域滤波法滤除图片中的周期噪声,代码
时间: 2024-03-21 21:40:51 浏览: 43
以下是使用MATLAB进行频域滤波法滤除图片中的周期噪声的示例代码:
```matlab
% 读入图像
img = imread('lena.jpg');
% 转换为灰度图像
img = im2gray(img);
% 显示原图像
subplot(1, 2, 1);
imshow(img);
title('原图像');
% 进行傅里叶变换
f = fft2(img);
% 将频域零频分量移到中心位置
fshift = fftshift(f);
% 设置滤波器,这里使用带阻滤波器
[M, N] = size(img);
D0 = 40; % 滤波器的截止频率
H = ones(M, N);
for i = 1:M
for j = 1:N
D = sqrt((i-M/2)^2 + (j-N/2)^2);
if D >= D0-5 && D <= D0+5
H(i, j) = 0;
end
end
end
% 将滤波器应用于频域图像
g = H .* fshift;
% 将零频分量移回原位置
gshift = ifftshift(g);
% 进行逆傅里叶变换,得到滤波后的图像
img_filtered = ifft2(gshift);
% 显示滤波后的图像
img_filtered = abs(img_filtered);
subplot(1, 2, 2);
imshow(img_filtered, []);
title('滤波后的图像');
```
这段代码中使用了带阻滤波器来滤除图像中的周期噪声。具体来说,滤波器在中心频率处有一个截止频率,该频率范围内的信号将被滤除。可以根据实际情况调整截止频率的大小。