用matlab实现图像的fft
时间: 2023-11-12 16:06:54 浏览: 72
使用 Matlab 实现图像的 FFT 非常简单,下面是一个示例代码:
1. 读取图片
```
img = imread('image.jpg'); % 读取图片文件
img_gray = rgb2gray(img); % 转换为灰度图像
```
2. 对图像进行 FFT
```
F = fft2(double(img_gray)); % 对灰度图像进行二维傅里叶变换
F_shift = fftshift(F); % 对频谱进行中心化处理
```
3. 显示频谱图
```
F_abs = log(abs(F_shift) + 1); % 取对数幅值
F_max = max(max(F_abs)); % 获取最大幅值
F_abs = F_abs / F_max; % 对幅值进行归一化处理
imshow(F_abs, []); % 显示频谱图像
```
完整代码:
```
img = imread('image.jpg'); % 读取图片文件
img_gray = rgb2gray(img); % 转换为灰度图像
F = fft2(double(img_gray)); % 对灰度图像进行二维傅里叶变换
F_shift = fftshift(F); % 对频谱进行中心化处理
F_abs = log(abs(F_shift) + 1); % 取对数幅值
F_max = max(max(F_abs)); % 获取最大幅值
F_abs = F_abs / F_max; % 对幅值进行归一化处理
imshow(F_abs, []); % 显示频谱图像
```
运行以上代码即可对图片进行 FFT 并显示频谱图像。
阅读全文