《现代信息处理技术实验报告.docx》由会员分享,可在线阅读,更多相关《现代信息处理技术实验报告.docx(54页珍藏版)》请在课桌文档上搜索。
1、实验一短时傅里叶变化与小波变换1一、 实验目的1二、 实验内容11、短时傅里叶变换12、 小波变换14实验二图像处理27一、实验目的27实验内容27实验一短时傅里叶变换与小波变换一、实验目的1)熟悉并掌握短时傅里叶变换的性质、参数以及不同信号的短时傅里叶变换;2)熟悉并掌握小波变换的性质、参数以及不同信号的小波变换。二、实验内容1、短时傅里叶变换a)Matlab中的短时傅里叶变换函数spectrogramS=spectrogram(x)S=spectrogram(x,window)S=spectrogram(x,window,noverlap)S=spectrogram(x,window,no
2、verlap,nfft)S=spectrogram(x,window,noverlap,nfft,fs)调用及参数描述: windowisaHammingwindowoflengthnfft. noverlapisthenumberofsamplesthateachsegmentoverlaps.Thedefault. valueisthenumberproducing50%overlapbetweensegments. nfftistheFFTlengthandisthemaximumof256orthenextpowerof2greaterthanthelengthofeachsegmen
3、tofx.Insteadofnfft,youcanspecifyavectoroffrequencies,ESeebelowformoreinformation. fsisthesamplingfrequency,whichdefaultstonormalizedfrequencyb)短时傅里叶变换1. 正弦信号1)生成信号长度为1s、采样频率为IkHz.周期分别为0.1s、IS和IOs的正弦信号s,并画出这些正弦信号。MATLAB程序如下:=WORD完整版.一可编辑.专业资料分享=clc;clearall;fl=10;%周期0.1f2=l;%周期t=lf3=0.1;%周期t=10fs=100
4、0:%采样频率IkHZN=IO0:%采样点数t=0:0.001:1;ts=(OzN-I)Zfs;xl=sin(2*pi*fl*t):x2=sin(2*pi*f2*t):x3=sin(2*pi*f3*t):%画图subplot(3,1,1);plot(t,xl,Iinewidthj,2):titIeC周期为0.IS正弦信号);gridon;subplot(3,1,2):plot(t,x2,Iinevidth,92):titIe(周期为IS正弦信号);gridon;subplot(3,1,3):plot(t,x3,Iinewidth,2);title(周期为IoS正弦信号):gridon: 运行结
5、果如下:00.10.20.30.40.50.60.70.80.92)用spectrogram画出这些正弦信号的短时傅里叶变换。spectrogram(s,hamming(256),255,256,1000); Matlab程序如下:WindoW=hamming(256):noverlap=255:nfft=256;figure;spectrogram(xl,window,noverlap,nfft,1000):titIeC周期为0.IS正弦信号的短时傅里叶变换);figure;spectrogram(x2,window,noverlap,nfft,1000):titIeC周期为IS正弦信号的短
6、时傅里叶变换):figure;spectrogram(x3,window,noverlap,nfft,1000);titIeC周期为IOS正弦信号的短时傅里叶变换): 运行结果如下:周期为(IlS正弦信号的短时傅里叶变换0.80.70.63 0.5I0.40.30.2050 1X 150200250300350400450500Frequency (Hz)周期为IOS正弦信号的矩时傅里叶变换O)E二0.80.70.60.50.40.30.20501150200250300350400450500Frequency(Hz)11. 窗口的影响1)针对周期为0.1秒的正弦函数,分别调整hamming
7、窗口大小为32、64、128、256,并画出该正弦信号的短时傅里叶变换。MATLAB程序如下:%周期为0.IS的正弦函数Xlfigure;subplot221):spectrogram(xl,hauning(32),31,32,1000):title(hamming窗口大小为32);subplot222):spectrogram(xl,hamming(64),63,63,1000):titIe(hamming窗口大小为64);subplot(223):spectrogram(xl,hamming(128),127,128,1000):title(hamming窗口大小为128):subplot
8、(224):spectrogram(xl,hamming(256),255,256,1000):title(hamming窗口大小为256):运行结果如下:0.2100200300400500Frequency (Hz)0.80.6 E0.4hamming囱大小为320.201002003004000.80.6 0) E0.4hamming窗口大小为64Frequency (Hz)hamming窗口大小为1280.80.6O) E0.40.20Frequency (Hz)hamming窗口大小为256100200300400500Frequency (Hz)0.80.70.60.50.40.3
9、0.2 分析短时傅立叶变换基本思想是给信号加滑动时间窗,并对窗内信号做傅立叶变换,得到信号的时变频谱。在短时傅里叶变换过程中,窗的长度决定频谱图的时间分辨率和频率分辨率,窗宽越大,截取的信号越长,信号越长,傅里叶变换后频率分辨率越高(能看到频谱的快变化),时间分辨率越差。也即在实际变换中,时间分辨率和频率分辨率之间不能兼得。2)针对周期为0.1秒的正弦函数,窗口大小为128,分别调整窗口类型为hamming、rectwin和blackman,并画出该正弦信号的短时傅里叶变换。 MATLAB程序如下:%周期为0.IS的正弦函数Xlfigure;subplot(311);spectrogram(x
10、l,hamming(128),127,128,1000):titIeChamming窗口大小为128):subplot(312):SpectrogranCxbrectvin(128)j127,128,1000):titIeCretwin窗口大小为128):subplot(313);spectrogram(xl,blackman(128),127,128,1000):titIeCblackman窗口大小为128): 运行结果如下:0.90.80.70.60)0.5H-0.40.30.20.1hamming囱口大小为128050100150200250300350400450500Frequenc
11、y(Hz)blackman囱口大小为128rectwin窗口大小为1280I二:二10-6阪,一二襄6+:04IZZ*一_2f-01-_;0501X150200250300350400450500Frequency(Hz)0.90.80.70.60)0.5H-0.40.30.20.1050IOoI50200250300350400450500Frequency(Hz)分析一个窗是否合适:窗谱主瓣宽度就尽可能的窄,且能量集中在主瓣内,以获得较陡的过渡带;窗谱旁瓣与主瓣相比应尽可能的小,旁瓣能量衰减要快,以利于增加阻带衰耗。一-完整版学习资料分享一-Hamming窗在频率范围中的分辨率较高,旁瓣衰
12、减较大,主瓣峰值与第一个旁瓣峰值衰减可达40db,频谱泄露少。频谱中高频分量弱、波动小,得到较平滑的谱。Rectwin窗导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。频率识别精度最高,幅值识别精度最低。BlaCklTIan窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高。111. 不同信号的短时傅里叶变换1)例四中的离散信号,其前500点是慢变化正弦序列,后500点是快变化正弦序列,在500点处有断点,画出其短时傅立叶变换。x(n)= sin(.O3n)n=255:nfft=256;fs=1000:figure;spectrogram(x,window,noverlap,nfft,f
13、s):title(前500点为慢变化正弦序列,后5。0点为快变化正修序列):运行结果如下:前500点为慢变化正弦序列,后5。0点为快变化正弦序列0.350.3三0.25H0.20.15050100150200250300350400450500Frequency(Hz) 分析通过STFT分析,可以清晰地看出此序列频率随时间的变化而变化,前500点慢序列频率较低,后500点快序列频率较高。2)例五使用STFT分析一个非平稳信号chirp信号x(ri)=ZCoS(Q/)=NCos(IOttx105n)=WORD完整版可编辑-专业资料分享:其中n为020000的序列。 MatIab程序如下:clea
14、rall:clc;closeall:x,fs=wavread(,chirp,wav,);t=(O:length(x)-l)/fs:subplot(121);plot(t,x)ixlabelCtine(sec)*):titIe(chirp信号波形):%STFTsubplot(122):spectrogram(x,hamming(256),255,256,1000,yaxis,):titIeCChirP信号的STFr);n=1:20000;y=cos(10*pi*l100000*n.2);figure;subplot(121),plot(y),titleC非平稳信号y=cos(10*pi*le-5
15、*n,2):subplot(122),spectrogram(y,haming(256),255,256,1000,yaxis,);title(非平稔信号y=cos(10*pi*le-5*n,2)的STFr); 运行结果如下:10.80.60.40.20-0.2-0.40.6-0.8(ZH)A3u8nbsLChirP信方波形0.2time(sec)非平稳信方ChirP10.80.60.40.20-0.20.4-0.60.8450非平税信号ChirP的STFT(ZHJAOU8nb8lr 分析声音信号本是一维的时域信号,直观上很难看出频率变化规律。如果通过傅里叶变换把它变到频域上,虽然可以看出信号
16、的频率分布,但是丢失了时域信息,无法看出频率分布随时间的变化。如果我们原始信号是非平稳信号(也即此处的声音信号),那么通过STFT展开得到的二维信号就是所谓的时频图,时频图中频率幅值随时间的变化趋势非常清楚地显示了声调。3)用如下命令读取声音文件sealion,wav,并分别用不同的窗口进行STFT,并分析哪种窗口效果更好。 MATLAB程序如下:clearall;clc;y,fs=wavreadCsealion.wav):t=(0:length(y)-l)fs:subplot(221);plot(t,y),xlabel(time(SeC):titIeCsealion原始信号波形):%Haju
17、nngSTFIsubplot(222):spectrogram(y,hanuning(256),255,256,1000):titIeC窗口类型为HaJmlng):XBlackmanSTFIsubplot(223);spectrogram(y,blackman(256),255,256,1000):titIeC窗口类型为BlaCkman):XRectwinSTFTsubplot224):spectrogram(y,rectvin(256)j255,256,1000):titIeC窗口类型为rectwin); 运行结果如下:SeaIiOn原始信号波形00.511.52time(sec)窗口类型为
18、Hamming窗口类型为BIaCkmanFrequency(Hz)窗口类型为rectwinE0100200300400500Frequency(Hz)分析:使用Hamming窗压缩了接近窗两端的部分波形,频率分辨率下降。BlaCkma窗属于二阶升余弦窗,主瓣宽,旁瓣比较低,频率识别精度最低,但幅值识别精度最高,有更好的选择性。检测两个频率相近幅度不同的信号时特性最为清晰,效果最好。ReCtWin频率识别精度最高,但由于其衰减特征,不适用于频谱动态范围很宽的语音分析中。2、小波变换i. 利用IIIatlab函数,生成不同类型的小波1) mexihat2) meyer3) Haar4) db5)
19、sym6) morletMatlab程序如下:clearall:clc;%c.不同类型小波函数psil,xl=Jiexihat(-5,5,1000);%Mexihatphi2jpsi2,x2=meyer(-6,6,256);XMeyerphi3,psi3,x3=vavefun(,haar,20):phi4,psi4,x4=WaVefUn(db4,15):%返回小波的尺度函数和小波函数波形phi5,psi5,x5=wavefun(?SyM4,20):psi6,x6=WaVefun(Morl,10):%小波函数%画图subplot(321),plot(xl,psilj,Iinewidth,2),x
20、labelCt,),title(,Mexicanhatwavelet):subplot(322),plot(x2,psi2,linewidth,2),xlabel(,t,),titleCMeyerwavelet):subplot(323),plot(x3,psi3,linewidth,2),xlabel(,t,),title(,haarWaVelet);subplot(324),plot(x4,psi4,linewidth,2),xlabelCt,),title(jdbWaVeiet):subplot(325),PIOt(X5,psi5,linewidth,2),XIabeI(t,),titl
21、e(symwavelet,);subplot(326),plot(x6,psi6,Iinewidth2)jxlabel(,t,),title(,Morlwavelet,);运行结果如下:ii. 一维连续小波利用连续小波变换函数CWt对带白噪声的正弦信号及正弦加三角波进行变换。再对这两组信号利用wavedec函数及db5进行5层和6层的分解,并利用wrcoef函数对低频和高频分别进行重构。信号导入loadnoissin,loadtrsin0D对带白噪声的正弦信号进行连续小波变换,并进行5层分解和重构。MATLAB程序如下:clearall;clc;clearall:v=input(inputan
22、umberoflevel:,);%N层分解,输入.决定,此题对白嗪声正弦信号进行5层分解loadnoissin:%导入白噪声正弦信号x=noissin:figured):plot(x),XlabeI(t),titIeCnoissin原始信号);figure(2):c=cvtCnoissinf1:200,db5,plot,):%返回值C包含了在各尺度下的小波系数。对于这里,C是一个50x1000的矩阱,每一行与一个尺度相关。titIe(,ContinuousIransforaofnoissin,absolutecoefficients,);%用db5进行W层分解%低频系数figure(3);su
23、bplot(4-1,1,1),plot(x,linewidth*,1),title(num2str(w),层分解低频系数),ylabelCnoissin):c,1=WaVedeC(noissin,w,db5);%用db5进行五层分解fori=l:wcA=appcoef(c,1,db5,vl-i);subplot(w+l,1,i+l),plot(cA,linewidth,1);ylabel(,cA,num2str(i):-end%低频重构figure(4);subplot(w+l,1,l),plot(,Iinewidth,1),titIe(num2str(w),层分解低频重构),ylabel(n
24、oissin):fori=l:wa=wrcoef(a,c,1,db5,v+l-i);subplot(w+l,1,i+l),plot(a,linewidth,1);ylabel(,a/,num2str(i);end%高频系数figure(5);subplot(w+l,1,l),plot(x,Iinevidth,1),titIe(num2str(),层分解高频系数),ylabel(noissin,):fori=l:wcD=detcoef(c,1,w+l-i):subplot(w+l,1,i+l),plot(cD/linewidth,1);ylabel(,cD,nu2str(i):end%高频重构f
25、igure(6):subplot(w+l,1,1),plot(x,Iinevidth4,1),title(num2str(w),层分解高频重构),ylabel(noissin,);fori=l:wd=wrcoef(,d,c,1,db5,+l-i);subplot(w+l,1,i+l),plot(dlinewidth,1);ylabel(Ud,num2str(i);end运行结果如下:带白噪声的正弦信号5层分解及重构1911811711611511411311211111019181716151413121111ContinuousTransformofnoissn,absolutecoeffi
26、cients10020030040050060070080090010time(orspace)b=SSOU5层分解低频系数1002003004005006007008009001000F5层分解低频重构.ssou20-20100200300400500600700800900101002003004005006007008009001000100200300400500600700800900102O100200300400500600700800900105层分解高频系数4 Or ssou5层分解高频重构0100200300400500600700800900100.21IIIII7I二0
27、-JVVZVvV02-11111-1110100200300400500600700800900100005Iiiiiiiii0Vv/VWA/VVvxAa2。10020030040050060070080090010C一&U一_JIiiiiiiiii.Q51111111101002003004005006007008009001000:愀跑懒刑岫匠神鹏M哪桐回伸郴M*05O10020030040050060070080090010002)对带白噪声的正弦加三角波信号进行连续小波变换,并进行6层分解和重构MATLAB程序如下:clearall;clc;closeall;loadtrsin:%导入
28、正弦加三角波信号x=trsin;figured):plot(x),xlabelCt,),titleCtrsin原始信号):figure(2);d=cwt(trsin,1:200,db4,plot*);tit1e(,ContinuousTransformoftrisin,absolutecoefficients,);%用db5进行6层分解figure(3);subplot(7,1,l),plot(x),title(6层分解低频系数),ylabel(trsir);c,1=WaVedeC(trsin,6,db5);%用db5进行五层分解fori=l:6cA=appcoef(c,1,db5,7-i):
29、subplot(7,1,i+l),plot(cA);ylabel(cA99num2str(i);end%低频重构figure(4):subplot(7,1,l)jplot(x),title(6层分解低频重构),ylabel(trsin):fori=l:6a=wrcoef(a,g1,db5,7-i):subplot(7,lfi+l),plot(a):ylabel(,a,num2str(i);end%高频系数figure(5):subplot(7,1,1),Plot(x),title(6层分解高频系数),ylabel(trsir):-fori=l:6cD=detcoef(c,1,7-i);subp
30、lot(7,1,i+l),plot(cD);ylabel(,cD,nuBi2str(i):end%高频重构figure(6);subplot(7,1,1),plot(x),title(6层分解高频重构),ylabel(trsin):fori=l:6d=wrcoef(d,c,1,db5,7-i);subplot(7,1,i+l),plot(d):ylabel(,d,num2str(i):end运行结果如下:Continuous Transform oftrsn,absolrte coefficients19118117116115114113112111110191817161514131211
31、16层分解低频重构fOvwywwj/VwVyWvyvWVyWWWWjWVjw120inn2003004005006007008009001000L2OIIIIIIIIB11II1II110020O30O4OO5OO60O7OO8OO90O10002OCNBItIIII1rrI111IIIII10020O30O4OO5OO60O7OO8OO90O1000CD1II1IIIIJ1II1IIIIII10020O30O4OO5OO60O7OO8OO90O100021rlllI201OO20030040050060070080090010001Sh?WWwWVyWywvyvwvywwjMwjvw2O10
32、02003004005006007008009001000*oA/VWVjVWVyWVyWWyWWyvW4Mjw7Q120030040050060070080090010006层分解高频系数I0/WwWVyvWvyWWwWyvWifVW1o10020030040050060070080090010005。石-QO255。-570WWWWMWWWVWWMMMWW一505O.QScp600O505OOO.Q9CP6层分解高频重构2II 0 VWWWzwzwwywvAZVm 2O10020030040050060070080090010003)分析通过对信号的按层分解,提取分解系数。CA为近似系数,
33、也就是信号的低频系数,cD为细节系数,也就是信号的高频系数。实现提取一维小波细节系数的函数是detcoef函数,提取一维近似系数的函数是appcoef函数。分别比较不同层系数进行重构的波形,可以发现,低频重构时第一层的效果最好,而高频重构时使用中间层的效果较好。实验二图像处理一、实验目的熟悉并掌握常见图像处理方法。二、实验内容1 .用matIab读取并显示图像:imread,imshowoa)MATLAB程序如下:clc;clearall;%读取图像A=imread(lena512color.tiff);%读入原图像imshov(八),titleC读取原图像);b)运行结果如下:读取原图像2
34、.改变图像大小a)MatIab程序如下:clc;clearall;%读取图像,改变图像大小figured):A=InreadClena512color.tiff,):%读入原图像subplot(211),imshow(八),titleC读取原图像);B=ijnresize(A,0.6);subplot(212),i*shov(B):title(缩放至原图的60%):b)运行结果如下:读取原图像缩放至原图的60%3 .将图像转化为灰度图像,将原图像与灰度图画出在同一图内。a)MATLAB程序如下:clc;clearall;%转换为灰度图A=imreadClena512color.tiff,);%
35、读入原图像subplot(211),imshow(八),titleC读取原图像):C=rgb2gray(八):subplot(212),imshow(C),titIe(,灰度图):b)运行结果如下:读取原图像灰度图4 .画出灰度图的直方图。a)MATLAB程序如下:clc:clearall;%读入原图像A=ijnread(,lena512color.tiff,):%转换为灰度图C=rgb2gray(八);%灰度图的直方图%用matIab自带函数画直方图imhist(C):title(灰度图直方图函数):b)运行结果如下:灰度图直方图函数5 .将灰度图均衡化,并画出其直方图,将全部图像画在同一图
36、内。a)MATLAB程序如下:clc;clearall;A=imread(,lena512color.tiff,):%读入原图像%转换为灰度图C=rgb2gray(八);subplot(221),imshow(C),title(,灰度图):%灰度图的直方图%用matlab自带函数画直方图subplot(222)jinhist(C):titIeC灰度图直方图函数);D=histeq(C);subplot(223),imshow(D);title(灰度图均衡化):subplot(224),imhist(D);titIeC直方图均衡化);b)运行结果如下:灰度图灰度图均衡化c)分析:直方图是表示数字
37、图像中每一灰度出现频率的统计关系,能给出图像灰度范围、每个灰度的频度和灰度的分布、整幅图像的平均明暗和对比度等概貌性描述。灰度直方图是灰度级的函数,反映的是图像中具有该灰度级像素的个数,其横坐标是灰度级,纵坐标是该灰度级出现的频率(即像素的个数),整个坐标系描述的是图像灰度级的分布情况,由此可以看出图像的灰度分布特性,即若大部分像素集中在低灰度区域,图像呈现暗的特性;若像素集中在高灰度区域,图像呈现亮的特性。直方图均衡化基本思想是对原始图像的像素灰度做某种映射变换,使变换后图像灰度的概率密度呈均匀分布。这就意味着图像灰度的动态范围得到了增加,提高了图像的对比度。6 .分别使用三种不同的插值方法
38、将图像旋转45并将图像显示在同一图内。a)MATLAB程序clc;closeall;clearall;A=imreadClena512color.tiff,);%读入原图像%不同插值法旋转45度rotateiingl=ijnrotate(A,45,nearest):%最邻近插值rotateimg2=imrotate(A,45,bilinear);%双线性插值rotateimg3=imrotate(A,45,bicubic);%三次插值subplot(2,2,1),imshow(八):title(orginal,);subplot(2,2,2),imshow(rotateimg1);titIeC
39、nearest*):subplot(2,2,3),imshow(rotateimg2):title(bilinear,):subplot(2,2,4),imshow(rotateimg3);titIe(bicubic*);b)运行结果orginalnearestbilinearbicubicC)分析对比这几幅图可以看到,最近邻法(nearest)会造成插值生成的图像灰度上的不连续,在灰度变化的地方可能出现明显的锯齿状,精度不够;双线性插值没有灰度不连续的缺点;用双三次插值法(bicubic)得到的图像纹理最清晰,插值后的图像效果最好。7 .给图像添加高斯、椒盐和乘性噪声。a)MATLAB程序如下:clc;clearall:closeall;A=InreadClena51