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