張宜堯,徐銀森,李健兒,陳勇,趙建明
(1.電子科技大學(xué),四川成都 610054;2.四川遂寧市利普芯微電子有限公司,四川遂寧 629000;3.四川上特科技有限公司,四川遂寧 629201)
指紋自動識別系統(tǒng)(Automated Fingerprint Identification System,AFIS)具有重要的研究價值,其中,求取指紋方向場(Fingerprint Orientation Field,F(xiàn)OF)信息被認為是解決指紋自動識別處理中眾多關(guān)鍵技術(shù)的一個重要輔助方式[1-2]。通常,采集到的原始指紋圖像中,由于脊線和谷線具有局部恒定的方向,因此,這些指紋方向通常用于描述脊線模式,為進一步的指紋處理和識別提供有用的依據(jù)。在方向圖的計算中,若從圖像局部特性的角度考慮,通過對指紋圖像劃分出的局部區(qū)域進行計算處理便可以得到指紋紋路的方向場數(shù)據(jù),即能得到指紋圖像的紋路走向。通常,指紋方向場估計方法可以分為三類:基于梯度的方法、基于數(shù)學(xué)模型的方法和基于深度學(xué)習(xí)的方法[2]。
指紋方向場經(jīng)常作為指紋算法中的一項重要參數(shù),應(yīng)用在許多處理環(huán)節(jié),如指紋分割算法[3]、指紋圖像增強[4-5]、指紋特征提取[6]等,故其計算方法對于整體指紋識別系統(tǒng)的性能有著顯著的影響。
指紋紋線方向定義如圖1 所示,文中FPGA 實現(xiàn)的方案是通過梯度的方法[7-8]來求取方向圖。
圖1 紋線方向定義
由于梯度描述了曲線變化程度最快的方向,因此像素點的梯度方向就和該像素點所在的指紋紋線相互垂直。其計算方法如下,首先將指紋圖像(I)以W×W窗口劃分為塊,利用塊內(nèi)各個像素點的水平、垂直方向的一階梯度Gx、Gy,根據(jù)式(1)以及式(2)計算出該像素塊的水平、垂直統(tǒng)計方差Vx、Vy。之后,根據(jù)式(3)將兩方向塊統(tǒng)計梯度比做反正切,計算出該窗口內(nèi)紋線的角度。
基于上述梯度算子求取方向圖的算法,文中以FPGA 實現(xiàn)了該方向場計算模塊,該模塊主要由Sobel 算子模塊(Sobel_cal)以及區(qū)域方向計算模塊(Direc_cal)組成,其整體結(jié)構(gòu)如圖2 所示。輸入包括時鐘信號(clk)、異步復(fù)位信號(rst_n)、數(shù)據(jù)有效信號(IDVAL)以及指紋圖像像素數(shù)據(jù)信號(Pixel);輸出包括輸出數(shù)據(jù)有效信號(ODVAL)以及角度數(shù)據(jù)信號(Direc)。下面分別介紹所采用模塊的內(nèi)部結(jié)構(gòu)。
圖2 整體結(jié)構(gòu)示意圖
根據(jù)算法原理需要得到指紋圖像像素點的一階梯度Gx、Gy,避免對像素之間的插值點直接進行梯度計算的一種方法是使用3×3 鄰域進行一階梯度計算。常見的方式有Prewitt 算子、Sobel 算子、Robinson羅盤掩膜、Krisch 羅盤掩模、Laplacian 算子等[9]。文中采用的方法是利用索貝爾算子(Sobel operator)計算一階梯度,有各種各樣的Sobel 算子對,例如3×3、5×5 卷積核,3×3 Sobel算子如圖3 所示。
圖3 Sobel算子
設(shè)3×3 區(qū)域中心指紋像素點為I(i,j),故可以得到其一階梯度Gx、Gy的計算公式如下:
該部分模塊結(jié)構(gòu)圖如圖4 所示??紤]到Sobel算子計算一階梯度時需要3×3 像素,所以利用基于RAM 的位移寄存器(shift register RAM-based)作為像素行緩存(Line-buffer),用于緩存指紋圖像的三行像素數(shù)據(jù)。由于指紋像素輸入以從上到下、從左到右的順序逐拍將像素輸入進行緩存,因此,只要設(shè)置行緩存數(shù)據(jù)寬度為指紋圖像的行寬度,就能夠?qū)R指紋圖像的三行像素,并在行緩存末端隨時鐘逐拍輸出對齊的三個像素[10]。
圖4 Sobel算子方差計算模塊結(jié)構(gòu)圖
之后,以逐像素位移(shift-in)的方式通過乘加器(Multiply Accumulate,MAC)與兩個Sobel算子(圖3)中系數(shù)先相乘、后相加,得到每一行乘加結(jié)果(Mac_x0…x2、Mac_y0…y2)。最終,通過平行加法器(Parallel-Adder,PA)將3 行乘加結(jié)果相加得到卷積結(jié)果,即每一像素的一階梯度。
區(qū)域方向計算模塊(Direc_cal)的結(jié)構(gòu)示意圖如圖5 所示,主要包括單點像素梯度方差計算邏輯(Pixel_Vx&Vy)、計數(shù)器0-2(cnt0、cnt1、cnt2),塊方差寄存器(Vx_reg0…N-1,Vy_reg0…N-1)以及反正切計算模塊(ATAN)。根據(jù)式(1)以及式(2),不妨令單點像素梯度方差為P_Vx、P_Vx,則得到:
圖5 區(qū)域方向計算模塊結(jié)構(gòu)圖
由Sobel 算子模塊得出的Gx、Gy作為單點像素梯度方差計算邏輯(Pixel_Vx&Vy)的輸入信號,能夠得到P_Vx、P_Vy,從而完成式(6)以及式(7)的計算。
之后是對方差結(jié)果統(tǒng)計式(8)及(9)的實現(xiàn),不妨設(shè)指紋圖像以W×W窗口劃分為M×N塊,確定出Vx、Vy寄存塊的數(shù)目為N-1 個,再逐拍將P_Vx、P_Vy通過加法器(Adder)累加至塊方差寄存器(Vx_reg0…N-1,Vy_reg0…N-1)中。同時,計數(shù)器0(cnt0)對P_Vx,P_Vy的輸出進行計數(shù),每當(dāng)計數(shù)至W-1 時,計數(shù)器0(cnt0)清零且計數(shù)器1(cnt1)加一,從而控制多路復(fù)用器(MUX)切換方差累加寄存器;每當(dāng)計數(shù)器1(cnt1)計數(shù)至N-1 時,計數(shù)器1(cnt1)清零且計數(shù)器2(cnt2)加一;當(dāng)計數(shù)器2(cnt2)計數(shù)至W-1,且計數(shù)器0(cnt0)計數(shù)至W-1 時,則完成了一塊區(qū)域的方差累加。每當(dāng)完成一個塊內(nèi)的方差統(tǒng)計累加,則使能以反正切計算模塊(ATAN)計算,得到塊角度(Direc)。其中,反正切計算模塊(ATAN)是基于坐標(biāo)旋轉(zhuǎn)數(shù)字計算(Cordinate Rotation DIgital Computer,CORDIC)算法實現(xiàn)的[11-12],其輸出結(jié)果Direc 為11 bits 的有符號定點數(shù),小數(shù)位為8 位。因此,在對應(yīng)的輸出弧度范圍[-Π,Π]下,精度可以達到0.003 906 25。
所測試的對象為200×152像素的指紋,如圖6(a)所示。在分塊大小為8×8 像素的情況下,指紋圖像被分為25×19 個區(qū)域,故該模塊一共產(chǎn)生475 個數(shù)量的方向數(shù)據(jù)輸出,輸出的方向場數(shù)據(jù)如圖6(b)所示??梢钥闯觯摲绞教崛〕龅姆较驁雠c原指紋圖像有著明顯的對應(yīng)關(guān)系。通過Quartus Prime 對文中所述FPGA 模塊進行編譯綜合,并在Modelsim SE 下進行仿真,得到的模塊仿真輸出波形如圖7 所示。
圖6 測試指紋及其方向場
圖7 模塊仿真輸出波形
為測試指紋圖像采用不同區(qū)域分塊大小對生成方向場的影響,對模塊中分塊大小進行定義,分別以4×4、8×8、12×12 區(qū)域進行塊方向計算,得到圖8 所示的三個方向場。
圖8 不同分塊大小方向場
為對得到的指紋方向場的質(zhì)量進行評估,引用一種方向場評價方法[13],其原理是依據(jù)自然指紋的方向場具有較強的局部連續(xù)性,而計算失準(zhǔn)的方向場信息帶來的不規(guī)則噪聲會使局部連續(xù)性大幅降低。通過使用平滑濾波器對方向場進行平滑處理,得到局部連續(xù)性較好的方向場。因此,通過平滑前后方向場中方向改變的比例越多,則平滑前方向場的質(zhì)量越差。文中所采用的濾波平滑方式如下:
通過式(10)以及式(11)將各個角度在W×W大小窗口內(nèi)映射成橫、縱向投影φx、φy,通過式(12)及式(13)對角度投影進行濾波計算,最終將濾波后的投影根據(jù)式(14)通過反正切映射成方向角度。式(12)、(13)中所采用的濾波器為5×5 大小的高斯算子[14],如圖9 所示。
圖9 5×5高斯算子
分別對圖8 所示的三個方向場進行平滑處理,并統(tǒng)計其處理前后方向變化數(shù)目,得到平滑前后方向變化比例,如表1 所示。
由表1 可知,塊大小對于方向場有如下影響:在4×4 小分塊下進行分割得到的方向場雖然可以得到更多方向細節(jié),且方向過渡更為平滑,特別是在指紋奇異點處,但是容易引入較多指紋原圖像產(chǎn)生的方向噪聲或毛刺,導(dǎo)致方向場質(zhì)量不佳。而12×12 的較大區(qū)域分塊會丟失較多方向信息,并且在分塊邊界處引入了更大的方向突變,從而使方向場的局部方向連續(xù)性大幅降低。
表1 平滑前后方向變化結(jié)果表
另一種常用的方法是通過八方向掩膜對指紋進行方向場提取[15]。從實驗結(jié)果中列舉出5 組相同大小不同身份的指紋樣本,并將該模塊采用梯度法得到的結(jié)果與掩膜法所提取方向場進行對比評估,如表2 所示。
表2 梯度法與掩膜法對比結(jié)果表
文中提出了一種基于梯度法的指紋方向場的FPGA 實現(xiàn)方式,該方式能夠較好地提取出指紋紋線方向特性,且由于方向場是以區(qū)域塊的方式生成的,因此對于指紋圖像中部分像素產(chǎn)生的噪聲有較好的抑制作用,并且與傳統(tǒng)基于方向模板方向場生成方式[16]相比,生成的方向數(shù)據(jù)擁有更高的精度,從而能夠提取出更多奇異點方向特征信息,且生成的方向場更加平滑。該方案為后續(xù)指紋圖像處理提供了強堅固性的紋線方向特征信息,從而間接提高指紋識別系統(tǒng)的性能。