function imt = fftcenter(ima) % 图像中心化转换函数
[xs,ys] = size(ima);
for i = 1:xs
for j = 1:ys
imt(i,j) = ima(i,j)*power((-1),(i+j)) ;%输入图像每个像素点乘以(-1)^x+y因子
end
end
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2-D FFT 程序包
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function proj04();
ima = imread('Fig4.41(a).jpg');
imshow(ima);
title('原始图像');
ima_f = fft2(ima); % 对图像ima求二维快速傅里叶变换
mod_ima = abs(ima_f) % 要求幅度谱,需对傅里叶变换求模
mod_ima_log = uint8(log2((mod_ima))) % 要求幅度谱需对FFT后得到的模取对数
phase_ima = atan2(imag(ima_f),real(ima_f)); % 求相位谱,arctan必须使用一个四象限反正切来计算,调用MATLAB的atan2函数
figure,subplot(1,2,1),imshow(mod_ima_log,[]); % []的作用是将mod_ima_log的最大最小值分别作为纯白255和纯黑0,中间值映射到0到255之间
title('输入图像的二维傅里叶幅度谱');</