王庭良
(西安明德理工學(xué)院,陜西西安,710124)
隨著圖像傳感器的發(fā)展其分辨率、高幀率不斷提高,這就為圖像采集系統(tǒng)提出了更高的要求,圖像獲取和存儲(chǔ)的質(zhì)量和效率有待提高,現(xiàn)有圖像采集大多通過計(jì)算機(jī)圖像采集卡實(shí)現(xiàn),集成電子與無線通信技術(shù)為芯片集成度的提升提供了支撐,嵌入式處理器在無線通信領(lǐng)域應(yīng)用廣泛,推動(dòng)了圖像匹配處理技術(shù)的發(fā)展,傳統(tǒng)嵌入式系統(tǒng)顯示和處理圖像匹配的速度較慢且效率較低,已經(jīng)無法滿足對(duì)圖像匹配進(jìn)行全面實(shí)時(shí)處理的需求。對(duì)智能化的視頻圖像采集系統(tǒng)進(jìn)行設(shè)計(jì)和完善成為重要的研究?jī)?nèi)容,為此本文主要完成了基于ARM的嵌入式圖像匹配處理系統(tǒng)的設(shè)計(jì)。
本文以采集、顯示、存儲(chǔ)、匹配處理圖像時(shí)的功能需求為依據(jù),在確保同PC 機(jī)有效通信的基礎(chǔ)上,硬件核心選用 ARM 微處理,完成了圖像匹配處理系統(tǒng)的設(shè)計(jì),為滿足系統(tǒng)功能需求,以最小硬件平臺(tái)為標(biāo)準(zhǔn)完成了平臺(tái)構(gòu)建,系統(tǒng)硬件平臺(tái)架構(gòu)如圖1 所示,主要由圖像采集、顯示、存儲(chǔ)、通信及電源管理幾個(gè)主要模塊構(gòu)成,圖像通過USB 攝像頭的使用完成采集過程,系統(tǒng)存儲(chǔ)器采用了 NandFlash(系統(tǒng)存儲(chǔ)器),內(nèi)存系采用了DDR2(512M),圖像的采集及匹配處理結(jié)果由LCD 顯示屏完成實(shí)時(shí)顯示過程,用戶同系統(tǒng)間的交互通過 LCD 觸摸顯示屏(最大分辨率為800x480)即可完成,U 盤、SD 卡及NandFlash 存儲(chǔ)器皆可作為圖像匹配處理結(jié)果的存儲(chǔ)路徑,平臺(tái)和上位 PC 機(jī)通過串口、USB 及網(wǎng)線接口連接,使系統(tǒng)同PC 機(jī)間的通信過程得以有效實(shí)現(xiàn)。
圖1 硬件平臺(tái)總體架構(gòu)
本系統(tǒng)選用s5pv210 作為處理器(三星公司),其內(nèi)部總線結(jié)構(gòu)為64/32 位,可達(dá)到1GHz 的最大運(yùn)行頻率,分為一級(jí)緩存和二級(jí)緩存(分別為32/32KB、512KB)。內(nèi)嵌于s5pv210中的SGX540(圖形加速引擎)在圖像匹配處理上具備較大的優(yōu)勢(shì),通過提供硬件加速支持顯著提升了處理速率。采用彩色液晶電容屏作為L(zhǎng)CD 顯示屏實(shí)現(xiàn)了圖像采集和匹配處理結(jié)果的實(shí)時(shí)顯示。串口、USB 和網(wǎng)線接口除負(fù)責(zé)同上位 PC 機(jī)建立通信過程外還為后續(xù)系統(tǒng)的升級(jí)和維護(hù)帶來了極大的便利。COMS 作為USB 攝像頭的傳感器其最大幀數(shù)為每秒30 幀,通過USB 接口(ARM 外擴(kuò))同系統(tǒng)平臺(tái)建立連接。
本文的嵌入式軟件架構(gòu)以搭建系統(tǒng)操作環(huán)境及圖形應(yīng)用程序作為主要設(shè)計(jì)目標(biāo),統(tǒng)軟件架構(gòu)如圖2 所示,嵌入式操作系統(tǒng)的預(yù)先移植需在圖形用戶應(yīng)用程序運(yùn)行前完成,先完成了嵌入式操作系統(tǒng)環(huán)境( Linux)的搭建,主要通過在PC 機(jī)上完成交叉編譯環(huán)境的建立(使用ARM/Linux/gcc),在此基礎(chǔ)上對(duì)Bootloader、Linux 內(nèi)核進(jìn)行編譯并完成根文件系統(tǒng)的制作,再完成到目標(biāo)板上的移植過程,從而完成Linux 嵌入式系統(tǒng)在ARM 上的搭建。接下來通過使用Qt 完成ARM 的圖形應(yīng)用程序的編寫(在 PC 上),編寫人機(jī)交互界面用于設(shè)置攝像頭參數(shù)及顯示、保存和匹配處理圖像等操作,以便于用戶操作。
圖2 系統(tǒng)軟件架構(gòu)
本文采用PC 機(jī)一臺(tái)作為開發(fā)的宿主機(jī),在PC(上完成了操作系統(tǒng)及應(yīng)用程序的開發(fā),然后在目標(biāo)板上完成運(yùn)行過程,操作系統(tǒng)的編譯及程序設(shè)計(jì)均在已建立的交叉編譯環(huán)境中完成,在PC 上開發(fā)的需在目標(biāo)板上下載應(yīng)用程序完成運(yùn)行驗(yàn)證,完成 Bootloader 引導(dǎo)程序制作后啟動(dòng)Linux 系統(tǒng),運(yùn)行根文件系統(tǒng)進(jìn)而運(yùn)行整個(gè)系統(tǒng)程序。最后在目標(biāo)板上將引導(dǎo)程序、根文件系統(tǒng)及內(nèi)核映像進(jìn)行鏡像燒寫完成操作系統(tǒng)環(huán)境的搭建。
ARM 的圖形應(yīng)用程序通過Qt 的使用完成編寫過程(在PC 機(jī)上),Qt 開發(fā)的圖形應(yīng)用程序在Linux 系統(tǒng)里能夠很好的運(yùn)行,通過采用Qt 的多線程技術(shù)(表現(xiàn)為多任務(wù)、并發(fā)的工作方式)使圖像數(shù)據(jù)的實(shí)時(shí)顯示和處理過程得以有效實(shí)現(xiàn)。在一個(gè)新的線程中通過使用多線程技術(shù)安置費(fèi)時(shí)的操作避免了長(zhǎng)時(shí)間等待的問題,使應(yīng)用程序響應(yīng)速度及效率得以顯著提升。
2.2.1 圖像采集的實(shí)現(xiàn)
Linux 系統(tǒng)中圖像采集采用V4L2(Video 4 Linux2,關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng))接口實(shí)現(xiàn),是,V4L2 含有豐富的接口函數(shù),用于視頻設(shè)備的應(yīng)用編程(TV 卡、USB 攝像頭等),能夠采集圖片、視頻、音頻等信息,各外設(shè)在Linux 均被視為一種設(shè)備文件,V4L2 將包括在內(nèi)open、read、write、close函數(shù)在內(nèi)基本函數(shù)(定義在file_operations 中)提供給了USB 攝像頭,程序的結(jié)構(gòu)和符號(hào)在usr/include/Linux/Video中進(jìn)行驅(qū)動(dòng)。采用內(nèi)存映射方法,將獲取的緩存幀完成到用戶空間的映射(通過mmap()函數(shù))。應(yīng)用程序調(diào)用時(shí)遵循先進(jìn)先出的規(guī)則,交替使用兩幀圖像的緩存實(shí)時(shí)采集視頻圖像,緩存完并發(fā)送出一幀后,由第二幀覆蓋前一幀。攝像頭設(shè)備初始化:通過文件/dev/Video0 打開視頻設(shè)備USB 攝像頭,通過open 函數(shù)的調(diào)用打開攝像頭及相關(guān)應(yīng)用程序;通過調(diào)用ioctl()函數(shù)和接口命令完成攝像頭信息的查詢及參數(shù)的獲取,包括像素格式及對(duì)流操作的支持情況;通過VIDIOC_S_FMT 的使用完成對(duì)圖像采集方式及參數(shù)的設(shè)置(像素格式為YUVY);在此基礎(chǔ)上通過攝像頭采集圖像:首先需通過VIDIOC_REQUFS 參數(shù)完成 緩 存 區(qū)的申請(qǐng),接下來對(duì)各緩存的信息進(jìn)行提取,在用戶空間采用mmap()函數(shù)完成數(shù)據(jù)的映射,在此基礎(chǔ)上通過VIDIOC_STREAMON 命令實(shí)現(xiàn)對(duì)視頻圖像的采集,從而將視頻幀圖像采集出來,對(duì)其進(jìn)行解碼以供LCD進(jìn)行顯示,調(diào)用close()函數(shù)關(guān)閉相關(guān)設(shè)備。在嵌入式系統(tǒng)中為使內(nèi)存泄露及系統(tǒng)崩潰問題得以有效避免,采集圖像停止時(shí)需回收內(nèi)存。
2.2.2 圖像的顯示與保存
通過采用QtCreator 的圖形界面設(shè)計(jì)實(shí)現(xiàn)圖像顯示,以.ui 作為文件格式,使用戶圖形界面布局更加直觀,以便于具體功能的實(shí)現(xiàn),各元件間通過信號(hào)與槽的響應(yīng)機(jī)制的使用實(shí)現(xiàn)協(xié)同工作,先對(duì)視頻幀圖像采用load()函數(shù)完成加載后,再將其通過QLabel 部件使用完成圖像信息的實(shí)時(shí)顯示,SD 卡指定文件夾中保存符合要求的圖像(通過get FileName函數(shù))后經(jīng)過圖像處理子線程進(jìn)一步處理后再次保存。
為檢測(cè)本文所設(shè)計(jì)的基于ARM 的嵌入式圖像處理系統(tǒng)的實(shí)用性和穩(wěn)定性,本文通過圖像邊緣提取實(shí)驗(yàn)完成檢測(cè)過程,在圖像識(shí)別及提取過程中,圖像邊緣信息是圖像的重要特征屬性,目標(biāo)圖像同背景間通過檢測(cè)目標(biāo)邊緣方法實(shí)現(xiàn)二者間的分割,對(duì)原始彩色圖像采用sobel 算子完成邊緣的直接提取,實(shí)驗(yàn)結(jié)果表明LCD 顯示屏在圖像匹配處理過程中能夠有效實(shí)現(xiàn)圖像的實(shí)時(shí)顯示,通過PC 機(jī)可根據(jù)實(shí)際需要對(duì)顯示圖像進(jìn)行相關(guān)操作和控制,明顯提高了圖像處理效率,具有較高的實(shí)際應(yīng)用價(jià)值。
本文主要完成了嵌入式圖像處理系統(tǒng)的設(shè)計(jì),系統(tǒng)以s5pv210 為核心,完成Linux 操作系統(tǒng)環(huán)境搭建后,結(jié)合使用多線程技術(shù)對(duì)圖形應(yīng)用程序進(jìn)行編寫?;赩4L2 接口完成圖像采集設(shè)計(jì),并開辟子線程對(duì)圖像數(shù)據(jù)進(jìn)行處理,確保圖像能夠?qū)崟r(shí)顯示,提高了設(shè)計(jì)策略質(zhì)量,具有較高的穩(wěn)定性和實(shí)際應(yīng)用價(jià)值。