基于Nios II的自動(dòng)指紋識別系統設計
摘要:介紹基于Nios II處理器的嵌入式自動(dòng)指紋識別系統的實(shí)現方法;具體說(shuō)明自動(dòng)指紋識別系統的基本原理、系統總體結構、硬件結構設計、用戶(hù)自定義指令的設計,以及指紋識別算法的處理流程和實(shí)現方法。
關(guān)鍵詞:嵌入式 指紋識別 Nios II 定制指令
引 言
指紋識別作為生物特征識別的一種,在身份識別上有著(zhù)其他手段不可比擬的優(yōu)越性:人的指紋具有唯一性和穩定性的特點(diǎn);隨著(zhù)指紋傳感器性能的提高和價(jià)格的降低,指紋的采集相對容易;指紋的識別算法已經(jīng)較為成熟。由于指紋識別的諸多優(yōu)點(diǎn),指紋識別技術(shù)已經(jīng)逐漸走入民用市場(chǎng),并應用到許多嵌入式設備中。
目前的嵌入式處理器種類(lèi)繁多。Altera公司的Nios II處理器是用于可編程邏輯器件的可配置的軟核處理器,與Altera的低成本的Cyclone FPGA組合,具有很高的性能價(jià)格比。本系統采用Nios II和Cyclone EP1C20嵌入式系統開(kāi)發(fā)板,以及Veridicom公司的FPS200指紋傳感器芯片,實(shí)現了一個(gè)嵌入式自動(dòng)指紋識別系統。
1 總體設計及系統架構
本系統有兩大功能:指紋登記和指紋比對。指紋登記主要包括指紋采集、指紋圖像預處理、特征點(diǎn)提取、特征模板存儲和輸出顯示;指紋比對的前三步與指紋登記相同,但在特征點(diǎn)提取后,是將生成的特征模板與存儲在指紋特征模板庫中的特征模板進(jìn)行特征匹配,最后輸出顯示匹配結果。自動(dòng)指紋識別系統的基本原理框圖如圖1所示。
本系統在結構上分為三層:系統硬件平臺、操作系統和指紋識別算法。系統層次結構如圖2所示。
圖1自動(dòng)指紋識別的基本原理框圖
圖2系統層次
最底層――系統硬件平臺,是系統的物理基礎,提供軟件的運行平臺和通信接口。系統的硬件平臺在A(yíng)ltera的Nios II Cyclone嵌入式系統開(kāi)發(fā)板上實(shí)現,指紋傳感器采用美國Veridicom公司的FPS200。FPS200可輸出大小為256300像素、分辨率為500 dpi的灰度圖像。
第二層是操作系統,采用μC/OSII。μC/OSII是一個(gè)基于搶占式的實(shí)時(shí)多任務(wù)內核,可固化、可剪裁、具有高穩定性和可靠性。這一層提供任務(wù)調度以及接口驅動(dòng),同時(shí),通過(guò)硬件中斷來(lái)實(shí)現系統對外界的通信請求的實(shí)時(shí)響應,如對指紋采集的控制、對串口通信的控制等。這種方式可以提高系統的運行效率。
最上層是指紋識別核心算法的實(shí)現。該算法高效地對采集到的指紋進(jìn)行處理和匹配。采用C語(yǔ)言在Nios II的集成開(kāi)發(fā)環(huán)境(IDE)中實(shí)現。
2 系統硬件的設計與實(shí)現
2.1 Nios II嵌入式軟核處理器簡(jiǎn)介
Nios II嵌入式處理器是Altera公司于2004年6月推出的第二代用于可編程邏輯器件的可配置的軟核處理器,性能超過(guò)200 DMIPS。Nios II是基于哈佛結構的RISC通用嵌入式處理器軟核,能與用戶(hù)邏輯相結合,編程至Altera的FPGA中。處理器具有32位指令集,32位數據通道和可配置的指令以及數據緩沖。它特別為可編程邏輯進(jìn)行了優(yōu)化設計,也為可編程單芯片系統(SoPC)設計了一套綜合解決方案。Nios II處理器系列包括三種內核:一種是高性能的內核(Nios II/f);一種是低成本內核(Nios II/e);一種是性能/成本折中的標準內核(Nios II/s),是前兩種的平衡。本系統采用標準內核。
Nios II 處理器支持256 個(gè)具有固定或可變時(shí)鐘周期操作的定制指令;允許Nios II設計人員利用擴展CPU指令集,通過(guò)提升那些對時(shí)間敏感的應用軟件的運行速度,來(lái)提高系統性能。
2.2 硬件平臺結構
系統的硬件平臺結構如圖3所示。
圖3系統硬件平臺結構
本系統使用FPS200指紋傳感器獲取指紋圖像。FPS200是電容式固態(tài)指紋傳感器,采用CMOS技術(shù),獲取的圖像為256300像素,分辨率為500 dpi。該傳感器提供三種接口方式:8位微機總線(xiàn)接口、集成USB全速接口和集成SPI接口。本系統采用集成SPI接口。指紋采集的程序流程是:首先初始化FPS200的各個(gè)寄存器,主要是放電電流寄存器(DCR)、放電時(shí)間寄存器(DTR)和增益控制寄存器(PGC)的設置;然后查詢(xún)等待,指紋被FPS200采集進(jìn)入數據寄存器后,通過(guò)DMA存入內存。
由于從指紋傳感器采集到的指紋圖像數據在80 KB左右,以DMA方式存入片內RAM。Nios II對指紋圖像數據進(jìn)行處理后,生成指紋特征模板,在指紋登記模式下,存入片外Flash中;在指紋比對模式下,與存儲在Flash中的特征模板進(jìn)行匹配,處理結果通過(guò)LCD和七段LED顯示器輸出顯示。
本系統的硬件平臺主要是在A(yíng)ltera的Nios II Cyclone嵌入式開(kāi)發(fā)板上實(shí)現,選用Altera的Cyclone版本的Nios II開(kāi)發(fā)套件,包括Nios II處理器、標準外圍設備庫、集成了SoPC Builder系統設計工具的QuartusII開(kāi)發(fā)軟件等。系統的主要組件Nios II的標準內核、片內存儲器、SPI、UART、DMA控制器、并行I/O接口、Avalon總線(xiàn)、定時(shí)器等都集成在一塊Altera的Cyclone FPGA芯片上,使用SoPC Builder來(lái)配置生成片上系統。
SoPC Builder是功能強大的基于圖形界面的片上系統定義和定制工具。SoPC Builder庫中包括處理器和大量的IP核及外設。根據應用的需要,本系統選用Nios II Processor、On?Chip?Memory、Flash Memory(Common Flash Interface)、SPI、JTAG UART、DMA、Interval timer、LCD PIO、Seven Segment PIO、Avalon Tri?State Bridge等模塊。對這些模塊配置完成后,使用SoPC Builder進(jìn)行系統生成。SOPC Builder自動(dòng)產(chǎn)生每個(gè)模塊的HDL文件,同時(shí)自動(dòng)產(chǎn)生一些必要的仲裁邏輯來(lái)協(xié)調系統中各部件的工作。
2.3 使用Nios II的定制指令提高系統性能
使用Nios II的定制指令,可以將一個(gè)復雜的標準指令序列簡(jiǎn)化為一個(gè)用硬件實(shí)現的單一指令,從而簡(jiǎn)化系統軟件設計并加快系統運行速度。Nios II的定制指令是與CPU的數據通路中的ALU相連的用戶(hù)邏輯塊。其基本操作是,接收從dataa和/或datab端口輸入的數據,經(jīng)過(guò)定制指令邏輯的處理,將結果輸出到result端口。
在指紋識別算法中,對指紋圖像的處理數據運算量大,循環(huán)數目多;而Nios II的定制指令個(gè)數已增加到256個(gè),可以使用定制指令完成許多循環(huán)內的數據處理,從而加速數據處理的速度。
在對指紋圖像的處理中,頻繁地用到坐標轉換,將圖像的二維坐標轉換為一維的存儲地址;通過(guò)定制指令來(lái)完成坐標的轉換,用一組易于用硬件實(shí)現的位移和加法運算替代乘加運算,可將轉換時(shí)間縮短1/3。在方向圖計算中,要進(jìn)行離散反正切變換,使用優(yōu)化過(guò)的用硬件實(shí)現的定制指令來(lái)替代C語(yǔ)言中的atan函數,更可以將變換時(shí)間縮短到原來(lái)的1/1000。
定制指令邏輯和Nios II的連接在SoPC Builder中完成。Nios II CPU配置向導提供了一個(gè)可添加256條定制指令的圖形用戶(hù)界面,在該界面中導入設計文件,設置定制指令名,并分配定制指令所需的CPU時(shí)鐘周期數目。系統生成時(shí),Nios II IDE為每條用戶(hù)指令產(chǎn)生一個(gè)在系統頭文件中定義的宏,可以在C或C++應用程序代碼中直接調用這個(gè)宏。
3 系統軟件的設計與實(shí)現
本系統的指紋圖像處理及識別算法采用C語(yǔ)言在Nios II IDE中實(shí)現。指紋識別算法的流程如圖4所示。
圖4指紋識別算法流程
背景分離是將指紋區與背景分離,從而避免在沒(méi)有有效信息的區域進(jìn)行特征提取,加速后續處理的速度,提高指紋特征提取和匹配的精度。采用標準差閾值跟蹤法,圖像指紋部分由黑白相間的紋理組成,灰度變化大,因而標準差較大;而背景部分灰度分布較為平坦,標準差較小。將指紋圖像分塊,計算每個(gè)小塊的標準差。若大于某一閾值(本文取20),則該小塊中的所有像素點(diǎn)為前景;否則,為背景。
方向圖是用紋線(xiàn)的方向來(lái)表示原來(lái)的紋線(xiàn)。本文采用塊方向圖,將源指紋圖像分成小塊,使用基于梯度值的方向場(chǎng)計算方法,計算出每個(gè)小塊的脊線(xiàn)方向。
圖像增強的目的是改善圖像質(zhì)量,恢復脊線(xiàn)原來(lái)的結構;采用方向濾波,設計一個(gè)水平模板,根據計算出的方向圖,在每個(gè)小塊中將水平模板旋轉到所需要的方向進(jìn)行濾波。
圖像的二值化是將脊線(xiàn)與背景分離,將指紋圖像從灰度圖像轉換為二值圖像。
二值化后的圖像經(jīng)過(guò)細化,得到紋線(xiàn)的骨架圖像。細化采用迭代的方法,使用Zhang?Suen并行細化算法,可對二值圖像并行處理。
特征提取階段,選擇脊線(xiàn)端點(diǎn)和分叉點(diǎn)作為特征點(diǎn),記錄每一個(gè)特征點(diǎn)的類(lèi)型、位置和方向信息,從而得到指紋的特征點(diǎn)集。但由于在指紋掃描和預處理階段會(huì )引入噪聲,產(chǎn)生大量偽特征點(diǎn),因此需要進(jìn)行偽特征點(diǎn)的去除。去除偽特征點(diǎn)后的特征點(diǎn)集作為特征模板保存。
特征匹配階段采用基于特征點(diǎn)的匹配算法,通過(guò)平移和旋轉變換實(shí)現特征點(diǎn)的大致對齊重合,計算坐標變換后兩個(gè)模板中的特征點(diǎn)的距離和角度。如果小于某一閾值(本文的距離和角度閾值分別取5個(gè)像素和10),則認為是一對匹配的特征點(diǎn)。計算得出所有匹配的特征點(diǎn)對后,計算匹配的特征點(diǎn)占模板中所有特征點(diǎn)的百分比S。根據系統的拒識率(FRR)和誤識率(FAR)要求設置閾值TS。如果S大于或等于閾值TS,則認為是同一指紋;否則,匹配失敗。
結語(yǔ)
本文提出了一種基于Nios II嵌入式處理器軟核的自動(dòng)指紋識別系統實(shí)現方法。使用Altera的Cyclone FPGA實(shí)現,且具有開(kāi)發(fā)周期短、成本低等特點(diǎn);同時(shí),采用Nios II的定制指令來(lái)提高系統性能,利用硬件實(shí)現算法速度快的優(yōu)點(diǎn),使以Nios II處理器為核心的系統能夠快速地完成大量數據處理。
參考文獻
1 Frank Vahid,等. 嵌入式系統設計.駱麗等譯. 北京:北京航空航天大學(xué)出版社, 2004
2 任愛(ài)鋒,等.基于FPGA的嵌入式系統設計.西安:西安電子工業(yè)大學(xué)出版社, 2004
3 Nios II Custom Instruction User Guide. www.altera.com
4 Vizcaya P, Gerhardt L. A nonlinear orientation model for global description of fingerprints. Pattern Recognition, v. 29, no. 7
5 柴曉光,等.民用指紋識別技術(shù).北京:人民郵電出版社,2004
?。ㄊ崭迦掌冢?005-01-25)
評論