陳向春,侯智斌,張峰
(解放軍陸軍軍官學院,合肥 230031)
在單片機應用系統中,由于圖像采集速度、程序存儲器和數據存儲器的尋址空間的限制,要完整存儲30fps、640×480像素大小的一幅圖像是相當困難的[1]。本文運用較高性能的16位飛思卡爾單片機在超高頻的情況下直接采集圖像,也只能采集到每行320個像素,丟失圖像,無法獲得一幅完整的圖像。本文通過在圖像采集過程中增加FIFO芯片AL422B較好地解決了這一問題,相對于采用昂貴的DSP而言,降低了圖像采集系統的成本。
野外作業時,需要在運動中知道前方標桿和觀察點之間的距離。本文將標桿制成等間距紅外點光源標桿,滿足了基于單幀靜態圖像的小孔成像原理測距模型要求,減少了圖像處理量,提高了測量的實時性、全天候性。H為各點光源標桿的實際距離;n為點光源個數,它可以通過圖像處理獲得;f為攝像頭焦距;標尺實際像素物理距離h由攝像頭標定取得。遠距離測距原理示意圖如圖1所示,整條點光源標桿都在攝像頭視野范圍內。近距離測距原理示意圖如圖2所示,點光源標桿只有部分在攝像頭范圍內。通過圖1,可求出前方標桿與觀察點的距離D。攝像機的成像幾何關系也可用小孔成像原理來近似表示:


圖1 遠距離測距原理示意圖

圖2 近距離測距原理示意圖
根據單目視覺測距的要求,需要通過一黑白攝像頭實時采集前車的點光源標桿,通過標尺上點光源所在的像素距離推算出前車距離。為了能完整地讀取圖像,本文增加了FIFO芯片,圖像采集原理示意圖如圖3所示。由單片機監測攝像頭的行/場信號,控制FIFO讀取相應的圖像;讀完所有行后,關閉FIFO讀取圖像功能,開始由單片機從FIFO中讀取圖像數據,并進行相應的圖像處理,根據圖像處理的復雜程度,決定圖像處理和圖像采集的時間比。由于FIFO是先入先出,其讀取數據時單片機只需通過中斷使能行/場信號,絕大部分時間單片機可以用來進行圖像處理。本文采取的是采集一幀圖像后,單片機利用兩幀圖像的空閑時間和下一幀FIFO采集時間,共約3幀時間進行圖像處理和控制,其結果是圖像由原來的30fps,變成10fps。盡管幀率慢了,但經過分析得知,在100km/h情況下,滯后距離2.8m,可以滿足要求。

圖3 圖像采集原理示意圖
OV7670是OmniVision公司推出的Camerachiptm圖像傳感器,體積小,工作電壓低。VGA圖像最高達到30 fps。其主要特性為[3]:
◆感光陣列(共有656×488個像素,在YUV的模式中有效像素為640×480個);
◆高靈敏度適合低照度應用,對紅外光線敏感;
◆標準的SCCB接口,兼容I2C總線接口;
◆RawRGB、RGB(GRB4:2:2,RGB565/555/444)、YUV(4:2:2)和 YCbCr(4:2:2)輸出格式;
◆支持VGA、CIF和從CIF到40×30的各種尺寸。
本文采用飛思卡爾16位單片機MC9S12DG128作為主控芯片,該芯片是Freescale公司推出的S12系列微控制器中的一款增強型、汽車級的16位微控制器,片內總線時鐘頻率最高可達25MHz,集成了8KB的RAM、128 KB的Flash、2KB的EEPROM,集成度高,資源也相當豐富[2]。
AL422B是AverLogic公司推出的一個存儲容量為393 216字節×8位的FIFO存儲芯片。其所有的尋址、刷新等操作都由集成在芯片內部的控制系統完成,AL422B內部功能結構框圖如圖4所示。

圖4 AL422B內部功能結構框圖
AL422B主要特點是[4]:
◆AL422B的存儲體為3Mb(393 216字節×8位);
◆可以存儲VGA、CCIR、NTSC、PAL和HDTV等制式一幀圖形的信息;
◆獨立的讀寫操作,可以接受不同的I/O速率;
◆高速異步串行存取;
◆讀寫周期為20ns;
◆存取時間為15ns;
◆內部DRAM自刷新。
要想在單片機應用系統中實現數字圖像的靜態存儲,必須解決存儲速度和存儲容量兩大問題。對于速度問題,需要對OV7670的數據輸出時序進行分析,使其滿足要求。VGA時序圖如圖5所示。其中PCLK為像素時鐘,頻率與主頻一致,即27MHz,上升沿時數據輸出有效;VSYNC為場信號;
HREF為水平參考信號,當像素在窗口有效時為高電平,否則為低電平;HSYNC為行信號;D[7:0]為8位數據輸出。

圖5 VGA時序圖
AL422B寫操作時序圖如圖6所示[4],WCK 為AL422B的寫入時鐘,周期最大為1000ns,最小為20ns(對應主頻50MHz);其上升沿時數據寫入,隨著該時鐘輸入其內部,寫指針自動增加。可見,AL422B的速度滿足設計要求。具體操作時,由單片機的I/O口控制AL422B的寫使能/WE,使其為低電平,使能寫功能,數據端DI7~0在WCK上升沿時將數據寫入。寫完一副圖像后,由單片機的I/O口控制寫復位/WRST,使其為低電平,使能復位,數據寫入地址指針將回到0地址位。

圖6 AL422B寫操作時序圖
AL422B讀操作時序圖如圖7所示。RCK為AL422B的讀出時鐘,周期最大為1000ns,最小為20ns,當/RE和/OE有效時,在其上升沿數據有效,隨著該時鐘輸入,其內部的讀指針自動增加。當單片機的主頻為25MHz時,還不能直接給OV7670的系統時鐘XCLK提供時鐘,我們采用外部晶振提供27MHz的同頻信號給OV7670。

圖7 AL422B讀操作時序圖
圖像采集電路原理圖如圖8所示。OV7670的像素時鐘PCLK直接和AL422B的數據讀入時鐘WCK相連,具體操作時,由單片機的I/O口控制AL422B的讀使能/RE和輸出數據使能/OE,使它們為低電平;使能數據讀出功能,數據端DO7~0在RCK上升沿時將數據輸出給單片機。讀完一副圖像后,由單片機的I/O口控制寫復位/RRST,使其為低電平,使能復位,數據讀出地址指針將回到0地址位。

圖8 圖像采集電路原理圖
程序設計流程如圖9所示。當單片機檢測到場信號更新后,開始監測行信號到達,之后使能/WE,開始順序讀取圖像。讀完一幀圖像后關閉/WE,單片機使能/RE,開始讀取首行圖像中的640個像素。本文采取邊讀邊處理的方式,較好地解決了一幀圖像多達3MB的問題。點光源標桿發出的紅外光線在圖像上呈現出若干個光暈區域,找到光暈中心就可以找到點光源的圖像坐標,為此在讀取的同時將各像素點與閾值進行比較,小于閾值的為疑似點光源并記錄對應坐標;當讀取完一行像素時,得到的將是一組疑似點光源坐標的像素位置,將其進行統計求平均,得出點光源在該行的坐標,最多12個字節(正面標桿6個,某側標桿6個),遠遠小于整行640個字節。

圖9 程序設計流程圖
當讀取完一幀像素時,得到最多12×480個字節,單片機64KB的容量完全可以存儲,最后將行求平均,得出最終的點光源坐標。經驗證,所需總時間在2.15幀圖像內完成。
文中討論了基于FIFO芯片和單片機實現的點光源圖像采集系統,描述了單目點光源測距原理、圖像采集系統硬件和軟件設計方法,著重介紹了FIFO芯片在圖像采集中的橋梁作用。通過系統樣機檢驗,能夠滿足要求,達到了預期效果。
[1]邵貝貝.單片機嵌入式應用的在線開發方法[M].北京:清華大學出版社,2009.
[2]Freescale Semiconductor.MC9S12DG128Device User Guide[EB/OL].[2011-11].http://www.freescale.com.cn.
[3]OmniVision Technologies.OV7670/OV7171CMOS VGA 圖像傳感器[EB/OL].[2011-11].http://www.ovt.com/technologies/.
[4]Aver Logic.AL422DataSheet[EB/OL].[2011-11].http://www.averlogic.com/.