matlab图像傅里叶变换
时间: 2023-09-02 10:08:52 浏览: 121
MATLAB中进行图像傅里叶变换可以使用fft2函数,具体步骤如下:
1. 读入图像并转换为灰度图像。
2. 对灰度图像进行填充,使得其尺寸为2的幂次方,可以使用padarray函数。
3. 对填充后的图像进行傅里叶变换,使用fft2函数。
4. 对傅里叶变换的结果进行频域平移,使得低频部分在中心。
5. 对平移后的频域图像进行幅度谱和相位谱的计算。
6. 可以对幅度谱和相位谱进行可视化展示,也可以对幅度谱进行滤波操作。
7. 对滤波后的频域图像进行逆傅里叶变换,使用ifft2函数。
8. 对逆傅里叶变换的结果进行裁剪,得到原始图像的傅里叶变换结果。
下面是一个简单的MATLAB代码示例:
```matlab
% 读入图像并转换为灰度图像
img = imread('lena.jpg');
img_gray = rgb2gray(img);
% 对灰度图像进行填充
padded_img = padarray(img_gray, [128 128], 'both');
% 进行傅里叶变换
fft_img = fft2(padded_img);
% 频域平移
fft_img_shifted = fftshift(fft_img);
% 计算幅度谱和相位谱
mag_spec = abs(fft_img_shifted);
phase_spec = angle(fft_img_shifted);
% 可视化展示幅度谱和相位谱
subplot(1,2,1), imshow(log(1+mag_spec),[]);
title('Magnitude Spectrum');
subplot(1,2,2), imshow(phase_spec,[]);
title('Phase Spectrum');
% 对幅度谱进行滤波操作
filtered_mag_spec = mag_spec;
filtered_mag_spec(200:300,200:300) = 0;
% 进行逆傅里叶变换
ifft_img = ifft2(ifftshift(filtered_mag_spec));
% 对逆傅里叶变换的结果进行裁剪
cropped_ifft_img = ifft_img(129:384,129:384);
% 可视化展示原始图像和傅里叶变换结果
subplot(1,2,1), imshow(img_gray);
title('Original Image');
subplot(1,2,2), imshow(abs(cropped_ifft_img),[]);
title('FFT Result');
```
运行以上代码后,可以得到原始图像和其傅里叶变换结果的可视化展示。可以根据自己的需要进行进一步的操作和优化。
阅读全文