文獻標識碼: A
文章編號: 0258-7998(2011)04-0055-03
指紋識別作為生物特征識別的一種方法,,在身份識別上有著其他識別方法不可比擬的優(yōu)越性:指紋具有唯一性,、終生不變性、難以復制,、易獲取等優(yōu)點,。傳統(tǒng)的指紋識別系統(tǒng)基于PC機,雖然系統(tǒng)的識別速度快,,樣本存儲量大,,但存在結構體積大、成本高,、移動性能差的缺點,;采用DSP組成的識別系統(tǒng)又存在外圍電路復雜、設計開發(fā)時間長,、系統(tǒng)可擴展性差的問題,。
本文給出了一種基于Xilinx公司FPGA的指紋識別系統(tǒng)設計方法。利用Xilinx公司的EDK和SG(System Generator)開發(fā)軟件,,創(chuàng)建配置MICOBLAZE軟核,,并添加自定義指令與系統(tǒng)邏輯相結合構成完善的SoPC系統(tǒng)[1]。該方法采用硬件實現(xiàn)圖像的預處理以及識別的部分算法,,具有靈活的設計方式,,可裁剪,、可擴充,并具備系統(tǒng)軟硬件可協(xié)同設計的特點,,極大地提高了處理速度,,滿足了系統(tǒng)的實時性要求。
1 指紋識別的基本原理
指紋識別是指從已得到的指紋數(shù)據(jù)庫中查找出與輸入指紋相同的指紋數(shù)據(jù),,達到識別輸入者身份的目的,。指紋識別系統(tǒng)主要包括指紋的采集、指紋圖像預處理和特征提取,、特征模板存儲,、指紋圖像的特征匹配以及輸出顯示匹配結果[2-3]。指紋識別系統(tǒng)的基本原理框圖如圖1所示,。
2 指紋識別系統(tǒng)設計
2.1 系統(tǒng)硬件總體設計
系統(tǒng)主要實現(xiàn)指紋的錄入和識別,。先通過指紋傳感器獲取指紋圖像信息,再由指紋處理模塊進行圖像的預處理,、特征提取等相關操作,,最后保存到存取單元中建立指紋庫。識別時,,同樣通過指紋傳感器錄入待識別的指紋,,再經(jīng)過指紋處理模塊完成圖像處理以及特征提取,然后將提取出的指紋信息與指紋庫中信息進行匹配,,顯示匹配結果。
識別系統(tǒng)由指紋傳感器,、系統(tǒng)控制模塊,、指紋處理模塊、存儲模塊,、通信接口模塊,、輸入輸出模塊等部分組成。指紋的采集通過指紋傳感器完成,,將指紋轉換成具有一定灰度級的數(shù)字圖像,。在控制模塊的作用下,通過接口電路的控制,,將錄入的指紋圖像輸入至識別系統(tǒng),。
指紋處理模塊主要完成指紋的預處理和指紋的特征提取功能。而輸出模塊則負責顯示輸入的測試者信息及指紋的比對結果,。
存儲模塊分為靜態(tài)存儲器RAM和閃存Flash,。其中靜態(tài)存儲器RAM作為系統(tǒng)存放臨時數(shù)據(jù)的單元;閃存Flash用于存放控制系統(tǒng)建檔后的指紋數(shù)據(jù)和識別比對程序,。
控制系統(tǒng)用來協(xié)調(diào)各個外設的工作,,實現(xiàn)狀態(tài)的控制以及設備間的數(shù)據(jù)通信等操作,。主要操作包括:電路的輸入信號、對指紋傳感器的啟動,、指紋數(shù)據(jù)的讀取,、指紋圖像的處理以及數(shù)據(jù)的存儲、匹配和結果的輸出,。
2.2 系統(tǒng)軟件總體設計
根據(jù)系統(tǒng)的設計要求,,需要建立相配套的指紋識別庫并對需要識別的指紋進行識別。設計中將預處理過程中耗時較大的部分用FPGA實現(xiàn),,將處理過程復雜的運算用軟件編程的形式實現(xiàn),,最終由MICOBLAZE軟核完成軟件的執(zhí)行以及軟硬件之間的協(xié)調(diào)。指紋識別系統(tǒng)的軟件運行流程如圖2所示,。
3 指紋識別系統(tǒng)的設計與實現(xiàn)
3.1 指紋傳感器的設計與實現(xiàn)[4]
指紋采集卡是指紋識別系統(tǒng)硬件的重要組成部分,,由指紋傳感器及其外圍電路組成,其功能是采集指紋紋理圖像,。本系統(tǒng)采用美國富士通公司的MBF200電容指紋采集傳感器實現(xiàn)對指紋圖像的采集,。該指紋傳感器最大優(yōu)點是在保證指紋圖像高分辨率的同時減少了傳感器的尺寸。
MFB200芯片內(nèi)置的SPI接口可以極大地降低芯片對硬件的依賴,,只需要5條信號線就可以與微處理器通信,,因此使用SPI接口方式將MBF200作為從設備與FPGA相互連接。
3.2 控制模塊的設計與實現(xiàn)
協(xié)調(diào)各個指紋處理子模塊的運行,,實現(xiàn)各個指紋處理子模塊與系統(tǒng)片內(nèi)MICOBLAZE嵌入式處理器以及存儲設備之間的通信,,是控制模塊的主要功能。
設計時指紋控制模塊預留PLB總線主從端口各一個,。在MICOBLAZE處理器通過指紋采集器取指紋圖像數(shù)據(jù),,存儲到靜態(tài)存儲單元RAM后,處理器通過PLB總線訪問指紋控制模塊的總線從端口,,設定控制模塊的操作地址和操作類型,。完成配置后,控制單元獲得總線使用權,,通過主端口發(fā)送相關指令給圖像處理模塊,,讓其根據(jù)處理器規(guī)定的處理方式,從給定的地址單元取出圖像數(shù)據(jù)進行處理,。最后將處理完成后的新數(shù)據(jù)存儲到片內(nèi)的FLASH或存儲器中,。
3.3 指紋圖像處理模塊的設計與實現(xiàn)
指紋圖像處理模塊包括:圖像的預處理和圖像的特征提取兩個子模塊。這些模塊的計算量大,,但是算法不是很復雜,。為了提高對圖像信息的處理速度,將這些處理過程用硬件實現(xiàn),,即通過System Generator完成該模塊的硬件電路設計,。
圖像預處理子模塊包括:平滑,、銳化、二值化以及細化四個部分[5],。指紋圖像平滑處理是指紋預處理的第一步,。考慮到在去除輸入噪聲的同時要較好地保證圖像的清晰度,,本模塊采用了中值濾波的方法,。中值濾波器的定義如式(1):
其中g(x,y),,f(x,,y)為像素的灰度值,即把f(x,,y)領域所有像素灰度值排序,,求處于中間位置的值代替f(x,y),。在SG中實現(xiàn)框框圖及平滑后的指紋圖像如圖3所示,。
經(jīng)過平滑處理后的指紋圖像會變得模糊,通過圖像銳化技術,,使圖像的邊緣,、輪廓線以及圖像的細節(jié)變得清晰。模塊采用Sobel微分算子進行銳化處理,,處理模板如式(2)所示:
在SG中實現(xiàn)框框圖及銳化處理后的指紋圖像如圖4所示,。
圖像的二值化,就是把灰度圖像轉變?yōu)楹诎紫嚅g的二值圖像,,由于采集到的指紋圖像在不同區(qū)域深淺不一,,如對整幅圖像使用同一閾值進行二值分割,會造成大量有用信息的丟失,。故二值化子模塊使用自適應局部閾值二值化的思想[6-7],既將圖像分割成多個小塊,,對每個小塊進行分別計算,,局部閾值的選取參考局部塊的各個像素,而且選取的閾值應盡量使該塊圖像內(nèi)大于該閾值的像素點數(shù)等于小于該閾值的像素點數(shù),,從而保持大量有用信息,。在SG中實現(xiàn)框框圖,及二值化后的指紋圖像如圖5所示,。
細化是把清晰但紋線粗細不均的二值指紋圖像轉化成線寬為一個像素的條紋中心點線圖像的過程,,以便后續(xù)的特征提取過程能精確定位。細化算法中將OPTA算法進行了優(yōu)化,,即滿足收斂性,、連續(xù)性,、拓撲性和保持性,又能在三叉點處完全細化,,使圖像平滑,,保護紋線的特征。
在圖像的特征提取個子模塊中,,結合細化圖像的特點,,不對紋線做任何修復處理,在細化指紋圖像上直接提取原始細節(jié)特征點集,。在SG中實現(xiàn)框框圖及二值化后的指紋圖像如圖6所示,。特征端點用‘O’標注,特征分叉點用‘+’標注,,中心點用‘*’標注,。
3.4 指紋識別系統(tǒng)的軟件設計與實現(xiàn)
軟件設計包括:各個系統(tǒng)外設的驅動程序,去偽特征點程序以及特征點匹配比對程序,。通過C語言完成這些程序的編寫,,然后通過EDK中自帶的嵌入式編譯器SDK完成相關的調(diào)試。最后可以將編譯好的BIT文件下載到FPGA中,,完成相關的功能,。由于本文討論的是SoPC的設計,在這里就不做詳細介紹,。
4 系統(tǒng)性能分析及測試結果
4.1 系統(tǒng)的性能分析
在設計時,,將系統(tǒng)劃分成了若干小的模塊,便于實現(xiàn)和調(diào)試,。其次將運算量大,、但是實現(xiàn)相對簡單的模塊用硬件實現(xiàn);主要通過SG完成相關的編程,,在簡單電路設計時通常使用Verilog語言直接編寫,,而有些特定算法實現(xiàn)時則通過Matlab語言輔助編寫完成設計,。此外SG使用了Xilinx經(jīng)過優(yōu)化的IP核和庫函數(shù),很好地完成系統(tǒng)的圖像平滑、銳化,、細化以及特征點提取算法所要用到的運算操作,。在保證系統(tǒng)實時性的同時,,達到優(yōu)化設計的效果,;而且整個設計都是以圖形化界面為主,可以根據(jù)設計需要輕松完成模塊的添加與裁剪,。
在實現(xiàn)比較復雜的算法,,如匹配比對算法、去偽特征點算法時,,考慮到算法的復雜,,通過硬件實現(xiàn)需要占用大量的資源,,所以將其以C語言的方式實現(xiàn)。并將其下載到MICOBLAZE軟核中,,便于處理器調(diào)用和實現(xiàn),。
4.2 系統(tǒng)的測試結果
表1是輸入不同指紋情況下,即分別將左右手拇指和中指錄入100次后的系統(tǒng)測試結果,。從表1可以看出系統(tǒng)的平均識別率在93%左右,,而誤識率和拒識率都在3%以下,表明在性能上基本滿足設計需要,。
本文采用EDK與System Generator平臺,,實現(xiàn)了基于FPGA的指紋識別系統(tǒng)。設計中利用Xilinx公司的EDK和SG(System Generator)開發(fā)軟件,,完成MICOBLAZE軟核的設計,,并添加自定義指令與硬件邏輯,構成完善的識別系統(tǒng),。該方法由于采用了可編程邏輯器件,,使得設計靈活、易于修改,,大大縮短了設計的周期,。此外該系統(tǒng)中指紋圖像處理部分的實現(xiàn)都是采用硬件設計思想進行設計和編寫,較大地改善了系統(tǒng)的運行速度,,使系統(tǒng)在滿足實時性要求的同時,,也滿足了數(shù)據(jù)高速處理的需要。
參考文獻
[1] 郭書軍,,王玉花,,葛紉秋.嵌入式處理器及應用[M].北京:清華大學出版社,2004.
[2] 朱智平,,胡榮強,,陳尚志.基于SoPC的指紋識別系統(tǒng)設計[J].電子元器件,2007(4):41-43.
[3] 郭海波,,王金海,,劉長春,等.基于NIOS II的高速嵌入式指紋識別系統(tǒng)[J].國外電子元器件,,2007(1):24-26.
[4] 普措才人,馮旭.基于含DSP的ARM嵌入式指紋識別系統(tǒng)的設計與實現(xiàn)[J].自動化與儀器儀表,,2010(3):44-46.
[5] 李晨丹,,徐進.指紋圖像預處理和特征提取算法的Matlab實現(xiàn)[J].計算機工程與科學,2009(11):61-64.
[6] 羅文淵,,祝忠明,,劉勇.用FPGA實現(xiàn)優(yōu)化的指紋識別預處理算法[J].電子技術應用,,2009(7):71-74.
[7] 胡國安,艾明晶,,駱志勇.基于SoPC的指紋識別系統(tǒng)的設計與實現(xiàn)[J].計算機工程與設計,,2006(8):96-186.