使用matlab中自带的fft等相关的函数进行操作。
代码如下:
clear;
clc;
img=imread('test.jpg');
img=rgb2gray(img);
f=fft2(img); %傅里叶变换
f=fftshift(f); %使图像对称
r=real(f); %求图像频域实部
i=imag(f); %求图像频域虚部
margin=log(abs(f)); %图像幅度谱,加log便于显示
phase=log(angle(f)*180/pi); %图像相位谱
l=log(f);
subplot(2,2,1),imshow(img),title('源图像');
subplot(2,2,2),imshow(l,[]),title('频谱');
subplot(2,2,3),imshow(margin,[]),title('幅度谱');
subplot(2,2,4),imshow(phase,[]),title('相位谱');