




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 課 程 設 計 報 告課程設計名稱: DSP原理及應用 系 別: 三 系 學 生 姓 名: 班 級: 學 號: 成 績: 指 導 教 師: 開 課 時 間: 2014-2015學年2學期一、課程設計目的 本課程是為通信工程專業本科生開設的必修課,結合學生的專業方向的理論課程,充分發揮學生的主動性,使學生掌握應用MATLAB 等仿真軟件建立基于激光與可見光的無人駕駛車防撞系統,鞏固理論課程內容,規范文檔的建立,培養學生的創新能力,并能夠運用其所學知識進行綜合的設計,鼓勵2人一組。DSP的課程設計是對自適應DSP控制原理與應用等系統仿真軟件、課程學習的綜合檢驗,配合理論課的教學,讓學生親自參加設
2、計、仿真、驗證DSP系統的高級處理與控制原理、Applications等方面的關鍵知識點。二、設計任務書無人駕駛車用激光標定螳螂防撞算法的仿真三、進度安排Day 1: 圖書館查閱資料,思考總體設計方案, 熟悉軟件的編程環境,推薦的參考資料有:MATLAB工程仿真MATLAB/SIMULINK系統建模與仿真實例分析TMS320C55x DSP Library Programmers ReferenceDay 2: 總體設計方案的確定與設計Day 3: 各部分的具體實現Day 4: 程序調試并程序注釋Day 5: 整理完成設計報告四、具體要求及分工情況要求:a 熟悉Matlab的GUI Desig
3、n。b 熟悉Matlab的Image邊框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.五、課程設計內容在WINDOWS環境下,用MATLAB搭建圖像處理軟件,一位同學負責GUI的建設,一位同學負責后臺算法的建立,用 預先拍好的激光標定圖片序列構建虛擬前進過程,并播報與障礙物的距離,類似螳螂三單眼三維超高速“DMA”算法。
4、目 錄1、引言12、基本原理22.1 Matlab介紹22.2螳螂算法及單目測距原理22.2.1 螳螂算法243、GUI Design94、實驗代碼125、測試結果186、總結和展望217、參考文獻221、引言近年來,互聯網技術的迅速發展給汽車工業帶來了革命性變化的機會。與此同時,汽車智能化技術正逐步得到廣泛應用,這項技術使汽車的操作更簡單,行駛安全性也更好,而其中最典型也是最熱門的未來應用就是無人駕駛汽車。也許這一趨勢能使無人汽車比新能源汽車更早走入大眾的生活。公共領域示范運營的大環境下,首先選擇微型電 動車作為推廣突破口, 市場前景廣闊,環保、節能效果快速、明顯;在使用過程中,通過合理策略
5、可 進一步減低電動汽車的購置和使用成本,提高電動汽車競爭力;最后指出純電動汽車的有效推廣需要構建純電動汽車友好性社會。純電動汽車的市場化勢必為汽車行業的發展注入新的活力,為國家在低碳經濟和后危機時代的經濟戰略布局取得先機。無人駕駛,是指通過給車輛裝備智能軟件和 多種感應設備,包括車載傳感器、雷達、GPS以及攝像頭等,實現車輛的自主安全駕駛,安全高效地 到達目的地并達到完全消除交通事故的目標。美國NHTSA(美國國家公路交通安全管理局)分5級定義汽車的自動化等級。 0級:由駕駛員駕駛;1級:具備1種以上自動化控制功能(如自適應巡航和車道保持系統ACC等);2級:以汽車為主體執行多種操作功能;3級
6、:當以汽車為主體的駕駛行不通時可指示駕駛員切換為手動駕駛;4級:完全可以無人駕駛。 如今,越來越多的企業開始涉足這塊領域,將尖端的IT技術運用到汽車領域中,希望為消費者駕車出行帶來更多美好體驗。麥肯錫預測,到2025年無人駕駛汽車可以產生2000億19萬億美元的產值;市場研究公司IHS預測, 2035年4級完全無人駕駛車每年銷量可達480萬輛。對任何一個行業而言,這都具有足夠的市場誘惑。2、基本原理2.1 Matlab介紹MATLAB是美國MathWorks公司出品的商業數學軟件,用于算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulin
7、k兩大部分。MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。是由美國mathworks公司發布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和仿真等諸多強大功能集成在一個易于使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,并在很大程度上擺脫了傳統非交互式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。MATLAB和Mathematica、Maple并稱為三大數學軟件。它在數學類
8、科技應用軟件中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優點,使MATLAB成為一個強大的數學軟件。在新的版本中也加入了對C,FORTRAN,C+,JAVA的支持。2.2螳螂算法及單目測距原理2.2.1 螳螂算法在所有的動物
9、當中,螳螂躲避攻擊對象的反應速度最快,主要是因為螳螂不但有復眼還有單眼,當攻擊對象的影像從復眼進入單眼時,單眼負責觀察目標變大的速度,隨時通知中樞神經逃避目標。根據以上原理,我們選擇了含有96個CPU與ARM處理器的芯片,96個CPU完成復眼的功能,ARM處理器完成單眼的功能。視覺幾何計算規避原理圖如圖1:圖1復眼CPU提供徑向畸變校正后的圖像image(t)和image(t-1),單眼提供features(t-1),同時負責提取features(t),如果feature沒有變化,則表示幾何視覺距離不變,如果feature有變化,進行motion檢測,進行三角幾何計算,同時標定聚合最終位置。計
10、算機視覺的基本任務可以歸結到測量、識別和重建。為進行視覺計算,必須首先獲得空間坐標系與圖象坐標系之間的變換關系,即為攝象機建立適當的模型并求解其參數。模型和參數的準確程度直接影響視覺計算的精度。而視覺計算的魯棒性和可靠性、對源數據及計算條件的誤差的容忍度、計算的代價等,都對算法是否能在實際中應用有深刻的影響。三維視覺三角幾何計算原理圖如圖2 圖2陰影部分為電子眼的光學軸長(A),B表示障礙的大小與位置,A、B的大小可以根據需要用軟件在飛行現場進行長、寬、高的冪比例關系校準與自標定。當單眼在5幀圖像里看到變化超過=10個像素,斷定目標有變化,復眼的速度是每秒30幀,變化是用最小均方差的方法計算的
11、。計算公式如下:常用的自動規避方法有雷達,超聲波,紅外線或激光。每種方法都有他各自的優缺點。雷達缺點是由于主動發射電磁波,容易暴露自身,成為對方反輻射導彈的目標,另外也容易被干擾,只要對方采取電子對抗措施,如使用電子干擾或發射干擾彈,就無法正常工作。超聲波測距的優點是比較耐臟污,即使傳感器上有塵土,只要沒有堵死就可以測量,可以在較差的環境中使用,所以倒車雷達多半使用超聲波,缺點是精度較低,且成本較高。紅外測距的優點是便宜,易制,安全,缺點是精度低,距離近,方向性差。激光測距的優點是精確,缺點是需要注意人體安全,且制做的難度較大,成本較高,而且光學系統需要保持干凈,否則將影響測量。所以我們決定選
12、擇普通可見光低照度感光傳感器作為我們的測距方法。不但可以測量距離還可以識別跟蹤目標。車輛的安全系統是智能交通系統的重要組成部分,在危險預警系統、防撞系統等方面發揮著重要的作用,測距技術則是實現這一系統的關鍵部分。目前,可用于汽車測距主要有超聲波測距、毫米波雷達測距、激光測距和視覺測距這四類方式,除去只適合短距離測距的超聲波方式,與少則幾千,動輒上萬的雷達或激光測距儀器相比,視覺測距在成本設備方面有很大的價格優勢。目前應用于智能車輛的視覺系統根據攝像機的多少一般分為兩種:采用多個攝像機的立體視覺系統及采用單個攝像機的單目視覺系統。立體視覺雖然對于恢復深度信息及確定景物距離比較容易,測量精度高,但
13、是計算速度較慢,成本較大,同時圖像配準這一難題的存在缺大大限制了它的應用。單目視覺系統的方法簡潔快速,具有更快的圖像處理速度和更好的控制實時性,也具有很好的研究和應用前景。(1) 反轉透視測距模型攝像機采集圖像的過程是從三維歐拉空間到二維歐拉空間的幾何變換過程。考慮單目攝像機測距的幾何變換過程,如果用I表示三維的現實空間而用W表示圖像空間,則圖像采集過程是從I到W的過程。測距過程可以被視為這一過程的逆過程,如圖1所示 ,車距測量可以認為是利用圖像空間W = u,v中的數據 ,在一 定 的 先 驗 條 件 下 計 算 現 實 空 間I =x,y,z中 的 一 個 平 面S =(x, y,o)W
14、上的數據過程。獲得了目標車輛底端在圖像空間中的縱坐標 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平面內到攝像機的地面距離可以通過下一距離
15、公式計算:綜合上述因素,得到前車距離的計算公式:該模型利用射線角度的關系建立離圖像空間I中的坐標值u, v與現實空間平面 S = ( x, y,o) W 的數據之間的關系。因此 , 獲得圖像中車輛的像素坐標就可以計算出車輛在S平面中的實際位置圖4。圖4如果攝像機攝像中心軸與世界坐標系中的 x 軸平行,則和值均為0,計算過稱亦可簡化為:(2) 基于幾何關系的投影模型和攝像機標定的測距算法圖像采集是將客觀世界的三維場景投影到CCD攝像機(采集器)的二維像平面(CCD光敏矩陣表面)上,這個投影一般采用幾何透視變換來描述,其依據小孔成像模型來描述此透視變換,如圖5所示。圖5 (a)CCD布置示意圖 (
16、b)距離測量幾何模型其中, f 為CCD攝像機的有效焦距; 為CCD攝像機的俯仰角度;h 為CCD攝像機的安裝高度(鏡頭中ixndao地面的高度);()為光軸與像平面的焦點,作為像平面坐標系的原點,一般取為 (0,0);(x, y)為路面上一點P在像平面上的投影坐標(圖3)。在這里,點P就是檢測出的前方車輛底部陰影的一點。則根據幾何關系得到點P與鏡頭中心的水平距離d的計算公式如下:(3) 基于逆投影變換的測距算法約束條件:(1)因高速公路坡度較小,故可假設高速公路坡度相同。車道沒有太大的彎道,在圖像檢測范圍內,基本呈直道;(2)拍攝位置固定,攝像頭垂直于地面,拍攝角度不變。在本模型中,車間距離
17、需要通過攝像圖像來得到,即從圖像信息出發,解求三維環境匯總物體的空間位置、形狀、面積、長度等幾何信息,這就要建立物體點和像點之間的關系,需要建立適當的坐標系。由這3個坐標系之間的三角形相似關系可以導出:當焦距 f一定時,實際空間中兩車間距與圖像前方車輛處的車道寬度的乘積為一常數。距離遠近的不同,前車在圖中的成像大小也不一樣,距離越遠,成像越小,距離越近,成像越大,任意兩次測量的距離值與成像大小成反比關系,即: 其中: d'和d ''分別為兩次測量的距離(單位:米), w' 和 w' '為兩次測量圖像中的車寬(單位:像素)。若已知像大小為W ,則可
18、根據 D = d'×w'/W或 D = d' '×w''/W,求得此時的距離D。從式中可知, d '× w '=d''×w''是個常量,記為測量系數 q,這里 ,可以通過多次測量時記錄的和和,求出因此,距離公式可定義為: D = qW。式中:D為所求距離(單位:米);W為圖中車的寬度(單位:像素);q 為測量系數。3、GUI Design1、Open a New GUI in the GUIDE Layout Editor1. Start GUIDE by t
19、yping 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 of the GUI components in the component palette:a. Select File > Preferences > GUIDE.b. Select Show names in component palette.c. Click OK.3、Lay
20、out 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 palette at the left side of the Layout Editor and drag it into the layout area. Create three buttons, positioning them approximately as sho
21、wn 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 label the buttons with those options.1. Select View > Property Inspector.2. In the layout area, click the top push button.3. In the Propert
22、y 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 Start.5. Click each of the remaining push buttons in turn andrepeat steps 3 and 4. Label the middle push button 3M, the neat button 2M,
23、and the bottom button 1M.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 beha
24、vior.1. Save and activate 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-fil
25、e name.4. Browse to any folder 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
26、 option of changing the current folder to the folder containing the GUI files, or adding that folder to the top or bottom of the MATLAB path.4、實驗代碼function varargout = untitled(varargin)% UNTITLED, by itself, creates a new UNTITLED or raises the existing% singleton*.% H = UNTITLED returns the handle
27、 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 input arguments.% UNTITLED('Property','Value',.) creates a new UNTITLED or raises the% existin
28、g 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. All inputs are passed to untitled_OpeningFcn via varargin.% *See GUI Options on GUIDE'
29、s 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 Modified by GUIDE v2.5 08-Jan-2002 15:01:51% Begin initialization code
30、- 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 && isc
31、har(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, ev
32、entdata, 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 de
33、fault 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_Outp
34、utFcn(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 s
35、tructurevarargout1 = handles.output;% - Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)filename,pathname=uigetfile('*.jpg''*bmp''*.gif','');%§§+str=pathname filename;%im3=imread(str);%axesaxes(handles.axes3)
36、;imshow(im3);% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% - Executes during object creation, after setting all properties.function axes4_CreateFcn(hObject, eventdata, handles)
37、% hObject handle to axes4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: place code in OpeningFcn to populate axes4% - Executes on button press in pushbutton7.function pushbutton7_Callback(hOb
38、ject, eventdata, handles) for n=1:3 A=imread(int2str(n),'.jpg'); axes(handles.axes4); % cut smallIrows = size(A,1); % Find the lines vertical Icolumns = size(A,2); % Fine lines horizontalfor m=1:100 scal=1-m/600;rowscutend = round(Irows*scal); % after the cut rowcolumnscutend = round(Icolumn
39、s*scal); % after the cut columnrowscuthead = Irows-round(Irows*scal); % after the cut rowcolumnscuthead = Icolumns-round(Icolumns*scal); % after the cut column Acut = A(rowscuthead:rowscutend,columnscuthead:columnscutend,:);pause(0.02); % After cutif n=1 sca=3*scal sca1=sca+0.0001; endif n=2 sca=2*s
40、cal sca1=sca+0.0001; endif n=3 sca=1*scal sca1=sca+0.00001; end 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 MATLAB% handles structure with handles
41、and user data (see GUIDATA)% - Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)for n=1:1A=imread(int2str(n),'.jpg'); %¨axes(handles.axes4);% cut smallIrows = size(A,1); % Find the lines verticalIcolumns = size(A,2); % Fine lines horizont
42、alfor m=1:100scal=1-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,col
43、umnscuthead:columnscutend,:); pause(0.02); % After cuti=3*scal;ii=i+0.0001;imshow(Acut);title('距離障礙物',num2str(ii),'m處');endf(n)=getframe;pause(0.05);end% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with
44、 handles and user data (see GUIDATA)% - Executes on button press in pushbutton9.function pushbutton9_Callback(hObject, eventdata, handles)for n=2:2A=imread(int2str(n),'.jpg'); axes(handles.axes4);% cut smallIrows = size(A,1); % Find the lines verticalIcolumns = size(A,2); % Fine lines horizo
45、ntalfor m=1:100scal=1-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,c
46、olumnscuthead:columnscutend,:); pause(0.02); % After cuti=2*scal;ii=i+0.0001;imshow(Acut);title('距離障礙物',num2str(ii),'m處');endf(n)=getframe;pause(0.05);end% hObject handle to pushbutton4 (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 pushbutton12.function pushbutton12_Callback(hObject, eventdata, handles)for n=3:3A=imread(int2str(n),'.jpg')
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廈門工學院《有限元法與應用》2023-2024學年第二學期期末試卷
- 汝州職業技術學院《管理學原理A》2023-2024學年第二學期期末試卷
- 中國藥科大學《矩陣論5》2023-2024學年第二學期期末試卷
- 濮陽科技職業學院《世界文化史》2023-2024學年第二學期期末試卷
- 西安海棠職業學院《交互設計原理》2023-2024學年第二學期期末試卷
- 吉林財經大學《醫學影像設備與技術學》2023-2024學年第二學期期末試卷
- 云南旅游職業學院《建筑與城市影像》2023-2024學年第一學期期末試卷
- 湖北財稅職業學院《民舞-中國民族民間舞》2023-2024學年第二學期期末試卷
- 國際貿易實務講義出口合同的履行
- 建筑民工勞務合同
- 標準 12千伏氣體絕緣環網柜技術符合性評估實施細則
- 漁家傲(天接云濤連曉霧)說課稿
- 2023年3月PETS2真題卷及答案
- GB/T 30220-2013游樂設施安全使用管理
- GB/T 28461-2012碳纖維預浸料
- 遇見友誼-如何學會與朋友相處主題班會課件
- 中外文化交流史課件
- 深圳醫保知識參考題庫(有答案)
- 手術室區域劃分
- 《高等數學》全冊教案教學設計
- 薪酬管理第6版第3章課件
評論
0/150
提交評論