版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
圖像處理在智能車路徑識別中的應(yīng)用摘要機(jī)器視覺技術(shù)在智能車中得到了廣泛的應(yīng)用,這項技術(shù)在智能車的路徑識別、障礙物判斷中起著重要作用?;诖?,依據(jù)飛思卡爾小車的硬件架構(gòu),研究機(jī)器視覺技術(shù)應(yīng)用于飛思卡爾小車。飛思卡爾智能車處理器采用了MC9S12XS128芯片,路況采集使用的是數(shù)字?jǐn)z像頭OV7620。由于飛思卡爾智能車是是一款競速小車,因此圖像采集和處理要協(xié)調(diào)準(zhǔn)確性和快速性,需要找到其中的最優(yōu)控制。因此本設(shè)計主要需要完成的任務(wù)是:怎樣用攝像頭準(zhǔn)確的采集每一場的圖像,然后怎樣進(jìn)行二值化處理;以及怎樣對圖像進(jìn)行去噪處理;最后也就是本設(shè)計的難點(diǎn)也是設(shè)計的核心,怎樣對小車的軌跡進(jìn)行補(bǔ)線。本設(shè)計的先進(jìn)性,在眾多的圖像處理技術(shù)中找到了適合飛思卡爾智能車的圖像處理方法。充分發(fā)揮了攝像頭的有點(diǎn)。經(jīng)過小車的實際測試以及相關(guān)的MATLAB仿真,最終相關(guān)設(shè)計內(nèi)容都基本滿足要求。小車的穩(wěn)定性和快速性得到顯著提高。關(guān)鍵詞:OV7620,視頻采集,圖像處理,二值化
TheApplicationofImageProcessingintheRecognitionofIntelligentVehiclePathABSTRACTCameraMachinevisiontechnologyinthesmartcarinawiderangeofapplications,thetechnologyidentifiedinthepathofthesmartcar,andplaysanimportantroleintheobstaclestojudge.Basedonthis,basedonthearchitectureoftheFreescalecar,machinevisiontechnologyusedintheFreescalecar.FreescalesmartcartheprocessorMC9S12XS128chiptrafficcollectedusingadigitalcameraOV7620.
Freescale'sSmartcarisaracingcar,sotheimageacquisitionandprocessingtocoordinatetheaccuracyandfast,youneedtofindtheoptimalcontrol.Thisdesignneedtocompletethetask:howtousethecameratoaccuratelycaptureeveryimage,andthenhowtobinarizationprocessing;andhowtoimagedenoising;lastisthedifficultyofthisdesignisthedesignofthecore,howtofilllineonthetrajectoryofthecar.
TheadvancednatureofthedesignfoundinmanyimageprocessingtechniquesofimageprocessingmethodsforFreescaleSmartCar.Givefullplaytothecameraabit.TheactualtestingofthecarandMATLABsimulation,thefinaldesigncontentcanbasicallymeettherequirements.Thecar'sstabilityandfasttogetimprovedsignificantly.KEYWORDS:OV7620,VideoCapture,PictureProcessing,Binarization目錄前言 1第1章飛思卡爾賽車及機(jī)器視覺的概述 21.1智能車的研究背景 21.1.1智能車的發(fā)展歷史 21.1.2應(yīng)用前景 21.2智能車設(shè)計要求介紹 31.3機(jī)器視覺介紹 41.4小結(jié) 4第2章主要思路及技術(shù)方案概要 52.1總體設(shè)計主要方法步驟 52.2攝像頭的對比與選擇 52.2.1攝像頭的選取 52.2.2模擬攝像頭 62.2.3數(shù)字?jǐn)z像頭 62.2.4攝像頭的選定 72.3二值化方案的選取 72.3.1雙峰值法 72.3.2迭代法 82.3.3大津法 82.3.4灰度拉伸-一種改進(jìn)的大津法 92.3.5二值化方案的最終選定 92.4對圖像進(jìn)行去噪 92.4.1傳統(tǒng)的去噪法 92.4.2小波去噪 112.4.3去噪方法的最終確定 132.5小結(jié) 13第3章硬件設(shè)計 143.1硬件總體方案設(shè)計 143.2核心控制板 153.3攝像頭的安裝 153.4小結(jié) 16第4章軟件設(shè)計 174.1系統(tǒng)軟件總體設(shè)計方案 174.2圖像二值化軟件設(shè)計 174.3去噪設(shè)計 194.3.1實驗信號的產(chǎn)生 194.3.2 各參數(shù)下去噪效果對比 204.4二值化后補(bǔ)線 244.5小結(jié) 32第5章結(jié)果分析 335.1采集到的灰度值去噪前的MATLAB仿真 335.1.1去噪前MATLAB函數(shù)和仿真結(jié)果 335.1.2去噪后MATLAB仿真結(jié)果 345.2邊界扣取 355.2.1邊界扣取函數(shù) 355.2.2邊界扣取仿真結(jié)果 365.3補(bǔ)線后效果 375.4小結(jié) 38結(jié)論 39謝辭 40參考文獻(xiàn) 41附錄 42外文資料翻譯 45前言機(jī)器視覺技術(shù)近幾十年來已經(jīng)得到廣泛的應(yīng)用,并且已經(jīng)取得了巨大的成功,大大改善了人們的日常生活。例如:智能導(dǎo)航系統(tǒng),以及倒車攝像頭等。機(jī)器視覺技術(shù)的核心是對圖像的處理,根據(jù)不同的應(yīng)用場合,圖像處理也采用相應(yīng)的技術(shù)。例如:對高清圖像的處理,這個一定要保證圖像的精確性,可以相應(yīng)的犧牲一些,處理的速度,但是對圖像的要求不高的情況下,對處理速度要求較高的情況下,就必須考慮犧牲一些對圖像質(zhì)量的要求,基于飛思卡爾小車模型的圖像處理,需要兼顧這兩方面的因素。需要考慮對圖像處理的準(zhǔn)確性還要考慮快速性,因此需要找到滿足要求的最優(yōu)方案。本設(shè)計的主要任務(wù)是,怎樣保證圖像處理的準(zhǔn)確性;怎樣對采集回來的灰度值圖像進(jìn)行二值化處理,以及為什么進(jìn)行二值化;當(dāng)出現(xiàn)干擾的情況下,怎樣進(jìn)行去噪處理;當(dāng)在光照不均勻或者出現(xiàn)反光的情況下,采集到的灰度值會出現(xiàn)一定錯誤影響判斷,這時怎樣補(bǔ)出準(zhǔn)確的軌跡。這些都是需要設(shè)計的內(nèi)容。本設(shè)計內(nèi)容按如下順序展開:第一章主要論述了所研究的內(nèi)容的背景及應(yīng)用場合。第二章主要論述了各個設(shè)計方案的選取以及總體方案設(shè)計內(nèi)容。重點(diǎn)論述了選擇本方案的原因,以及其他方案的缺點(diǎn)。第三章主要講述了本設(shè)計相關(guān)的硬件設(shè)計。本章主要分析了硬件的主要組成,以及每一部分在設(shè)計中的作用。第四章深刻分析了相關(guān)的算法設(shè)計以及部分程序調(diào)試效果。分析了每一種方案的算法的優(yōu)缺點(diǎn),以及最終選擇作為本算法的最終原因。第五章給出了相關(guān)仿真效果以及最終本設(shè)計在小車調(diào)試中的實際性能表現(xiàn),以及通過本設(shè)計改善了那些性能,以及還有那些性能不夠理想,今后如何改進(jìn)等。第1章飛思卡爾賽車及機(jī)器視覺的概述1.1智能車的研究背景1.1.1智能車的發(fā)展歷史1953年,美國BarrettElectric公司制造了世界上第1臺采用埋線電磁感應(yīng)方式跟蹤路徑的自動導(dǎo)向車,也被稱作“無人駕駛牽引車”。20世紀(jì)60年代和70年代初,AGV仍采用這種導(dǎo)向方式。但是,20世紀(jì)70年代中期,具有載貨功能的AGV在歐洲得到了應(yīng)用并被引入到美國。這些自動導(dǎo)向車主要用于自動化倉貯系統(tǒng)和柔性裝配系統(tǒng)的物料運(yùn)輸。在20世紀(jì)70年代和80年代初,AGV的應(yīng)用領(lǐng)域擴(kuò)大而且工作條件也變得多樣化,因此,新的導(dǎo)向方式和技術(shù)得到了更廣泛的研究與開發(fā)。在最近的10-15年里,各種新型AGV被廣泛地應(yīng)用于各個領(lǐng)域。單元式AGV主要用于短距離的物料運(yùn)輸并與自動化程度較高的加工設(shè)備組成柔性生產(chǎn)線,除此以外,AGV還用于搬運(yùn)體積和重量都很大的物品,尤其是在汽車制造過程中用多個載貨平臺式AGV組成移動式輸送線,構(gòu)成整車柔性裝配生產(chǎn)線。最近,小型AGV應(yīng)用更為廣泛,而且以長距離不復(fù)雜的路徑規(guī)劃為主。AGV從僅由大公司應(yīng)用,正向小公司單臺應(yīng)用轉(zhuǎn)變,而且其效率和效益更好。至此出現(xiàn)了智能車的概念。1.1.2應(yīng)用前景城市公共交通是與人民群眾生產(chǎn)生活息息相關(guān)的重要基礎(chǔ)設(shè)施。然而,目前世界上許多大城市都面臨著由私人汽車過度使用而帶來的諸多問題,例如道路堵塞、停車?yán)щy、能源消耗、噪聲污染和環(huán)境污染等,這些問題嚴(yán)重降低了城市生活的質(zhì)量。優(yōu)先發(fā)展城市公共交通是提高交通資源利用效率,緩解交通擁堵的重要手段。國務(wù)院總理溫家寶于2005年10月做出重要批示,要求優(yōu)先發(fā)展城市公共交通,這是貫徹落實科學(xué)發(fā)展觀和建設(shè)節(jié)約型社會的重要舉措。大容量城市公共交通,如地鐵、輕軌等,其最大優(yōu)點(diǎn)是空間利用率和能源利用率較高。然而,由于缺乏足夠的時間、空間、運(yùn)力靈活性,在客流量不足的情況下,系統(tǒng)效率將大大降低,運(yùn)營成本過高,難以大力推廣和應(yīng)用。回顧汽車發(fā)展的百年歷史,不難發(fā)現(xiàn)其控制方式從未發(fā)生過根本性改變,即由人觀察道路并駕駛車輛,形成“路-人-車”的閉環(huán)交通系統(tǒng)。隨著交通需求的增加,這種傳統(tǒng)車輛控制方式的局限性日益明顯,例如安全性低(交通事故)和效率低(交通堵塞)。最新調(diào)查表明,95%的交通事故是由人為因素造成,交通堵塞也大都與駕駛員不嚴(yán)格遵守交通規(guī)則有關(guān)。如果要從根本上解決這一問題,就需要將“人”從交通控制系統(tǒng)中請出來,形成“車-路”閉環(huán)交通系統(tǒng),從而提高安全性和系統(tǒng)效率。這種新型車輛控制方法的核心,就是實現(xiàn)車輛的智能化。智能車有著極為廣泛的應(yīng)用前景。結(jié)合傳感器技術(shù)和自動駕駛技術(shù)可以實現(xiàn)汽車的自適應(yīng)巡航并把車開得又快又穩(wěn)、安全可靠;汽車夜間行駛時,如果裝上紅外攝像頭,就能實現(xiàn)夜晚汽車的安全輔助駕駛;他也可以工作在倉庫、碼頭、工廠或危險、有毒、有害的工作環(huán)境里,此外他還能擔(dān)當(dāng)起無人值守的巡邏監(jiān)視、物料的運(yùn)輸、消防滅火等任務(wù)。在普通家庭轎車消費(fèi)中,智能車的研發(fā)也是很有價值的,比如霧天能見度差,人工駕駛經(jīng)常發(fā)生碰撞,如果用上這種設(shè)備,激光雷達(dá)會自動探測前方的障礙物,電腦會控制車輛自動停下來,撞車就不會發(fā)生了。1.2智能車設(shè)計要求介紹在在飛思卡爾比賽中,參賽選手使用大賽組委會統(tǒng)一提供的競賽車模,以Freescale公司生產(chǎn)的16位微控制器MC9S12DG128B作為核心控制單元,自主構(gòu)思控制方案及系統(tǒng)設(shè)計,包括傳感器信號采集處理、控制算法及執(zhí)行、動力電機(jī)驅(qū)動、轉(zhuǎn)向舵機(jī)控制等,最終實現(xiàn)一套能夠自主識別路線,并且可以實時輸出車體狀態(tài)的智能車控制軟硬件系統(tǒng)。各參賽隊完成智能車工程制作及調(diào)試后,于指定日期與地點(diǎn)參加比賽。參賽隊伍之名次以賽車現(xiàn)場成功完成賽道比賽時間為主,技術(shù)方案及工程制作質(zhì)量為輔來決定。但與去年不同的是,今年的賽道與去年不同,今年的賽道黑色軌跡不是在中間而是在兩邊,對于攝像頭足來說難度不是太大,對于激光組來說有一定的挑戰(zhàn)性。1.3機(jī)器視覺介紹所謂機(jī)器視覺就是用視覺傳感器代替人眼來做測量和判斷,這也是模式識別的基礎(chǔ)。機(jī)器視覺系統(tǒng)是指通過圖像傳感器(即圖像攝取裝置,分為CMOS攝像頭和CCD攝像頭兩種)將被攝取目標(biāo)轉(zhuǎn)換成圖像信號,這個過程是由AD采樣來完成的,然后把結(jié)果傳送給專用的圖像處理系統(tǒng),根據(jù)像素分布和亮度、顏色等信息,轉(zhuǎn)變成數(shù)字化信號;圖像系統(tǒng)對這些信號進(jìn)行各種運(yùn)算來抽取目標(biāo)的特征,進(jìn)而根據(jù)判別的結(jié)果來控制現(xiàn)場的設(shè)備動作。在智能車導(dǎo)航技術(shù)方面,機(jī)器視覺技術(shù)由于其能提供豐富的信息、價格相對低廉、能與其他傳感器方便的進(jìn)行數(shù)據(jù)融合等特點(diǎn),成為當(dāng)前有著廣泛應(yīng)用前景的導(dǎo)航技術(shù)之一。1.4小結(jié)基于此,本文主要解決的問題如下:如何選擇攝像頭。攝像頭有數(shù)字?jǐn)z像頭,有模擬攝像頭。關(guān)鍵是如何選擇。對圖像采集時,在滿足快速的情況下如何保證圖像的準(zhǔn)確性。飛思卡爾比賽是競速比賽,利用攝像頭采集圖像時必須要滿足圖像的快速性,因為采集的速度直接影響到處理器對賽車的實時控制。如何對圖像進(jìn)行二值化。二值化有多種方式,如何找到一種最優(yōu)的二值化方式。如何對反光處進(jìn)行補(bǔ)線,并進(jìn)行去噪。通過以上幾個問題的解決,可以大大的提高飛思卡爾賽車的穩(wěn)定性和快速性。第2章主要思路及技術(shù)方案概要2.1總體設(shè)計主要方法步驟為滿足飛思卡爾賽車的設(shè)計要求,總體設(shè)計思路如下設(shè)計思路:通過對攝像頭采集到的圖像的進(jìn)行處理,然后通過測速電機(jī)對小車的實時速度的采集,處理器再對采集到的數(shù)據(jù)進(jìn)行分析,然后控制小車的運(yùn)動方向和速度。同時外加小液晶和相應(yīng)按鍵,這樣可以根據(jù)現(xiàn)場情況來調(diào)節(jié)相應(yīng)的PID參數(shù)來適應(yīng)相應(yīng)路況。本章主要論述的是各種方案的對比以及最終方案的選擇。2.2攝像頭的對比與選擇2.2.1攝像頭的選取圖像傳感器即攝像頭是組成機(jī)器視覺系統(tǒng)的非常重要的元器件。根據(jù)其原理不同攝像頭主要分為兩種:CCD(ChargeCoupledDevice)攝像頭、CMOS攝像頭。CCD也稱電耦合器件,其工作原理是:被攝物體反射光線到攝像頭上,經(jīng)過鏡頭聚焦到CCD感光芯片上,感光芯片根據(jù)光線的強(qiáng)弱積聚相應(yīng)電荷,經(jīng)周期性放電而產(chǎn)生表示圖像的電信號。CMOS攝像頭其實跟CCD差不多,也是將光轉(zhuǎn)換成電信號的器件。它們的差異之處就是圖像的掃描方式不同,CCD是采用連續(xù)掃描方式,即它只有等到最后一個像素掃描完成后才進(jìn)行放大;CMOS傳感器的每個像素都有一個將電荷放大為電信號的轉(zhuǎn)換器。所以CMOS的功耗比CCD要小。由于CMOS功耗小,較CCD要便宜,而且圖像質(zhì)量滿足要求。對于攝像頭圖像采集,也可以用OV7620數(shù)字?jǐn)z像頭模塊,或者使用高速外部AD進(jìn)行采集。也可以使用PAL制式黑白攝像頭和單片機(jī)片內(nèi)部AD來進(jìn)行圖像采集。另外根據(jù)攝像頭的安裝方式不同,也有旋轉(zhuǎn)90度進(jìn)行采集的。對于整個程序的流程也有很多不同,有采完一場圖像后進(jìn)行處理的,也有采集一行就進(jìn)行處理的。2.2.2模擬攝像頭在采集圖像之前,我們首先要知道攝像頭輸出信號的特性。目前的模擬攝像頭一般都是PAL制式的,輸出的信號由復(fù)合同步信號,復(fù)合消隱信號和視頻信號組成。視頻信號:真正的圖像信號,對于黑白攝像頭,圖像越黑,電壓越低,圖像越白,電壓越高。在這里我們通過AD采集來得到亮度信號。復(fù)合同步信號:用于控制電視機(jī)的電子槍對電子的偏轉(zhuǎn)。當(dāng)電子槍收到行同步信號時,電子束就從上一行的最右端移動到下一行的最左端。當(dāng)電子槍收到場同步信號時就從屏幕的最右下角移到最左上角。在這里我們需要用這個信號來控制采集像素的時序。復(fù)合消隱信號:在圖像換行和換場時電子槍回掃時不發(fā)射電子。即收到復(fù)合同步信號后,電子槍要換位置時是不能發(fā)射電子束的,這時候就由這個信號來消隱。在這里我們完全不用理會這個信號。由于人眼看到的圖像大于等于24Hz時人才不會覺得圖像閃爍,所以PAL制式輸出的圖像是25Hz,即每秒鐘有25幅畫面,說的專業(yè)點(diǎn)就是每秒25幀,其中每一幀有625行。但由于在早期電子技術(shù)還不發(fā)達(dá)時,電源不穩(wěn)定,容易對電視信號進(jìn)行干擾,而交流電源是50Hz所以,為了和電網(wǎng)兼容,同時由于25Hz時圖像不穩(wěn)定,所以后來工程師們把一副圖像分成兩場顯示,對于一幅畫面,一共有625行,但是電子槍先掃描奇數(shù)場1,3,5,然后再掃描2,4,6,所以這樣的話,一副圖像就變成了隔行掃描,每秒鐘就有50場了。2.2.3數(shù)字?jǐn)z像頭OV7620是1/3CMOS彩色/黑白圖像傳感器。它支持連續(xù)和隔行兩種掃描方式,VGA與QVGA兩種圖像格式;最高像素為664×492,幀速率為30fps;數(shù)據(jù)格式包括YUV,YCrCb,RGB三種,能夠滿足智能車圖像采集系統(tǒng)的要求。OV7620采用的是NTSC制,每秒30幀,一幀兩場,那么每秒就有60場。意味著50/3MS就有一幅圖像產(chǎn)生。7620支持VGA(640x320)QVGA(320x240),且默認(rèn)的是VGA格式,通過調(diào)整SCCB可以改為QVGA格式。這樣改有兩個好處:首先像素小了。那么像素同步時間增大了,采點(diǎn)方便。再者減小計算量,沒必要搞那么多的點(diǎn)。320x240pixels,理解為:有320行,一行有240個點(diǎn)。視野和可視距離:這個和鏡頭的選擇有關(guān),據(jù)我測試,f=3.6MM時視野應(yīng)該有25度左右,f越大視場越小.可視距離需要調(diào)節(jié)鏡頭對焦.經(jīng)我測試可視距離可以看十幾米,畢竟相素值只有30萬多,用單片機(jī)讀可以看到3-4M的距離.這里解釋一下為什么用單片機(jī)讀會打折扣.因為黑線寬度只有2.5CM,太遠(yuǎn)了黑線會很細(xì),采點(diǎn)之后就分辯不出是噪聲還是有用信號了.在1米左右時,黑線寬度可用8個點(diǎn)表示。2.2.4攝像頭的選定經(jīng)過對比,選擇數(shù)字?jǐn)z像頭不僅可以縮短設(shè)計周期,而且采集速度準(zhǔn)確快速,所以最終選擇數(shù)字?jǐn)z像頭OV7620。2.3二值化方案的選取圖像二值化是數(shù)字圖像處理技術(shù)中的一項基本技術(shù),該系統(tǒng)中由于賽道是由黑色和白色兩種顏色組成的,并且背景顏色基本也是白色的,系統(tǒng)的任務(wù)是識別出黑色的引跑線位置,由于其圖像的干擾并不是很強(qiáng),因此可以采用二值化的技術(shù)作為系統(tǒng)的圖像預(yù)處理。經(jīng)過二值化處理后將原來白色的像素點(diǎn)用“0”表示,而黑色像素點(diǎn)用“1”表示。根據(jù)閾值選取的不同,二值化的算法分為固定閾值和自適應(yīng)閾值。比較常用的二值化方法則有:雙峰法、迭代法、大津法和灰度拉伸法等。2.3.1雙峰值法在對賽道環(huán)境的分析中,我們可以發(fā)現(xiàn)黑線部分的亮度是相對比較固定的,其波動的范圍非常小,小于20(亮度值最大為255),而白色底板的亮度值變化相對較大一些,但仍能保證其與黑線的亮度值有較大的梯度。因此,可以采用直方圖統(tǒng)計法來對其閥值進(jìn)行自動設(shè)定,具體方法如下。首先存儲一幅原始圖像的所有數(shù)據(jù),然后對整幅圖像的第一像素點(diǎn)進(jìn)行統(tǒng)計,最終把第個亮度值所對應(yīng)的像素點(diǎn)個數(shù)統(tǒng)計出來,結(jié)果將出現(xiàn)一個雙波峰形圖,如圖4-2所示。這將能較直接地比較出亮度值集中的區(qū)域,以兩個波峰的中心位置所在的中點(diǎn)值作為該賽道的二值化閥值。該算法計算的精度較高,能夠找到理想的一個閥值點(diǎn),雖然它執(zhí)行的時間較長,但是這只是在賽車未起跑前進(jìn)行的初始化運(yùn)算,對賽車起跑后的速度完全沒有影響,因此該方案是可以采用的。2.3.2迭代法迭代法是基于逼近的思想進(jìn)行設(shè)計的。其步驟如下:(1).求出圖象的最大灰度值和最小灰度值,分別記為ZMAX和ZMIN,令初始閾值T0=(ZMAX+ZMIN)/2;(2)根據(jù)閾值TK將圖象分割為前景和背景,分別求出兩者的平均灰度值ZO和ZB;(3)求出新閾值TK+1=(ZO+ZB)/2;(4)若TK=TK+1,則所得即為閾值;否則轉(zhuǎn)2,迭代計算。迭代所得的閾值分割的圖象效果良好?;诘拈撝的軈^(qū)分出圖像的前景和背景的主要區(qū)域所在,但在圖像的細(xì)微處還沒有很好的區(qū)分度。2.3.3大津法大津法由大津于1979年提出,對圖像Image,記t為前景與背景的分割閾值,前景點(diǎn)數(shù)占圖像比例為w0,平均灰度為u0;背景點(diǎn)數(shù)占圖像比例為w1,平均灰度為u1。圖像的總平均灰度為:u=w0*u0+w1*u1。從最小灰度值到最大灰度值遍歷t,當(dāng)t使得值g=w0*(u0-u)2+w1*(u1-u)2最大時t即為分割的最佳閾值。對大津法可作如下理解:該式實際上就是類間方差值,閾值t分割出的前景和背景兩部分構(gòu)成了整幅圖像,而前景取值u0,概率為w0,背景取值u1,概率為w1,總均值為u,根據(jù)方差的定義即得該式。因方差是灰度分布均勻性的一種度量,方差值越大,說明構(gòu)成圖像的兩部分差別越大,當(dāng)部分目標(biāo)錯分為背景或部分背景錯分為目標(biāo)都會導(dǎo)致兩部分差別變小,因此使類間方差最大的分割意味著錯分概率最小。直接應(yīng)用大津法計算量較大,因此我們在實現(xiàn)時采用了等價的公式g=w0*w1*(u0-u1)2。2.3.4灰度拉伸-一種改進(jìn)的大津法大津法得到了廣泛的應(yīng)用,但有人發(fā)現(xiàn),大津法致命的缺陷是當(dāng)目標(biāo)物與背景灰度差不明顯時,會出現(xiàn)無法忍受的大塊黑色區(qū)域,甚至?xí)G失整幅圖像的信息。為了解決這個問題,有人提出了灰度拉伸的增強(qiáng)大津法。這種方法的原理其實就是在大津法的基礎(chǔ)上通過增加灰度的級數(shù)來增強(qiáng)前后景的灰度差,從而解決問題?;叶仍黾拥姆椒ㄊ怯迷械幕叶燃壋松贤粋€系數(shù),從而擴(kuò)大灰度的級數(shù),特別地,當(dāng)乘上的系數(shù)為1時,這就是大津法的原型,因此,大津法可以看做是這種方法的一個特例。2.3.5二值化方案的最終選定在飛思卡爾賽車比賽中,由于要考慮到圖像采集的速度和準(zhǔn)確度。迭代所得的閾值分割的圖象效果良好?;诘拈撝的軈^(qū)分出圖像的前景和背景的主要區(qū)域所在,但在圖像的細(xì)微處還沒有很好的區(qū)分度,因此不采用。而對于大津法,其運(yùn)算量大,影響速度,大津法致命的缺陷是當(dāng)目標(biāo)物與背景灰度差不明顯時,會出現(xiàn)無法忍受的大塊黑色區(qū)域,甚至?xí)G失整幅圖像的信息,因此也不予采用。而對于灰度拉伸法,適合處理對速度要求不高的圖像處理,處理數(shù)據(jù)量大,因此也不予采用。經(jīng)過各種方案對比,最終選擇雙峰法,這種方法不僅滿足對圖像處理精度的要求,而且滿足對速度的要求。2.4對圖像進(jìn)行去噪2.4.1傳統(tǒng)的去噪法對隨時間變化的信號,通常采用兩種最基本的描述形式,即時域和頻域。時域描述信號強(qiáng)度隨時間的變化,頻域描述在一定時間范圍內(nèi)信號的頻率分布。對應(yīng)的圖像的去噪處理方法基本上可分為空間域法和變換域法兩大類。前者即是在原圖像上直接進(jìn)行數(shù)據(jù)運(yùn)算,對像素的灰度值進(jìn)行處理。變換域法是在圖像的變換域上進(jìn)行處理,對變換后的系數(shù)進(jìn)行相應(yīng)的處理,然后進(jìn)行反變換達(dá)到圖像去噪的目的。由于傳統(tǒng)的頻域去燥方法比較復(fù)雜,這里不采用也不再敘述,主要介紹一下傳統(tǒng)的時域去噪處理方法。傳統(tǒng)時域處理方法主要有均值濾波和中值濾波。均值濾波鄰域平均法是一種局部空間域處理的算法。設(shè)一幅圖像為的陣列,處理后的圖像為,它的每個像素的灰度級由包含領(lǐng)域的幾個像素的灰度級的平均值所決定,即用下式得到處理后的圖像: (2-l)式中;s是以點(diǎn)為中心的鄰域的集合,M是s內(nèi)坐標(biāo)總數(shù)。圖像鄰域平均法的處理效果與所用的鄰域半徑有關(guān)。半徑愈大,則圖像模糊程度也愈大。另外,圖像鄰域平均法算法簡單,計算速度快,但它的主要缺點(diǎn)是在降低噪聲的同時使圖像產(chǎn)生模糊,特別在邊緣和細(xì)節(jié)處,鄰域越大,模越厲害。中值濾波中值濾波是一種非線性濾波,由于它在實際運(yùn)算過程中并不需要圖像的統(tǒng)計特性,所以比較方便。中值濾波首先是被應(yīng)用在一維信號處理技術(shù)中,后來被二維圖像信號處理技術(shù)所應(yīng)用。在一定的條件下,可以克服線性濾波器所帶來的圖像細(xì)節(jié)模糊,而且對濾除脈沖干擾及圖像掃描噪聲最為有效。但是對一些細(xì)節(jié)多,特別是點(diǎn)、線、尖頂細(xì)節(jié)多的圖像不宜采用中值濾波的方法。中值濾波的基本原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個鄰域中各點(diǎn)值的中值代替。設(shè)有一個一維序列,,…,,取窗口長度為m(m為奇數(shù)),對此序列進(jìn)行中值濾波,就是從輸入序列中相繼抽出m個數(shù),,…,,…,,…,,…,,其中為窗口的中心位置,,再將這m個點(diǎn)按其數(shù)值大小排列,取其序號為正中間的那作為出。用數(shù)學(xué)公式表示為: (2-2)例如:有一個序列為{0,3,4,0,7},則中值濾波為重新排序后的序列{0,0,3,4,7}中間的值為3。此例若用平均濾波,窗口也是取5,那么平均濾波輸出為。因此平均濾波的一般輸出為: (2-3)對于二位序列進(jìn)行中值濾波時,濾波窗口也是二維的,但這種二位窗口可以有各種不同的形狀,如線狀、方形、圓形、十字形、圓環(huán)形等。二維數(shù)據(jù)的中值濾波可以表示為: (2-4)在實際使用窗口時,窗口的尺寸一般先用再取逐漸增大,直到其濾波效果滿意為止。對于有緩變的較長輪廓線物體的圖像,采用方形或圓形窗口為宜,對于包含尖頂角物體的圖像,適宜用十字形窗口。使用二維中值濾波最值得注意的是保持圖像中有效的細(xì)線狀物體。與平均濾波器相比,中值濾波器從總體上來說,能夠較好地保留原圖像中的躍變部分。2.4.2小波去噪近年來,小波理論得了非常迅速的發(fā)展,由于其具備良好的時頻特性和多分辨率特性,小波理論成功地在許多領(lǐng)域得到了廣泛的應(yīng)用?,F(xiàn)在小波分析已經(jīng)滲透到自然科學(xué)、應(yīng)用科學(xué)、社會科學(xué)等領(lǐng)域。在圖像去噪領(lǐng)域中,應(yīng)用小波理論進(jìn)行圖像去噪受到許多專家學(xué)者的重視,并取得了非常好的效果。小波去噪的方法有多種,如利用小波分解與重構(gòu)的方法濾波降噪、利用小波變換模極大值的方法去噪、利用信號小波變換后空域相關(guān)性進(jìn)行信噪分離、非線性小波閾值方法去噪、平移不變量小波去噪法,以及多小波去噪等等。歸結(jié)起來主要有三類:模極大值檢測法、閾值去噪法和屏蔽(相關(guān))去噪法。其中最常用的就是閾值法去噪,本文主要研究閾值去噪。小波去噪的基本思路:(1).先對含噪信號做小波變換,得到一組小波系數(shù);(2).通過對進(jìn)行閾值處理,得到估計系數(shù),使得與兩者的差值盡可能??;(3).利用進(jìn)行小波重構(gòu),得到估計信號即為去噪后的信號。Donoho提出了一種非常簡潔的方法對小波系數(shù)進(jìn)行估計。對連續(xù)做幾次小波分解后,有空間分布不均勻信號各尺度上小波系數(shù)在某些特定位置有較大的值,這些點(diǎn)對應(yīng)于原始信號的奇變位置和重要信息,而其他大部分位置的較??;對于白噪聲,它對應(yīng)的小波系數(shù)在每個尺度上的分布都是均勻的,并隨尺度的增加,系數(shù)的幅值減小。因此,通常的去噪辦法是尋找一個合適的數(shù)作為閾值(門限),把低于λ的小波函數(shù)(主要由信號引起),設(shè)為零,而對于高于的小波函數(shù)(主要由信號引起),則予以保留或進(jìn)行收縮,從而得到估計小波系數(shù),它可理解為基本由信號引起的,然后對進(jìn)行重構(gòu),就可以重構(gòu)原始信號。估計小波系數(shù)的方法如下,?。? (2-5)定義: (2-6)稱之為硬閾值估計方法。一般軟閾值估計定義為 (2-7)(4).綜上所述基于空域的平均濾波法和非線性的中值濾波都是通過對圖像像素的灰度值進(jìn)行運(yùn)算,達(dá)到平滑圖像的效果。平均濾波是以點(diǎn)鄰域像素灰度平均值來代替該點(diǎn)的灰度值,而中值濾波則以點(diǎn)鄰域像素灰度值中值來代替該點(diǎn)的灰度值,因此,對于隨機(jī)噪音的抑制能力,中值濾波器的性能要比均值濾波器的差些。但對于脈沖干擾來講,特別是脈沖寬度小于濾波器的窗口寬度一半,中值濾波還是很有效的。不過,他們在平滑圖像的同時亦會使圖像輪廓變得模糊,它們的噪音平滑效果與窗口的寬度有關(guān),窗口寬度越寬,噪音平滑效果越好,但圖像就越模糊,這個矛盾難于解決,也是均值濾波和中值濾波的缺點(diǎn)。2.4.3去噪方法的最終確定綜上所述基于空域的平均濾波法和非線性的中值濾波都是通過對圖像像素的灰度值進(jìn)行運(yùn)算,達(dá)到平滑圖像的效果。平均濾波是以點(diǎn)鄰域像素灰度平均值來代替該點(diǎn)的灰度值,而中值濾波則以點(diǎn)鄰域像素灰度值中值來代替該點(diǎn)的灰度值,因此,對于隨機(jī)噪音的抑制能力,中值濾波器的性能要比均值濾波器的差些。但對于脈沖干擾來講,特別是脈沖寬度小于濾波器的窗口寬度一半,中值濾波還是很有效的。不過,他們在平滑圖像的同時亦會使圖像輪廓變得模糊,它們的噪音平滑效果與窗口的寬度有關(guān),窗口寬度越寬,噪音平滑效果越好,但圖像就越模糊,這個矛盾難于解決,也是均值濾波和中值濾波的缺點(diǎn)。而小波法去噪又剛好克服了這些缺點(diǎn),所以最終選擇了小波法去噪。2.5小結(jié)經(jīng)過對比和選擇,攝像頭選擇為數(shù)字?jǐn)z像頭;二值化算法選擇雙峰法;去噪選擇小波去噪法。
第3章硬件設(shè)計3.1硬件總體方案設(shè)計為滿足飛思卡爾賽車的設(shè)計要求,總體硬件思路如下設(shè)計思路:通過對攝像頭采集到的圖像的進(jìn)行處理,然后通過測速電機(jī)對小車的實時速度的采集,通過處理器對采集到的數(shù)據(jù)進(jìn)行分析,然后控制小車的運(yùn)動方向和速度。同時外加小液晶和相應(yīng)按鍵,這樣可以根據(jù)實時情況來調(diào)節(jié)相應(yīng)的PID參數(shù)來適應(yīng)相應(yīng)路況。本章主要論述的是各種方案的對比以及最終方案的選擇。此智能車輛定位系統(tǒng)用攝像頭拍攝車輛前方的賽道,通過MC9S12DG12采樣視頻信號,獲得圖像數(shù)據(jù)。然后用合適的算法,如跟蹤邊緣檢測算法,分析圖像數(shù)據(jù),提取目標(biāo)指引線。然后,系統(tǒng)根據(jù)目標(biāo)指引線的位置信息,對舵機(jī)和電機(jī)施以合適的控制。本智能車輛定位系統(tǒng)的結(jié)構(gòu)圖如圖3-1所示。因為系統(tǒng)是一個有機(jī)的整體,所以任何一部分的改進(jìn)都能提高小車的性能。頭電路圖3-1智能車結(jié)構(gòu)圖雖然輪胎、驅(qū)動電機(jī)、舵機(jī)和電池等車模主要結(jié)構(gòu)不能作改動,但是一些機(jī)械結(jié)構(gòu)上的細(xì)節(jié)仍然會對小車性能產(chǎn)生影響,為此我們對這些細(xì)節(jié)進(jìn)行了一定的調(diào)整。3.2核心控制板核心控制板(如圖3-2所示)負(fù)責(zé)視頻采集、獲取速度并輸出舵機(jī)和驅(qū)動電機(jī)的控制信號。電路板上包括了S12單片機(jī)工作所必需的穩(wěn)壓模塊、時鐘模塊和復(fù)位模塊,同時還包括了調(diào)PID參數(shù)電路、串口以及無線SPI接口等。圖3-2核心控制板核心控制板的原理圖見附錄。3.3攝像頭的安裝攝像頭的安裝位置應(yīng)合適選取。安裝位置太低,會導(dǎo)致視域不夠廣闊,影響尋線的有效范圍;安裝位置太高,導(dǎo)引線會變得過窄而無法被檢測到,而且賽車系統(tǒng)會因重心抬高而穩(wěn)定性變差。安裝位置合適的一個標(biāo)準(zhǔn)是:在此位置的拍攝范圍能滿足控制的需要??刂频牟呗院唵危瑒t所需的拍攝范圍就可以小一些;反之策略復(fù)雜,需獲得的賽道信息較多,則拍攝范圍就應(yīng)大一些。作為本設(shè)計的賽車系統(tǒng),控制策略涉及到賽車入彎時能區(qū)分S彎還是普通的單向彎。安裝方式如圖3-3所示,經(jīng)過測試安裝滿足要求。圖3-3智能車攝像頭安裝圖3.4小結(jié)由于小車要快速奔跑,需要保證它的穩(wěn)定性堅固性,對于小車的布局都有嚴(yán)格的要求,經(jīng)過測試如上圖的的布局最為合理。第4章軟件設(shè)計4.1系統(tǒng)軟件總體設(shè)計方案否是否是場同步信號檢測圖像采樣舵機(jī)控制速度控制圖像去噪二值化軌跡提取速度提取系統(tǒng)初始化圖4-1系統(tǒng)軟件結(jié)構(gòu)4.2圖像二值化軟件設(shè)計根據(jù)第二章的雙峰值法設(shè)計原理相應(yīng)的程序的代碼如下(部分代碼):#pragmaCODE_SEGDEFAULTucharthreshold;//動態(tài)閾值ucharmax;//雙峰法的最大值ucharmin;//雙峰法的最小值/********************二值化***********************/voidBinary(void){for(temp_i=0;temp_i<line;temp_i++)//每行求一次動態(tài)閾值{max=110;//賦初值min=90;//賦初值for(temp_j=0;temp_j<point;temp_j++){/*取值范圍在40-250中間*/if(Data_buffer[temp_i][temp_j]>max&&Data_buffer[temp_i][temp_j]<=250)max=Data_buffer[temp_i][temp_j];elseif(Data_buffer[temp_i][temp_j]<min&&Data_buffer[temp_i][temp_j]>=40)min=Data_buffer[temp_i][temp_j];}threshold=(uchar)((max+min)/2);//每行最大值最小值的平均值Data_Binary(temp_i,threshold);//每行求一次動態(tài)閾值//Data_Binary(temp_i+1,threshold);//沒行求一次動態(tài)閾值//Data_Binary(temp_i+2,threshold);//沒行求一次動態(tài)閾值//Data_Binary(temp_i+3,threshold);//沒行求一次動態(tài)閾值//Data_Binary(temp_i+4,threshold);//沒行求一次動態(tài)閾值}}閥值點(diǎn)個數(shù)黑線中心區(qū)域底板中心區(qū)域50004000300020001000寬度值圖4-2直方圖統(tǒng)計法從分割(如圖4-2所示)的效果來看,當(dāng)前后景的對比較為強(qiáng)烈時,分割效果較好;否則基本無效。4.3去噪設(shè)計接下來按照上述小波閾值變換在信號去噪中的算法及小波閾值函數(shù)進(jìn)行計算機(jī)仿真,仿真程序采用MATLAB語言編寫。該節(jié)首先產(chǎn)生一個實驗信號,然后對小波去噪時各種參數(shù)設(shè)置進(jìn)行了詳細(xì)的對比研究,最后用MATLAB語言對小波去噪進(jìn)行仿真。4.3.1實驗信號的產(chǎn)生該節(jié)所用到的實驗信號是由wnoise()函數(shù)產(chǎn)生的長度為211點(diǎn)、含標(biāo)準(zhǔn)高斯白噪聲、信噪比為3的‘heavysine’信號。MATLAB工具箱提供了函數(shù)wnoise以實現(xiàn)為檢驗小波去噪性能產(chǎn)生測試噪聲。其語法格式為:X=wnoise(FUN,N)[X,XN]=wnoise(FUN,N,SQRT_SNR)[X,XN]=wnoise(FUN,N,SQRT_SNR,INIT)1.X=wnoise(FUN,N)產(chǎn)生幅值在[0,1]之間長度為2N的信號,信號的類型由FUN指定:FUN=1BLOCKS產(chǎn)生不規(guī)則的方波信號FUN=2BUMPS產(chǎn)生低頻噪聲FUN=3HEAVYSIN產(chǎn)生隨機(jī)間斷的正弦信號FUN=4DROPLER產(chǎn)生chirp信號FUN=5QUADCHIRP產(chǎn)生4次調(diào)頻信號FUN=6MISHMASH產(chǎn)生混雜信號2.[X,XN]=wnoise(FUN,N,SQRT_SNR)產(chǎn)生含有白噪聲的信號XN,SQRT_SNR是信號的噪聲比。3.[X,XN]=wnoise(FUN,N,SQRT_SNR,INIT)使用初始值INIT產(chǎn)生含噪信號。下面的MATLAB語句產(chǎn)生信號:%產(chǎn)生一個Heavysine初始信號x和長度為211點(diǎn)、含標(biāo)準(zhǔn)高斯白噪聲的信號xrefsnr=3;init=2055615866;[xref,x]=wnoise(3,11,snr,init);subplot(221),plot(xref),axis([12048-1010]);title('Originalsignal');subplot(223),plot(x),axis([12048-1010]);title(['Noisysignal-Signaltonoiseratio=',...num2str(fix(snr))]);圖4-3所示就是以上語句為產(chǎn)生的測試信號圖形。圖4-3原始信號和含燥信號各參數(shù)下去噪效果對比MATLAB工具箱提供了函數(shù)wden以實現(xiàn)自動利用小波進(jìn)行一維信號的去噪。其語法格式為:[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')(1)[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')對輸入信號X進(jìn)行去噪處理,返回經(jīng)過處理的信號XD,以及XD的小波分解結(jié)構(gòu)[CXD,LXD]。(2)[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')根據(jù)信號小波分解結(jié)構(gòu)[C,L]對信號進(jìn)行去噪處理。各參數(shù)的選擇對比如下:1.四種閾值選取方式的對比(TPTR的設(shè)置)根據(jù)基本的噪聲模型,程序中使用四種規(guī)則來選取閾值,每一種規(guī)則的選取有參數(shù)TPTR決定。TPTR的選擇有以下四種閾值規(guī)則:(1)TPTR=‘rigrsure’是一種基于史坦的無偏似然估計(二次方程)原理的自適應(yīng)閾值選擇。對一個給定的閾值t,得到他的似然估計,再將非似然t最小化,就得到了所選的閾值,它是一種軟件閾值估計器。(2)TPTR=‘sqtwolog’采用的是固定的閾值形式,產(chǎn)生的閾值大小事sqrt(2*log(length(x)))。(3)TPTR=‘heursure’事前兩種閾值的綜合,是最優(yōu)預(yù)測變量閾值選擇。如果噪聲比很?。ü烙嬘泻艽蟮脑肼暎?,因此,采用此種啟發(fā)式的閾值。(4)TPTR=‘minimaxi’采用的是一種極大極小原理,它產(chǎn)生一個最小均方誤差值,而不是無誤差。在統(tǒng)計學(xué)上,這種極值原理在于設(shè)計估計器。因為被消噪的信號可以看作與未知回歸函數(shù)的估計式相似,這種極值估計器可以在一個給定的函數(shù)集中實現(xiàn)最大均方誤差最小化。在MATLAB中運(yùn)行以下語句:%不同閾值選取方式下濾波效果的比較snr=3;init=2055615866;[xref,x]=wnoise(3,11,snr,init);lev=5;xd=wden(x,'rigrsure','s','sln',lev,'sym8');subplot(221),plot(xd),axis([12048-1010]);title('rigrsure');xd=wden(x,'heursure','s','one',lev,'sym8');subplot(222),plot(xd),axis([12048-1010]);title('heursure');xd=wden(x,'sqtwolog','s','sln',lev,'sym8');subplot(223),plot(xd),axis([12048-1010]);title('sqtwolog');xd=wden(x,'minimaxi','s','sln',lev,'sym8');subplot(224),plot(xd),axis([12048-1010]);title('minimaxi');[c,l]=wavedec(x,lev,'sym8');xd=wden(c,l,'minimaxi','s','sln',lev,'sym8');得到4個去噪效果圖如圖4-4所示。圖4-4MATLAB中的4種閥值選取方式對比可以看出,固定閾值形式(sqtwolog)和啟發(fā)式閾值(heuesure)的去噪更徹底,而由于rigrsure和minimaxi閾值選取規(guī)則較為保守(閾值較小),導(dǎo)致只有部分系數(shù)置零噪聲去除不徹底。2.軟門限閾值和硬門限閾值處理比較(SORH的設(shè)置)對于閾值函數(shù)的確定,Donoho提出了兩種:硬閾值和軟閾值。在硬閾值處理中,由于收縮函數(shù)的不連續(xù)性,會在恢復(fù)的信號中產(chǎn)生一些人為的“噪聲點(diǎn)”。軟閾值的連續(xù)性較好。在MATLAB語句中,SORH=‘s’,則為軟閾值處理,向量X為待處理的信號。當(dāng)SORH=‘h’,則為硬閾值處理。一般來說,用硬閾值處理后的信號比用軟閾值處理后的信號更為粗糙。在MATLAB下運(yùn)行如下語句:%軟門限閾值和硬門限閾值效果比較snr=3;init=2055615866;[xref,x]=wnoise(3,11,snr,init);thr=0.4;%作用硬閾值xthard=wthresh(x,'h',thr);%作用軟閾值xtsoft=wthresh(x,'s',thr);subplot(221),plot(xthard);title('作用硬閾值的結(jié)果');subplot(223),plot(xtsoft);title('作用軟閾值的結(jié)果');得到去噪效果對比圖如圖4-4所示。圖4-4軟門限閥值和硬門限閥值處理比較實驗表明,軟門限閾值處理方式一般能夠取得更為平滑和理想的去噪效果。3.小波函數(shù)的比較選?。╳name)小波函數(shù)可以選取一個正交小波,如Daubechies(dbN),symlets(symN),coiflets(soifN)等。具體選擇可以根據(jù)實際需要決定,在我們的實驗中選擇的是sym8(光滑的緊支撐雙正交小波)。4.4二值化后補(bǔ)線如果在拐彎處出現(xiàn)線丟失等狀況需要補(bǔ)線,則補(bǔ)線的大致原則是:選擇每一場離小車較近的幾個連續(xù)點(diǎn)。取出其相應(yīng)偏差值取其平均值,然后根據(jù)偏差趨勢,補(bǔ)出其相應(yīng)缺失的線。補(bǔ)線代碼如下:voidMidline(void){if(Point.VFlag==0)//尋線正常{for(temp_line=(line-1);temp_line>=0;temp_line--){if(Point.Left[temp_line]==0&&Point.Right[temp_line]!=(point-1))//左邊丟失{Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Right[temp_line]-Point.Right[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]==(point-1))//右邊丟失{Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Left[temp_line]-Point.Left[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]!=(point-1))//正常{Middle[temp_line]=(int)((Point.Left[temp_line]+Point.Right[temp_line])/2);}else//兩行全丟失保持{Middle[temp_line]=Middle[temp_line+1];}}}elseif(Point.VFlag!=1&&Point.VFlag!=0)//近處丟失后幾行尋到{if(Point.RStartLine<(line-3)&&Point.RStartLine>=22)//近處幾行丟失補(bǔ)出來{for(temp_i=(Point.RStartLine+3);temp_i<line;temp_i++){Point.Right[temp_i]=2*Point.Right[temp_i-1]-Point.Right[temp_i-2];}}if(Point.LStartLine<(line-3)&&Point.LStartLine>=22)//近處幾行丟失補(bǔ)出來{for(temp_j=(Point.LStartLine+3);temp_j<line;temp_j++){Point.Left[temp_j]=2*Point.Left[temp_j-1]-Point.Left[temp_j-2];}}if(((Point.RStartLine<22)||(Point.LStartLine<22))&&(Point.RStartLine!=0&&Point.LStartLine!=0))//左右起始行不在同一行且無法先下補(bǔ)線{if(Point.LStartLine<Point.RStartLine){for(temp_line=(Point.LStartLine+2);temp_line>=0;temp_line--){if(Point.Left[temp_line]==0&&Point.Right[temp_line]!=(point-1)){Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Right[temp_line]-Point.Right[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]==(point-1)){Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Left[temp_line]-Point.Left[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]!=(point-1)){Middle[temp_line]=(int)((Point.Left[temp_line]+Point.Right[temp_line])/2);}else{Middle[temp_line]=Middle[temp_line+1];}}for(temp_line=(line-1);temp_line>(Point.LStartLine+2);temp_line--)//近處沒有線的直接補(bǔ)出來{Middle[temp_line]=Middle[Point.LStartLine+2];}}else//左右起始行不在同一行且無法先下補(bǔ)線{for(temp_line=(Point.RStartLine+2);temp_line>=0;temp_line--){if(Point.Left[temp_line]==0&&Point.Right[temp_line]!=(point-1)){Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Right[temp_line]-Point.Right[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]==(point-1)){Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Left[temp_line]-Point.Left[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]!=(point-1)){Middle[temp_line]=(int)((Point.Left[temp_line]+Point.Right[temp_line])/2);}else{Middle[temp_line]=Middle[temp_line+1];}}for(temp_line=(line-1);temp_line>(Point.RStartLine+2);temp_line--)//近處沒有線的直接補(bǔ)出來{Middle[temp_line]=Middle[Point.RStartLine+2];}}}elseif((Point.RStartLine==0)&&(Point.LStartLine>=22))//只有一邊的線完整{Middle[line-1]=Point.Left[line-1]+50;for(temp_line=(line-2);temp_line>=0;temp_line--){if(Point.Left[temp_line]==0)Middle[temp_line]=Middle[temp_line+1];elseMiddle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Left[temp_line]-Point.Left[temp_line+1]))));}}elseif((Point.LStartLine==0)&&(Point.RStartLine>=22))//只有一邊的線完整{Middle[line-1]=Point.Right[line-1]-50;for(temp_line=(line-2);temp_line>=0;temp_line--){if(Point.Right[temp_line]==(point-1))Middle[temp_line]=Middle[temp_line+1];elseMiddle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Right[temp_line]-Point.Right[temp_line+1]))));}}else//通過近處幾行的補(bǔ)線圖像完整{if(Point.LStartLine<=Point.RStartLine){for(temp_line=(line-1);temp_line>=Point.LStartLine;temp_line--)//補(bǔ)出來的線可能會有0或是point-1{Middle[temp_line]=(Point.Left[temp_line]+Point.Right[temp_line])/2;}for(temp_line=(Point.LStartLine-1);temp_line>=0;temp_line--){if(Point.Left[temp_line]==0&&Point.Right[temp_line]!=(point-1))//左邊丟失{Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Right[temp_line]-Point.Right[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]==(point-1))//右邊丟失{Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Left[temp_line]-Point.Left[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]!=(point-1))//正常{Middle[temp_line]=(Point.Left[temp_line]+Point.Right[temp_line])/2;}else//全丟失保持{Middle[temp_line]=Middle[temp_line+1];}}}else{for(temp_line=(line-1);temp_line>=Point.RStartLine;temp_line--)//補(bǔ)出來的線可能會有0或是point-1{Middle[temp_line]=(int)((Point.Left[temp_line]+Point.Right[temp_line])/2);}for(temp_line=(Point.RStartLine-1);temp_line>=0;temp_line--){if(Point.Left[temp_line]==0&&Point.Right[temp_line]!=(point-1))//左邊丟失{Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Right[temp_line]-Point.Right[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]==(point-1))//右邊丟失{Middle[temp_line]=(int)((Middle[temp_line+1]+(Rate*(Point.Left[temp_line]-Point.Left[temp_line+1]))));}elseif(Point.Left[temp_line]!=0&&Point.Right[temp_line]!=(point-1))//正常{Middle[temp_line]=(Point.Left[temp_line]+Point.Right[temp_line])/2;}else//全丟失保持{Middle[temp_line]=Middle[temp_line+1];}}}}}if(Point.VFlag==1)//未找到何時的中線時保持上場{Keep();}//qulv=Qulv();//Start_Line();}4.5小結(jié)本章簡單概述了程序的總體設(shè)計方案,主要針對二值化,去噪,以及補(bǔ)線程序設(shè)計做了比較細(xì)致的設(shè)計說明,經(jīng)測試驗證該軟件設(shè)計基本滿足要求。第5章結(jié)果分析5.1采集到的灰度值去噪前的MATLAB仿真5.1.1去噪前MATLAB函數(shù)和仿真結(jié)果MATLAB仿真函數(shù)如下:%LastNumSum:上次數(shù)據(jù)個數(shù)%TXTName:文件名%CurrentTXTNum:當(dāng)前文件名前綴%使用說明:只用更改更改TxTNum使之和實際待讀文件數(shù)目一直clear%清除變量TxTNum=1;%文件個數(shù)NumSum=0;%記錄數(shù)據(jù)總個數(shù)TXTSuffix='.txt';%文件后綴Auxi=48;%'0'的ASCIIholdon;%保持當(dāng)前圖畫fortemp=49:(TxTNum+48)if(temp<58)CurrentTXTNum=temp;TXTName=strcat(CurrentTXTNum,TXTSuffix);%合并字符串else%超過十個文件CurrentTXTNum=48+mod((temp-48),10);%mod對10取余TXTName=strcat(49,CurrentTXTNum,TXTSuffix);endin=fopen(TXTName);%打開第TXTName個文件[RevDate,DataNum]=fscanf(in,'%d');%讀取數(shù)據(jù)fclose(in);%關(guān)閉文件LastNumSum=NumSum+1;%計算個數(shù)NumSum=NumSum+DataNum;DataIndex=1:DataNum;x=LastNumSum:NumSum;y=RevDate(DataIndex);plot(x,y,'.');endaxis([040000255]);在直道處取一場數(shù)據(jù)30行每一行120個點(diǎn)二值化后進(jìn)行MATLAB仿真仿真結(jié)果如圖5.1所示圖5-1噪聲處理前仿真結(jié)果5.1.2去噪后MATLAB仿真結(jié)果加入去噪算法后相應(yīng)的MATLAB仿真結(jié)果如圖5-2所示圖5-2噪聲處理后仿真結(jié)果5.2邊界扣取5.2.1邊界扣取函數(shù)clcclearcloseall;%%Image=imread('image1.jpg');%figure,imshow(Image);%ImageGray=rgb2gray(Image);%figure,imshow(ImageGray);NumSum=0;%記錄數(shù)據(jù)總個數(shù)TXTSuffix='.txt';%文件后綴Auxi=48;%'0'的ASCIICurrentTXTNum=49;TXTName=strcat(CurrentTXTNum,TXTSuffix);%合并字符串in=fopen(TXTName);%打開第TXTName個文件[RevDate,DataNum]=fscanf(in,'%d');%讀取數(shù)據(jù)fclose(in);%關(guān)閉文件CRevDate=reshape(RevDate,130,30);CRevDate=CRevDate';U8date=uint8(CRevDate);figure,imshow(U8date);BW=edge(U8date,'sobel');figure,imshow(BW);[BW,thresh]=edge(U8date,'sobel');5.2.2邊界扣取仿真結(jié)果仿真結(jié)果如圖5-3和5-4所示:圖5-3扣取出的直道灰度圖像圖5-4扣取出的直道二值化圖像5.3補(bǔ)線后效果根據(jù)扣取的結(jié)果分析得實驗的結(jié)果基本滿足要求。根據(jù)補(bǔ)線的原則進(jìn)行補(bǔ)線,然后根據(jù)兩邊黑線,得出小車需要沿著中間軌跡前進(jìn)。下面是補(bǔ)線后的數(shù)據(jù)在直道時和在彎道時一場數(shù)據(jù)的情況。圖5-5直道補(bǔ)線一場的邊界圖圖5-6彎道補(bǔ)線一場的邊界圖分析如下:根據(jù)小車前進(jìn)的趨勢,可以大致補(bǔ)出出現(xiàn)盲區(qū)的黑線區(qū)域,通過串口采集回來的數(shù)據(jù)(如圖5-5和5-6)分析后知效果基本理想,滿足設(shè)計要求。5.4小結(jié)通過實驗和小車的實際運(yùn)行結(jié)果分析,無論是圖像的二值化、去噪還
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 迪慶云南迪慶維西縣康普鄉(xiāng)政府村級編外工作人員招聘筆試歷年參考題庫附帶答案詳解
- 池州安徽池州市人民醫(yī)院勞務(wù)派遣辦公室文員招聘筆試歷年參考題庫附帶答案詳解
- 生態(tài)農(nóng)業(yè)下的綠色食品生產(chǎn)方法探討
- 電子商務(wù)物流配送的智能分揀技術(shù)應(yīng)用
- 現(xiàn)代電車公司運(yùn)維團(tuán)隊的培訓(xùn)與發(fā)展
- 保健品市場營銷策略考核試卷
- 電商平臺運(yùn)營策略品牌塑造與推廣
- 現(xiàn)代農(nóng)業(yè)裝備綠色設(shè)計的發(fā)展方向與案例
- 母嬰產(chǎn)品市場趨勢與年輕父母消費(fèi)決策因素探討
- 蓋房占地協(xié)議書(2篇)
- 2025江蘇鹽城市交通投資建設(shè)控股集團(tuán)限公司招聘19人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024托管班二人合伙的協(xié)議書
- 《輸電線路金具識別》課件
- 基于PLC的豬場智能液態(tài)飼喂系統(tǒng)的設(shè)計與研究
- 企業(yè)內(nèi)部管理流程優(yōu)化方案
- 2023-2024學(xué)年浙江省金華市武義縣七年級(上)期末英語試卷
- 任務(wù)型閱讀 -2024年浙江中考英語試題專項復(fù)習(xí)(解析版)
- DB3209T 1171-2019 響水西蘭花規(guī)范
- 世界職業(yè)院校技能大賽中職組“嬰幼兒保育組”賽項考試題及答案
- 教育網(wǎng)絡(luò)設(shè)施搭建:機(jī)房施工合同
- 江蘇揚(yáng)州市2025屆高一物理第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
評論
0/150
提交評論