将以下代码保存为m文件:
function display_spectrums(file)
img=imread(file);img=rgb2gray(img);
img=double(img);
f=fft2(img);
f=fftshift(f);
magnitude=log(1+abs(f));
subplot(2,1,1),imshow(magnitude,[]),title('图像幅度谱');
phase=(1+angle(f)/pi)*255;
subplot(2,1,2),imshow(phase,[]),title('图像相位谱');
调用时输入:display_spectrums('文件名')即可输出图像的幅度谱和相位谱。
由于幅度值范围很大,所以要取对数处理;由于相位在(-pi, pi]之间,所以要线性变换到(0, 255]的范围。