羅茂元,胡春林
(1.電子科技大學(xué)物理電子學(xué)院,成都,610054;2.電子科技大學(xué)電子工程學(xué)院,成都,611731)
隨著社會(huì)和科技的發(fā)展,身份認(rèn)證的重要性日益顯現(xiàn)。在身份識(shí)別方式中,虹膜識(shí)別以其最精確、非接觸性等特點(diǎn),居于各種生物特征識(shí)別系統(tǒng)的首位。目前,虹膜識(shí)別系統(tǒng)實(shí)現(xiàn)平臺(tái)可分為基于PC機(jī)和基于嵌入式兩大類。前者主要用于大型管理系統(tǒng)等領(lǐng)域,結(jié)構(gòu)復(fù)雜,信息量大,體積大;而后者適用于小范圍認(rèn)證,信息處理量小,系統(tǒng)結(jié)構(gòu)較為簡(jiǎn)單的領(lǐng)域,如高安全級(jí)別門(mén)禁系統(tǒng)等。
本課題重點(diǎn)研究在DM6446嵌入式虹膜系統(tǒng)的硬件平臺(tái)下,通過(guò)配置視頻前端寄存器,設(shè)計(jì)視頻驅(qū)動(dòng)程序。其目的在于實(shí)現(xiàn)分辨率為640*480的虹膜視頻圖像的采集,并將捕獲到的虹膜圖像在DDR2內(nèi)存中保存,為后端的DSP虹膜算法提取特征值、完成相應(yīng)編碼提供基礎(chǔ)。
嵌入式DM6446處理器的視頻處理子系統(tǒng)模塊(VPSS)由用于視頻輸入及前端處理的視頻前端模塊(VPFE)和用于視頻顯示及后端處理的視頻后端模塊(VPBE)兩部分組成。
視頻處理前端(VPFE)主要由CCDC、IPIPE、IPIPEIF、H3A四個(gè)模塊組成。CCDC提供了一個(gè)連接圖像傳感器和數(shù)字視頻源的接口。在硬件設(shè)計(jì)上,將CCDC控制器與CMOS圖像傳感器芯片MT9T001相連接,通過(guò)設(shè)置CCDC相應(yīng)的寄存器,使只接收原始圖像/視頻數(shù)據(jù)圖像,而非多種形式的YUV視頻數(shù)據(jù),完成圖像的采集。如圖1所示,CMOS攝像頭原始圖像數(shù)據(jù)以RAW格式的視頻流通過(guò)粗實(shí)線路徑流向A2口,通過(guò)對(duì)下圖中3個(gè)寄存器的配置,可設(shè)置圖像數(shù)據(jù)采集的鎖存時(shí)刻、輸入數(shù)據(jù)傳遞是否按位取反以及數(shù)據(jù)比特?cái)?shù)。
圖1 RAW模式下CCDC的配置
在圖2中,設(shè)置寄存器使A1路徑的YCC數(shù)據(jù)不能通過(guò),A2路徑的RAW數(shù)據(jù)通過(guò)。由于后續(xù)均使用原始RAW圖像數(shù)據(jù),因此,不需圖像調(diào)節(jié)功能,其他寄存器均保持默認(rèn)值。RAW圖像數(shù)據(jù)經(jīng)粗實(shí)線路徑流到B端口。
圖2 RAW模式下數(shù)據(jù)選擇
CCDC控制器后端處理采集的視頻流不分奇偶場(chǎng),如圖3所示,采用連續(xù)存儲(chǔ)模式將圖像原始數(shù)據(jù)存儲(chǔ)到DDR2內(nèi)存中,由寄存器DDR_ADDR.ADR的值決定每一幀圖像數(shù)據(jù)在實(shí)際物理內(nèi)存DDR2中的起始地址,設(shè)置SDOFST寄存器根據(jù)場(chǎng)的ID號(hào)確定奇偶行在DDR2內(nèi)存中額外偏移。
圖3 RAW模式下CCDC控制器后端處理
在Linux中,V4L2為L(zhǎng)inux下的視頻設(shè)備程序開(kāi)發(fā)提供了一套接口規(guī)范。本系統(tǒng)采用V4L2視頻驅(qū)動(dòng)管理虹膜圖像傳感器MT9T001,視頻驅(qū)動(dòng)的整體構(gòu)架主要由應(yīng)用程序、V4L2核心層、MT9T001驅(qū)動(dòng)等組成,下面對(duì)相關(guān)構(gòu)架單元著重分析。
在Linux系統(tǒng)中視頻驅(qū)動(dòng)子系統(tǒng)是圍繞struct video_device結(jié)構(gòu)體建立的,用于描述當(dāng)前視頻設(shè)備所支持的視頻功能和傳輸類型。在該結(jié)構(gòu)體中,主要包含三組不同的函數(shù)指針集,用于移植虹膜攝像頭的V4L2架構(gòu)驅(qū)動(dòng)程序。
第一組函數(shù)指針針對(duì)V4L2自身架構(gòu)所設(shè)計(jì),實(shí)現(xiàn)對(duì)不同的視頻設(shè)備進(jìn)行配置操作、輸入幀率控制以及其他操作,是API函數(shù)的核心。
第二組由release()函數(shù)作為一個(gè)函數(shù)指針,進(jìn)行整個(gè)結(jié)構(gòu)體銷毀工作。由于video_device是針對(duì)多個(gè)應(yīng)用層設(shè)備文件,如果在每次應(yīng)用程序調(diào)用完相應(yīng)的視頻設(shè)備后,就盡快對(duì)這一結(jié)構(gòu)體進(jìn)行銷毀,那么非常容易出現(xiàn)內(nèi)核不穩(wěn)定的情況,所以release()單獨(dú)作為一個(gè)函數(shù)指針。
第三組是常規(guī)的文件操作,根據(jù)實(shí)際設(shè)備進(jìn)行輸入或輸出,實(shí)現(xiàn)相應(yīng)函數(shù)內(nèi)部的具體功能。通過(guò)對(duì)該函數(shù)調(diào)用可對(duì)底層視頻設(shè)備進(jìn)行初始化控制、配置底層設(shè)備視頻圖像數(shù)據(jù)格式和視頻緩沖區(qū)的大小設(shè)置等。
V4L2視頻驅(qū)動(dòng)位于應(yīng)用程序和硬件設(shè)備之間的中間層,它是一個(gè)兩層驅(qū)動(dòng)系統(tǒng)。在實(shí)現(xiàn)內(nèi)核空間拷貝數(shù)據(jù)時(shí),使用mmap函數(shù)轉(zhuǎn)換成應(yīng)用程序中的絕對(duì)地址,切換數(shù)據(jù)指針將內(nèi)核空間的視頻驅(qū)動(dòng)圖像數(shù)據(jù)與用戶空間共享。
由于攝像頭采集圖像傳送數(shù)據(jù)的速度和DSP應(yīng)用程序處理速度不同,為避免視頻數(shù)據(jù)丟幀,上層和底層并行處理互不干擾,采用多級(jí)緩存方式實(shí)現(xiàn)FIFO視頻內(nèi)存管理。如圖4所示,在視頻緩沖區(qū)將視頻圖像分成多個(gè)同樣大小的緩存塊,當(dāng)視頻采集開(kāi)始時(shí),將采集數(shù)據(jù)存到DM6446輸入視頻端口的FIFO,先填寫(xiě)第一個(gè)緩存塊bufferA,當(dāng)bufferA填滿后,DSP 發(fā)出信號(hào)產(chǎn)生EDMA 中斷,啟動(dòng)EDMA 通道,搬運(yùn)FIFO中的bufferA圖像數(shù)據(jù),將其存入SDRAM中,等待圖像處理。在每場(chǎng)圖像采集完成后觸發(fā)VPORT中斷,中斷服務(wù)程序更新圖像存儲(chǔ)區(qū),EDMA 通道自動(dòng)把指針指向第二個(gè)緩存塊bufferB,繼續(xù)采集另一場(chǎng)圖像,已完成的視頻緩存塊bufferA就作為了空閑模塊,歸還給輸入隊(duì)列以便再次使用,以此實(shí)現(xiàn)多個(gè)同樣大小的緩存塊交替接收數(shù)據(jù)。解決了攝像頭采集和DSP應(yīng)用并行處理且互不干擾。
圖4 采用多級(jí)緩存技術(shù)采集圖像示意圖
在DM6446 VPFE視頻驅(qū)動(dòng)設(shè)計(jì)完成后,還需編寫(xiě)視頻采集程序,通過(guò)調(diào)用V4L2控制命令字實(shí)現(xiàn)對(duì)視頻采集設(shè)備的控制,以驗(yàn)證驅(qū)動(dòng)開(kāi)發(fā)的正確性。
將V-MT9V0011 連接到DM6446的視頻處理前端,通過(guò) UART0調(diào)試串口啟動(dòng)嵌入式操作系統(tǒng),將視頻采集程序通過(guò) tftp 下載至 DM6446 核心板中。在 PC 機(jī)上利用 VLC 播放器打開(kāi) RTSP 媒體流觀察輸出圖像,進(jìn)行初級(jí)測(cè)試。視頻捕捉結(jié)果如圖5所示,輸出圖像顯示統(tǒng)計(jì)幀率正常,最高到達(dá)60FPS的傳輸速度;圖像清晰、流暢。驗(yàn)證了本 DM6446 VPFE驅(qū)動(dòng)的正確性。
圖5 采集到的虹膜圖像
綜上所述,本文以DM6446為開(kāi)發(fā)平臺(tái),實(shí)現(xiàn)了基于 V4L2 的視頻處理前端驅(qū)動(dòng)的設(shè)計(jì),并通過(guò)進(jìn)行視頻采集程序測(cè)試,證明其可以進(jìn)行長(zhǎng)期、穩(wěn)定、實(shí)時(shí)的,對(duì)虹膜圖像數(shù)據(jù)進(jìn)行采集,并且并沒(méi)有圖像數(shù)據(jù)位置不正確或者是丟幀的情況出現(xiàn),到達(dá)了預(yù)期設(shè)計(jì)目的。
[1]朱瑞慧.基于局部特征分析的虹膜識(shí)別[D].天津:中國(guó)民航大學(xué),2006
[2]張彥龍.基于DM6446的立體圖像顯示系統(tǒng)和視頻捕捉系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].天津 天津大學(xué),2007
[3]杜春雷.ARM體系結(jié)構(gòu)與編程[M].1版.北京:清華大學(xué)出版社,2003
[4]XU FEN,ZENG JIAN-JUN,ZHANG YUN-LONG.Design of a DSP-based CMOS imaging system for embedded computer vision [C]//Proceedings of 2008 IEEE Conference on Cybernetics and Intelligent Systems.Washington, DC: IEEE Computer Society, 2008:430-433.