系統(tǒng)概述
智能小車系統(tǒng)主要由路徑識(shí)別、速度采集、轉(zhuǎn)向控制及車速控制等功能模塊組成。路徑識(shí)別功能采用CMOS攝像頭,將其模擬量的視頻信號(hào)進(jìn)行視頻解碼后,經(jīng)過二值化處理并轉(zhuǎn)化為18×90pix的圖像數(shù)據(jù)后送入MCU進(jìn)行處理;轉(zhuǎn)向控制采用基于模糊控制算法進(jìn)行調(diào)節(jié);而車速控制采用的是經(jīng)典PID算法,通過對(duì)賽道不同形狀的判斷結(jié)果,設(shè)定不同的給定速度。該系統(tǒng)以50Hz的頻率通過不斷地采集實(shí)時(shí)路況信息和速度,實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的閉環(huán)控制,如圖1所示。
智能小車的圖像采集與存儲(chǔ)
圖像采集模塊設(shè)計(jì)
CMOS攝像頭正常供電后,便可輸出原始圖像的信號(hào)波形,它是PAL制式的模擬信號(hào),包含行同步、行消隱、場(chǎng)同步、場(chǎng)消隱等信號(hào)如圖2所示。但該形式的信號(hào)并不能被CPU直接使用,需要加入視頻解碼芯片如SAA7111,它的功能是將攝像頭輸出的模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),同時(shí)產(chǎn)生各種同步信號(hào),CPU利用此同步信號(hào)將圖像的數(shù)字信號(hào)存儲(chǔ)在一個(gè)外部FIFO芯片AL422中,這便構(gòu)成了基本的路徑檢測(cè)模塊,如圖3所示。
圖像數(shù)據(jù)存儲(chǔ)
SAA7111是飛利浦公司一款增強(qiáng)型視頻輸入處理器芯片,常應(yīng)用在嵌入式視頻應(yīng)用的高度集成的電路中。工作時(shí),模擬視頻圖像從SAA7111的4個(gè)輸入端口中的一個(gè)端口輸入,經(jīng)模擬處理后,一路通過緩沖器從模擬輸出端輸出用于監(jiān)視,另一路經(jīng)A/D后產(chǎn)生數(shù)字色度信號(hào)、亮度信號(hào),分別進(jìn)行亮度信號(hào)處理、色度信號(hào)處理。亮度信號(hào)處理的結(jié)果,一路送到色度信號(hào)處理器進(jìn)行綜合處理,產(chǎn)生Y、U、V信號(hào),經(jīng)格式化后從VPO輸出,輸出的信號(hào)格式有422YUV或CCIR-656(8位)等;另一路進(jìn)入同步分離器,經(jīng)數(shù)字PLL,產(chǎn)生相應(yīng)的行、場(chǎng)同步信號(hào)HS、VS及像素時(shí)鐘信號(hào)LLC和LLC2等信號(hào),這些信號(hào)是實(shí)現(xiàn)視頻數(shù)據(jù)采集的依據(jù)。SAA7111輸出的每幀圖像大小可設(shè)為720×286,其數(shù)據(jù)量相對(duì)于單片機(jī)的處理速度來說是比較大的,較為理想的圖像大小是18×45,壓縮后的數(shù)據(jù)量?jī)H為原始圖像的0.394%。為了使圖像的數(shù)據(jù)得到有效壓縮,可以采用將圖像的數(shù)字信號(hào)存入FIFO中,經(jīng)過一定的分頻處理后便能壓縮圖像大小,系統(tǒng)所采用的FIFO芯片是AL422B。
為了實(shí)現(xiàn)圖像數(shù)字信號(hào)的分頻處理,可以分為兩種實(shí)現(xiàn)方式,其一是軟件分頻,另一種是硬件分頻。對(duì)于軟件分頻來說,系統(tǒng)不需要額外的分頻電路,而是單片機(jī)利用解碼芯片SAA7111輸出的控制信號(hào),對(duì)讀時(shí)鐘進(jìn)行分頻后再執(zhí)行實(shí)際的讀操作,這種方式的缺點(diǎn)是分頻工作需要占用單片機(jī)資源,影響系統(tǒng)的實(shí)時(shí)性等性能;對(duì)于硬件分頻來說,需要加入專門的分頻處理電路,在不需要單片機(jī)控制的條件下實(shí)現(xiàn)圖像的壓縮,從而在根本上減少了單片機(jī)處理的數(shù)據(jù)量并縮短讀取圖像的時(shí)間。因此該系統(tǒng)采用了硬件分頻的方式。
圖像去噪與特征提取
圖像二值化
圖像二值化是數(shù)字圖像處理技術(shù)中的一項(xiàng)基本技術(shù),該系統(tǒng)中由于賽道是由黑色和白色兩種顏色組成的,并且背景顏色基本也是白色的,系統(tǒng)的任務(wù)是識(shí)別出黑色的引跑線位置,由于其圖像的干擾并不是很強(qiáng),因此可以采用二值化的技術(shù)作為系統(tǒng)的圖像預(yù)處理。經(jīng)過二值化處理將原來白色的像素點(diǎn)用0表示,而黑色像素點(diǎn)用1表示。圖像二值化技術(shù)的關(guān)鍵在于如何選取閾值通常來說,常用的方法包括有全局閾值法,局部閾值法及動(dòng)態(tài)閾值法。由于賽道現(xiàn)場(chǎng)光線是比較均勻,而且賽道周圍的底色基本上都是白色的,所以在該系統(tǒng)設(shè)計(jì)中采用全局閾值法,可達(dá)到算法簡(jiǎn)單,執(zhí)行效率高的效果。
二值化閥值選取
在對(duì)賽道環(huán)境的分析中,我們可以發(fā)現(xiàn)黑線部分的亮度是相對(duì)比較固定的,其波動(dòng)的范圍非常小,小于20(亮度值最大為255),而白色底板的亮度值變化相對(duì)較大一些,但仍能保證其與黑線的亮度值有較大的梯度。因此,可以采用直方圖統(tǒng)計(jì)法來對(duì)其閥值進(jìn)行自動(dòng)設(shè)定,具體方法如下。首先存儲(chǔ)一幅原始圖像的所有數(shù)據(jù),然后對(duì)整幅圖像的第一像素點(diǎn)進(jìn)行統(tǒng)計(jì),最終把第個(gè)亮度值所對(duì)應(yīng)的像素點(diǎn)個(gè)數(shù)統(tǒng)計(jì)出來,結(jié)果將出現(xiàn)一個(gè)雙波峰形圖,如圖4所示。這將能較直接地比較出亮度值集中的區(qū)域,以兩個(gè)波峰的中心位置所在的中點(diǎn)值作為該賽道的二值化閥值。該算法計(jì)算的精度較高,能夠找到理想的一個(gè)閥值點(diǎn),雖然它執(zhí)行的時(shí)間較長(zhǎng),但是這只是在賽車未起跑前進(jìn)行的初始化運(yùn)算,對(duì)賽車起跑后的速度完全沒有影響,因此該方案是可以采用的。
圖像去噪
在車體運(yùn)動(dòng)過程中,圖像經(jīng)過二值化后并不會(huì)出現(xiàn)太大的噪聲,只是在局部出現(xiàn)了一小部分的椒鹽噪聲,其典型圖像如圖5所示。在該系統(tǒng)設(shè)計(jì)中,圖像處理的目的是準(zhǔn)確地找到黑線的中心位置。由于圖像中噪聲的面積非常小,并且一般出現(xiàn)在離黑線較遠(yuǎn)的地方,處理的方法也比較多,可采用中心坐標(biāo)遞推法。
由于該賽道的黑線細(xì)分為每一行的坐標(biāo)后,相鄰兩行之間的中心坐標(biāo)值之差是比較小的,經(jīng)實(shí)驗(yàn)測(cè)試得其差一般不會(huì)超過5,具有很好的遞推性。因此可以利用前一行的中心坐標(biāo)往下遞推來求解,具體步驟如下。
(1)由于攝像頭近處的黑線拍攝效果較好,不僅黑線的寬度比較大,而且基本不會(huì)出現(xiàn)任何噪聲,用其作為遞推的基準(zhǔn)點(diǎn)是非常好的選擇。由于這是整幅圖像的基準(zhǔn)點(diǎn),因此對(duì)其準(zhǔn)確性要求比較高,在計(jì)算第一行的中心坐標(biāo)值時(shí)采用黑線連續(xù)記數(shù)法,即只有連續(xù)讀取到3個(gè)或以上“1”時(shí)才算有效的黑線,并記錄黑線的塊數(shù),否則將其清零,最終再查看該行黑線塊數(shù)是否為1,若不為1則改用第二行圖像數(shù)據(jù)作判斷,如此遞增直到找到唯一的黑線為止。
(2)以第一次找到的中心坐標(biāo)為基準(zhǔn),向上一行搜索分布在其左右兩側(cè)各10個(gè)點(diǎn)這個(gè)區(qū)間內(nèi)的黑線位置,然后同樣利用重心法求出在該區(qū)間內(nèi)的黑點(diǎn)中心坐標(biāo)值,并把它作為這一行的中心坐標(biāo)基準(zhǔn)點(diǎn)。
(3)按照步驟(2)逐步往上一行遞推,如果遇到全0的行則停止黑線的搜索。圖5所示的圖像經(jīng)過該算法處理后得到的圖像如圖6所示,可見此方法能夠有效地消除圖像的噪聲。