收藏 分销(赏)

课程设计dsp原理及应用-毕业论文.doc

上传人:可**** 文档编号:2591835 上传时间:2024-06-01 格式:DOC 页数:25 大小:1.12MB
下载 相关 举报
课程设计dsp原理及应用-毕业论文.doc_第1页
第1页 / 共25页
课程设计dsp原理及应用-毕业论文.doc_第2页
第2页 / 共25页
课程设计dsp原理及应用-毕业论文.doc_第3页
第3页 / 共25页
课程设计dsp原理及应用-毕业论文.doc_第4页
第4页 / 共25页
课程设计dsp原理及应用-毕业论文.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、 课 程 设 计 报 告课程设计名称: DSP原理及应用 DSP原理及应用课程设计目 录1.前言12.课程设计引言22.1课程设计题目22.2 课程设计目的22.3 课程设计内容和要求22.3.1课程设计内容22.3.2 课程设计要求22.4工作进度安排及分工32.4.1进度安排32.4.2分工情况33.基本原理43.1 Matlab介绍43.2螳螂算法及单目测距原理43.2.1 螳螂算法43.2.2单目测距64.GUI Design115.测试结果及代码145.1 测试结果145.2 实验代码166.总结和展望217.参考文献23231.前言曾几何时,汽车对很多家庭来说是不敢想象的。但随着社

2、会生产力的发展和经济水平的大幅度提高,百姓的收入日益增加,解决了温饱问题的家庭开始奔向小康,表现最明显的是交通工具的升级换代:一些家庭开始购买汽车作为代步工具。针对汽车拥挤的现状,设计一种反应快,稳定性好而且经济实用的汽车防撞测距仪对当今汽车行驶安全现状势在必行。汽车防撞测距仪是一种向驾驶员报警的装置,此汽车防撞测距仪能在汽车行驶和倒车过程中自动检测障碍物,然后通过超声波测距原理测出汽车与障碍物之间的距离,并将距离显示出来。当汽车与障碍物之间的距离达到极限时,系统发出声光报警,达到提醒司机防止撞车的目的。随着社会经济发展的不断进步,汽车的数量逐年增加,汽车拥挤的现状不可避免,而在汽车拥挤的情况

3、下,恶性事故屡屡发生,时刻威胁着人们的安全。我国交通事故的年死亡人数远高于他国,分别是美国的2.3倍、德国的18.4倍、日本的13.4倍。当现代家庭充分的享受汽车带来方便的同时,也为此付出了沉重的代价。据统计,我国自2010年至2010年,已有150多万人死于道路交通事故,其中大部分的道路交通事故为汽车追尾碰撞事故。面对当今这种现状,设计出一种反应快,稳定性好而且经济实用的汽车防撞测距仪势在必行。防撞预警自动测量技术应运而生,尤其非接触式测量技术发展卓越。在大多情况下,测量与障碍物之间的距离是不能够接触到障碍物的,在这种时候就会用到非接触式测量设备。无人驾驶车用激光标定螳螂防撞算法的仿真,是高

4、档汽车防撞技术一部分,该系统是防止汽车碰撞的一种高科技智能装置,它能够通过雷达发现前方车辆、行人等其他障碍物,一旦通过微型处理器分析对汽车安全构成威胁就会发出警报提醒驾驶员同时采取相应的制动措施有效规避碰撞事故的发生,最大限度保障人和车的安全。2.课程设计引言2.1课程设计题目无人驾驶车用激光标定螳螂防撞算法的仿真2.2 课程设计目的 本课程是为通信工程专业本科生开设的必修课,结合学生的专业方向的理论课程,充分发挥学生的主动性,使学生掌握应用MATLAB 等仿真软件建立基于激光与可见光的无人驾驶车防撞系统,巩固理论课程内容,规范文档的建立,培养学生的创新能力,并能够运用其所学知识进行综合的设计

5、,鼓励2人一组。DSP的课程设计是对自适应DSP控制原理与应用等系统仿真软件、课程学习的综合检验,配合理论课的教学,让学生亲自参加设计、仿真、验证DSP系统的高级处理与控制原理、Applications等方面的关键知识点。2.3 课程设计内容和要求2.3.1课程设计内容在WINDOWS环境下,用MATLAB搭建图像处理软件,一位同学负责GUI的建设,一位同学负责后台算法的建立,用手机预先拍好的激光标定图片序列构建虚拟前进过程,并播报与障碍物的距离,类似螳螂三单眼三维超高速“DMA”算法。2.3.2 课程设计要求要求:a 熟悉Matlab的GUI Design。b 熟悉Matlab的Image边

6、框Processc 用手机与激光笔采集样板图序列d Simulate电子PTZ功能e 用两点定位计算报告第三点的距离f 如果时间多余再做如下试验箱互动g Connect with the TI board to make warning sound h User must be able to control the PTZ.2.4工作进度安排及分工2.4.1进度安排Day 1: 图书馆查阅资料,思考总体设计方案, 熟悉软件的编程环境,推荐的参考资料有:MATLAB工程仿真MATLAB/SIMULINK系统建模与仿真实例分析TMS320C55x DSP Library Programmers

7、ReferenceDay 2: 总体设计方案的确定与设计Day 3: 各部分的具体实现Day 4: 程序调试并程序注释Day 5: 整理完成设计报告2.4.2分工情况1 缪敏同学负责Matlab的GUI Design和图片的采集。2 夏秋萍同学负责Matlab程序的编写和修改。3 夏秋萍同学和缪敏同学共同负责课程设计报告的撰写。3.基本原理3.1 Matlab介绍MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是matrix&laboratory

8、两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、

9、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。3.2螳螂算法及单目测距原理3.2.1 螳螂算法在所有的动物当中,螳螂躲避攻击对象的反应速度最快,主要是因为螳螂不但有复眼还有单

10、眼,当攻击对象的影像从复眼进入单眼时,单眼负责观察目标变大的速度,随时通知中枢神经逃避目标。根据以上原理,我们选择了含有96个CPU与ARM处理器的芯片,96个CPU完成复眼的功能,ARM处理器完成单眼的功能。视觉几何计算规避原理图如图1:图1复眼CPU提供径向畸变校正后的图像image(t)和image(t-1),单眼提供features(t-1),同时负责提取features(t),如果feature没有变化,则表示几何视觉距离不变,如果feature有变化,进行motion检测,进行三角几何计算,同时标定聚合最终位置。计算机视觉的基本任务可以归结到测量、识别和重建。为进行视觉计算,必须首

11、先获得空间坐标系与图象坐标系之间的变换关系,即为摄象机建立适当的模型并求解其参数。模型和参数的准确程度直接影响视觉计算的精度。而视觉计算的鲁棒性和可靠性、对源数据及计算条件的误差的容忍度、计算的代价等,都对算法是否能在实际中应用有深刻的影响。三维视觉三角几何计算原理图如图2 图2阴影部分为电子眼的光学轴长(A),B表示障碍的大小与位置,A、B的大小可以根据需要用软件在飞行现场进行长、宽、高的幂比例关系校准与自标定。当单眼在5帧图像里看到变化超过=10个像素,断定目标有变化,复眼的速度是每秒30帧,变化是用最小均方差的方法计算的。计算公式如下:常用的自动规避方法有雷达,超声波,红外线或激光。每种

12、方法都有他各自的优缺点。雷达缺点是由于主动发射电磁波,容易暴露自身,成为对方反辐射导弹的目标,另外也容易被干扰,只要对方采取电子对抗措施,如使用电子干扰或发射干扰弹,就无法正常工作。超声波测距的优点是比较耐脏污,即使传感器上有尘土,只要没有堵死就可以测量,可以在较差的环境中使用,所以倒车雷达多半使用超声波,缺点是精度较低,且成本较高。红外测距的优点是便宜,易制,安全,缺点是精度低,距离近,方向性差。激光测距的优点是精确,缺点是需要注意人体安全,且制做的难度较大,成本较高,而且光学系统需要保持干净,否则将影响测量。所以我们决定选择普通可见光低照度感光传感器作为我们的测距方法。不但可以测量距离还可

13、以识别跟踪目标。3.2.2单目测距车辆的安全系统是智能交通系统的重要组成部分,在危险预警系统、防撞系统等方面发挥着重要的作用,测距技术则是实现这一系统的关键部分。目前,可用于汽车测距主要有超声波测距、毫米波雷达测距、激光测距和视觉测距这四类方式,除去只适合短距离测距的超声波方式,与少则几千,动辄上万的雷达或激光测距仪器相比,视觉测距在成本设备方面有很大的价格优势。目前应用于智能车辆的视觉系统根据摄像机的多少一般分为两种:采用多个摄像机的立体视觉系统及采用单个摄像机的单目视觉系统。立体视觉虽然对于恢复深度信息及确定景物距离比较容易,测量精度高,但是计算速度较慢,成本较大,同时图像配准这一难题的存

14、在缺大大限制了它的应用。单目视觉系统的方法简洁快速,具有更快的图像处理速度和更好的控制实时性,也具有很好的研究和应用前景。(1) 反转透视测距模型摄像机采集图像的过程是从三维欧拉空间到二维欧拉空间的几何变换过程。考虑单目摄像机测距的几何变换过程,如果用I表示三维的现实空间而用W表示图像空间,则图像采集过程是从I到W的过程。测距过程可以被视为这一过程的逆过程,如图1所示 ,车距测量可以认为是利用图像空间W = u,v中的数据 ,在一 定 的 先 验 条 件 下 计 算 现 实 空 间I =x,y,z中 的 一 个 平 面S =(x, y,o)W 上的数据过程。获得了目标车辆底端在图像空间中的纵坐

15、标 u ,还需要获得采集图像的条件和对于图像场景描述的假设。如果包括试点及摄像机的位置,由摄像机在现实空间中的位置 l,d,h表示;视图方向由摄像机中心轴与标准轴的夹角和来表示;摄像机的孔径张角 2 ;摄像机清晰度 m n。以上参数值可通过测量或间接计算获得图3。图3m n射线从摄像机到外界空间,获得图像空间中 (u, v)点的射线在实际间中的角度由(u)和 (v)来确定。其中 u、v 是I空间中的坐标, u = 0, 1,2, ,m1;v=0,1,2,n1。另外,地面上一点P在S平面内到摄像机的地面距离可以通过下一距离公式计算:综合上述因素,得到前车距离的计算公式:该模型利用射线角度的关系建

16、立离图像空间I中的坐标值u, v与现实空间平面 S = ( x, y,o) W 的数据之间的关系。因此 , 获得图像中车辆的像素坐标就可以计算出车辆在S平面中的实际位置图4。图4如果摄像机摄像中心轴与世界坐标系中的 x 轴平行,则和值均为0,计算过称亦可简化为:(2) 基于几何关系的投影模型和摄像机标定的测距算法图像采集是将客观世界的三维场景投影到CCD摄像机(采集器)的二维像平面(CCD光敏矩阵表面)上,这个投影一般采用几何透视变换来描述,其依据小孔成像模型来描述此透视变换,如图5所示。图5 (a)CCD布置示意图 (b)距离测量几何模型其中, f 为CCD摄像机的有效焦距; 为CCD摄像机

17、的俯仰角度;h 为CCD摄像机的安装高度(镜头中ixndao地面的高度);()为光轴与像平面的焦点,作为像平面坐标系的原点,一般取为 (0,0);(x, y)为路面上一点P在像平面上的投影坐标(图3)。在这里,点P就是检测出的前方车辆底部阴影的一点。则根据几何关系得到点P与镜头中心的水平距离d的计算公式如下:(3) 基于逆投影变换的测距算法约束条件:(1)因高速公路坡度较小,故可假设高速公路坡度相同。车道没有太大的弯道,在图像检测范围内,基本呈直道;(2)拍摄位置固定,摄像头垂直于地面,拍摄角度不变。在本模型中,车间距离需要通过摄像图像来得到,即从图像信息出发,解求三维环境汇总物体的空间位置、

18、形状、面积、长度等几何信息,这就要建立物体点和像点之间的关系,需要建立适当的坐标系。由这3个坐标系之间的三角形相似关系可以导出:当焦距 f一定时,实际空间中两车间距与图像前方车辆处的车道宽度的乘积为一常数。距离远近的不同,前车在图中的成像大小也不一样,距离越远,成像越小,距离越近,成像越大,任意两次测量的距离值与成像大小成反比关系,即: 其中: d和d 分别为两次测量的距离(单位:米), w 和 w 为两次测量图像中的车宽(单位:像素)。若已知像大小为W ,则可根据 D = dw/W或 D = d w/W,求得此时的距离D。从式中可知, d w =dw是个常量,记为测量系数 q,这里 ,可以通

19、过多次测量时记录的和和,求出因此,距离公式可定义为: D = qW。式中: D为所求距离(单位:米);W为图中车的宽度(单位:像素);q 为测量系数。4.GUI Design1、Open a New GUI in the GUIDE Layout Editor1. Start GUIDE by typing guide at the MATLAB prompt2. In the GUIDE Quick Start dialog box, select the Blank GUI (Default) template, and then click OK3. Display the names

20、of the GUI components in the component palette:a. Select File Preferences GUIDE.b. Select Show names in component palette.c. Click OK.3、Layout the Simple GUIDE GUIAdd, align, and label the components in the GUI.1. Add the three push buttons to the GUI. Select the push button tool from the component

21、palette at the left side of the Layout Editor and drag it into the layout area. Create three buttons, positioning them approximately as shown in the following figure.5、Label the Push ButtonsEach of the three push buttons specifies a plot type: surf, mesh, and contour. This topic shows you how to lab

22、el the buttons with those options.1. Select View Property Inspector.2. In the layout area, click the top push button.3. In the Property Inspector, select the String property, and then replace the existing value with the word Start.4. Click outside the String field. The push button label changes to S

23、tart.6、Save the GUI LayoutWhen you save a GUI, GUIDE creates two files, a FIG-file and a code file. The FIG-file, with extension .fig, is a binary file that contains a description of the layout. The code file, with extension .m, contains MATLAB functions that control the GUI behavior.1. Save and act

24、ivate your GUI by selecting Tools Run.2. GUIDE displays a dialog box displaying: Activating will save changes to your figure file and MATLAB code. Do you wish to continue?Click Yes.3. GUIDE opens a Save As dialog box in your current folder and prompts you for a FIG-file name.4. Browse to any folder

25、for which you have write privileges, and then enter the file name simple_gui for the FIG-file. GUIDE saves both the FIG-file and the code file using this name.5. If the folder in which you save the GUI is not on the MATLAB path, GUIDE opens a dialog box, giving you the option of changing the current

26、 folder to the folder containing the GUI files, or adding that folder to the top or bottom of the MATLAB path.5.测试结果及代码5.1 测试结果打开源文件,运行文件,出现下图:单击“start”按钮,运行程序。下图为第一张图片(障碍物3m远)的运行结果下图为第二张图片(障碍物2m远)的运行结果下图为第三张图片(障碍物1m远)的运行结果5.2 实验代码function varargout = untitled(varargin)% UNTITLED M-file for untitled

27、.fig% UNTITLED, by itself, creates a new UNTITLED or raises the existing% singleton*.% H = UNTITLED returns the handle to a new UNTITLED or the handle to% the existing singleton*.% UNTITLED(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLBACK in UNTITLED.M with the given in

28、put arguments.% UNTITLED(Property,Value,.) creates a new UNTITLED or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before untitled_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. Al

29、l inputs are passed to untitled_OpeningFcn via varargin.% *See GUI Options on GUIDEs Tools menu. Choose GUI allows only one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES% Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help untitled% Last

30、Modified by GUIDE v2.5 11-Jun-2015 09:09:57% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, untitled_OpeningFcn, . gui_OutputFcn, untitled_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & i

31、schar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before untitled is made visible.function untitled_OpeningFcn(hObject,

32、eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to untitled (see VARARGIN)% Choose

33、default command line output for untitledhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes untitled wait for user response (see UIRESUME)% uiwait(handles.figure1);% - Outputs from this function are returned to the command line.function varargout = untitled_Ou

34、tputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles

35、 structurevarargout1 = handles.output;% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)filename,pathname=uigetfile(*.jpg;*bmp;*.gif,);%+str=pathname filename;%im1=imread(str);%axesaxes(handles.axes1);imshow(im1);% hObject handle to pushbutton1 (se

36、e GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% - Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)filename,pathname=uigetfile(*.jpg;*bmp;*.gif,);%+str=pathname fil

37、ename;%im2=imread(str);%axesaxes(handles.axes2);imshow(im2);% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% - Executes on button press in pushbutton3.function pushbutton3_Callbac

38、k(hObject, eventdata, handles)filename,pathname=uigetfile(*.jpg;*bmp;*.gif,);%+str=pathname filename;%im3=imread(str);%axesaxes(handles.axes3);imshow(im3);% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and

39、user data (see GUIDATA)% - Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)for n=1:3A=imread(int2str(n),.jpg); %axes(handles.axes4);% cut smallIrows = size(A,1); % Find the lines verticalIcolumns = size(A,2); % Fine lines horizontalfor m=1:100scal=1-

40、m/600;rowscutend = round(Irows*scal); % after the cut rowcolumnscutend = round(Icolumns*scal); % after the cut columnrowscuthead = Irows-round(Irows*scal); % after the cut rowcolumnscuthead = Icolumns-round(Icolumns*scal); % after the cut columnAcut = A(rowscuthead:rowscutend,columnscuthead:columnsc

41、utend,:); pause(0.02); % After cutif n=1 sca=3*scalendif n=2 sca=2*scalendif n=3 sca=1*scalenddigits(5);sca1=sca+0.0001;imshow(Acut);title(距离障碍物距离,num2str(sca1),m);endf(n)=getframe;pause(0.05);end% hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MA

42、TLAB% handles structure with handles and user data (see GUIDATA)% - Executes during object creation, after setting all properties.function axes1_CreateFcn(hObject, eventdata, handles)% hObject handle to axes1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty

43、 - handles not created until after all CreateFcns called% Hint: place code in OpeningFcn to populate axes1% - Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8 (see GCBO)% eventdata reserved - to be defined in a future v

44、ersion of MATLAB% handles structure with handles and user data (see GUIDATA)6.总结和展望在大三下学期的时候我们开设了DSP处理及应用这门课,黄老师幽默风趣的演讲风格,谦虚谨慎的实验态度让我们班同学对这门课有了不同的认识,黄老师的知识认知视角独特,总能将一个枯燥乏味的知识点用一种新颖的方式介绍给我们。这门课和之前学习的数字信号极其相似,我们编写代码使用的软件是MATLAB,以前对Matlab的感觉不太好,两节课有打不完的代码,自己也没学会什么,连打字速度也没有得到相应提升,但是经过这两个星期的课程设计,自己不仅学到了更多的Matlab应用知识,更多的是自己能够亲手去设计一个程序的成就感。本次课程设计为时一周,以无人驾驶汽车为实验对象,在螳螂算法的基础之上,围绕障碍物信息识别与处理算法以及系统的实现展开本次的课程设计。时光匆匆,一周的时间过的很快,由于时间问题,我们的实验也做得很匆忙。这次的课程设计是无人驾驶车用激光标定螳螂防撞算法的仿真,它培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力,对实际工作能力进行具体训练和考察。课程设计的第一天,我和小伙伴分别确定了自己的任务,一个构建GUI

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服