赞
踩
本文对图像进行傅里叶变换、显示频谱、相位谱等操作;并且利用两幅图像,验证了频谱和相位谱的重要性,得出合适的结论。
1、基本的图像操作
2、编程实现快速傅立叶变换和反变换,显示频谱和相位谱
3、打开2幅图像,进行傅立叶变换,互换他们的频谱和相位谱
4、进行反傅立叶变换,画出原图像,注意对反变换的结果取实部或取模
5、根据结果,得出相应的结论
1)fft2():二维快速傅立叶变换,返回变换的结果,注意是复数,复数的模称为幅频谱。
2)ifft2():二维快速傅立叶反变换,返回变换的结果,注意一般情况下是复数
3)abs():求取绝对值或复数的模
4)fftshift():频谱图中心点平移,中心点移到(N/2,N/2)处
5)rgb2gray():彩色图像转化为灰度图像
6)double():数据类型转换,变为双精度型
7)uint8():数据类型转换,变为无符号8位型
利用rgb2gray、fft2、fftshift、ifft2等函数对图像进行灰度处理、傅里叶变换、将频谱图中零频率成分移动至频谱图中心、傅里叶反变换等一系列操作。
img=imread('C:\Users\admin\Desktop\1.jpg');
subplot(2,2,1);imshow(img);title('原图');
f=rgb2gray(img); %对彩色图像做灰度处理
F=fft2(f); %傅里叶变换
F1=log(abs(F)+1); %取模并进行缩放
subplot(2,2,2);imshow(F1,[]);title('傅里叶变换频谱图');
Fs=fftshift(F); %将频谱图中零频率成分移动至频谱图中心
S=log(abs(Fs)+1);%取模并进行缩放
subplot(2,2,3);imshow(S,[]);title('频移后的频谱图');
fr=real(ifft2(ifftshift(Fs))); %频率域反变换到空间域,并取实部
ret=im2uint8(mat2gray(fr)); %更改图像类型
subplot(2,2,4);imshow(ret),title('逆傅里叶变换');
验证思路:使用Matlab读取两张不同的图像信号,对其进行灰度处理,对灰度处理后的图像信号进行傅里叶变换后分别获取两张图像的幅度谱与相位谱,分别用一张图像的幅度谱与另外一张图像的相位谱重组,重构为新的图片。观察重组后图片的特点。
(为了方便实验,实验所用的两张图片像素都为300*187)
PA0=imread('D:\Desktop\2.jpg'); PB0=imread('D:\Desktop\3.jpg'); PA=rgb2gray(PA0);PB=rgb2gray(PB0); %傅里叶变换 PAf=fft2(double(PA)); PBf=fft2(double(PB)); % 获取幅度谱与相位谱 PAf_AM=abs(PAf);PBf_AM=abs(PBf); PAf_ph=angle(PAf);PBf_ph=angle(PBf); %改变图片的幅度与相位,重组图像 F1=PAf_AM.*cos(PBf_ph)+PAf_AM.*sin(PBf_ph).*1j;%A幅度B相位 F2=PBf_AM.*cos(PAf_ph)+PBf_AM.*sin(PAf_ph).*1j;%B幅度A相位 %傅里叶逆变换 P1=abs(ifft2(F1));P2=abs(ifft2(F2)); %显示图像 figure(1) subplot(1,2,1);imshow(PA0,[]);title('A原图'); subplot(1,2,2);imshow(PB0,[]);title('B原图'); figure(2) subplot(1,2,1);imshow(PA,[]);title('灰度处理后的A图'); subplot(1,2,2);imshow(PB,[]);title('灰度处理后的B图'); figure(3) subplot(1,2,1);imshow(P1,[]);title('A幅度B相位'); subplot(1,2,2);imshow(P2,[]);title('B幅度A相位')
结论:
经过一张图像的幅度谱与另外一张图像的相位谱重组,反变换之后得到的图像内容与其相位谱对应的图像大体一致,表明相位谱更重要一些,可以通过相位谱大致恢复原图像。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。