matlab对图像进行频域低通滤波
时间: 2023-07-20 15:16:27 浏览: 140
要对图像进行频域低通滤波,可以按照以下步骤操作:
1. 读入图像并转换为灰度图像。
2. 对图像进行二维傅里叶变换(fft2)。
3. 构造一个与图像大小相同的滤波器模板,其中低频区域的值为1,高频区域的值为0。
4. 将滤波器模板与图像的频域表示(即傅里叶变换结果)相乘。
5. 对乘积结果进行逆傅里叶变换(ifft2)。
6. 对逆变换的结果取实部,得到滤波后的图像。
以下是MATLAB代码示例:
```matlab
% 读入图像并转换为灰度图像
I = rgb2gray(imread('image.jpg'));
% 对图像进行二维傅里叶变换
F = fft2(I);
% 构造滤波器模板
[M, N] = size(I);
H = ones(M, N);
cutoff = 30; % 截止频率
for i = 1:M
for j = 1:N
if sqrt((i-M/2)^2 + (j-N/2)^2) > cutoff
H(i,j) = 0;
end
end
end
% 滤波器模板与频域表示相乘
G = F .* H;
% 对乘积结果进行逆傅里叶变换
g = ifft2(G);
% 取实部得到滤波后的图像
filtered = real(g);
% 显示原图和滤波后的图像
figure;
subplot(1,2,1);
imshow(I);
title('Original');
subplot(1,2,2);
imshow(filtered, []);
title('Filtered');
```
阅读全文