文章目录
- 前言
- 一、lena图片的傅里叶(反)变换
- 二、令相位为0进行傅里叶反变换
- 三、令振幅为1进行傅里叶反变换
- 四、双谱重构
- 五、旋转90度观察频谱图区别
前言
傅立叶变换之后的正弦信号每个点都是复数,如a+bi
幅值是:根号下a平方+b平方
相位是:arctan(b/a)
实部是:a
虚步是:b
幅度和相位结合在一起,就能完全表示傅立叶变换的结果;实部和虚步结合在一起也能完全表示。但是并不是说相位等于虚部。
频谱图:频域和幅值图像&频域和相位图像统称频谱图
一、lena图片的傅里叶(反)变换
imA = imread('E:\matlab DMP\lenaG.bmp');
FA=fft2(imA);%对图像进行傅里叶变换
fA=fftshift(FA); %对图像频谱进行移动,是0频率点在中心
sA=log(abs(fA));%获得傅里叶变换的幅度谱
phA=log(angle(fA)*180/pi);%获得傅里叶变换的相位谱
subplot(1,2,1);
imshow(sA,[]); %显示图像的度谱,参数与[]是为了将sA的值线形拉伸
title('图像A的傅里叶变换幅度谱');
subplot(1,2,2);
imshow(phA,[]); %显示图像傅里叶变换的相位谱
title('图像A傅里叶变换的相位谱');
A=ifft2(FA);%傅里叶反变换
figure
subplot(1,2,1);
imshow(imA,[]);
title('原图像');
subplot(1,2,2);
imshow(A,[]);
title('傅里叶反变换的到的图像');
在傅里叶变换中:相位谱记录的位置信息和幅度谱记录的亮度信息
结果如下
二、令相位为0进行傅里叶反变换
R = real(FA);
I = imag(FA);
figure;
subplot(2,2,1),imshow(R),title('real');
subplot(2,2,2),imshow(I),title('imaginary');
subplot(2,2,3),imshow(imA,[]),title('orrginal');
subplot(2,2,4),imshow(ifft(R),[]),title('phase=0');
结果:
图像的幅度谱代表的是图像各像素点的亮度信息,即该像素应该显示什么颜色,但是做出来的幅度谱却不知道每一点在原图像中具体是哪一点,即幅度谱虽然存储了各个像素点的幅值信息,但是原像素点的位置已经被打乱,所以仅凭幅度谱是没有办法重构原图像的。幅度谱的中心是低频部分,越亮的地方代表的幅度越大。
三、令振幅为1进行傅里叶反变换
Picture_AM_Spectrum = log(abs(fA));%获得傅里叶变换的幅度谱
Picture_Phase_Specture = log(angle(fA)*180/pi);%获得傅里叶变换的相位谱
Picture_Restructure = ifft2(1.*exp(j*(angle(FA))));%Set all pixels in the amplitude of the Fourier transform of the original image to unity
figure
subplot(221),imshow(Picture_AM_Spectrum,[]),title('amplitude');
subplot(222),imshow(Picture_Phase_Specture,[]),title('phase');
subplot(223),imshow(imA,[]),title('orginal picture');
subplot(224),imshow(Picture_Restructure,[]),title('amplitude=unity');
结果:
而相位谱记录的是所有点的相位信息,看起来相位谱是一团噪声,这也说明相位信息是以一种更为隐蔽的方式出现在人们面前的,但它非常重要,因为相位信息中携带者图像的位置信息,没有它将无法从品频谱还原出原图像。
四、双谱重构
Picture_Restructure = ifft2(abs(FA).*exp(j*(angle(FA))));
利用相位谱记录的位置信息和幅度谱记录的亮度信息,就可以用双谱重构的方法恢复出原图像。
其结果与ifft2结果完全相同。
五、旋转90度观察频谱图区别
旋转前:
旋转后:
可以发现旋转后的图片,频谱图都发生改变。
分析:幅度谱中“十”字形亮线表示原图像中水平和垂直方向的分量较其他方向要多,旋转改变了分量的方向,所以幅谱图发生改变;旋转也改变了位置信息,所以相谱图也会改变。