分别采用频率域和空间域的若干种低通滤波器对图片进行滤波操作,取半径为5、15、30、80和230,分别输出结果图片。
时间: 2024-01-14 21:03:02 浏览: 85
DZY_低通滤波器_对加噪语音信号进行时域、频域分析和滤波_
5星 · 资源好评率100%
以下是使用MATLAB实现频率域和空间域的若干种低通滤波器进行图片滤波的示例代码。假设图片为lena.png。
频率域低通滤波器:
```matlab
%读入图像
img = imread('lena.png');
%图像傅里叶变换
fimg = fftshift(fft2(double(img)));
%生成低通滤波掩模
[m,n] = size(fimg);
radii = [5,15,30,80,230];
for i = 1:length(radii)
radius = radii(i);
h = fspecial('disk',radius);
h = padarray(h,[m-radius n-radius],0,'post');
%将低通滤波掩模中心点设为1
h = circshift(h,-floor(size(h)/2));
%滤波
fimg_lp = fimg .* h;
%逆傅里叶变换
img_lp = uint8(real(ifft2(ifftshift(fimg_lp))));
%显示滤波后的图像
figure;
imshow(img_lp);
title(sprintf('Frequency domain low-pass filter, radius=%d',radius));
end
```
空间域低通滤波器:
```matlab
%读入图像
img = imread('lena.png');
%生成低通滤波掩模
radii = [5,15,30,80,230];
for i = 1:length(radii)
radius = radii(i);
h = fspecial('disk',radius);
%滤波
img_lp = imfilter(img,h);
%显示滤波后的图像
figure;
imshow(img_lp);
title(sprintf('Spatial domain low-pass filter, radius=%d',radius));
end
```
在频率域低通滤波器的示例代码中,使用 `fftshift` 函数将频谱移动使得低频部分在图像中心,滤波后使用 `ifftshift` 函数移回原位。在空间域低通滤波器的示例代码中,使用 `imfilter` 函数进行滤波操作。
阅读全文