基于S3C2410的輔助倒車數字圖象系統設計
1 、引言
本文引用地址:http://www.104case.com/article/152634.htm據統計,由于車后盲區所造成的交通事故在中國約占30%,美國20%。前兩代倒車輔助產品,一種是倒車喇叭,一種是倒車雷達。前者只能提醒路人自行躲閃,而司機卻一無所知,固定的障礙物更是無法探測,起到的作用微乎其微,后者雖能把固定的障礙物通過報警的形式告知司機,但司機還是無法判斷障礙物的確切位置,更不能探測地坑或低矮障礙物。
目前,國內外的研究趨勢是在倒車雷達的基礎上采用數字圖像處理技術,利用強大的嵌入式處理器,開發用于檢測車后物距和監視車后圖像的優點相結合的車載可視倒車裝置。
因此本文提出一種基于S3C2410的輔助倒車系統設計,該系統不但使駕駛員可以在車內觀察到汽車車尾的真實場景,而且可以通過系統所帶的測距報警模塊可以實時測距,并在車與障礙物過近時,對駕駛員實施語音報警,從而克服了后試鏡小,視野窄的缺點,使倒車變得更加快速高效,增強倒車的安全性。
2、系統概述
系統以S3C2410為主控制器,主頻最高可達266MHz,選用Linux2.6.14.1操作系統,系統總體設計可以被分為三個部分:
1) 圖像數據實時顯示模塊設計;
2) 測距報警模塊設計;
3) 人機交互界面設計。
圖像數據實時顯示模塊主要是實現圖像數據實時采集并顯示在LCD顯示器上,系統通過裝在汽車尾部的攝像頭采集車后實時圖像,并將圖像顯示在終端 LCD上。測距報警模塊以超聲波測距電路來進行測距,當所測距離值超過系統設定的安全距離時實施語音報警,人機交互界面模塊為系統提供了一個良好的人機交互界面,配合觸摸屏,操作便利、簡潔。其系統框架結構圖如圖1所示。
3、圖像數據實時顯示模塊實現
圖像數據實時顯示模塊采用Linux內核公開支持ov511芯片的網眼公司的v3000USB攝像頭來采集圖像,其實現分為兩部分,Linux內核中攝像頭驅動程序模塊的加載和基于Qt的可視倒車應用程序設計。
3.1 USB驅動模塊動態加載
在嵌入式Linux的內核定制和編譯時,加入對Video4Linux模塊及OV511設備的支持,通過Video4Linux模塊提供的編程接口(API)從OV511設備中獲取圖像幀。如下配置Linux內核:Multimedia device-> M >VideoforLinux; usb support->M>usb camera ov511,采用模塊方式編譯video4Linux驅動和OV511攝像頭驅動,用命令insmod加載USB及OV511設備驅動模塊。加載驅動后將 OV511攝像頭插入USB接口,攝像頭將被正確識別并生成 /dev/v4l/video設備。
3.2 可視倒車程序設計
倒車過程中駕駛員與軟件交互操作較少,因此無需設計復雜的用戶操作界面。程序的設計主要集中在攝像頭圖像的采集上。Linux下進行視頻采集是通過Video4Linux驅動提供的接口函數和相關數據結構來完成,使用Video4Linux操作USB攝像頭的流程如圖2所示。
在程序設計中,與攝像頭相關的操作和數據結構都被封裝在VideoCapture類中。其成員函數通過Video4Linux提供的接口完成對攝像頭的具體操作。VideoCapture類設計如下:
Class VideoCaPture
{ Public:
…
bool hasCamera() const
//判斷是否有可用的攝像頭
Void getCameralmage(Qlmage img),
//獲取攝像頭的圖像數據
QSize captureSize()const;//返回攝像使用的分辨率
Void setCaptureSize(QSizesize);//設置攝像使用的分辨率
int minimumFramePeriod() const;
Private:
…
struct video_mbuf mbuf;//進行內存映射的幀信息
…
void setupCamera(QSize size);//攝像頭初始化及參數設置函數
void shut down();//關閉攝像頭
};
VideoCapture類中的void setupCamera(QSize size)成員函數來初始化USB攝像頭設備,根據系統LCD顯示器的特點,主要參數設置為:圖像色彩模式設置為 VIDEO_PALETTE_RGB565 格式;圖像分辨率設置為640*480;圖像位深設置為16位。每采集一幀數據后調用ioctl(fd,VIDIOCSYNC,frame)函數等待采集結束,然后根據需要繼續采集下一幀圖像或關閉攝像頭。
評論