電動車攝像定位系統(tǒng)測量軟件設計_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  論文統(tǒng)一格式:</b></p><p><b>  編號:    </b></p><p>  本科畢業(yè)設計(論文)</p><p>  電動車攝像定位系統(tǒng)測量軟件設計</p><p>  Electric car camera positioning system m

2、easuring software design</p><p>  學 院 信息學院 </p><p>  專 業(yè) 電子信息科學與技術 </p><p>  班 級 14電信升本 </p><p>  學 號 143330219 </p>

3、<p>  姓 名 吳聯(lián)秋 </p><p>  指導教師 張衛(wèi)強 職稱:教授  </p><p>  完成日期 </p><p><b>  誠 信 承 諾</b></p><p>  我謹在此承諾:本人所寫的畢業(yè)論文《電動車攝像

4、定位系統(tǒng)測量軟件設計》均系本人獨立完成,沒有抄襲行為,凡涉及其他作者的觀點和材料,均作了注釋,若有不實,后果由本人承擔。</p><p>  承諾人(簽名):吳聯(lián)秋 </p><p>  年 月 日</p><p>  以下是學校的寫作格式,但學院對寫作格式又作了規(guī)定,請見附件中“海洋學院2012屆本科生畢業(yè)論文的統(tǒng)一要求”;學院未說明部分,可

5、參照學校要求。(即寫作格式按學院的要求,學校的可作為補充)</p><p>  電動車攝像定位系統(tǒng)測量軟件設計</p><p>  【摘要】雖說現(xiàn)在的社會上,已經(jīng)出現(xiàn)了不少以清潔能源為動力的電動車,而且大部分的定位系統(tǒng)是使用全球定位系統(tǒng)(GPS),很少有攝像定位系統(tǒng)的電動車。本課題“電動車攝像定位系統(tǒng)”主要是利用MATLAB的圖像處理算法對圖片中的發(fā)光點的位置進行定位,計算出小車與發(fā)光管的

6、位置關系。本課題是基于STM32微處理器的單片機為主要器件,通過外圍電路和其他所需要的模塊,在軟件方面主要是將圖片交由MATLAB進行圖像算法,得出小車在圖片中的位置,然后通過CP2102的串口傳輸,將MATLAB中得出的坐標顯示在OLED上,最終對電動車進行攝像定位。</p><p>  【關鍵詞】圖像灰度色;STM32單片機;圖像二值化;串口傳輸;OLED</p><p>  Elec

7、tric car camera positioning system measuring software design</p><p>  【ABSTRACT】Although today's society, there are already many electric vehicles powered by clean energy, and most of the positioning sys

8、tem is to use the global positioning system (GPS), there are few camera positioning system of electric vehicle. This topic "electric car camera positioning system" mainly use the MATLAB image processing algorit

9、hm for image of fixing the position of the markers, calculate the position relationship between car and luminous tube. This topic is based on microprocessor </p><p>  【KEYWORDS】The image gray color;STM32 mic

10、rocomputer;Image binarization;The image measurement;OLED。</p><p><b>  目 錄</b></p><p>  電動車攝像定位系統(tǒng)測量軟件設計III</p><p>  Electric car camera positioning system measuring soft

11、ware designIV</p><p><b>  1. 緒論1</b></p><p>  1.1. 選題的背景及意義1</p><p>  1.1.1. 選題背景1</p><p>  1.1.2. 選題意義1</p><p>  1.2. 本論文所做的主要工作以及所要達到的目標

12、2</p><p>  2. 軟件開發(fā)環(huán)境及總體方案3</p><p>  2.1. 總體設計方案3</p><p>  2.1.1. OV7670+STM32方案3</p><p>  2.1.2. MATLAB+STM32方案3</p><p>  2.2. 軟件開發(fā)環(huán)境3</p><

13、;p>  2.3. 系統(tǒng)軟件總體框架4</p><p>  2.3.1. 系統(tǒng)軟件總結構4</p><p>  2.3.2. 軟件系統(tǒng)的總體流程4</p><p>  3. 圖像采集模塊5</p><p>  4. 圖像處理模塊6</p><p>  4.1. GUI窗口的制作6</p>

14、<p>  4.1.1. GUI窗口的基本結構7</p><p>  4.1.2. GUI圖中的回調(diào)函數(shù)7</p><p>  4.2. 圖像處理8</p><p>  4.2.1. 圖像讀取及顯示9</p><p>  4.2.2. 圖像灰度色9</p><p>  4.2.3. 圖像二值化1

15、0</p><p>  4.2.4. 圖像取反11</p><p>  4.2.5. 最小二乘法11</p><p>  4.2.6. 坐標計算12</p><p>  5. 坐標傳輸模塊13</p><p>  5.1. MATLAB的串口設置13</p><p>  5.2. 單片

16、機的串口設置14</p><p>  6. 坐標顯示模塊14</p><p>  6.1. 初始化過程15</p><p>  6.1.1. GPIO口及時鐘初始化15</p><p>  6.1.2. OLED屏初始化15</p><p>  6.2. 顯示坐標過程16</p><p&

17、gt;<b>  7. 總結17</b></p><p><b>  參考文獻19</b></p><p><b>  致謝21</b></p><p><b>  附錄22</b></p><p><b>  緒論</b>&

18、lt;/p><p><b>  選題的背景及意義</b></p><p><b>  選題背景</b></p><p>  隨著全世界范圍可再生的能源開發(fā)和應用,推動了汽車電動化,減少了我們國家對傳統(tǒng)能源的依賴、實現(xiàn)了技術創(chuàng)新、自主品牌的實質性突破,此突破具有非常重大的戰(zhàn)略意義。 并且我國大城市的大氣污染已經(jīng)不能忽視,汽車的排

19、放是主要污染源之一,我國目前已有16個城市被列入全球大氣污染最嚴重的城市之中。我們國家現(xiàn)如今已經(jīng)進入了改革開放繁盛時代,幾乎每個家庭都會擁有一輛電動車,甚至是汽車。為了減少汽車尾氣對大氣及環(huán)境的污染. 開發(fā)節(jié)能及采用替代能源的環(huán)保型汽車, 是當今世界汽車產(chǎn)業(yè)發(fā)展的一個重要趨勢在所有的未來汽車中, 電動汽車是最被看好的無污染汽車。因此對我們國家來說,研究出更節(jié)能,更環(huán)保的電動汽車,不是當務之急,而是長遠的一個計劃。一些新型電動車出現(xiàn)在市面

20、上,但隨即也面臨對電動車定位的問題,無法隨時知道電動車的實時位置。當前市場上,為了彌補電動車無法定位的缺陷,我們需要對電動車進行定位。隨著數(shù)字圖像技術和電子技術的不斷發(fā)展,我們所選課題“電動車攝像定位系統(tǒng)”的主要部分就是圖像處理部分,如何對圖像中的某點進行圖像算法處理,從而達到定位。而如今圖像處理系統(tǒng)已經(jīng)在公眾、公司、軍隊等各個不同的領域中得到廣泛應用。</p><p><b>  選題意義</b

21、></p><p>  雖說現(xiàn)在的社會上,已經(jīng)出現(xiàn)了不少以清潔能源為動力的電動車,而且大部分的定位系統(tǒng)是使用全球定位系統(tǒng)(GPS),很少有攝像定位系統(tǒng)的電動車。本課題“電動車攝像定位系統(tǒng)測量軟件設計”主要是將小車所在位置的圖片拍攝下來,將圖片載入到我們的主要軟件MATLAB中,在MATLAB中對我們拍攝到的圖片進行圖像處理算法,將電動車的所在位置定位下來。本課題是基于STM32微處理器的單片機為主要器件,通

22、過外圍電路和其他所需要的模塊,對電動車的坐標進行定位及顯示?,F(xiàn)在市場上進行圖像采集以及圖像處理的硬件平臺主要是基于PC、DSP、FPGA,其中大多用PC機仿真,而實際的圖像跟蹤也多用DSP、FPGA或兩者結合來實現(xiàn)。并且大多數(shù)嵌入式圖像采集系統(tǒng)都是基于DSP、ARM技術,一些系統(tǒng)比較復雜、成本高、實時圖像處理比較困難?;赟TM32微處理器的單片機技術相對于DSP、FPGA等技術來說,在速度上可能有所欠缺,但是單片機在如今的社會上應用越

23、來越多,價格不斷下降,性能更強、功耗更低。單片機技術運用在圖像采集上是一個大膽的嘗試。電動車采用攝像定位系統(tǒng),能夠節(jié)約成本,提高我們大學生的自主性,培養(yǎng)我們的動手能力。正是在</p><p>  本論文所做的主要工作以及所要達到的目標</p><p>  根據(jù)圖像處理算法的研究現(xiàn)狀以及STM32系列單片機和OLED顯示屏對小車坐標的顯示的實現(xiàn),設計了一種對電動車攝像定位系統(tǒng)測量軟件裝置。采

24、用圖像灰度色和圖像二值化等圖像算法對所拍到的圖像進行處理,從而達到對電動車進行定位的功能。</p><p>  本課題要實現(xiàn)的功能:第一通過對MATLAB軟件的編程對我們所需要的圖片進行圖像算法處理;第二可以運用MATLAB的圖像算法處理,對圖片進行處理,可以得到我們所需要的幾個圖像處理后的圖形以及坐標;第三將我們在MATLAB中所得到的坐標通過USB轉串口的方法將坐標傳輸給STM32的微處理器芯片;第四在STM

25、32單片機上通過一系列的軟件編程對我們在MATLAB的軟件中得到的坐標顯示在OLED的顯示屏上。</p><p>  軟件開發(fā)環(huán)境及總體方案</p><p><b>  總體設計方案</b></p><p>  根據(jù)本課題《電動車攝像定位系統(tǒng)測量軟件設計》的要求,我制定出了兩種方案對該進行設計。</p><p>  OV

26、7670+STM32方案</p><p>  我們設想著使用OV7670攝像頭采集房間上方的發(fā)光管圖片,并且將采集到的圖片存儲到某個寄存器中。通過串口技術將我們存儲在寄存器中的圖片數(shù)據(jù)提取到STM32系列的單片機中。在STM32單片機中進行圖像算法的處理,將小車的位置定位出來。但是在這個方案中,我們發(fā)現(xiàn)了幾個我們難以解決的問題,第一我們?nèi)绾闻袛辔覀兺ㄟ^OV7670攝像頭采集到我們需要的圖片?第二基于STM32單片

27、機的圖像處理算法對于我們這種程度的大學生來說有點困難?第三我們?nèi)绾瓮ㄟ^STM32單片機的圖像處理算法將圖片中的某一點位置定位出來?根據(jù)這幾個問題,我認為OV7670+STM32的方案不適合設計我們這個課題。所以我又想出了MATLAB+STM32的解決方案。</p><p>  MATLAB+STM32方案</p><p>  第二種方案總體來說比較適合我們大學生的水平,我們可以用MATLA

28、B軟件對我們的需要的圖片信息進行相應的圖像算法處理,得到我們想要的坐標信息,然后通過串口技術將我們的的坐標傳輸給STM32單片機存儲,最后通過對STM32單片機編寫程序將坐標顯示在顯示屏中。這種方案對于我們來說省去了用攝像頭進行圖像采集的工作,取而代之的是模擬采集,在我們的PC中對我們的可能要采集到的圖片進行模擬繪圖,讓整個設計過程變得流暢,高效。</p><p><b>  軟件開發(fā)環(huán)境</b&

29、gt;</p><p>  在本課題《電動車攝像定位系統(tǒng)測量軟件設計》中,我們需要單片機軟件的開發(fā)環(huán)境,在市面上普遍的單片機開發(fā)環(huán)境基本上都是keil的編程軟件。我們在此畢業(yè)設計中采用的單片機型號為STM32系列的,而這款單片機類型與平時學習中接觸到的ST系列的單片機型號不同。STM32系列的單片機是基于ARM Cortex-M0的,在對此單片機進行編程的時候,不能使用平時的keil μ4軟件,而是要使用符合ST

30、M32單片機編程習慣的keil MDK(keilμ5)的編程軟件。STM32系列單片機進行程序編寫時,我們可以使用C語言或者匯編語言進行編程。當然對于我而言,對C語言相對掌握的好一點,所以選擇了C語言對其進行編程。</p><p>  我們對圖片進行圖像處理的軟件選擇了MATLAB軟件,就像我們在制定制作方案的時候所說,如今MATLAB在圖像處理這方面的技術已經(jīng)相當?shù)某墒?。MATLAB中的程序類型也是我們所熟悉的

31、類似C語言的一種程序語言。MATLAB軟件的基本計算數(shù)據(jù)單位是矩陣,它的指令表達式與數(shù)學、工程中常用的形式十分相似。所以用MATLAB來解決問題要比使用C語言和匯編語言完成相同的事情簡捷得多。MATLAB也吸收了其他軟件的優(yōu)點,使其成為現(xiàn)今社會中比較主流的數(shù)學計算工具。</p><p><b>  系統(tǒng)軟件總體框架</b></p><p><b>  系統(tǒng)軟

32、件總結構</b></p><p>  本課題《電動車攝像定位系統(tǒng)測量軟件設計》的主要結構可以劃分為圖像采集模塊、圖像傳輸模塊、圖像處理模塊以及坐標顯示模塊,如圖1所示。</p><p><b>  圖 1 軟件結構圖</b></p><p><b>  軟件系統(tǒng)的總體流程</b></p><

33、p>  圖 2 軟件系統(tǒng)的總體流程圖</p><p>  本課題的軟件系統(tǒng)的總體流程圖如圖2所示,所編程序的總體架構清晰,代碼合理實效,能夠基本實現(xiàn)電動車攝像定位的功能。</p><p><b>  圖像采集模塊</b></p><p>  在本課題電動車攝像定位系統(tǒng)測量軟件中,如果我們使用攝像頭對我們所需要的圖片進行圖像采集,則我們需要

34、選用具有存儲芯片的攝像頭,例如OV7670攝像頭(帶FIFO)。如果使用OV7670攝像頭進行圖像采集時,OV7670攝像頭總共有2種輸出模式,分別為VGA與QVGA。VGA,即分辨率為640*480的輸出模式。VGA最早的時候是顯示器640X480這種顯示模式。QVGA,即分辨率為320*240的輸出格式。QVGA即"Quarter VGA"。顧名思義即VGA的四分之一尺寸,即在液晶屏幕(LCD)上輸出的分辨率是2

35、40×320像素。 QQVGA,即分辨率為160*120的輸出格式。我們則必須使用32位的單片機對OV7670攝像頭采集到的圖片進行處理和顯示。在后面的圖像處理模塊中,我們是需要在PC中的MATLAB軟件中對我們所采集到的圖片進行處理。而用OV7670攝像頭采集圖像并且將圖像信息傳輸?shù)絇C端顯示出來的過程對于我們來說有點過于繁雜,并且用STM32單片機對攝像頭進行控制也比較有難度。所以我們放棄了使用OV7670攝像頭對圖像信息

36、進行采集,從而代替的是在PC中對我們采集到的圖片進行</p><p>  當我們用手工制作圖片來代替攝像頭的圖像采集之后,我們接下來就需要對我們制作的圖片信息進行我們這系統(tǒng)中較為重要的部分——圖像處理模塊。</p><p><b>  圖像處理模塊</b></p><p>  圖像處理,顧名思義就是對圖像信息進行相應的處理,得到我們想要的信息。

37、現(xiàn)在的圖像處理一般都是指數(shù)字圖像處理,所謂的數(shù)字圖像就是通過一些相機、攝像機、工業(yè)打印機得到的一個大數(shù)據(jù)量的二維數(shù)組,而該數(shù)組的基本元素為像素點,它的值就是灰度值。圖像處理技術的一般包括圖像壓縮,增強和復原,匹配、描述和識別3個部分。在現(xiàn)在的計算機技術中,我們進行圖像處理的圖像主要可以分為灰度圖像、二值圖像、索引圖像以及真彩色RGB圖像這四種。我們的系統(tǒng)中,我們使用的圖像應該是屬于真彩色RGB圖像。</p><p&g

38、t;  我們制作我們需要進行圖像處理的圖片后,就可以使用MATLAB軟件對其進行圖像處理。在進行圖像處理之前,我們需要對仿真界面進行制作,從而能達到在MATLAB的結果窗口中進行坐標顯示和幾種圖像信息顯示的效果。</p><p><b>  GUI窗口的制作</b></p><p>  GUI的全稱為Graphical User Interface

39、s,即圖形用戶界面,由窗口、光標、按鍵、菜單、文字說明等這些對象構成的用戶界面。我們通過一定的方法(比如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產(chǎn)生某種動作或變化,比如實現(xiàn)計算、繪圖等。我們制作的GUI只要是為了對我們進行圖像處理后圖片進行顯示以及將顯示出來的坐標通過某種方式傳輸給單片機的主芯片STM32中。</p><p>  GUI窗口的基本結構</p><p>  我們所要制作出

40、來的GUI窗口中只要具有讀取圖片、顯示坐標和處理過的圖片、設定傳輸坐標的串口端口信息這些基本結構就行了。我們進入到制作GUI的畫面后選擇Blank GUI的類型,如圖3所示。我們在此窗口中添加所需要的各種控件,而添加控件后的GUI窗口如圖4所示。</p><p>  圖 3 GUI圖初始界面</p><p>  圖 4 GUI結果圖</p><p>  GUI圖中的

41、回調(diào)函數(shù)</p><p>  回調(diào)函數(shù)就是我們在制作GUI圖時添加了一些控件,而這些控件根據(jù)我們的需求調(diào)用一些特定的函數(shù)。在我們制作的GUI圖中,每一個我們添加的控件都會有相應的幾個回調(diào)函數(shù)來供我們進行過選擇。在這些控件中最為重要則是選擇讀取圖片的按鈕以及選取串口端口號。在讀取圖片的那個控件的回調(diào)函數(shù)function pushbutton1_Callback(hObject, eventdata, handles

42、),這個子函數(shù)的目的是為了能從我們的電腦中讀取我們所制作的圖片。這個子函數(shù)擁有三個元素,分別為hObject、eventdata、 handles。hObject是當前回調(diào)函數(shù)的圖形對象句柄,主要是通過set和get的命令來獲取圖形的信息;Eventdata是一個預留的輸入?yún)?shù);handle則是存放圖像窗口中所有圖形句柄中的結構體,存儲了所有空間、菜單、坐標軸的句柄。也可以在function中傳遞數(shù)據(jù)。所有回調(diào)函數(shù)基本上都和讀取圖片的這

43、個按鈕中的回調(diào)函數(shù)相似。</p><p>  GUI圖制作完成之后會有兩個文件,一個為.fig命名的圖形文件,包含在控件以及菜單等圖像對象屬性。另一個文件為.m的程序文件,里面包含著GUI的程序代碼,在.m文件中子函openingfun是用來打開窗口的初始化程序;outputfcn函數(shù)是GUI窗口的輸出子程序,定義各種變量,其他的子函數(shù)則是各個控件的回調(diào)函數(shù)。</p><p><b&

44、gt;  圖像處理</b></p><p>  在MATLAB軟件中的圖像處理的方法主要有圖像灰度色、圖像二值化、二值化圖像取反、最小二乘法擬合等處理方式。強大以及豐富的圖像處理功能讓MATLAB軟件成為現(xiàn)今主流的圖像處理軟件。我們進行圖像處理的主要流程是先將我們所制作的圖片信息讀取到我們的MATLAB中進行原始圖片的顯示,在通過灰度色函數(shù)的處理顯示灰度色圖像,灰度色圖像在通過查找適合的閥值對其進行二

45、值化并顯示出二值化圖像,為了能讓圖片中的目標更加的突出,可以進行取反的操作,最后就是對目標點的坐標定位了,將坐標定位顯示在仿真窗口中了。MATLAB圖像處理的主要流程圖如圖5所示。</p><p>  圖 5 圖像處理流程圖</p><p><b>  圖像讀取及顯示</b></p><p>  在我們對制作的圖像進行圖像處理的時候,我們首先要

46、讓我們制作的圖片能夠在MATLAB中進行讀取以及顯示。在MATLAB中的圖像讀取及顯示的函數(shù)分別為imread和imshow。在讀取圖片之前我們還是需要對圖片的名字以及圖片的路徑進行選擇。</p><p><b>  圖像灰度色</b></p><p>  讀取原始圖片成功后,我們就需要對原始圖片進行過圖像灰度色的處理了,所謂的灰度色處理就是將一個真彩色RGB圖片轉換

47、到一個灰度色的圖像。在灰度色的圖像中,像素點的等級同樣是具有255個等級點,與RGB圖像唯一的區(qū)別就是將原來的三維矩陣轉換為了灰度矩陣,即將原來的三通道RGB轉變成了單通道Gray。圖像灰度處理轉換的原理主要是根據(jù)某著名的心理學公式Gray=0.11*B+0.587*G+0.299*R,將圖片中的各個像素點的RGB值轉換為灰度值,從而得到了灰度圖。在MATLAB程序中所使用的灰度色子函數(shù)為rgb2gray(),在此子程序中會將一個RGB

48、圖像的三維矩陣轉化為一個灰度矩陣。真彩色RGB圖轉換為灰度色的圖如圖6所示。</p><p>  圖 6 RGB圖轉灰度色圖</p><p><b>  圖像二值化</b></p><p>  圖像二值化的作用通俗點的講就是想讓我們能夠更加方便地提取到圖片中的有效信息。所謂圖像二值化的真正含義就是讓灰度色圖片中的各個像素點的值變成255或者0這

49、兩個像素值,也就是將一個灰度色圖片處理成一張只有黑與白兩種顏色的二值化圖片。在我們對灰度色圖像進行二值化處理的時候,我們發(fā)現(xiàn)如何對灰度色圖像中各個灰度點進行區(qū)別,將他們處理為黑點或者是白點。這時候我們就需要在二值化的處理中確定一個閥值,將此閥值作為判定255像素值還是0像素值的比較值。當然在MATLAB程序中也有一個求圖片閥值的子程序graythresh(),如果我們調(diào)用這個子程序讓它對我們的圖片進行默認取閥值時,我們會發(fā)現(xiàn),該子程序所

50、取的應該是在[0,1]之間,這固然不會滿足我們課題的要求。</p><p>  我們在制作GUI圖的時候,在GUI圖中我們添加了一個亮/暗的單選控件,這是為了我們對不同圖片背景都能進行圖像處理。這樣我們在確定閥值的時候就要像單選控件一樣對閥值進行選擇。從我們的MATLAB的程序中可以看出我們對單選控件進行了if的判斷結構,如果我們所讀取的圖片背景為白色底的話,則我們確定的閥值為0.2;若我們讀取的圖片背景不是為白

51、色底的話,閥值則選擇為了0.8。當確定完閥值后,就可以對灰度色圖片進行二值化的處理,在程序中可以調(diào)用二值化的子程序im2bw(,),前者為灰度圖片的對象,后者為閥值的值。我們正確選擇閥值的時候,所得到的二值化圖像應該如圖7所示;若我們將閥值設置錯誤的話,那我們將會得到一個錯誤的二值化圖像,如圖8所示,從圖中我們可以看出,但我們設置的閥值不適當?shù)臅r候,我們得到的二值化圖像將會讓我們更加困難地找到我們想要的信息。</p>&l

52、t;p>  圖 7 正確的二值化圖</p><p>  圖 8 閥值不合適的二值化圖</p><p><b>  圖像取反</b></p><p>  圖像取反就是將我們得到的二值化圖像進行取反,讓目標點相對于背景顯得更加的突出,更加容易地找到我們的目標點。</p><p><b>  最小二乘法<

53、/b></p><p>  所謂的最小二乘法就是通過將誤差平方的最小化與尋找數(shù)據(jù)中的最佳函數(shù)進行匹配。我們可以利用最小二乘法對我們圖像中的發(fā)光點進行相應的定位。取反后的圖像中,無法知道圖片中四個發(fā)光點的坐標位置以及這四個發(fā)光點的中心坐標位置,那我們是可以通過最小二乘法找到取反后的圖片中的圓形圖像,并且可以將其標記出來。在MATLAB程序中我們可以發(fā)現(xiàn),在進行最小二乘法的算法之前,我們對取反后的圖片進行imc

54、lose的操作。Imclose是MATLAB中的一個子函數(shù),該函數(shù)的作用就是對灰度圖像齒形形態(tài)學閉運算,即使用同樣的結構元素也是先對圖像進行膨脹操作后進行腐蝕操作。在圖像二值化的形態(tài)學中有開運算和閉運算。圖像二值化形態(tài)學運算后的圖像可以消除一些邊緣點及外界噪音的干擾,平滑物體的邊界。</p><p>  在imclose()子函數(shù)中還調(diào)用了一個strel()函數(shù),strel()函數(shù)主要是構造結構元素,創(chuàng)建指定形狀

55、shape對應的結構元素。而shape的種類有arbitrary、pair、diamond、periodicline等幾種類型。程序中的strel('disk', 5)意味著創(chuàng)建圓盤半徑5,以方便后面對圓點進行標記。而后我們將寫入[L, num] = bwlabel(BW)這條程序,就是返回一個和BW大小相同的L矩陣,這其中包括了BW圖片中的連通標簽位置。我們計算出二值化圖像的L矩陣大小后可以對圖像中的一些發(fā)光點進行尋找

56、以及標記,以便后面對其位置進行測量。之后的操作我們是通過調(diào)取一些子函數(shù),如STATE=regionprops(L,properties)的子函數(shù)模式對我們圖片中被標記出來的圓形原點進行總數(shù)的統(tǒng)計,對應的部分程序為rectangle('Position',temp, 'EdgeColor', 'r', 'LineWidth', 2)。之后顯示出經(jīng)過最小二乘法處理后的圖片,如圖

57、9所示。</p><p>  圖 9 最小二乘法結果圖</p><p><b>  坐標計算</b></p><p>  我們對圖片中進行坐標定位時的思路為攝像頭垂直向上時看到的圖像與物體的相對位置大概是不會變的(在一定范圍內(nèi)),當然越遠會有越不準,我們可以進行算法修正(這個我們課題中沒有),所以基于這個特性我們只要找到這四個識別點知道它們的坐

58、標,那我們就可以求出他們的中心坐標,使它與圖像的中心坐標比較偏移了多少,當然這個量乘以我們的像素比例尺就可以得到真實的位移,在實物中我們并沒有乘以像素的比例尺。</p><p>  顯然我們在圖片中對這些發(fā)光點進行矩形形狀的標記后,將其與圖片的中心點(小車的位置點)用直線連接,不能直接得出小車當前的位置。我們需要計算出小車當前的位置,則又要對其進行相應程序的編寫來計算坐標值。在程序中,我們需要對圖片中發(fā)光點的多少

59、來對其進行坐標的計算。在switch()的選擇結構中,使用此函數(shù) temp = STATS(i).BoundingBox得到封閉形狀的坐標,即我們可以對四個發(fā)光點的x、y坐標分別進行賦值和計算。而四個發(fā)光點的中心坐標位置則為四個發(fā)光點的x、y坐標相加除以4。之后我們將得到的發(fā)光管的中心坐標減去250就是我們小車的坐標,減去250的原因是因為我們使用的圖片像素為500*500,圖片中心位置的相對坐標為(250,250)。之后我們就可以編程

60、對我們得到的小車的坐標在GUI窗口中進行顯示,整體的GUI圖結果如圖所示。</p><p>  圖 10 GUI圖最終結果圖</p><p><b>  坐標傳輸模塊</b></p><p>  通過MATLAB軟件對圖片您行圖像處理后,得到了我們想要的小車坐標,那我們就要將坐標通過某種方式傳輸給我們的坐標顯示模塊中。如何將坐標值傳輸給坐標顯示

61、模塊是我們要考慮的一個問題。我們提出了兩種方案:第一種就是直接用USB口將我們的坐標值直接傳輸給單片機進行坐標顯示;第二種是使用USB轉串口技術(CP2102硬件)。通過網(wǎng)上查找資料以及實際的效果,我們決定了采用第二種方案,使用USB轉串口的技術,因為相對于USB口來說,串口技術相對來說比較成熟,開發(fā)迅速,穩(wěn)定性好。</p><p>  MATLAB的串口設置</p><p>  我們在M

62、ATLAB軟件中得到坐標后,需要將我們的坐標傳輸給主芯片STM32進行處理。這里我們就要在軟件中對一些串口端口號進行相應的設置,我們一般的PC中的端口號都是com1-com6,所以我們在程序中我們的端口號進行賦值設置,通過switch()選擇結構要使用的端口進行選擇。之后的程序編寫與單片機中的程序編寫相似,需要設置端口對象,對端口的波特率進行設置,常規(guī)條件下,MATLAB中的端口波特率應該與接收坐標值的單片機中的波特率一致,均為9600

63、bit/s(此系統(tǒng)中)。然后查看是否有奇偶校驗以及設置停止位,最后打開串口進行坐標值的寫入。這里我們需要注意的一點就是在MATLAB程序中發(fā)送坐標時要設置一個幀頭,但我們的單片機程序中檢查到這個幀頭值時才會接受這個坐標數(shù)據(jù),在程序中我們設置的幀頭值為170,程序如下:fwrite(g,170, 'uint8')。</p><p><b>  單片機的串口設置</b></

64、p><p>  在MATLAB軟件中設置了發(fā)送坐標的串口信息后,我們就需要在單片機中進行串口初始化以及編寫串口中斷函數(shù)。編寫串口中斷程序的時候,我們要在中斷程序之前對一些參數(shù)以及數(shù)據(jù)進行定義和聲明,使用volatile這個類型修飾符可以讓單片機讀取程序的時候可以每次直接讀取該數(shù)據(jù)的值。在初始化過程為初始化結構變量——啟動串口的IO時鐘——定義GPIO口的引腳——定義GPIO口的時鐘頻率——設置串口的輸入模式,通過串口

65、的初始化處理后,UART1的中斷優(yōu)先級比UART2和UART3的優(yōu)先級都要高。對串口進行初始化后,我們也需要對串口的端口號、波特率、字符長度、是否有奇偶校驗、有無硬件流量控制這些參數(shù)進行定義,在單片機中的定義數(shù)據(jù)應該與MATLAB中的參數(shù)一致,不然就會出現(xiàn)坐標傳輸失敗的后果。在串口中斷的處理程序中,當我們定義的ReceiveBuff[0]==0xAA(十進制中的170),也就是我們在MATLAB中設置的170的值,串口就開始接受坐標數(shù)據(jù)

66、了,接收到坐標值后就將串口值進行清除復位等待下一次的接收。 </p><p><b>  坐標顯示模塊</b></p><p>  0.96寸的OLED顯示屏是我們選擇坐標顯示的硬件模塊,為了能讓坐標能夠順利地顯示在OLED的顯示屏上,需要在keil MDK軟件中對STM32單片機的OLED模塊進行編程。在電動車攝像定位系統(tǒng)中單片機的主要作用就是為了接收經(jīng)過圖像處理后

67、的坐標信息,并且將其顯示在OLED顯示屏上。在STM32單片機處理的主要流程為:串口、IO口、系統(tǒng)時鐘初始化——OLED顯示屏的初始化——檢測串口中斷函數(shù)是否接受到了坐標數(shù)據(jù)信息——將串口接收到的坐標信息顯示在OLED顯示屏上,流程圖如圖11所示。</p><p>  圖 11 單片機處理流程圖</p><p><b>  初始化過程</b></p>&

68、lt;p>  GPIO口及時鐘初始化</p><p>  從上面的坐標顯示的流程圖中看出,需要先對IO口、時鐘和OLED屏幕進行初始化。在硬件中使用的IO口就是普通的GPIO口,對GPIO口初始化的過程和普通單片機GPIO口的初始化相似。唯一不同的是我們使用的單片機芯片類型是STM32系列的,與常用的C51和C52這些不一樣,在進行使能GPIO時鐘時,要對AFIO、GPIO_A、GPIO_B、GPIO_C使

69、能。AFIO是STM32中的引腳復用,如進行復用功能重映射時,要對AFIO時鐘進行開啟,將時鐘重新映射到GPIO的三個端口中。GPIO口的輸出模式為推挽輸出模式,時鐘頻率為50MHz,PA0將被清零。接下來的操作與進行單片機串口設置中的程序差不多。</p><p><b>  OLED屏初始化</b></p><p>  在對OLED屏的初始化過程中,與其他的一樣,首

70、先要OLED中的PC,IO,GND端口時鐘使能,在定義聲明OLED顯示屏模塊中所用到的引腳。在對OLED模塊中的各個引腳進行輸出模式的設置(依舊是推挽輸出模式),最后對主要的端口GPIO_B(GPIOD3.6)進行初始化。</p><p>  基本的引腳、輸出模式和時鐘的初始化后,可以對OLED的屏幕讀取顯示進行初始化的設置。如附錄中的程序所示,根據(jù)OLED_CMD的代碼,可以從網(wǎng)絡上查找或者購買OLED顯示屏的

71、賣家那里提供的資料進行編寫,對OLED顯示屏進行初始化。OLED顯示屏的初始化流程圖如圖12所示。</p><p>  圖 12 OLED屏初始化</p><p><b>  顯示坐標過程</b></p><p>  在OLED顯示屏中顯示坐標的基本流程與網(wǎng)上的一些資料類似,每一個要顯示的字符在我們的編寫的字模數(shù)據(jù)庫中都會有相對應的一個模數(shù)據(jù),

72、我們編寫的字模數(shù)據(jù)庫就是oledfont.h文件。首先我們要對我們顯示屏進行寫入地址的設置,OLED顯存中總共有8頁,1頁有128列地址。通過for循環(huán)可以將SSD1306中的8頁128列地址全部復制到了OLED中。在設置寫入地址中,有一個OLED_WR_Byte()的函數(shù),該函數(shù)是為了選擇OLED使用并口模式還是串口模式。然后,對我們顯示屏進行畫點程序的編寫,若要在顯示屏中的某一點寫入1,則可以調(diào)用OLED_DrawPoint()畫點

73、程序,畫點的范圍是x<127以及y<63,這樣就能在顯示屏中自由地畫點了。</p><p>  要想在顯示屏中顯示出字符,就需要有這個字符的字模數(shù)據(jù),在這里我們使用了字模提取軟件PCtoLCD2002,如圖13所示。在PCtoLCD軟件中我們可以對我們想要的一些字符或者數(shù)字進行字模的提取。雖然我們知道了如何對字符進行字模數(shù)據(jù)的提取,也要為字符串顯示編寫對應的程序。OLED_ShowChar()此函數(shù)顯

74、示字符串的程序。我們在讀取字模時,一般都是0開始,如[0][1],則便是在屏幕(0,1)坐標處是空格鍵,所以需要對其進行移位,在程序中我們就編寫了cha=cha-’’為了得到正確的地址。之后我們按照我們選擇想要字體模式(1206字體和1608字體),按照在PCtoLCD中設置的取字模方式對字模進行編寫。</p><p>  最后的主程序中,我們需要調(diào)用一些編寫的子函數(shù)才能對接收到的坐標信息進行顯示。因為我們的小車

75、坐標有正負值之分,編寫主函數(shù)的時候要考慮到當碰到負值坐標的時候該如何進行處理。使用if判斷語句對接收到的坐標判斷,由于我們的小車坐標是相對于房間中的中心位置坐標,也就是相對坐標(0,0,),絕對坐標(250,250)。所以在坐標計算的時候需要對其進行相應的轉換,即減去250或被減去250,得到的坐標和我們在MATLAB中顯示的坐標一致,最終的效果圖如圖14所示。</p><p>  圖 13 PCtoLCD軟件界

76、面</p><p><b>  總結</b></p><p>  通過本課題《電動車攝像定位系統(tǒng)測量軟件設計》,讓我對攝像定位或者是圖像處理方面有了新的認識和了解。在我接觸到本課題的時候,我首先就需要對這課題進行相應的分析,制定出可行性的方案,根據(jù)我自己本身的能力去選出適合自己的實施方案。最終我選擇了用MATLAB軟件先對我們的圖片進行圖像處理。在圖像處理過程中,也相

77、應知道了一些有關于基本MATLAB的圖像處理方法,在圖像處理的方法中,最主要的處理方法有圖像灰度色、圖像二值化、圖像取反、最小二乘法擬合等等。在這些方法中,我們需要對圖片中的一些元素進行位置定位的時候,我們可以使用STATS(i).BoundingBox的子函數(shù),對圖片中的一些小元素進行封閉或者開放計算后,將該元素點進行相應的定位。在MATLAB軟件中將我們的圖片中的點定位出來后,我們還需要對坐標進行傳輸以及顯示。本部分中最重要的就是怎

78、么設置串口信息,使之能夠與MATLAB中的串口對應起來;還有就是如何進行編程將坐標顯示在OLED顯示模塊中。這樣我們就需要對OLED顯示屏的顯示問題以及如何顯示字符進行了解。上網(wǎng)對OLED顯示屏模塊進行學習以后,大致地知道了如何顯示字符的流程,所有的字符或</p><p>  通過對本課題的設計和研究,我能從中學習到了之前沒有學習到的東西,同時也讓我明白了,不管是任何的實驗或者任務,只要我們能夠堅持不懈的努力,都

79、能得到我們滿意的答案的。</p><p><b>  參考文獻</b></p><p>  [1] 王青松,范鐵生.基于位置和灰度變換的混沌圖像置亂算法[J].小型微型計算機系統(tǒng),2012,33(6):1284-1287.</p><p>  [2] 單昱翔,陽璐,趙玉珠.基于STM32的圖像跟蹤系統(tǒng)[J].科技資訊,2013,(24):1-2

80、.</p><p>  [3] 勾慧蘭,劉光超.基于STM32的最小系統(tǒng)及串口通信的實現(xiàn)[J].工業(yè)控制計算機,2012,25(9):26-28.</p><p>  [4] Placht,S.,Stancanello,J.,Schaller,C. et al.Fast time-of-flight camera based surface registration for radioth

81、erapy patient positioning[J]. Medical Physics,2012,39(1):4-17.</p><p>  [5] Zhang H, Kang W. Design of the Data Acquisition System Based on STM32[J].Procedia Computer Science, 2013(17):222-228.</p>&l

82、t;p>  [6] Long Zhao,Zhen Liu,Tiejun Li,Baoqi Huang, Lihua Xie, Guoqiang Hu. Moving Target Positioning Based on a Distributed Camera Network,Mathematical Problems in Engineering, 2014,2014.</p><p>  [7] Da

83、vid H. S. Chung, Matthew L. Parry, Philip A. Legg, Iwan W. Griffiths, Robert S. Laramee, Min Chen:Visualizing multiple error-sensitivity fields for single camera positioning[J],Computing and Visualization in Science, 20

84、14,15(6): 303-317. </p><p>  [8] Tilch S, Mautz R. CLIPS–a camera and laser-based indoor positioning system[J].Journal of Location Based Services, 2013,7(1):3-22.</p><p>  [9] 朱萬山,劉鐵根,劉興剛.自動定位

85、的CMOS攝像模組檢測系統(tǒng)研究[J].電子測量技術,2012,(12):60-62,86. </p><p>  [10] 閆帆,許南山,彭四偉.基于多攝像位的空間定位系統(tǒng)的研究與設計[J].微計算機信息,2010,26(7):208-210.</p><p>  [11] 張耀威,牛建玲,黃忠亭.高速攝像及圖像處理定位技術的應用研究[J].鐵道運營技術,2004,10(4):12-14.

86、 </p><p>  [12] 趙蕾,宋翠萍,石婕等.基于CSS對特定目標的精準定位攝像捕捉監(jiān)控系統(tǒng)[J].電子質量,2014,(10):4-7.</p><p>  [13] 鄭優(yōu)訊,李宗伯.基于STM32微處理器的GPRS數(shù)據(jù)傳輸技術的研究[J].微型機與應用,2012,31(21):60-61,64.</p><p>  [14] 黃智偉,于紅利,寧志剛等.

87、基于STM32F417的圖像采集系統(tǒng)設計[J].單片機與嵌入式系統(tǒng)應用,2012,12(10):48-51.</p><p>  [15] 陳旦花.單片機最小系統(tǒng)的設計與應用[J].無線互聯(lián)科技,2012,(10):103-104.</p><p>  [16] 王侃.單片機最小系統(tǒng)的研究[J].求知導刊,2015,(11):56-57. </p><p>  [1

88、7] 竇華軍.基于數(shù)字圖像處理技術分析[J].數(shù)字技術與應用,2013,(12):231-232.</p><p>  [18] 張耀威,牛建玲,黃忠亭.高速攝像及圖像處理定位技術的應用研究[J].鐵道運營技術,2004,10(4):12-14.</p><p>  [19] 唐婧壹.基于單片機的圖像采集與處理應用研究[J].機電產(chǎn)品開發(fā)與創(chuàng)新,2015,28(4):75-76,79.&l

89、t;/p><p>  [20] 趙哲.基于C#的數(shù)字圖像處理算法的分析研究[J].科技信息,2010,(7):92-93.</p><p>  [21] Yin Jiang-Yan.The Application Research of Robot Vision Target Positioning Based on StaticCameraCalibration[C].Advances in

90、 manufacturing science and engineering.2013:2319-2325.</p><p>  [22] 張洪剛,陳光,郭軍.圖像處理與識別[M].北京:北京郵電大學出版社,2006.</p><p>  [23] 楊淑瑩.VC++圖像處理程序設計[M].北京:清華大學出版社,2005.</p><p><b>  致謝&

91、lt;/b></p><p>  這次畢業(yè)設計課題《電動車攝像定位系統(tǒng)測量軟件設計》是我和畢業(yè)設計導師張衛(wèi)強辛苦指導下共同完成的,張衛(wèi)強老師嚴謹細心的教學態(tài)度和高效的工作方式在我制作畢業(yè)設計途中給予了我很大的幫助。在平時的生活中,張老師會抽空詢問我們的畢業(yè)設計的進度,即使他平時的工作很忙,需要上課,研究一些與課程有關的實驗,但還是會抽出一點點時間來為我進行指導,,幫助我解決一些我自身難以處理的專業(yè)性問題,給

92、我提出一些能夠解決難題的方案。與此同時,我也要感謝我的研究生學長們,在我進行畢業(yè)設計的途中,也會給我提供一些有利于我能盡快完成該畢業(yè)設計的方法,當我有時為畢業(yè)設計發(fā)愁時,他們也會不時地鼓勵我。同樣在這期間,我的同班同學也給予了我一定的幫助,尤其是我的同寢室同學,能夠為我營造一種很好的學習氛圍,讓我能順利地完成此次的畢業(yè)設計課題。在平時的學習和生活中,我們同學之間也會互幫互助,共同向更高的目標前進。</p><p>

93、;  時光飛逝,兩年的寧波大學本科生涯即將要告一段落了,到此我的畢業(yè)論文(畢業(yè)設計)已經(jīng)基本完成了。在這段制作畢業(yè)設計的時間里,我再一次由衷的感謝張衛(wèi)強老師在這段時間中對我們的指導以及幫助,同樣也要感謝那些研究生學長們在我制作畢業(yè)設計途中對我的照顧和鼓勵,最后更要感謝同班同學及同寢室室友對我的關照和寬容。最后感謝在這段時間中幫助過我的每一個人,這次畢業(yè)設計的經(jīng)歷讓我收獲到了很多東西。</p><p><b&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論