利用MATLAB提供的低通滤波器实现对图像频谱图的滤波运算
时间: 2023-11-09 16:04:20 浏览: 83
在 MATLAB 中,可以使用 `fspecial` 函数创建低通滤波器的核。然后,可以使用 `imfilter` 函数将该核应用于图像。以下是一个简单的代码示例:
```matlab
% 读入图像
img = imread('example.png');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 计算图像的傅里叶变换
fft_img = fft2(gray_img);
% 将频谱移到中心
fft_img = fftshift(fft_img);
% 创建低通滤波器的核
D0 = 50; % 截止频率
h = fspecial('gaussian', size(img), D0);
% 将滤波器核移到中心
h = fftshift(h);
% 将滤波器核应用于频谱
filtered_fft_img = fft_img .* h;
% 将频谱移回原来的位置
filtered_fft_img = ifftshift(filtered_fft_img);
% 反傅里叶变换得到滤波后的图像
filtered_img = ifft2(filtered_fft_img);
% 显示原图像和滤波后的图像
subplot(1, 2, 1);
imshow(gray_img);
title('原图像');
subplot(1, 2, 2);
imshow(abs(filtered_img), []);
title('低通滤波后的图像');
```
在上面的代码中,我们首先读入图像并将其转换为灰度图像。然后,我们计算图像的傅里叶变换,并将频谱移到中心位置。接下来,我们使用 `fspecial` 函数创建一个高斯低通滤波器的核,并将其移到频谱的中心位置。然后,我们将该核应用于频谱,并将结果移回原来的位置。最后,我们使用反傅里叶变换将滤波后的频谱转换回空间域,并显示原图像和滤波后的图像。
请注意,上述代码中的截止频率 `D0` 可以根据您需要的滤波效果进行调整。较小的值会导致更强的低通滤波效果,而较大的值会导致较弱的低通滤波效果。
阅读全文
相关推荐















