基于TMS320DM6437的虹膜采集和識別系統(tǒng)設計
摘要:虹膜識別技術被認為是最有前途的生物認證技術之一,并且已經廣泛應用于金融、電子商務、國防等領域。本課題基于TI公司的TMS320仁)M64.37設計了一款實時的虹膜采集和識別平臺,介紹了系統(tǒng)的框架,并分析了相關的軟件設計,如Codec Engine軟件框架和網絡傳輸。該平臺也可以應用于不同的圖像識別領域。
引言
虹膜識別技術被認為是最有前途的生物認證技術之一,依靠虹膜進行身份識別具有以下明顯的優(yōu)勢:
①唯一性。虹膜具有豐富的紋理信息,不同人的虹膜的細節(jié)特征是絕不相同的,這是利用虹膜識別的最根本前提條件。
②穩(wěn)定性。虹膜受到眼皮、角膜等其他人體器官的保護,不易受到外界物質的傷害,虹膜本身也沒有生理上的病變因素。因此相比指紋、掌紋等其他部位具有更高的穩(wěn)定性。
③天然防偽性。虹膜包圍的瞳孔會因為肌纖維不停地震顫而規(guī)律性地變化,瞳孔還會因為光線強弱而收縮或擴張,通過對虹膜的內邊緣進行定位,也就是對瞳孔大小的實時監(jiān)測,就可以輕易分辨虹膜的生物學真?zhèn)巍?/p>
④無侵犯性。虹膜識別過程中不需要用戶進行任何物理形式的接觸,因此更容易被接受。所以,虹膜識別是目前身份認證中最有發(fā)展前途的認證技術,有著廣泛的市場前景和科學研究價值。
隨著計算機和信息技術的飛速發(fā)展,數(shù)字信號處理(Digital Signal Processing)技術應運而生并得到迅速的發(fā)展。它是一種通過使用數(shù)學技巧執(zhí)行轉換或提取信息,來處理現(xiàn)實信號的方法,這些信號由數(shù)字序列表示。其工作原理是接收模擬信號,轉換為0或1的數(shù)字信號,再對數(shù)字信號進行修改、刪除、強化,并在其他系統(tǒng)芯片中把數(shù)字、數(shù)據解譯回模擬數(shù)據或實際環(huán)境格式。在過去的二十多年時間里,數(shù)字信號處理已經在各個領域得到極為廣泛的應用。TI、Freescale等半導體廠商開發(fā)的一系列DSP芯片可以很好地對采集、提取、歸一化后的虹膜信息進行處理和識別。國外相當數(shù)量的公司正在試圖采用虹膜識別取代人們手中的各種身份驗證卡和密碼,并且很多機場、銀行的電子設備上進行了實際應用。
在國內,主要偏重于虹膜識別的理論研究。目前主要有以下兩種:
①采用Gabor濾波和小波變換提取特征,匹配采用方差加權歐式距離方法;
②用Hough變換找出虹膜中心和半徑,利用半徑求比例因子,用相關系數(shù)測度匹配結果的方法。
綜上所述,從世界范圍來看,國外的虹膜市場比國內要成熟,并已經在金融系統(tǒng)、飛機場等小范圍試運行??梢灶A計未來幾年,我國將大規(guī)模利用DSP深化虹膜識別技術應用到某些領域。在硬件上,我國和發(fā)達國家的差距是比較大的。為此,本文提出了基于TMS320DM6437的虹膜識別系統(tǒng)設計。
1 系統(tǒng)整體簡介
該系統(tǒng)通過CMOS攝像頭采集人眼虹膜圖像,對信息進行解碼后交由TMS320DM6437進行處理,然后圖像處理子系統(tǒng)調用算法處理,繼而把處理結果傳輸給PC。擬定系統(tǒng)主要由4個部分組成:虹膜圖像采集、虹膜圖像處理、存儲器,以及數(shù)據傳輸部分。CMOS圖像傳感器負責采集虹膜圖像,采集的數(shù)據由CPLD分配地址存儲在RAM中;當一幀圖像采集完畢后,CPLD產生外部中斷信號,將存儲在SRAM中的字節(jié)位圖拷貝至SDR AM等待DSP處理,采用閃存存儲程序代碼和虹膜特征庫。整個系統(tǒng)中,DSP要完成數(shù)字圖像處理工作以及控制其他外部設備。CPLD主要是來實現(xiàn)系統(tǒng)的控制邏輯。系統(tǒng)框架如圖1所示。
2 主要硬件簡介
2.1 核心處理器
系統(tǒng)采用TMS320DM6437數(shù)字信號處理器作為核心處理器,它是TI公司推出的專門為高性能、低成本視頻應用開發(fā)的,主頻為600 MHz,基于32位定點DSP達芬奇技術的處理器。它采用2級Cache存儲器體系結構,片上具有64通道增強型DMA控制器EDMA,支持復雜的數(shù)據類型的傳輸,有利于圖像數(shù)據的高效傳輸和格式變換。它有8個并行處理單元,采用甚長指令字(CLIW)結構體系,有強大的處理能力。它還集成了一些外設接口,包括圖像處理子系統(tǒng)、以太網接口、I2C總線接口、DDR2接口和EMIF接口等.其中,VPSS上提供了一個輸入接口和一個輸出接口,輸入接口VPFE用來連接前端外部設備圖像傳感器,它由5部分組成,分別是CCDC、IPIPE、H3A、Resizer和Histogram。輸出接口VPBE可以連接顯示設備,如analogy SDTV顯示器、數(shù)字LCD面板等,它包含On-Screen Display模塊、帶數(shù)字LCD和模擬DAC接口的VENC(用以生成模擬式輸出)。DLCD控制器產生數(shù)字RGB/YCBCR,輸出時間信號和數(shù)據。
2.2 網絡模塊
根據7層OSI網絡模型的定義,網絡接口工作在其物理層和數(shù)據鏈路層。在TMS320DM6437芯片上帶有EMAC/MDIO接口,即提供數(shù)據鏈路層控制,所以選擇網卡芯片時只需要有物理層相關功能即可滿足需要。
2.3 存儲器模塊
系統(tǒng)存儲主要依靠DDR2存儲器,它擁有兩倍于DDR內存的預讀取能力,也就是DDR2內存每個時鐘能夠以4倍于外部總線的速度讀/寫數(shù)據,并且能以內部控制總線4倍的速度運行。采用了專用的DDR2存儲控制器接口拓展了64 MB的DDR2 SDRAM,為圖像處理應用提供了高吞吐率、高容量存儲帶寬,而且可以繼續(xù)根據需要擴展到256 MB。此外,還有256MB的Nor Flash為圖像處理應用程序脫機使用提供了充足的容量保證。
2.4 硬件預設
在運行整個視頻采集系統(tǒng)之前,需要對芯片的引腳進行定義,根據需求來決定芯片各引腳的作用和輸出的信號類型。芯片引腳定義通過設置芯片內部PINMUX1、PINMUX2寄存器來確定,所以首先需要運行芯片初始化函數(shù)。然后進行前端處理,用來配置CCDC為10位Raw Bayer模式接口,接收來自數(shù)字攝像頭的裸數(shù)據,同時定義了虹膜圖像的分辨率為720×576。接著設置CCDC的視頻輸出分辨率以及數(shù)據路徑流向預覽器。設置接口接收來自CC—DC的10位Raw Bayer模式圖像數(shù)據,在緩沖器接口模塊中選擇圖像數(shù)據流為外部存儲器DDR2,指定圖像存儲地址和偏移地址。繼而通過I2C總線來配置CMOS攝像頭,需要對PLL設置寄存器進行配置,設置好的時鐘信號則作為像素輸出時鐘使用。還需要設置圖像格式寄存器和一些控制寄存器,用于模擬信號和數(shù)字信號的增益、黑電平校正和數(shù)字偏移的更正。這些寄存器的設置可以使我們得到更理想的圖像。
最后進行后端處理,用來配置視頻處理后端(VPBE)。VPBE中的圖像存儲器讀取地址就是VPFE中的圖像存儲地址。設置輸出信號為NTSC制的復合視頻信號(CVBS信號)。在虹膜采集系統(tǒng)中對攝像頭的分辨率設置為720×576,觀察采集到的圖像,幀數(shù)穩(wěn)定、色彩均衡,能夠滿足要求。當需要改變分辨率的時候,只需改變程序中相應的寄存器設置,硬件無需變更,降低了開發(fā)成本。
3 系統(tǒng)軟件設計
在本系統(tǒng)中,片上的軟件有:圖像采集驅動程序、Codec Engine應用軟件和網絡模塊(NDK)軟件程序??傮w框架圖如圖2所示。
在DSP/BIOS實時操作系統(tǒng)下,先將系統(tǒng)上電執(zhí)行初始化,從程序入口點運行到main函數(shù),然后對相關寄存器的復用引腳和外設接口等進行配置。芯片工作后根據main函數(shù)的設置啟動任務線程。main函數(shù)返回后,由DSP/BIOS對程序控制進程進行調度,包括內存管理、中斷處理和任務管理等。本系統(tǒng)包括PreviewTask和TskNdkStackTest兩個靜態(tài)配置的任務線程,前者負責對圖像處理驅動模塊和Codec Engine框架進行初始化,實時獲取虹膜圖像、執(zhí)行處理算法以及輸出最終結果,是整個系統(tǒng)的主線程;后者負責網絡模塊的運行。
3.1 圖像采集驅動程序
驅動程序是軟件和硬件之間的橋梁,是軟件設計中不可或缺的一部分。該驅動程序主要是用于前端的圖像采集端,后端則將處理結果通過網絡傳輸至PC。TI公司開發(fā)了專門的驅動接口函數(shù),函數(shù)名均以“FVID”為默認字頭,它由GIO的APIS按需再次封裝得到。所用到的主要函數(shù)如表1所列。
緊接上文步驟,DSP/BIOS啟動圖像處理主線程,然后主線程使用FVID的API函數(shù)獲取傳感器發(fā)來的圖像。接著用FVID_crcat函數(shù)創(chuàng)建通道,返回句柄,將其作為函數(shù)FVID_control的參數(shù),根據不同的命令字符串對接口進行配置。下一步使用FVID_alloc和FVID_queue兩個函數(shù)向驅動申請3個數(shù)據幀,編入buffer隊列。然后用FVID_dequeue函數(shù)釋放隊列中的首個buffer,作為FVID_exchange函數(shù)的起始參數(shù)。之后進入while循環(huán),利用FVID_exchange函數(shù)實現(xiàn)圖像數(shù)據的實時更新。
3.2 Codec Engine應用軟件
Codec Engine軟件是TI公司專門為達芬奇系列DSP設計推出的一個標準軟件框架,能夠極大地簡輕軟件人員的工作量。它是介于應用層和信號處理層之間的軟件模塊,需要和以下軟件模塊、工具配合使用:
Framework ComponentS 1.20.02 xDAIS 5.21/XDC Tools 2.93.01/C6x Code Generation Tools version 6.0.8/DSP/BIOS 5.31.05/MontaVista Linux v4.0/Red Hat Enterprise Linux 3 (SMP)
使用Codec Engine軟件,首先需要使用初始化函數(shù)CERuntime_init(),然后采用Core Engine APIs創(chuàng)建Engine對象并調試。繼而通過VISA接口創(chuàng)建算法對象,并通過不同的數(shù)據模式和接口函數(shù)調用符合XDM標準的算法庫。該軟件的實現(xiàn)流程圖如圖3所示。
3.3 網絡模塊軟件程序
本系統(tǒng)采用C6000系列DSP的官方網絡開發(fā)套件NDK。它基于TCP/IP協(xié)議,網絡接口較為豐富,使用靈活方便。各部分模塊名稱以及功能如表2所列。
NDK由5大模塊組成,其各種網絡功能的實現(xiàn)都利用了Socket接口。在本系統(tǒng)中,Socket服務器端就是DSP端,系統(tǒng)創(chuàng)建多個Socket對象,分別負責數(shù)據的收發(fā)操作。同步執(zhí)行的操作是并行而互不影響的。
具體實現(xiàn)過程是這樣的:網絡工具模塊程序利用NDK為系統(tǒng)設置一個IP地址,然后在網頁窗口輸入DSP的網口IP地址,進入DSP端的HTTP服務器,從而實現(xiàn)遠程實時監(jiān)控。此外,利用Socket編程,可以與PC端編寫的軟件進行通信,于是用戶可以通過PC端的軟件給DSP發(fā)送控制指令來實現(xiàn)不同操作。
模塊中共包含1個主線程和3個子線程,主線程TskNdkStackTest已經根據DSP/BIOS的.tcf配置文件進行了靜態(tài)的配置。3個子線程分別是sendTsk、receiveTsk和cmdparseTsk,分別用于發(fā)送數(shù)據、接收數(shù)據和解析PC端軟件的控制命令。每個子線程中都必須創(chuàng)建一個Socket。
結語
本文研究了基于TMS320DM6437的虹膜識別系統(tǒng)的軟硬件框架設計方法。系統(tǒng)對核心處理器以及主要硬件器件作了介紹,并針對所用到的軟件框架進行了詳細的分析,對虹膜采集和識別平臺的設計具有一定的參考價值。