实验一 图像频谱分析
- 格式:doc
- 大小:265.00 KB
- 文档页数:6
实验一 基于Matlab 的频谱分析一、实验目的1、 掌握时域抽样定理。
2、通过实验加深对FFT 的理解;3、熟悉应用FFT 对典型信号进行频谱分析的方法。
二、实验内容与数据1、用MATLAB 实现对信号()()t t x 202cos ⨯=π的抽样。
设抽样频率为100Hz 。
数字角频率为:是否周期序列,若是周期是多少。
参考程序:t0 = 0:0.001:0.1;x0 =cos(2*pi*20*t0);plot(t0,x0,'r')hold on%信号最高频率fm 为20 Hz,%按100 Hz 抽样得到序列。
Fs = 100t=0:1/Fs:0.1;x=cos(2*pi*20*t);stem(t,x);hold offtitle('图1 连续信号及其抽样信号')x=1 0.309 -0.809 -0.809 0.309 1 0.309 -0.809 -0.809 0.309 12、 离散傅立叶变换(DFT )()()()4/sin 8/sin ππn n n x +=是一个N =16的有限长序列,用MATLAB 求其DFT的结果,并画出其结果图。
参考程序:N=16;n=0:1:N-1; %时域采样xn=sin(n*pi/8)+sin(n*pi/4);k=0:1:N-1; %频域采样WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;subplot(2,1,1)stem(n,xn);title('图2 有限长序列')subplot(2,1,2)stem(k,abs(Xk));title('有限长序列的DFT')结果:Xk=-0 + 0i -0 - 8i -0 - 8i 0 - 0i 0 - 0i 0 - 0i 0 - 0i 0 - 0i 0 - 0i 0 - 0i0 - 0i -0 - 0i 0 - 0i 0 - 0i 0 + 8i 0 + 8i3、快速傅立叶变换(FFT)MATLAB 为计算数据的离散快速傅立叶变换,提供了一系列丰富的数学函数,主要有Fft、Ifft、Fft2 、Ifft2, Fftn、ifftn和Fftshift、Ifftshift等。
FFT频谱分析实验报告引言频谱分析是一种用于分析信号频率特征的方法,可应用于多个领域,如音频处理、图像处理、通信系统等。
本文将介绍FFT(快速傅里叶变换)频谱分析方法,并通过实验验证其有效性。
实验目的本实验旨在探索FFT频谱分析方法,了解其原理,并通过实验验证其在信号处理中的应用。
实验步骤1.准备实验材料–一台装有MATLAB软件的电脑–需要进行频谱分析的信号数据2.导入信号数据在MATLAB环境中,导入需要进行频谱分析的信号数据。
可以通过以下命令完成数据导入:data = importdata('signal.txt');这里假设信号数据保存在名为signal.txt的文件中。
3.对信号数据进行FFT变换利用MATLAB中的fft函数对信号数据进行FFT变换。
具体命令如下:fft_data = fft(data);这将得到信号数据的FFT变换结果。
4.计算频率谱通过对FFT变换结果的分析,可以计算信号的频率谱。
根据FFT变换的性质,频率谱可以通过计算FFT变换结果的模值得到:spectrum = abs(fft_data);这将得到信号的频率谱。
5.绘制频谱图利用MATLAB的plot函数,可以将频率谱绘制成图形。
命令如下:plot(spectrum);xlabel('频率');ylabel('幅值');title('频谱图');这将绘制出信号的频谱图。
6.分析频谱图通过观察频谱图,可以分析信号的频率特征,如频率成分的强度、主要频率等。
实验结果与讨论在完成以上步骤后,我们得到了信号的频谱图。
通过观察频谱图,我们可以分析信号的频率特征。
例如,我们可以确定信号中主要的频率成分,并通过频率成分的强度判断信号的特性。
在实验中,我们可以尝试使用不同的信号数据进行频谱分析,并观察结果的差异。
通过比较不同信号的频谱图,我们可以进一步了解信号的特性,并探索不同应用场景下的频谱分析方法。
实验一-利用DFT分析信号频谱实验一 利用DFT 分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境 计算机、MATLAB 软件环境。
三、实验基础理论 1.DFT 与DTFT 的关系DFT 实际上是DTFT 在单位圆上以k Nje z π2=的抽样,数学公式表示为:∑-=-===12)(|)()(2N n k Njez en x z X k X k Nj ππ, 1,..1,0-=N k(2—1) 2、利用DFT 求DTFT 方法一:利用下列公式: )2()()(1∑-==-=N k k j Nkk X e X πωφω(2—2) 其中21)2/sin()2/sin()(--=N j eN N ωωωωφ为内插函数方法二:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为N π2,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3、利用DFT 分析连续时间函数利用DFT 分析连续时间函数是,主要有两个处理:①抽样,②截断 对连续时间信号)(t x a一时间T 进行抽样,截取长度为M ,则 nT j M n a tj a a e nT x T dt et x j X Ω--=+∞∞-Ω-∑⎰==Ω)()()(10 (2—3)再进行频域抽样可得 )()(|)(1022k TX enT x T j X M M n n Nk j a NTk a ==Ω∑-=-=Ωππ (2—4)因此,利用DFT 分析连续时间信号的步骤如下: (1)、确定时间间隔,抽样得到离散时间序列)(n x .(2)、选择合适的窗函数和合适长度M ,得到M点离散序列)()(nxx=.n(nw)M(3)、确定频域采样点数N,要求N≥M。
实验一图像信号频谱分析及滤波一:实验原理FFT不是一种新的变化,而是DFT的快速算法。
快速傅里叶变换能减少运算量的根本原因在于它不断地把长序列的离散傅里叶变换变为短序列的离散傅里叶变换,在利用的对称性和周期性使DFT运算中的有些项加以合并,达到减少运算工作量的效果。
为了消除或减弱噪声,提取有用信号,必须进行滤波,能实现滤波功能的系统成为滤波器。
按信号可分为模拟滤波器和数字滤波器两大类。
数字滤波器的关键是如何根据给定的技术指标来得到可以实现的系统函数。
从模拟到数字的转换方法很多,常用的有双线性变换法和冲击响应不变法,本实验主要采用双线性变换法。
双线性变换法是一种由s平面到z平面的映射过程,其变换式定义为:数字域频率与模拟频率之间的关系是非线性关系。
双线性变换的频率标度的非线性失真是可以通过预畸变的方法去补偿的。
变换公式有Ωp=2/T*tan(wp/2)Ωs=2/T*tan(ws/2)二:实验内容1.图像信号的采集和显示选择一副不同彩色图片,利用Windows下的画图工具,设置成200*200像素格式。
然后在Matlab软件平台下,利用相关函数读取数据和显示图像。
要求显示出原始灰度图像、加入噪声信号后的灰度图像、滤波后的灰度图像。
2.图像信号的频谱分析要求分析和画出原始灰度图像、加入噪声信号后灰度图像、滤波后灰度图像信号的频谱特性。
3.数字滤波器设计给出数字低通滤波器性能指标:通带截止频率fp=10000 Hz,阻带截止频率fs=15000 Hz,阻带最小衰减Rs=50 dB,通带最大衰减Rp=3 dB,采样频率40000Hz。
三:实验程序clear allx=imread('D:\lan.jpg');%原始彩色图像的数据读取x1=rgb2gray(x);%彩色图像值转化为灰度图像值[M,N]=size(x1);%数据x1的长度,用来求矩阵的大小x2=im2double(x1);%unit8转化为double型x3=numel(x2);%计算x2长度figure(1);subplot(1,3,1);imshow(x2);title('原始灰度图')z1=reshape(x2,1,x3);%将二维数据转化成一维数据g=fft(z1);%对图像进行二维傅里叶变换mag=fftshift(abs(g));%fftshift是针对频域的,将FFT的DC分量移到频谱中心K=40000;Fs=40000;dt=1/Fs;n=0:K-1;f1=18000;z=0.1*sin(2*pi*f1*n*dt);x4=z1+z;%加入正弦噪声f=n*Fs/K;y=fft(x4,K);z2=reshape(x4,M,N);%将一维图转换为二维图subplot(1,3,2);imshow(z2);title('加入噪声后')g1=fft(x4);mag1=fftshift(abs(g1));%设计滤波器ws=0.75*pi;wp=0.5*pi;fs=10000;wp1=2*fs*tan(wp/2);ws1=2*fs*tan(ws/2);rs=50;rp=3;% [n,wn]=buttord(wp/pi,ws/pi,rp,rs);% [bz,az]=butter(n,wn);[n,wn]=buttord(wp1,ws1,rp,rs,'s');[z,p,k]=buttap(n);[b,a]=zp2tf(z,p,k);[B,A]=lp2lp(b,a,wn);[bz,az]=bilinear(B,A,fs);[h,w]=freqz(bz,az,128,fs);L=numel(z2);z3=reshape(z2,1,L);x6=filter(bz,az,double(z3));x7=reshape(x6,M,N);subplot(1,3,3);imshow(x7);g2=fft(x6);mag2=fftshift(abs(g2));title('滤波后')%建立频谱图figure(2);subplot(1,3,1);plot(mag);title('原始Magnitude')subplot(1,3,2);plot(mag1);title('加噪声Magnitude')subplot(1,3,3);plot(mag2);title('滤波后Magnitude')figure(3);subplot(1,2,1)plot(w,abs(h));xlabel('f');ylabel('h');title('滤波器幅谱');subplot(1,2,2);plot(w,angle(h));title('滤波器相谱');四:实验结果与分析图一图二分析:由图二可以知道加入噪声后的幅值谱和原始图的幅值谱明显多了两条幅值线,而这两条幅值线就是我们对原始灰度图加入的正弦噪声,而相应的图一中的加噪声后的图与原始图相比,出现了明显的变化。
典型信号的波形和频谱分析一. 实验目的1. 在理论学习的基础上,通过本实验熟悉典型信号的频谱特征,并能够从信号频谱中读取所需的信息。
2. 了解信号频谱分析的基本原理和方法,掌握用频谱分析提取测量信号特征的方法。
二. 实验原理频谱分析可用于识别信号中的周期分量,是信号分析中最常用的一种手段。
信号频谱分析是采用傅里叶变换将时域信号x(t)变换为频域信号X(f),从而帮助人们从另一个角度来了解信号的特征。
图1、时域分析与频域分析的关系信号频谱X(f)代表了信号在不同频率分量成分的大小,能够提供比时域信号波形更直观,丰富的信息。
时域信号x(t)的傅氏变换为:dt e t x f X ft j ⎰+∞∞--=π2)()( (1) 式中X(f)为信号的频域表示,x(t)为信号的时域表示,f 为频率。
工程上习惯将计算结果用图形方式表示,以频率f 为横坐标,X(f)的实部)(f a 和虚部)(f b 为纵坐标画图,称为时频-虚频谱图;以频率f 为横坐标,X(f)的幅值)(f A 和相位)(f ϕ为纵坐标画图,则称为幅值-相位谱;以f 为横坐标,A(f) 2为纵坐标画图,则称为功率谱,如图所示。
频谱是构成信号的各频率分量的集合,它完整地表示了信号的频率结构,即信号由哪些谐波组成,各谐波分量的幅值大小及初始相位,揭示了信号的频率信息。
图2、信号的频谱表示方法三. 实验内容白噪声信号、正弦波信号、方波信号、三角波信号和正弦波信号+白噪声信号的幅值谱特性和频谱参数识别方法。
用频谱分析方法对工业测量信号、声卡采集的音频信号、MP3音乐文件中的信号进行分析,给出它们的频谱。
四. 实验步骤图3是信号频谱分析实验界面,改变信号的频率、幅值和相位,观察信号频谱的变化。
选择白噪声、正弦波、方波等不同的典型信号,观察信号的频谱特征。
图3信号频谱分析实验环境五. 实验报告要求1.简述实验目的和原理。
2.拷贝实验系统运行界面,插入到实验报告中。
频谱分析实验报告频谱分析实验报告引言:频谱分析是一种用于研究信号频谱特性的方法,广泛应用于通信、音频处理、无线电等领域。
本实验旨在通过实际操作和数据分析,探索频谱分析的原理和应用。
实验设备与步骤:本次实验使用了频谱分析仪、信号发生器和电缆等设备。
具体步骤如下:1. 连接设备:将信号发生器通过电缆连接到频谱分析仪的输入端口。
2. 设置参数:根据实验要求,设置信号发生器的频率、幅度和波形等参数,并将频谱分析仪的参考电平和分辨率带宽调整到合适的范围。
3. 采集数据:启动频谱分析仪,开始采集信号数据。
可以选择连续扫描或单次扫描模式,并设置合适的时间窗口。
4. 数据分析:通过频谱分析仪提供的界面和功能,对采集到的数据进行分析和处理。
可以查看频谱图、功率谱密度图等,了解信号的频谱特性。
实验结果与讨论:通过实验操作和数据分析,我们得到了以下结果和结论。
1. 频谱分析原理:频谱分析仪通过将信号转换为频谱图来展示信号在不同频率上的能量分布情况。
频谱图通常以频率为横轴,幅度或功率为纵轴,可以直观地反映信号的频谱特性。
2. 不同信号的频谱特性:我们使用了不同频率和波形的信号进行实验,观察其在频谱图上的表现。
正弦波信号在频谱图上呈现出单个峰值,峰值的位置对应信号的频率。
方波信号在频谱图上则呈现出多个峰值,峰值的位置和幅度反映了方波的频率和谐波分量。
3. 噪声信号的频谱特性:我们还进行了噪声信号的频谱分析。
噪声信号在频谱图上呈现为连续的能量分布,没有明显的峰值。
通过分析噪声信号的功率谱密度图,可以了解噪声信号在不同频率上的能量分布情况。
4. 频谱分析的应用:频谱分析在通信和音频处理领域有着广泛的应用。
通过频谱分析,可以帮助我们了解信号的频率成分、噪声特性以及信号处理器件的性能等。
在无线电领域,频谱分析还可用于频段分配、干扰监测等工作。
结论:通过本次实验,我们深入了解了频谱分析的原理和应用。
频谱分析可以帮助我们理解信号的频谱特性,对于信号处理和通信系统设计具有重要意义。
基于Matlab 的频谱分析一、实验目的1.频谱分析的基本概念及应用;2.常用信号的频谱:余弦信号、方波信号、三角波信号; 3.应用DFT 进行频谱分析,MATLAB 编程仿真 (1)整周期采样、非整周期采样→频谱泄漏; (2)填零运算→高密度频谱; (3)非整周期采样时,加窗改进; 4.应用频谱分析仪测量常用信号的频谱。
二、实验原理1、利用DFT 计算连续信号的频谱分析过程从图中看出,这是一次近似过程,首先,用离散采样信号的 DTFT ()j X e ω来近似连续信号()a x t 的傅立叶变换()a X j Ω,其次,将()x n 截短,这一过程等效于用一矩形序列()R N n 与()x n 相乘,其DTFT 为()()*()j j j NN XeX eR eωωω=最后,再对截短的信号作DFT 2、频谱分析的近似过程出现问题及解决办法 (1)混叠①混叠现象对连续信号x(t)进行数字处理前,要进行采样()()()a n x n T x t t n T δ∞=-∞=-∑采样序列的频谱是连续信号频谱的周期延拓,周期为fs ,如采样率过低,不满足N采样定理,fs<2fh ,则导致频谱混迭,使一个周期内的谱对原信号谱产生失真,无法恢复原信号,进一步的数字处理失去依据。
另外,干扰信号的频率高于折叠频率/2s f 的也会产生频谱混叠。
②对于干扰信号的频率高于/2s f 产生频谱混叠的解决办法:在采样前加一抗混叠滤波器,滤除高于折叠频率/2s f 的频率成分。
(2) 泄漏①产生原因处理实际信号序列 x (n )时,一般总要将它截断为一有限长序列,长为N 点,相当于乘以一个矩形窗 w(n)=RN(n)。
矩形窗函数,其频谱有主瓣,也有许多副瓣,窗口越大,主瓣越窄,当窗口趋于无穷大时,就是一个冲击函数。
我们知道,时域的乘积对应频域的卷积,所以,加窗后的频谱实际是原信号频谱与矩形窗函数频谱的卷积,卷积的结果使频谱延伸到了主瓣以外,且一直延伸到无穷。
实验一信号频谱分析实验1.引言信号频谱分析是一种通过将信号在频域上进行分解和分析的方法,用于研究信号的频率特性和频谱分布。
频谱分析可以帮助我们了解信号的频率成分、噪声干扰以及信号与系统之间的传递特性。
本实验旨在通过使用快速傅里叶变换(FFT)算法进行信号频谱分析,加深对频谱分析原理和方法的理解。
2.实验目的(1)理解信号频谱分析的基本原理和方法。
(2)熟悉使用FFT算法进行信号频谱分析的流程和步骤。
(3)学会使用示波器和信号发生器进行实验测量和信号生成。
3.实验仪器和设备示波器、信号发生器、计算机等。
4.实验原理信号频谱是描述信号在频域上的分布情况,表示了信号中各个频率成分的强度和相位信息。
频谱分析通过对信号进行傅里叶变换,将信号从时域转换为频域,得到信号的频谱信息。
在本实验中,我们使用快速傅里叶变换(FFT)算法对信号进行频谱分析。
FFT算法是一种高效的离散傅里叶变换(DFT)算法,通过将DFT变换的计算量从O(N^2)降低到O(NlogN),使得频谱分析更加实用。
FFT算法将信号划分为若干个子序列,并对每个子序列进行DFT变换,然后利用蝶形运算将子序列的变换结果合并,最终得到整个信号的频谱信息。
5.实验步骤(1)使用信号发生器产生一个频率为f1的正弦信号,并将其接入示波器。
(2)通过示波器观察和记录信号的波形。
(3)将示波器设置为频谱分析模式,选择FFT算法进行频谱分析。
(4)根据示波器显示的频谱图,记录信号在频域上的频率分布情况。
(5)改变信号发生器的频率,重复步骤(1)-(4),分析和比较不同频率下信号的频谱特性。
(6)将示波器设置为傅里叶合成模式,通过合成不同频率和幅度的正弦波,观察合成信号的波形和频谱分布情况。
(7)利用计算机进行信号频谱分析,使用MATLAB等软件绘制信号的频谱图,并进行进一步分析和比较。
6.实验注意事项(1)实验中使用的信号发生器和示波器需要进行校准,确保测量和生成的信号准确可靠。
一、实验目的1. 理解频谱分析的基本原理和方法;2. 掌握FFT(快速傅里叶变换)在频谱分析中的应用;3. 分析不同信号在时域和频域的特性;4. 学习利用MATLAB进行频谱分析。
二、实验原理频谱分析是信号处理中的重要手段,通过对信号的频谱进行分析,可以了解信号的频率成分、能量分布等信息。
傅里叶变换是频谱分析的核心,它可以将信号从时域转换为频域,揭示信号的频率特性。
FFT是一种高效的傅里叶变换算法,它可以将N点的DFT计算复杂度从O(N^2)降低到O(NlogN),在信号处理领域得到广泛应用。
三、实验内容1. 实验一:时域信号与频域信号的关系(1)利用MATLAB生成一个简单的正弦波信号,观察其时域波形和频谱;(2)改变正弦波的频率和幅度,观察时域波形和频谱的变化;(3)分析正弦波信号的频率成分和能量分布。
2. 实验二:利用FFT进行频谱分析(1)利用MATLAB生成一个含有多个频率成分的复合信号;(2)对复合信号进行FFT变换,观察其频谱;(3)分析复合信号的频率成分和能量分布;(4)对比不同FFT点数对频谱分析结果的影响。
3. 实验三:窗函数对频谱分析的影响(1)利用MATLAB生成一个矩形窗和汉宁窗,观察它们的时域波形;(2)对信号进行矩形窗和汉宁窗处理,分别进行FFT变换;(3)比较两种窗函数对频谱分析结果的影响。
四、实验结果与分析1. 实验一结果与分析实验结果显示,正弦波信号的时域波形为周期性的正弦波形,其频谱为离散的频率成分,频率为正弦波的频率。
改变正弦波的频率和幅度,时域波形和频谱相应地发生变化。
2. 实验二结果与分析实验结果显示,复合信号的频谱为多个频率成分的叠加,通过FFT变换可以清晰地观察到各个频率成分。
对比不同FFT点数对频谱分析结果的影响,FFT点数越多,频谱分辨率越高,但计算复杂度也随之增加。
3. 实验三结果与分析实验结果显示,矩形窗和汉宁窗的时域波形具有不同的形状,对信号进行窗函数处理可以降低边缘效应,提高频谱分析精度。
实验一 利用DFT 分析信号频谱一、实验目的1、加深对DFT 原理的理解。
2、应用DFT 分析信号的频谱。
3、深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境计算机、MATLAB 软件环境。
三、实验基础理论1、DFT 与DTFT 的关系DFT 实际上就是DTFT 在单位圆上以k N j e zπ2=的抽样,数学公式表示为: ∑-=-===102)(|)()(2N n k N j e z e n x z X k X k N j ππ , 1,..1,0-=N k(2—1)2、利用DFT 求DTFT方法一:利用下列公式: )2()()(10∑-==-=N k k j Nk k X e X πωφω (2—2) 其中21)2/sin()2/sin()(--=N j e N N ωωωωφ为内插函数方法二:实际在MATLAB 计算中,上述插值运算不见得就是最好的办法。
由于DFT 就是DTFT 的取样值,其相邻两个频率样本点的间距为Nπ2,所以如果我们增加数据的长度N,使得到的 DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3、利用DFT 分析连续时间函数利用DFT 分析连续时间函数就是,主要有两个处理:①抽样,②截断对连续时间信号)(t x a 一时间T 进行抽样,截取长度为M,则nT j M n a t j a a e nT x T dt e t x j X Ω--=+∞∞-Ω-∑⎰==Ω)()()(10(2—3)再进行频域抽样可得 )()(|)(1022k TX enT x T j X M M n n N k j a NT k a ==Ω∑-=-=Ωππ(2—4)因此,利用DFT 分析连续时间信号的步骤如下:(1)、确定时间间隔,抽样得到离散时间序列)(n x 、(2)、选择合适的窗函数与合适长度M,得到M 点离散序列)()()(n w n x n x M =、(3)、确定频域采样点数N,要求N ≥M 。
实验一 图像频谱分析
一、 实验目的
1、了解图像变换的意义和手段;
2、熟悉傅里叶变换的性质;
3、掌握图像傅立叶频谱的分布特点;
二、 实验原理
1、二维傅立叶变换(DFT )
令f (x ,y )表示一副大小为M ×N 的图像,二维离散傅立叶变换可表示为F (u ,v ),如下式所示:
112(//)001
(,)(,)M N j ux M vy N x y F u v f x y e M N π---+===∑∑
其中u=0,1,2,…M-1和v=0,1,2,…N-1。
可以将指数项扩展为正弦和余弦项的形式,变量u 、v 确定他们的频率。
在频率变换点处变换的值[如F (0,0)]称为傅立叶变换的直流分量。
直观的分析变换的主要方法是计算他的频谱——即F (u ,v )的幅度,并将其显示为一副图像。
令R (u ,v )和I (u ,v )分别表示F (u ,v )的实部和虚部,则傅立叶频谱定义为:
221/2|(,)|[(,)(,)]F u v R u v I u v =+
功率谱定义为幅度的平方:
222
(,)|(,)|(,)(,)P u v F u v R u v I u v ==+ 2、傅立叶变换的性质
三、 实验内容
在实际应用中,DFT 变换可以通过快速傅立叶变换(FFT )算法来实现。
1、傅立叶变换的计算
(1)函数fft2可以实现二维离散傅立叶变换,格式如下:
F=fft2(f ) F 和f 大小相同
F =fft2(f ,m ,n ) 变换前f 截断或添0,成为m*n 数组,返回结果为m*n 。
(2)傅立叶频谱可以用函数abs 来获得:
S=abs (F )
计算数组中每一个元素的幅度(实部和虚部平方和的平方根)。
2、DFT 的可视化
(1)可视化分析用函数imshow 来实现
imshow (S ,[])
(2)为了增加可视细节,傅立叶频谱常采用log ( 1+abs ( F) )的图像显示。
S2=log ( 1+abs ( F) );
imshow ( S2,[] )
(3)为了便于分析,用函数fftshift将傅立叶变换的零频率部分移到频谱中心。
Fc=fftshift(F)相应的还有ifftshif
把F的第一、第三象限和二、四象限交换,便于观察零频率部分。
若u、v的范围分别是1-M和1-N,则矩形中心点为【(M/2)+1,(N/2)+1】。
若M和N为奇数,则四舍五入。
MATLAB计算频率矩形的中心点:[floor(M/2)+1,floor (N/2)+1].
imshow(abs(F),[])
imshow(log(1+abs(F)),[])
3、函数ifft2用于计算傅立叶反变换
f=ifft2(F)
理论上逆变换结果应为实数,实际ifft2输出结果有很小的虚数成分,所以需在逆变换后提取结果的实部。
f=real(f);
或两个操作合并到一起:f=real(ifft2(F))
四、实验步骤
1、读取图像cameraman.tif,进行傅立叶变换。
在窗口1显示:(1)原图像;(2)频谱图
(2)对数频谱图;(3)直流分量移到中心的对数频谱图;对图像进行标注(图题);
分析实验结果,比较显示效果,并观察频谱特点。
对其频谱进行傅立叶反变换,在窗口2显示图像。
实验程序及结果:
clear;
close all;
I=imread('cameraman.tif');
subplot(2,2,1);
imshow(I);
ffti=fft2(I);
subplot(2,2,2);
imshow(log(1+abs(ffti)),[]);
subplot(2,2,3);
Fc=ifftshift(ffti);
imshow(log(1+abs(Fc)),[]);
subplot(2,2,4);
f=real(ifft2(Fc));
imshow(log(1+abs(f)),[]);
figure(2);
f=real(ifft2(ffti));
imshow(f,[]);
figure(1)
figure(2)
图1 对图像的处理结果图
分析结果:
(1)对原图像的频谱变换,频谱图显示其高低频分量比较混乱,不能分辨高频的低频部分。
(2)经过频谱搬移之后,可以更加清晰地观察低频部分。
(3)直流分量移到中心的对数频谱图,能清楚地分析变换频谱的情况。
2、分别显示图像bridge.bmp、cameraman.tif、blood.bmp及其频谱,分析图像频谱的
特点。
(可把相应的图像考到默认的work文件夹下,也可在命令中写目录)
实验程序及结果:
clear
close all;
i=imread('bridge.bmp');
subplot(2,3,1);
imshow(i);
m=imread('cameraman.tif');
subplot(2,3,2);
imshow(m);
n=imread('blood.bmp');
subplot(2,3,3);
imshow(n);
ii=fft2(i);
subplot(2,3,4);
imshow(log(1+abs(ii)),[]);
mm=fft2(m);
subplot(2,3,5);
imshow(log(1+abs(mm)),[]);
nn=fft2(n);
subplot(2,3,6);
imshow(log(1+abs(nn)),[]);
图2 分别显示图像bridge.bmp、cameraman.tif、blood.bmp及其频谱
分析结果:
(1)第一幅图像,能量集中在低频,说明图像的灰度变化缓慢。
灰度对比不明显。
(2)第二幅图像,低频部分较多,高频也有少许能量,说明图像的灰度变化较大,图像有明亮变化。
(3)第三幅图像,低频部分较多,高频也有少许,说明图像的灰度变化大。
图像灰度对比很明显。
三幅图片的低频部分:B>A>C
3、验证傅立叶平移特性。
生成一幅图像,图像中背景黑色,目标为一亮条;平移亮条,观察其频谱的变化。
(也可自行验证其它性质。
如旋转性质函数imrotate(x,a,’bilinear’,’crop’))
实验程序及结果:
x=[0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0];
subplot(2,2,1)
imshow(x);
xx=fft2(x);
subplot(2,2,2);
imshow(xx);
f=[0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0];
subplot(2,2,3)
imshow(f);
ff=fft2(f);
subplot(2,2,4);
imshow(ff);
图3 对图像的傅立叶平移特性
五、思考题
1.图像频谱有哪些特点?
频谱图,四个角对应低频成分,中央部分对应高频成分;图像亮条的平移影响频谱的分布,但当频谱搬移到中心时,图像亮条的平移后频谱图是相同的。
图像旋转,频谱也会旋转,并且角度相同。
频谱具有平移特性,可分离性。
2.图像的二维频谱在显示和处理时应注意什么?
(1)如果要增加显示细节,需要运用对数形式。
(2)在显示abs(F)的函数时,imshow()中,要加[]来增强频谱的明亮对比。
(3)图像的频谱要选用合适显示方式,对数形式更能显示细节。