新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于S12單片機的循跡小車視覺系統(tǒng)設(shè)計與優(yōu)化

基于S12單片機的循跡小車視覺系統(tǒng)設(shè)計與優(yōu)化

作者: 時間:2009-03-11 來源:網(wǎng)絡(luò) 收藏

全國大學(xué)生智能汽車競賽已經(jīng)在國內(nèi)順利舉行兩年。隨著智能車速度的提高,越來越多的參賽隊開始采用攝像頭作為道路辨識的主要傳感器,而如何使用進(jìn)行數(shù)字圖像信號采集,并識別賽道路徑是該重點。目前與處理技術(shù)已經(jīng)得到了廣泛的應(yīng)用,但多數(shù)圖像的控制都采用了DSP等高速處理器,并不適合智能車競賽所規(guī)定使用的平臺。本文利用CMOS圖像傳感器的可編程特性,了適用于中低速的數(shù)字處理,用MC9DG128單片機進(jìn)行實時和控制。該系統(tǒng)結(jié)構(gòu)簡潔、成本低廉、通用性強,可方便地移植到各種類型的處理器。

本文引用地址:http://m.butianyuan.cn/article/173873.htm

1 主要芯片

MC9DG128是Freescale公司出品的16位單片機,其采用增強型16位HC CPU,內(nèi)部總線時鐘最高可達(dá)25MHz;片內(nèi)資源包括8KB RAM、128KB Flash、2KB EEPROM、8路10位A/D轉(zhuǎn)換器、SCI、IIC、SPI串行通訊模塊、PWM模塊以及多路CAN總線模塊等。同時它支持Freescale特有的背景調(diào)試模式(BDM),可以進(jìn)行在系統(tǒng)調(diào)試,使開發(fā)效率大大提高。

OV7620[1]是美國OmniVision公司出品的彩色/黑白CMOS圖像傳感器。這是一種自帶圖像敏感陣列和A/D轉(zhuǎn)換元件、能直接提供8/16位CCIR601、CCIR656等格式視頻數(shù)字信號的彩色/黑白圖像傳感器,圖像輸出最高速度可達(dá)60S/s,最大圖像分辨率為644×492,5V供電;它具有自動增益、自動曝光、自動白平衡、邊緣增強、伽瑪校正等控制功能;可以通過I 2 C總線進(jìn)行設(shè)置;同時OV7620具有圖像開窗輸出的功能,即允許用戶可根據(jù)實際使用需要設(shè)置其內(nèi)部寄存器,使其只輸出完整圖像中的任意一矩形區(qū)域內(nèi)的信號,其范圍從4×2到644×492。這種功能從硬件上屏蔽了圖像中不需要的部分,只保留用戶需要的部分圖像,大大減少了圖像的數(shù)據(jù)量,提高了系統(tǒng)的效率。

存儲器沒有地址線,按照先入先出的順序進(jìn)行順序讀寫,因此是接口電路十分簡潔,讀寫速度快,允許讀寫動作同時進(jìn)行。IDT7205是IDT公司生產(chǎn)的高速、低功耗異步,容量為8 192×9bit,存取時間最小只有12ns,有空、半滿、滿三個標(biāo)志位,最大功耗660mW,工作電壓+5V;D0~D8為數(shù)據(jù)輸入總線,Q0~Q8為數(shù)據(jù)輸出總線,為讀寫控制端,分別在信號下降沿鎖存、輸出數(shù)據(jù),是FIFO寫滿標(biāo)志位,此外,IDT公司還提供256B~64KB不同容量的FIFO可供選擇。

2 系統(tǒng)硬件結(jié)構(gòu)

由于所使用的MC9S12DG128單片機的頻率較低,最高只有25MHz,而攝像頭的圖像輸出速率一般至少有13.5MHz(以30萬像素為例),每個像素的信號保持時間不到75ns,若使用單片機直接采集圖像傳感器輸出的數(shù)字信號,則會受到其時鐘頻率的影響,難以將信號完整地采集進(jìn)系統(tǒng)。

因此本系統(tǒng)使用FIFO芯片IDT7205作為圖像傳感器與單片機之間的數(shù)據(jù)緩存,通過設(shè)計一定的邏輯電路,使圖像傳感器自動地將圖像數(shù)據(jù)寫入FIFO,同時MCU開始從FIFO讀出數(shù)據(jù)。圖像采集系統(tǒng)結(jié)構(gòu)框圖如圖1所示。

2.1 攝像頭同步信號分析

OV7620的同步信號時序如下:垂直同步信號VSYN為兩個正脈沖之間掃描一幀的定時,即完整的一幀圖像在兩個正脈沖之間;水平同步信號HREF掃描該幀圖像中各行像素的定時,即高電平時為掃描一行像素的有效時間;像素同步信號PCLK為讀取有效像素值提供同步信號,高電平時輸出有效圖像數(shù)據(jù),若當(dāng)前圖像窗口大小為320×240,則在VSYN兩個正脈沖之間有240個HREF的正脈沖,即240行;在每個HREF正脈沖期間有320個PCLK正脈沖,即每行320個像素。這就是VSYN、HREF、PCLK三個同步信號之間的關(guān)系[2]。OV7620同步信號時序如圖2所示。

2.2 數(shù)字圖像信號的采集

為了將圖像傳感器輸出的圖像信號自動地存入FIFO,只需要通過一個“與非門”就能產(chǎn)生符合FIFO要求的寫時鐘脈沖,如圖3所示。將幀同步信號VSYN引入單片機輸入口,復(fù)位后V_EN置0,“與非門”關(guān)閉,輸出1。當(dāng)單片機檢測到VSYN上跳后,V_EN輸出1,打開“與非門”。當(dāng)攝像頭輸出有效像素時,HREF為高,PCLK高電平時像素數(shù)據(jù)有效,三者“與非”后輸出為0,使信號產(chǎn)生一個下跳,觸發(fā)FIFO鎖存OV7620輸出的圖像數(shù)據(jù)。

經(jīng)過圖3電路處理后的系統(tǒng)時序如圖4所示。寫信號已符合腳的時序要求,經(jīng)實際使用,功能正常。

當(dāng)一幀圖像寫入FIFO后,單片機根據(jù)時序要求在FIFO的腳上產(chǎn)生相應(yīng)脈沖,即可從FIFO中讀出圖像數(shù)據(jù),按照一定格式存入內(nèi)存,進(jìn)行后續(xù)處理。圖5為采集得到的黑線圖像。

3 單片機圖像采集系統(tǒng)的

雖然單片機通過一定的硬件結(jié)構(gòu)等可以實現(xiàn)圖像信號的采集,但是由于內(nèi)部結(jié)構(gòu)的原因,其進(jìn)行大數(shù)據(jù)量運算的能力有限,進(jìn)行圖像處理速度較慢。通過以下方法進(jìn)行,可以使單片機進(jìn)行一些簡單的圖像處理和實時控制任務(wù)。

3.1 減小圖像數(shù)據(jù)量

CMOS圖像傳感器具有圖像開窗輸出(Windowing)的功能,通過設(shè)置其內(nèi)部相應(yīng)寄存器,可以使CMOS只輸出特定區(qū)域內(nèi)的圖像數(shù)據(jù)。如設(shè)置CMOS使其只輸出畫面中用戶所關(guān)心部分的圖像信號,圖像數(shù)據(jù)量則可大大減少,同時也減輕了后期進(jìn)行圖像處理的難度,提高了系統(tǒng)的性能。

在要求圖像精度不高的情況下,為了進(jìn)一步降低圖像數(shù)據(jù)量、減輕單片機負(fù)擔(dān),可以采取隔行、隔像素采集的方法,即在PCLK和HREF信號上加入計數(shù)電路,每隔N行和M個像素采集一次,這樣在保證圖像可用的情況下數(shù)據(jù)量可減小為原來的1/(N×M)。

3.2 FIFO異步讀寫圖像數(shù)據(jù)

IDT7205具有兩套獨立的讀寫指針,可以同時進(jìn)行讀和寫操作而互不干擾。當(dāng)圖像輸出速度比單片機讀入速度快許多時,為了提高采集效率,可以讓圖像讀寫同時進(jìn)行,即當(dāng)新的一幀圖像開始寫入FIFO后,單片機就開始讀取圖像數(shù)據(jù),讀寫同時進(jìn)行,以減少單片機等待數(shù)據(jù)寫入FIFO完成的空閑時間。

3.3 程序算法

單片機并不適合完成復(fù)雜的圖像處理算法,如卷積等運算。因此在編寫圖像處理算法時應(yīng)根據(jù)單片機特性,盡量避免使用浮點運算,要簡化算式,或者可以犧牲一定精度來換取時間。以圖像分割的大津算法(OTSU)為例,該算法遍歷0~255個灰度值,以找出一個最小的灰度u,使得到的g最小。

OTSU原始算式:g=Wa×(u0-u)2+Wb×(u1-u)2

OTSU改進(jìn)算式:g=Wa×Wb×(u0-u1)2

使用原始算式和改進(jìn)的等效算式進(jìn)行計算時,每次迭代中改進(jìn)算式比原始算式少進(jìn)行2個乘法運算,其速度約提高1/3。

本文提出的FIFO和單片機的圖像處理系統(tǒng),結(jié)構(gòu)十分簡潔,成本低廉,可移植性強。雖然單片機并不十分適合于大數(shù)據(jù)量的圖像處理任務(wù),但通過優(yōu)化和精度與性能的折中,可以完成一些簡單的基于圖像的處理任務(wù),并具有一定的實時性。本文介紹的采集系統(tǒng)被用在基于CMOS的智能循跡上,使用一片MC9S12DG128單片機運行于24MHz的總線時鐘并配合IDT7205、OV7620圖像傳感器實現(xiàn)了圖像采集、處理和控制,取得了良好的效果。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉