二维傅里叶滤波matlab代码
时间: 2023-07-31 17:11:57 浏览: 113
下面是一个基本的二维傅里叶滤波的Matlab代码示例:
```matlab
% 读取图像
image = imread('input_image.png');
image = rgb2gray(image); % 如果图像是彩色的,转换为灰度图像
% 对图像进行二维傅里叶变换
f = fft2(double(image));
% 构建滤波器(这里使用一个理想低通滤波器)
filter = zeros(size(image));
filter_radius = 50; % 滤波器半径
center_x = floor(size(filter,2)/2) + 1;
center_y = floor(size(filter,1)/2) + 1;
for i = 1:size(filter,1)
for j = 1:size(filter,2)
distance = sqrt((i-center_y)^2 + (j-center_x)^2);
if distance <= filter_radius
filter(i,j) = 1;
end
end
end
% 将滤波器应用于频域图像
filtered_image = f .* filter;
% 对滤波后的图像进行反傅里叶变换
result_image = ifft2(filtered_image);
% 显示原始图像和滤波结果
subplot(1,2,1), imshow(image), title('原始图像');
subplot(1,2,2), imshow(abs(result_image), []), title('滤波结果');
```
这段代码首先读取输入图像,然后对其进行二维傅里叶变换。接下来,根据需要构建一个滤波器(在这个示例中使用的是理想低通滤波器)。然后,将滤波器应用于频域图像,得到滤波后的图像。最后,对滤波后的图像进行反傅里叶变换,并显示原始图像和滤波结果。
请注意,这只是一个简单的示例,你可以根据需要调整滤波器类型、参数以及其他处理步骤。
阅读全文