matlab显示图像频谱

来源:互联网 发布:单片机读取jp 编辑:程序博客网 时间:2024/06/05 05:04

将以下代码保存为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]的范围。