傅立叶变换低通滤波matlab代码
时间: 2023-10-03 15:04:42 浏览: 159
以下是在 MATLAB 中实现傅里叶变换低通滤波的示例代码:
```matlab
% 读取图像
img = imread('lena.jpg');
% 转换为灰度图像
img_gray = rgb2gray(img);
% 进行傅里叶变换
f = fft2(img_gray);
fshift = fftshift(f);
% 设置低通滤波的截止频率
d = 30;
% 创建圆形掩模
[M, N] = size(f);
mask = zeros(M, N);
center_x = floor(M/2)+1;
center_y = floor(N/2)+1;
for i = 1:M
for j = 1:N
dist = sqrt((i-center_x)^2 + (j-center_y)^2);
if dist <= d
mask(i, j) = 1;
end
end
end
% 进行低通滤波
fshift = fshift .* mask;
fshift = ifftshift(fshift);
img_back = ifft2(fshift);
% 显示原图和处理后的图像
subplot(1,2,1), imshow(img_gray), title('Original');
subplot(1,2,2), imshow(abs(img_back), []), title('Low Pass Filtered');
```
在这个代码示例中,我们首先读取了一张名为 "lena.jpg" 的图像,并使用 `rgb2gray` 函数将其转换为灰度图像。然后,我们使用 `fft2` 函数进行二维傅里叶变换,并使用 `fftshift` 函数将零频率分量移到频谱图的中心。接下来,我们设置了低通滤波的截止频率,并创建了一个圆形掩模。然后,我们将掩模与频谱图相乘,使用 `ifftshift` 函数将零频率分量移到频谱图的左上角,使用 `ifft2` 函数进行二维傅里叶逆变换,并得到处理后的图像。最后,我们使用 MATLAB 自带的 `imshow` 函数显示原图和处理后的图像。
阅读全文
相关推荐

















