基于Linux的嵌入式視覺系統(tǒng)設(shè)計(jì)方案
內(nèi)存映射:char* memoryMap = (char*)mmap (0,memoryBuffer.size, PROT_READ PROT_WRITE,MAP_SHARED, device, 0);
圖像數(shù)據(jù): memoryMap + memory Buffer.offsets[bufferIndex]
4.2 圖像顯示程序
本系統(tǒng)采用直接將數(shù)據(jù)寫入FrameBuffer 中來顯示圖像。FrameBuffer 設(shè)備是運(yùn)行在Linux 控制臺上的一個優(yōu)秀的圖形接口,幾乎支持所有硬件,提供了統(tǒng)一的API 接口,很好地實(shí)現(xiàn)了硬件無關(guān)性。FrameBuffer的設(shè)備節(jié)點(diǎn)是/dev/fb* , 在編譯內(nèi)核時選中FrameBuffer.LCD 顯示程序流程圖如圖4 所示:
圖4 圖像顯示程序流程圖
應(yīng)用程序編寫完之后,用交叉編譯環(huán)境對這個文件進(jìn)行編譯,沒有錯誤后可生成cam 可執(zhí)行文件。然后把cam 拷貝到根目錄下的bin 文件夾,在主機(jī)windows 系統(tǒng)超級終端下輸入命令:
#ln -s /dev/v4l/video0 /dev/video0
# cam 640 480 16 video0
就可以在屏幕上看到采集的圖像了。設(shè)計(jì)的嵌入式視覺系統(tǒng)樣機(jī)如圖5 所示。
5 視覺系統(tǒng)性能測試
S3C2410 控制板的I/O 口資源有限,因此,對圖像采集的控制信號線采用普通I/O 口,而不是用中斷I/O 口與其攝像頭模塊相連,因此只能用軟件實(shí)時檢測I/O 的電平狀態(tài),決定何時采集開始,何時讀數(shù)據(jù),何時結(jié)束。為了采集到圖像數(shù)據(jù)并能分辨出來,必須能夠跟蹤控制信號的變化狀態(tài)。
由于I/O 口的電平的變化頻率遠(yuǎn)低于攝像頭控制信號的變化頻率,如果不對攝像頭模塊進(jìn)行降頻處理,這將導(dǎo)致I/O 口無法跟蹤控制信號變化,即將無法判斷幀、行、點(diǎn)何時開始與結(jié)束等狀態(tài)信息。當(dāng)攝像頭的最高頻率(點(diǎn)象素頻率最高)降到1MHZ 左右,系統(tǒng)就能跟蹤并完整的采集到圖像信息,進(jìn)一步處理之后完好的顯示出來。圖6 是示波器對幀、行、點(diǎn)信號及Y0 信號的波形圖。
圖6 信號波形圖。
從上圖可以看出,系統(tǒng)的控制信號非常完整和穩(wěn)定,沒有出現(xiàn)毛刺、變形等情況,給檢測讀取帶來了好處。Y0 的波形圖有些段是低電平,出現(xiàn)的位置不一樣,是因?yàn)閿z像頭移動時,環(huán)境光發(fā)生了變化,引起整個Y 數(shù)據(jù)變化。
表1 采集到的實(shí)驗(yàn)數(shù)據(jù)(示波器采用x10 檔)。
把示波器調(diào)整到x10 檔,在不同情況下,多次采集YSYN 信號、HREF 信號、PCLK 信號的峰-峰值、平均值、周期、頻率等數(shù)據(jù),從Y0~Y7 中選擇Y0信號進(jìn)行觀察。從數(shù)據(jù)中可以看出各信號的峰-峰值變化幅度不大,尤其是信號的頻率比較穩(wěn)定。Y0 數(shù)據(jù)信號很規(guī)整,那么其他數(shù)據(jù)信號如Y1~Y7 也是如此。
多次實(shí)驗(yàn)數(shù)據(jù)如下表1 所示。
測試硬件性能穩(wěn)定之后,在Linux 系統(tǒng)下把圖像采集、圖像顯示和保存圖像命令寫成一個腳本,放在文件系統(tǒng)etc/init.d 目錄下。重新把文件系統(tǒng)下載到開發(fā)板里,當(dāng)開機(jī)啟動后,系統(tǒng)會自動執(zhí)行圖像采集、顯示和保存。
6 結(jié)論
本文主要基于S3C2410 開發(fā)板和Linux 操作系統(tǒng)設(shè)計(jì)了嵌入式視覺系統(tǒng)。該視覺系統(tǒng)不僅可以較好地實(shí)現(xiàn)圖像采集和顯示,還可實(shí)現(xiàn)圖像存儲、網(wǎng)絡(luò)獲取圖像等功能,并且可以在該基礎(chǔ)上研究圖像處理等算法。與基于PC 組合的視覺系統(tǒng)相比,結(jié)構(gòu)簡單,體積和重量減小,功耗低,可移植性強(qiáng)、功能擴(kuò)展方便,成本顯著降低,所以對這種嵌入式視覺系統(tǒng)研究具有相當(dāng)重要的實(shí)用價值。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論