引言
在單片機應用系統中,由于圖像采集速度、程序存儲器和數據存儲器的尋址空間的限制,要完整存儲30 fps、640×480像素大小的一幅圖像是相當困難的。本文運用較高性能的16位飛思卡爾單片機在超高頻的情況下直接采集圖像,也只能采集到每行320個像素,丟失圖像,無法獲得一幅完整的圖像。本文通過在圖像采集過程中增加FIFO芯片AL422B較好地解決了這一問題,相對于采用昂貴的DSP而言,降低了圖像采集系統的成本。
1 單目點光源測距原理
野外作業時,需要在運動中知道前方標桿和觀察點之間的距離。本文將標桿制成等間距紅外點光源標桿,滿足了基于單幀靜態圖像的小孔成像原理測距模型要求,減少了圖像處理量,提高了測量的實時性、全天候性。H為各點光源標桿的實際距離;n為點光源個數,它可以通過圖像處理獲得;f為攝像頭焦距;標尺實際像素物理距離h由攝像頭標定取得。遠距離測距原理示意圖如圖1所示,整條點光源標桿都在攝像頭視野范圍內。近距離測距原理示意圖如圖2所示,點光源標桿只有部分在攝像頭范圍內。通過圖1,可求出前方標桿與觀察點的距離D.攝像機的成像幾何關系也可用小孔成像原理來近似表示:
2 圖像采集系統硬件設計
根據單目視覺測距的要求,需要通過一黑白攝像頭實時采集前車的點光源標桿,通過標尺上點光源所在的像素距離推算出前車距離。為了能完整地讀取圖像,本文增加了FIFO芯片,圖像采集原理示意圖如圖3所示。由單片機監測攝像頭的行/場信號,控制FIFO讀取相應的圖像;讀完所有行后,關閉FIFO讀取圖像功能,開始由單片機從FIFO中讀取圖像數據,并進行相應的圖像處理,根據圖像處理的復雜程度,決定圖像處理和圖像采集的時間比。由于FIFO是先入先出,其讀取數據時單片機只需通過中斷使能行/場信號,絕大部分時間單片機可以用來進行圖像處理。本文采取的是采集一幀圖像后,單片機利用兩幀圖像的空閑時間和下一幀FIFO采集時間,共約3幀時間進行圖像處理和控制,其結果是圖像由原來的30 fps,變成10fps.盡管幀率慢了,但經過分析得知,在100 km/h情況下,滯后距離2.8 m,可以滿足要求。
2.1 飛思卡爾16位單片機MC9S12DG128
本文采用飛思卡爾1 6位單片機MC9S12DG128作為主控芯片,該芯片是Freescale公司推出的S12系列微控制器中的一款增強型、汽車級的16位微控制器,片內總線時鐘頻率最高可達25 MHz,集成了8 KB的RAM、128KB的Flash、2 KB的EEPROM,集成度高,資源也相當豐富。
2.2 攝像頭芯片OV7670
OV7670是OmniVision公司推出的Camerachiptm圖像傳感器,體積小,工作電壓低。VGA圖像最高達到30fps.其主要特性為:
◆感光陣列(共有656×488個像素,在YUV的模式中有效像素為640×480個);
◆高靈敏度適合低照度應用,對紅外光線敏感;
◆RawRGB、RGB(GRB4:2:2,RGB565/555/444)、YUV(4:2:2)和YCbCr(4:2:2)輸出格式;
◆支持VGA、CIF和從CIF到40×30的各種尺寸。
2.3 FIFO芯片AL422B
AL422B是AverLogic公司推出的一個存儲容量為393 216字節×8位的FIFO存儲芯片。其所有的尋址、刷新等操作都由集成在芯片內部的控制系統完成,AL422B內部功能結構框圖如圖4所示。
AL422B主要特點是:
◆AL422B的存儲體為3 Mb(393 21 6字節×8位);
◆可以存儲VGA、CCIR、NTSC、PAL和HDTV等制式一幀圖形的信息;
◆獨立的讀寫操作,可以接受不同的I/O速率;
◆高速異步串行存取;
◆讀寫周期為20 ns;
◆存取時間為15 ns;
◆內部DRAM自刷新。
3 圖像采集系統程序設計
3.1 系統實現
要想在單片機應用系統中實現數字圖像的靜態存儲,必須解決存儲速度和存儲容量兩大問題。對于速度問題,需要對OV7670的數據輸出時序進行分析,使其滿足要求。VGA時序圖如圖5所示。其中PCLK為像素時鐘,頻率與主頻一致,即27 MHz,上升沿時數據輸出有效;VSYNC為場信號;
HREF為水平參考信號,當像素在窗口有效時為高電平,否則為低電平;HSYNC為行信號;D[7:0]為8位數據輸出。
AL422B寫操作時序圖如圖6所示,WCK為AL422B的寫入時鐘,周期最大為1000 ns,最小為20 ns(對應主頻50 MHz);其上升沿時數據寫入,隨著該時鐘輸入其內部,寫指針自動增加。可見,AL422B的速度滿足設計要求。具體操作時,由單片機的I/O口控制AL422B的寫使能/WE,使其為低電平,使能寫功能,數據端DI7~0在WCK上升沿時將數據寫入。寫完一副圖像后,由單片機的I/O口控制寫復位/WRST,使其為低電平,使能復位,數據寫入地址指針將回到0地址位。
AL422B讀操作時序圖如圖7所示。RCK為AL422B的讀出時鐘,周期最大為1000 ns,最小為20 ns,當/RE和/OE有效時,在其上升沿數據有效,隨著該時鐘輸入,其內部的讀指針自動增加。當單片機的主頻為25 MHz時,還不能直接給OV7670的系統時鐘XCLK提供時鐘,我們采用外部晶振提供27 MHz的同頻信號給OV7670。
圖像采集電路原理圖如圖8所示。OV7670的像素時鐘PCLK直接和AL422B的數據讀入時鐘WCK相連,具體操作時,由單片機的I/O口控制AL 422B的讀使能/RE和輸出數據使能/OE,使它們為低電平;使能數據讀出功能,數據端DO7~0在RCK上升沿時將數據輸出給單片機。讀完一副圖像后,由單片機的I/O口控制寫復位/RRST,使其為低電平,使能復位,數據讀出地址指針將回到0地址位。
3.2 程序設計
程序設計流程如圖9所示。當單片機檢測到場信號更新后,開始監測行信號到達,之后使能/WE,開始順序讀取圖像。讀完一幀圖像后關閉/WE,單片機使能/RE,開始讀取首行圖像中的640個像素。本文采取邊讀邊處理的方式,較好地解決了一幀圖像多達3 MB的問題。點光源標桿發出的紅外光線在圖像上呈現出若干個光暈區域,找到光暈中心就可以找到點光源的圖像坐標,為此在讀取的同時將各像素點與閾值進行比較,小于閾值的為疑似點光源并記錄對應坐標;當讀取完一行像素時,得到的將是一組疑似點光源坐標的像素位置,將其進行統計求平均,得出點光源在該行的坐標,最多12個字節(正面標桿6個,某側標桿6個),遠遠小于整行640個字節。
當讀取完一幀像素時,得到最多12×480個字節,單片機64 KB的容量完全可以存儲,最后將行求平均,得出最終的點光源坐標。經驗證,所需總時間在2.15幀圖像內完成。
結語
文中討論了基于FIFO芯片和單片機實現的點光源圖像采集系統,描述了單目點光源測距原理、圖像采集系統硬件和軟件設計方法,著重介紹了FIFO芯片在圖像采集中的橋梁作用。通過系統樣機檢驗,能夠滿足要求,達到了預期效果。
-
芯片
+關注
關注
454文章
50430瀏覽量
421861 -
單片機
+關注
關注
6032文章
44521瀏覽量
633086 -
圖像采集
+關注
關注
2文章
299瀏覽量
41256
發布評論請先 登錄
相關推薦
評論