请使用matlab提取傅里叶变换图像,将频率原点移至图像中心
时间: 2024-09-25 20:04:50 浏览: 30
傅立叶变换与频率域滤波
在MATLAB中,你可以使用`fft2`函数来进行二维傅里叶变换,然后通过`shift`函数将频率原点移动到图像中心。以下是一个简单的步骤说明:
首先,假设你有一个名为`img`的二维数组表示你的图像:
```matlab
% 读取或创建你的图像
img = imread('your_image_file.jpg') / 255; % 归一化像素值
% 对图像进行傅里叶变换
frequencies = fft2(img);
% 计算图像尺寸
[M, N] = size(img);
% 计算新频率矩阵的尺寸,将频率原点移到中心
M_new = M + 1;
N_new = N + 1;
center_row = floor(M_new/2);
center_col = floor(N_new/2);
% 创建新的零填充矩阵用于移位
freqs_centered = zeros(M_new, N_new);
% 移动频率原点到中心
freqs_centered(center_row:center_row+M, center_col:center_col+N) = frequencies;
% 将结果转换回实数空间,得到中心对齐的图像
reconstructed_img = abs(ifft2(freqs_centered));
% 显示原图像和处理过的图像
figure;
subplot(1,2,1), imshow(log(abs(img)), []), title('Original Image (Log Scale)');
subplot(1,2,2), imshow(log(abs(reconstructed_img)), []), title('FFT Centred at Image Center');
```
注意,这里我们通常会对傅里叶变换的结果取绝对值,并可能应用对数尺度(如`log`)以便于可视化。
阅读全文