《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的指紋識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA的指紋識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
來源:電子技術(shù)應(yīng)用2011年第4期
鄭 駿,張 丹,潘 靜
南京工業(yè)大學(xué) 電子與信息工程學(xué)院,江蘇 南京210009
摘要: 為了提高指紋識(shí)別系統(tǒng)的實(shí)時(shí)性和處理速度,設(shè)計(jì)和實(shí)現(xiàn)了一種基于FPGA的嵌入式指紋識(shí)別系統(tǒng)。該系統(tǒng)采用處理器結(jié)合自定義硬件邏輯的方法,以下載到FPGA的MICOBLAZE嵌入式軟核為系統(tǒng)控制模塊,運(yùn)用FPGA路基單元實(shí)現(xiàn)指紋圖像的處理。在設(shè)計(jì)中,指紋圖像處理的算法通過SG(System Generator)軟件設(shè)計(jì),采用Matlab語(yǔ)言和Verilog語(yǔ)音混合編寫的方式實(shí)現(xiàn)專用的處理模塊,較大地提高了系統(tǒng)的處理速度。
中圖分類號(hào): TP311
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)04-0055-03
Design and implementation of a fingerprint identification system based on FPGA
Zheng Jun,Zhang Dan,Pan Jing
Electronic and Information Engineering Institute Nanjing University of Technology, Nanjing 210009,China
Abstract: To improve the high speech requirement and efficiency of the fingerprint identification system, a kind of fingerprint identification system based on FPGA is presented. The CPU integrating with user's self-defining logic is appeared in the system. MICOBLAZE embedded IP core CPU which has been downloaded to FPGA(field programmable gate array) acts as the controller of the system, and FPGA’s logic units are used to implement the special-purpose of fingerprint image manipulation. The most of the fingerprint image manipulation modules are designed in the SG(system generator) by Matlab language and Verilog language. It greatly raises the system speed.
Key words : fingerprint identification;FPGA;MICOBLAZE;embedded


 指紋識(shí)別作為生物特征識(shí)別的一種方法,在身份識(shí)別上有著其他識(shí)別方法不可比擬的優(yōu)越性:指紋具有唯一性、終生不變性、難以復(fù)制、易獲取等優(yōu)點(diǎn)。傳統(tǒng)的指紋識(shí)別系統(tǒng)基于PC機(jī),雖然系統(tǒng)的識(shí)別速度快,樣本存儲(chǔ)量大,但存在結(jié)構(gòu)體積大、成本高、移動(dòng)性能差的缺點(diǎn);采用DSP組成的識(shí)別系統(tǒng)又存在外圍電路復(fù)雜、設(shè)計(jì)開發(fā)時(shí)間長(zhǎng)、系統(tǒng)可擴(kuò)展性差的問題。
    本文給出了一種基于Xilinx公司FPGA的指紋識(shí)別系統(tǒng)設(shè)計(jì)方法。利用Xilinx公司的EDK和SG(System Generator)開發(fā)軟件,創(chuàng)建配置MICOBLAZE軟核,并添加自定義指令與系統(tǒng)邏輯相結(jié)合構(gòu)成完善的SoPC系統(tǒng)[1]。該方法采用硬件實(shí)現(xiàn)圖像的預(yù)處理以及識(shí)別的部分算法,具有靈活的設(shè)計(jì)方式,可裁剪、可擴(kuò)充,并具備系統(tǒng)軟硬件可協(xié)同設(shè)計(jì)的特點(diǎn),極大地提高了處理速度,滿足了系統(tǒng)的實(shí)時(shí)性要求。
1 指紋識(shí)別的基本原理
    指紋識(shí)別是指從已得到的指紋數(shù)據(jù)庫(kù)中查找出與輸入指紋相同的指紋數(shù)據(jù),達(dá)到識(shí)別輸入者身份的目的。指紋識(shí)別系統(tǒng)主要包括指紋的采集、指紋圖像預(yù)處理和特征提取、特征模板存儲(chǔ)、指紋圖像的特征匹配以及輸出顯示匹配結(jié)果[2-3]。指紋識(shí)別系統(tǒng)的基本原理框圖如圖1所示。

2 指紋識(shí)別系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)硬件總體設(shè)計(jì)

    系統(tǒng)主要實(shí)現(xiàn)指紋的錄入和識(shí)別。先通過指紋傳感器獲取指紋圖像信息,再由指紋處理模塊進(jìn)行圖像的預(yù)處理、特征提取等相關(guān)操作,最后保存到存取單元中建立指紋庫(kù)。識(shí)別時(shí),同樣通過指紋傳感器錄入待識(shí)別的指紋,再經(jīng)過指紋處理模塊完成圖像處理以及特征提取,然后將提取出的指紋信息與指紋庫(kù)中信息進(jìn)行匹配,顯示匹配結(jié)果。
    識(shí)別系統(tǒng)由指紋傳感器、系統(tǒng)控制模塊、指紋處理模塊、存儲(chǔ)模塊、通信接口模塊、輸入輸出模塊等部分組成。指紋的采集通過指紋傳感器完成,將指紋轉(zhuǎn)換成具有一定灰度級(jí)的數(shù)字圖像。在控制模塊的作用下,通過接口電路的控制,將錄入的指紋圖像輸入至識(shí)別系統(tǒng)。
    指紋處理模塊主要完成指紋的預(yù)處理和指紋的特征提取功能。而輸出模塊則負(fù)責(zé)顯示輸入的測(cè)試者信息及指紋的比對(duì)結(jié)果。
    存儲(chǔ)模塊分為靜態(tài)存儲(chǔ)器RAM和閃存Flash。其中靜態(tài)存儲(chǔ)器RAM作為系統(tǒng)存放臨時(shí)數(shù)據(jù)的單元;閃存Flash用于存放控制系統(tǒng)建檔后的指紋數(shù)據(jù)和識(shí)別比對(duì)程序。
    控制系統(tǒng)用來協(xié)調(diào)各個(gè)外設(shè)的工作,實(shí)現(xiàn)狀態(tài)的控制以及設(shè)備間的數(shù)據(jù)通信等操作。主要操作包括:電路的輸入信號(hào)、對(duì)指紋傳感器的啟動(dòng)、指紋數(shù)據(jù)的讀取、指紋圖像的處理以及數(shù)據(jù)的存儲(chǔ)、匹配和結(jié)果的輸出。
2.2 系統(tǒng)軟件總體設(shè)計(jì)
    根據(jù)系統(tǒng)的設(shè)計(jì)要求,需要建立相配套的指紋識(shí)別庫(kù)并對(duì)需要識(shí)別的指紋進(jìn)行識(shí)別。設(shè)計(jì)中將預(yù)處理過程中耗時(shí)較大的部分用FPGA實(shí)現(xiàn),將處理過程復(fù)雜的運(yùn)算用軟件編程的形式實(shí)現(xiàn),最終由MICOBLAZE軟核完成軟件的執(zhí)行以及軟硬件之間的協(xié)調(diào)。指紋識(shí)別系統(tǒng)的軟件運(yùn)行流程如圖2所示。

3 指紋識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
3.1 指紋傳感器的設(shè)計(jì)與實(shí)現(xiàn)[4]

    指紋采集卡是指紋識(shí)別系統(tǒng)硬件的重要組成部分,由指紋傳感器及其外圍電路組成,其功能是采集指紋紋理圖像。本系統(tǒng)采用美國(guó)富士通公司的MBF200電容指紋采集傳感器實(shí)現(xiàn)對(duì)指紋圖像的采集。該指紋傳感器最大優(yōu)點(diǎn)是在保證指紋圖像高分辨率的同時(shí)減少了傳感器的尺寸。
    MFB200芯片內(nèi)置的SPI接口可以極大地降低芯片對(duì)硬件的依賴,只需要5條信號(hào)線就可以與微處理器通信,因此使用SPI接口方式將MBF200作為從設(shè)備與FPGA相互連接。
3.2 控制模塊的設(shè)計(jì)與實(shí)現(xiàn)
    協(xié)調(diào)各個(gè)指紋處理子模塊的運(yùn)行,實(shí)現(xiàn)各個(gè)指紋處理子模塊與系統(tǒng)片內(nèi)MICOBLAZE嵌入式處理器以及存儲(chǔ)設(shè)備之間的通信,是控制模塊的主要功能。
    設(shè)計(jì)時(shí)指紋控制模塊預(yù)留PLB總線主從端口各一個(gè)。在MICOBLAZE處理器通過指紋采集器取指紋圖像數(shù)據(jù),存儲(chǔ)到靜態(tài)存儲(chǔ)單元RAM后,處理器通過PLB總線訪問指紋控制模塊的總線從端口,設(shè)定控制模塊的操作地址和操作類型。完成配置后,控制單元獲得總線使用權(quán),通過主端口發(fā)送相關(guān)指令給圖像處理模塊,讓其根據(jù)處理器規(guī)定的處理方式,從給定的地址單元取出圖像數(shù)據(jù)進(jìn)行處理。最后將處理完成后的新數(shù)據(jù)存儲(chǔ)到片內(nèi)的FLASH或存儲(chǔ)器中。
3.3 指紋圖像處理模塊的設(shè)計(jì)與實(shí)現(xiàn)
    指紋圖像處理模塊包括:圖像的預(yù)處理和圖像的特征提取兩個(gè)子模塊。這些模塊的計(jì)算量大,但是算法不是很復(fù)雜。為了提高對(duì)圖像信息的處理速度,將這些處理過程用硬件實(shí)現(xiàn),即通過System Generator完成該模塊的硬件電路設(shè)計(jì)。
    圖像預(yù)處理子模塊包括:平滑、銳化、二值化以及細(xì)化四個(gè)部分[5]。指紋圖像平滑處理是指紋預(yù)處理的第一步。考慮到在去除輸入噪聲的同時(shí)要較好地保證圖像的清晰度,本模塊采用了中值濾波的方法。中值濾波器的定義如式(1):

其中g(shù)(x,y),f(x,y)為像素的灰度值,即把f(x,y)領(lǐng)域所有像素灰度值排序,求處于中間位置的值代替f(x,y)。在SG中實(shí)現(xiàn)框框圖及平滑后的指紋圖像如圖3所示。

    經(jīng)過平滑處理后的指紋圖像會(huì)變得模糊,通過圖像銳化技術(shù),使圖像的邊緣、輪廓線以及圖像的細(xì)節(jié)變得清晰。模塊采用Sobel微分算子進(jìn)行銳化處理,處理模板如式(2)所示:
    
    在SG中實(shí)現(xiàn)框框圖及銳化處理后的指紋圖像如圖4所示。

    圖像的二值化,就是把灰度圖像轉(zhuǎn)變?yōu)楹诎紫嚅g的二值圖像,由于采集到的指紋圖像在不同區(qū)域深淺不一,如對(duì)整幅圖像使用同一閾值進(jìn)行二值分割,會(huì)造成大量有用信息的丟失。故二值化子模塊使用自適應(yīng)局部閾值二值化的思想[6-7],既將圖像分割成多個(gè)小塊,對(duì)每個(gè)小塊進(jìn)行分別計(jì)算,局部閾值的選取參考局部塊的各個(gè)像素,而且選取的閾值應(yīng)盡量使該塊圖像內(nèi)大于該閾值的像素點(diǎn)數(shù)等于小于該閾值的像素點(diǎn)數(shù),從而保持大量有用信息。在SG中實(shí)現(xiàn)框框圖,及二值化后的指紋圖像如圖5所示。

    細(xì)化是把清晰但紋線粗細(xì)不均的二值指紋圖像轉(zhuǎn)化成線寬為一個(gè)像素的條紋中心點(diǎn)線圖像的過程,以便后續(xù)的特征提取過程能精確定位。細(xì)化算法中將OPTA算法進(jìn)行了優(yōu)化,即滿足收斂性、連續(xù)性、拓?fù)湫院捅3中?,又能在三叉點(diǎn)處完全細(xì)化,使圖像平滑,保護(hù)紋線的特征。
    在圖像的特征提取個(gè)子模塊中,結(jié)合細(xì)化圖像的特點(diǎn),不對(duì)紋線做任何修復(fù)處理,在細(xì)化指紋圖像上直接提取原始細(xì)節(jié)特征點(diǎn)集。在SG中實(shí)現(xiàn)框框圖及二值化后的指紋圖像如圖6所示。特征端點(diǎn)用‘O’標(biāo)注,特征分叉點(diǎn)用‘+’標(biāo)注,中心點(diǎn)用‘*’標(biāo)注。

3.4 指紋識(shí)別系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)
    軟件設(shè)計(jì)包括:各個(gè)系統(tǒng)外設(shè)的驅(qū)動(dòng)程序,去偽特征點(diǎn)程序以及特征點(diǎn)匹配比對(duì)程序。通過C語(yǔ)言完成這些程序的編寫,然后通過EDK中自帶的嵌入式編譯器SDK完成相關(guān)的調(diào)試。最后可以將編譯好的BIT文件下載到FPGA中,完成相關(guān)的功能。由于本文討論的是SoPC的設(shè)計(jì),在這里就不做詳細(xì)介紹。
4 系統(tǒng)性能分析及測(cè)試結(jié)果
4.1 系統(tǒng)的性能分析

    在設(shè)計(jì)時(shí),將系統(tǒng)劃分成了若干小的模塊,便于實(shí)現(xiàn)和調(diào)試。其次將運(yùn)算量大、但是實(shí)現(xiàn)相對(duì)簡(jiǎn)單的模塊用硬件實(shí)現(xiàn);主要通過SG完成相關(guān)的編程,在簡(jiǎn)單電路設(shè)計(jì)時(shí)通常使用Verilog語(yǔ)言直接編寫,而有些特定算法實(shí)現(xiàn)時(shí)則通過Matlab語(yǔ)言輔助編寫完成設(shè)計(jì)。此外SG使用了Xilinx經(jīng)過優(yōu)化的IP核和庫(kù)函數(shù),很好地完成系統(tǒng)的圖像平滑、銳化、細(xì)化以及特征點(diǎn)提取算法所要用到的運(yùn)算操作。在保證系統(tǒng)實(shí)時(shí)性的同時(shí),達(dá)到優(yōu)化設(shè)計(jì)的效果;而且整個(gè)設(shè)計(jì)都是以圖形化界面為主,可以根據(jù)設(shè)計(jì)需要輕松完成模塊的添加與裁剪。
    在實(shí)現(xiàn)比較復(fù)雜的算法,如匹配比對(duì)算法、去偽特征點(diǎn)算法時(shí),考慮到算法的復(fù)雜,通過硬件實(shí)現(xiàn)需要占用大量的資源,所以將其以C語(yǔ)言的方式實(shí)現(xiàn)。并將其下載到MICOBLAZE軟核中,便于處理器調(diào)用和實(shí)現(xiàn)。
4.2 系統(tǒng)的測(cè)試結(jié)果
    表1是輸入不同指紋情況下,即分別將左右手拇指和中指錄入100次后的系統(tǒng)測(cè)試結(jié)果。從表1可以看出系統(tǒng)的平均識(shí)別率在93%左右,而誤識(shí)率和拒識(shí)率都在3%以下,表明在性能上基本滿足設(shè)計(jì)需要。

    本文采用EDK與System Generator平臺(tái),實(shí)現(xiàn)了基于FPGA的指紋識(shí)別系統(tǒng)。設(shè)計(jì)中利用Xilinx公司的EDK和SG(System Generator)開發(fā)軟件,完成MICOBLAZE軟核的設(shè)計(jì),并添加自定義指令與硬件邏輯,構(gòu)成完善的識(shí)別系統(tǒng)。該方法由于采用了可編程邏輯器件,使得設(shè)計(jì)靈活、易于修改,大大縮短了設(shè)計(jì)的周期。此外該系統(tǒng)中指紋圖像處理部分的實(shí)現(xiàn)都是采用硬件設(shè)計(jì)思想進(jìn)行設(shè)計(jì)和編寫,較大地改善了系統(tǒng)的運(yùn)行速度,使系統(tǒng)在滿足實(shí)時(shí)性要求的同時(shí),也滿足了數(shù)據(jù)高速處理的需要。
參考文獻(xiàn)
[1] 郭書軍,王玉花,葛紉秋.嵌入式處理器及應(yīng)用[M].北京:清華大學(xué)出版社,2004.
[2] 朱智平,胡榮強(qiáng),陳尚志.基于SoPC的指紋識(shí)別系統(tǒng)設(shè)計(jì)[J].電子元器件,2007(4):41-43.
[3] 郭海波,王金海,劉長(zhǎng)春,等.基于NIOS II的高速嵌入式指紋識(shí)別系統(tǒng)[J].國(guó)外電子元器件,2007(1):24-26.
[4] 普措才人,馮旭.基于含DSP的ARM嵌入式指紋識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀器儀表,2010(3):44-46.
[5] 李晨丹,徐進(jìn).指紋圖像預(yù)處理和特征提取算法的Matlab實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2009(11):61-64.
[6] 羅文淵,祝忠明,劉勇.用FPGA實(shí)現(xiàn)優(yōu)化的指紋識(shí)別預(yù)處理算法[J].電子技術(shù)應(yīng)用,2009(7):71-74.
[7] 胡國(guó)安,艾明晶,駱志勇.基于SoPC的指紋識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006(8):96-186.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。