基于matlab的信号处理初步.docx
- 文档编号:28296532
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:59
- 大小:3.14MB
基于matlab的信号处理初步.docx
《基于matlab的信号处理初步.docx》由会员分享,可在线阅读,更多相关《基于matlab的信号处理初步.docx(59页珍藏版)》请在冰豆网上搜索。
基于matlab的信号处理初步
第一章绪论
一.1选题的目的和意义
在MATLAB下,矩阵的运算变得异常的容易。
1984年Moler博士推出了该软件的正式版本,在后来的版本中又陆续增添了控制系统、系统辨识、信号处理及通信等十余个工具箱,使MATLAB广泛的应用于自动控制、图像信号处理、生物医学工程、语音处理、雷达工程、信号分析、优化设计等领域。
它具有以下的功能和特点∶高效的数值计算及符号计算功能,能使我们从繁杂的数学运算分析中解脱出来;完备的图形处理功能,实现了计算结果和编程的可视化;功能丰富的应用工具箱,提供了大量方便实用的处理工具;友好的界面及接近数学表达式的自然化语言,便于学习和掌握。
随着人类社会的进步和科学技术的发展,人们对信息处理和信息及交流的要求越来越高。
人们传递信息的主要没解释语音和图像。
在接受信息中,听觉占20%,视觉占60%,其它如味觉,嗅觉,触觉总的加起来不超过20%,图像信息处理使人们视觉延续的重要手段。
人们眼睛只能看到波长380到780nm的可见光部分,而迄今为止人们发现可成像的射线已有很多种,他们扩大了人们认识客观世界的能力。
做该课题的意义在于使设计者更好的了解和熟悉该软件,以便今后更好的应用该软件做一些图像以及语音处理。
一.2国内外研究综述
在MATLAB的信号处理初步中应用最多的是数字图像信号处理,数字图像处理是一个跨科学的前沿科技领域,在工程学,计算机学,信息学,统计学,物理,化学,生物医学,地址,海洋,气象,农业,冶金等许多科学中的应用取得了巨大的成功和显著的经济效益。
从20世纪60年代起,随着电子计算机技术的进步,数字图像处理技术得到了飞跃发展,数字信号处理技术(DSP)技术通常是指利用采集,滤波,检测,均衡,变换,调制,压缩,去噪,估计等处理,已得到符合人们需要的信号形式。
图像信号的数字处理是指将图像作为图像信号的数学处理技术,按照人们通常的习惯,也成为数字图像处理技术,最常见的是使用计算机对图像进行处理,他是在以计算机为中心的包括各种输入,输出,储存及显示设备的数学图像处理系统上进行的。
现代公安系统中经常使用的指纹对比技术就是MATLAB的一种应用,以及太空成像技术,脸部识别技术等等。
我国在2004年针对利用Matlab/Simulink对复杂系统仿真时,如何高效实现从系统数学模型到仿真模块搭建的转化问题,提出利用面向对象方法实现系统框架构建,在具体模块搭建时将充分利用Matlab/Simulink提供的各种资源与自己开发有机结合。
利用上述思想建立了某型防空导弹的飞行过程动态仿真系统,解决了系统搭建中遇到的复杂控制关系实现、加快仿真速度及便于调试等问题。
一.3本课题研究工作与结构安排
本文主要介绍图像和语音预处理技术中几种常用的处理方法,比如图像增强、图像旋转和语音信号滤波。
具体内容有:
全文共分6章,结构安排如下:
第1章绪论,介绍了课题研究目的及意义和国内外研究现状。
第2章介绍了图像的几种简单处理方法,如图像截图、旋转、噪声等。
第3章介绍了语音信号的提取和调整,以及语音信号处理中的滤波。
第4章介绍了MATLAB在电力电子中的应用,主要涉及在单相桥式全控整流电路中的仿真。
第5章简单介绍MATLAB在医学和导航领域的应用。
第6章对本论文简单的介绍和对MATLAB发展的一些展望。
第二章图像信号处理初步
2.1图像信号处理框架与流程
学习MATLAB程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop。
要求:
按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。
然后按照自己拟定的功能要求进行程序设计和调试。
以下几点是程序必须实现的功能。
①图像的读取和保存。
②设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
③设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。
④编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。
⑤图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
⑥能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。
比较去噪效果。
同时在调节亮度时,虽然可以同对话框的形式输入调节的比例系数,但是这样效果不好了,不容易调节,因此这里考虑用滚动条来调节。
2.2图像信号处理具体过程
2.2.1图像信号的编辑
为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件,所以设置这里的缺省后缀名为“.bmp”。
Uigetfile函数的调用格式为[name,path]=yigetfile(…),在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。
如果按下取消按钮或是发生错误,则返回值是0。
根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。
同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。
退出比较简单,程序如下所示:
clc;
closeall;
close(gcf);
图像编辑
1)、灰度转换
由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为:
y=(handles.img(:
:
1));%当然也可以选择(:
:
2)或(:
:
3)
imshow(y);
但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。
另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。
程序为:
y=rgb2gray(handles.img);
imshow(y);
这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。
所以在开始时应该要有一个RGB图像或是灰度图像的判断过程。
完整的程序如下:
ifisrgb(handles.img)
y=rgb2gray(handles.img);
imshow(y);
elsemsgbox('这已经是灰度图像','转换失败');
end
如果原图是RGB,执行该操作的结果如下图:
图2.1RGB图像转换灰度图像
2)、亮度调节
用imadjust函数,其调用格式如下:
g=imadust(f,[low_inhigh_in],[low_outhigh_out]),gamma)
gamma表示映射性质,默认值是1表示线性映射。
由于该函数有五个参数需要输入,为了方便用户改变,所以这里设计一个输入对话框,用户通过对话框把五个参数赋值给[low_inhigh_in],[low_outhigh_out],gamma这五个参数,如下一组命令建立了如图所示的输入对话框:
prompt={'输入参数1','输入参数2','输入gamma'};
defans={'[00.7]','[01]','1'};
p=inputdlg(prompt,'输入参数',1,defans);
但是,这种方法并不能很好的让用户能够对图像进行任意的亮度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。
所以应该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。
由于imadjust函数有五个参数,所以原则上需要设计五个滑动条来调节对比度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度。
图2.2亮度调节
亮度调整的tag名为ld,取值范围0~1,gamma值的tag名为gamma,取值范围为0~5。
获取滑动条参数的程序如下:
handles.beta=get(handles.ld,'value');
handles.gm=get(handles.gamma,'value');
执行该操作,调节滑动条到上图所示位置,结果如下图:
图2.3调节前后
2.2.2图像信号的几种主要处理
①、截图
在MATLAB中,用函数imcrop实现对图像的剪切操作。
该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。
Imcrop函数的调用格式如下:
y=imcrop(handles.img);
不管handles.img是三维的还是二维数据,该函数都能进行操作。
下图就是对三维图像的截图:
图2.4截图前后
②、缩放
在MATLAB中,用函数imresize来实现对图像的放大或缩小。
插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。
该函数的调用格式如下:
B=imresize(A,m,method)
其中:
参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。
B=imresizee(A.m,method)表示返回原图A的m倍放大图像(m小于1时实际上是缩小);
下图就是采用邻近插值法的放大和缩小图像,参数值保持默认设置:
图2.5缩放前后
虽然处理后看不出放大的效果,这是由于坐标轴限制的原因,如果把处理后的图片保存起来,再把处理后的文件打开,就可以看到比较明显的放大效果。
图2.6放大后效果
缩小后的结果如下:
图2.7缩小前后
③旋转
1)、上下翻转
函数flipud是实现一个二维矩阵的上下翻转,如
a=[12;34],经过该函数处理后,原矩阵变为[34;12];所以利用该函数也可以对图像进行上下翻转处理,但由于该函数针对二维数据的处理,所以在写程序时,要对RGB图像和灰度图像分开处理,这就要用到isrgb函数来判断,如果是灰度图像,则可以直接用这个函数进行处理,否则就要对RGB图像进行降维处理,fork=1:
3
y(:
:
k)=flipud(x(:
:
k));
end
处理结果如图:
图2.8上下翻转
2)、左右翻转
对图像的左右翻转也可以用fliplr函数来处理,同样的,也要对灰度和彩色图像分开处理,处理结果如图:
图2.9左右翻转
3)、任意角度翻转
用函数imrotate来实现对图像的插值旋转。
该函数的调用格式如下:
B=imrotate(A,angle,method,’crop’)
其中,参数method用于指定插值的方法,可选的值可以有三种,分别为邻近插值,双线性插值,双三次插值,缺省时为邻近插值,参数angle代表旋转的角度。
一般来说,旋转后的图像会比原图大,用户可以指定“crop”参数对旋转后的图像进行剪切(取图像的中间部分),使返回的图像与原图大小相同。
执行结果为:
图2.10任意角反转
④噪声
经常用到的噪声有三种,高斯噪声,椒盐噪声,乘性噪声,可以通过以下三个函数来实现:
y=imnoise(handles.img,'gaussian',p1,p2);%高斯噪声
y=imnoise(x,'salt&pepper',p1);%椒盐噪声
y=imnoise(handles.img,'speckle',p1);%乘性噪声
p1,p2的参数也通过输入对话框的形式得到,原图加入高斯噪声后结果如下所示:
图2.11高斯噪声处理
⑤滤波
这里选择三种滤波方法,
k=medfilt2(handles.noise_img);%中值滤波
k=wiener2(handles.noise_img,[5,5]);%自适应滤波
k=filter2(fspecial('average',3),handles.noise_img)/255;%平滑滤波
同样的,这些函数也是针对二维数据,所以要先判断是彩色图像还是灰度图像,然后分别进行处理,下面是对彩色图像的自适应滤波处理:
i=handles.noise_img;
ifisrgb(i)
a=handles.noise_img(:
:
1);
b=handles.noise_img(:
:
2);
c=handles.noise_img(:
:
3);
k(:
:
1)=wiener2(a,[5,5]);
k(:
:
2)=wiener2(b,[5,5]);
k(:
:
3)=wiener2(c,[5,5]);
imshow(k);
执行结果如图:
图2.12自适应滤波处理
对其他方法的滤波程序也类似,由于把各个滤波方法放在一个选择框里,所以程序要用以下的选择语句:
switchstr
case'中值滤波'
case'自适应滤波'
case'平滑滤波'
end
⑥直方图统计
用imhist函数对图像数据进行直方图统计,
x=imhist(handles.img(:
:
1));
bar(horz,x);
其中,x矩阵的数据是0~255灰度值的统计个数,如果直接对x矩阵数据进行图形图显示,由于有256个数据,在坐标系中就会很密集,为了更清楚的显示条形图,所以在程序设计时,把x数据进行部分提取,
x1=x(1:
10:
256);
horz=1:
10:
256;
bar(horz,x1);
除了显示数据的直方图统计外,还可以对图像进行均衡处理,所用到的函数是histeq,这两个函数同样只使用于二维数据,所以也要对二维和三维数据分开处理。
直方图显示和均衡后的图像分别如下图所示
图2.13直方图和均衡后图像
⑦频谱分析
1)、频谱图
为了得到图像的频谱图,先要对数据进行傅里叶变换,用fft2函数对二维数据进行快速傅里叶变换,同时为了更好的观察频谱图,需要把fft2变换后的数据进行平移,利用fftshift函数,把快速傅里叶变换的DC组件移到光谱中心。
这样图像能量的低频成分将集中到频谱中心,图像上的边缘、线条细节信息等高频成分将分散在图像频谱的边缘。
如下图所示:
图2.14傅里叶变换前后图
2)、通过高通滤波器
axes(handles.axes2);
x=(handles.img);
ifisrgb(x)
msgbox('这是彩色图像,不能通过高通滤波器','失败');
else
y1=imnoise(x,'gaussian');%加高斯噪声
f=double(y1);%数据类型转换
k=fft2(f);%傅立叶变换
g=fftshift(k);%转换数据矩阵
[M,N]=size(g);
nn=2;
d0=3;%截止频率为3
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);%计算高通滤波器传递函数
ifd<=d0
h=0;
elseh=1;
end
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3);
end
3)、通过低通滤波器
axes(handles.axes2);
x=(handles.img);
ifisrgb(x)
msgbox('这是彩色图像,不能通过低通滤波器','失败');
else
y1=imnoise(x,'salt&pepper');%叠加椒盐噪声
f=double(y1);%数据类型转换,不支持图像的无符号整型的计算
g=fft2(f);%傅立叶变换
g=fftshift(g);%转换数据矩阵
[M,N]=size(g);
nn=2;%二阶巴特沃斯(Butterworth)低通滤波器
d0=10;%截止频率为10
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));%计算低通滤波器传递函数
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3);%显示滤波处理后的图像
end
⑧灰度图像处理
1)、二值图像
用j=im2bw(x);来对灰度图像到二值图像的转换。
转换结果为:
图2.15二值图像转换前后
2)、创建索引图像
用X=grayslice(I,n)函数来实现,转换后得到的图像为:
图2.19用X=grayslice(I,n)函数转换后图像
⑨颜色模型转换
下面是RGB颜色模型到HSV模型的转换程序:
axes(handles.axes2);
x=(handles.img);
ifisrgb(x)
HSV=rgb2hsv(x);
imshow(HSV);
else
msgbox('这是灰度图像,不能转换','转换失败');
end
转换后的结果为:
图2.16颜色模型转换前后
同样的,转化为ntsc和ycbcr模型,只要改为相应的函数即可。
函数如下:
rgb2ntsc(x);%rgb模型转ntsc模型
rgb2ycbcr(x);%rgb模型转ycbcr模型
MATLAB不仅在图像处理中具有强大的功能,他在语音信号处理中也有着相当大优点,下一章我们就一起了解一下其在语音信号处理中的应用。
第三章语音信号处理初步
3.1语音信号处理基本知识
3.1.1语音信号的采集
在MATLAB中,[y,fs,bits]=wavread(‘Blip’,[N1N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
[N1N2〕表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。
Sound(x,fs,bits);用于对声音的回放。
向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。
3.1.2语音信号的时域与频域分析
使用电脑的声卡设备采集一段语一音信号,井将其保存在电脑中。
语音信号的处理主要包括信号的提取、信号的调整、信号的变换和滤波等。
①.语音信号的时域分析
语音信号是一种非平稳的时变信号,它携带着各种信息。
在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。
语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。
语音信号分析可分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。
1)提取:
通过图形用户界面上的菜单功能按键采集电脑设备上的一段音频信号,完成音频信号的频率,幅度等信息的提取,并得到该语音信号的波形图。
2)调整:
在设计的用户图形界而下对输入的音频信号进行各种变化,如变化幅度、改变频率等操作,以实现对语音信号的调整。
②语音信号的频域分析
信号的傅立叶表示在信号的分析与处理中起着重要的作用。
因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。
另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项红物理现象。
由于语音信号是随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。
输出频谱是声道系统频率响应与激励源频谱的乘积。
声道系统的频率响应及激励源都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。
由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。
1)变换:
在用户图形界面下对采集的语音信号进行Fouricr等变换,并画出变换前后的频谱图和变换后的倒谱图。
2)滤波:
滤除语音信号中的噪音部分,可采用低通滤波、高通滤波、带通滤波和带阻滤波,并比较各种滤波后的效果。
③语音信号的效果显示
通过用户图形界而的输出功能,将处理后的信号的语音进行播放,试听处理后的效果。
3.1.3语音信号处理数字滤波器选择
数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数宇方法按预定的要求对信号进行变换。
数字滤波器可以理解为是一个计算程序或算法,将代表愉入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
从性能上来说,IIR滤波器传输函数的极点可位于九单位圆内的任何地方,因此可用较低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高。
但是这个高效率是以相位的非线性为代价的。
选择性越好,则相位非线性越严重。
相反,FIR滤波器却可以得到严格的线性相位,然而由FIR滤波器传输函数的极点固定在原点,所以只能用较高的阶数达到高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,结果,成本较高,信号延时也较大,如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位较正,同样要大增加滤波器的节数和复杂性。
整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。
3.2语音信号处理初步流程图
图3.1列出了整个语音信号处理系统的工作流程:
:
图3.1语音信号处理系统的工作流程
其中信号调整包括信号的幅度和频率的任意倍数变化。
如下图3.2
图3.2信号调整
信号的滤波采用了四种滤波方式,来观察各种滤波性能的优缺点:
图3.3语音信号滤波的方式
在以上三图中,可以看到整个语音信号处理系统的流程大概分为三步,首先要读入待处理的语音信号,然后进行语音信号的处理,包括信息的提取、幅度和频率的变换以及语音信号的傅里叶变换、滤波等;滤波又包括低通滤波、高通滤波、带通滤波和带阻滤波等方式。
最后对处理过的语音信号进行处埋后的效果显示。
以上是本系统的工作流程,本文将从语音信号的采集开始做详细介绍。
3.3语音信号处理的实现
3.3.1图形用户界面设计
在MA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab 信号 处理 初步