張宜堯,徐銀森,李健兒,陳勇,趙建明
(1.電子科技大學,四川成都 610054;2.四川遂寧市利普芯微電子有限公司,四川遂寧 629000;3.四川上特科技有限公司,四川遂寧 629201)
指紋自動識別系統(Automated Fingerprint Identification System,AFIS)具有重要的研究價值,其中,求取指紋方向場(Fingerprint Orientation Field,FOF)信息被認為是解決指紋自動識別處理中眾多關鍵技術的一個重要輔助方式[1-2]。通常,采集到的原始指紋圖像中,由于脊線和谷線具有局部恒定的方向,因此,這些指紋方向通常用于描述脊線模式,為進一步的指紋處理和識別提供有用的依據。在方向圖的計算中,若從圖像局部特性的角度考慮,通過對指紋圖像劃分出的局部區域進行計算處理便可以得到指紋紋路的方向場數據,即能得到指紋圖像的紋路走向。通常,指紋方向場估計方法可以分為三類:基于梯度的方法、基于數學模型的方法和基于深度學習的方法[2]。
指紋方向場經常作為指紋算法中的一項重要參數,應用在許多處理環節,如指紋分割算法[3]、指紋圖像增強[4-5]、指紋特征提取[6]等,故其計算方法對于整體指紋識別系統的性能有著顯著的影響。
指紋紋線方向定義如圖1 所示,文中FPGA 實現的方案是通過梯度的方法[7-8]來求取方向圖。

圖1 紋線方向定義
由于梯度描述了曲線變化程度最快的方向,因此像素點的梯度方向就和該像素點所在的指紋紋線相互垂直。其計算方法如下,首先將指紋圖像(I)以W×W窗口劃分為塊,利用塊內各個像素點的水平、垂直方向的一階梯度Gx、Gy,根據式(1)以及式(2)計算出該像素塊的水平、垂直統計方差Vx、Vy。之后,根據式(3)將兩方向塊統計梯度比做反正切,計算出該窗口內紋線的角度。

基于上述梯度算子求取方向圖的算法,文中以FPGA 實現了該方向場計算模塊,該模塊主要由Sobel 算子模塊(Sobel_cal)以及區域方向計算模塊(Direc_cal)組成,其整體結構如圖2 所示。輸入包括時鐘信號(clk)、異步復位信號(rst_n)、數據有效信號(IDVAL)以及指紋圖像像素數據信號(Pixel);輸出包括輸出數據有效信號(ODVAL)以及角度數據信號(Direc)。下面分別介紹所采用模塊的內部結構。

圖2 整體結構示意圖
根據算法原理需要得到指紋圖像像素點的一階梯度Gx、Gy,避免對像素之間的插值點直接進行梯度計算的一種方法是使用3×3 鄰域進行一階梯度計算。常見的方式有Prewitt 算子、Sobel 算子、Robinson羅盤掩膜、Krisch 羅盤掩模、Laplacian 算子等[9]。文中采用的方法是利用索貝爾算子(Sobel operator)計算一階梯度,有各種各樣的Sobel 算子對,例如3×3、5×5 卷積核,3×3 Sobel算子如圖3 所示。

圖3 Sobel算子
設3×3 區域中心指紋像素點為I(i,j),故可以得到其一階梯度Gx、Gy的計算公式如下:

該部分模塊結構圖如圖4 所示。考慮到Sobel算子計算一階梯度時需要3×3 像素,所以利用基于RAM 的位移寄存器(shift register RAM-based)作為像素行緩存(Line-buffer),用于緩存指紋圖像的三行像素數據。由于指紋像素輸入以從上到下、從左到右的順序逐拍將像素輸入進行緩存,因此,只要設置行緩存數據寬度為指紋圖像的行寬度,就能夠對齊指紋圖像的三行像素,并在行緩存末端隨時鐘逐拍輸出對齊的三個像素[10]。

圖4 Sobel算子方差計算模塊結構圖
之后,以逐像素位移(shift-in)的方式通過乘加器(Multiply Accumulate,MAC)與兩個Sobel算子(圖3)中系數先相乘、后相加,得到每一行乘加結果(Mac_x0…x2、Mac_y0…y2)。最終,通過平行加法器(Parallel-Adder,PA)將3 行乘加結果相加得到卷積結果,即每一像素的一階梯度。
區域方向計算模塊(Direc_cal)的結構示意圖如圖5 所示,主要包括單點像素梯度方差計算邏輯(Pixel_Vx&Vy)、計數器0-2(cnt0、cnt1、cnt2),塊方差寄存器(Vx_reg0…N-1,Vy_reg0…N-1)以及反正切計算模塊(ATAN)。根據式(1)以及式(2),不妨令單點像素梯度方差為P_Vx、P_Vx,則得到:

圖5 區域方向計算模塊結構圖

由Sobel 算子模塊得出的Gx、Gy作為單點像素梯度方差計算邏輯(Pixel_Vx&Vy)的輸入信號,能夠得到P_Vx、P_Vy,從而完成式(6)以及式(7)的計算。
之后是對方差結果統計式(8)及(9)的實現,不妨設指紋圖像以W×W窗口劃分為M×N塊,確定出Vx、Vy寄存塊的數目為N-1 個,再逐拍將P_Vx、P_Vy通過加法器(Adder)累加至塊方差寄存器(Vx_reg0…N-1,Vy_reg0…N-1)中。同時,計數器0(cnt0)對P_Vx,P_Vy的輸出進行計數,每當計數至W-1 時,計數器0(cnt0)清零且計數器1(cnt1)加一,從而控制多路復用器(MUX)切換方差累加寄存器;每當計數器1(cnt1)計數至N-1 時,計數器1(cnt1)清零且計數器2(cnt2)加一;當計數器2(cnt2)計數至W-1,且計數器0(cnt0)計數至W-1 時,則完成了一塊區域的方差累加。每當完成一個塊內的方差統計累加,則使能以反正切計算模塊(ATAN)計算,得到塊角度(Direc)。其中,反正切計算模塊(ATAN)是基于坐標旋轉數字計算(Cordinate Rotation DIgital Computer,CORDIC)算法實現的[11-12],其輸出結果Direc 為11 bits 的有符號定點數,小數位為8 位。因此,在對應的輸出弧度范圍[-Π,Π]下,精度可以達到0.003 906 25。
所測試的對象為200×152像素的指紋,如圖6(a)所示。在分塊大小為8×8 像素的情況下,指紋圖像被分為25×19 個區域,故該模塊一共產生475 個數量的方向數據輸出,輸出的方向場數據如圖6(b)所示。可以看出,該方式提取出的方向場與原指紋圖像有著明顯的對應關系。通過Quartus Prime 對文中所述FPGA 模塊進行編譯綜合,并在Modelsim SE 下進行仿真,得到的模塊仿真輸出波形如圖7 所示。

圖6 測試指紋及其方向場

圖7 模塊仿真輸出波形
為測試指紋圖像采用不同區域分塊大小對生成方向場的影響,對模塊中分塊大小進行定義,分別以4×4、8×8、12×12 區域進行塊方向計算,得到圖8 所示的三個方向場。

圖8 不同分塊大小方向場
為對得到的指紋方向場的質量進行評估,引用一種方向場評價方法[13],其原理是依據自然指紋的方向場具有較強的局部連續性,而計算失準的方向場信息帶來的不規則噪聲會使局部連續性大幅降低。通過使用平滑濾波器對方向場進行平滑處理,得到局部連續性較好的方向場。因此,通過平滑前后方向場中方向改變的比例越多,則平滑前方向場的質量越差。文中所采用的濾波平滑方式如下:

通過式(10)以及式(11)將各個角度在W×W大小窗口內映射成橫、縱向投影φx、φy,通過式(12)及式(13)對角度投影進行濾波計算,最終將濾波后的投影根據式(14)通過反正切映射成方向角度。式(12)、(13)中所采用的濾波器為5×5 大小的高斯算子[14],如圖9 所示。

圖9 5×5高斯算子
分別對圖8 所示的三個方向場進行平滑處理,并統計其處理前后方向變化數目,得到平滑前后方向變化比例,如表1 所示。
由表1 可知,塊大小對于方向場有如下影響:在4×4 小分塊下進行分割得到的方向場雖然可以得到更多方向細節,且方向過渡更為平滑,特別是在指紋奇異點處,但是容易引入較多指紋原圖像產生的方向噪聲或毛刺,導致方向場質量不佳。而12×12 的較大區域分塊會丟失較多方向信息,并且在分塊邊界處引入了更大的方向突變,從而使方向場的局部方向連續性大幅降低。

表1 平滑前后方向變化結果表
另一種常用的方法是通過八方向掩膜對指紋進行方向場提取[15]。從實驗結果中列舉出5 組相同大小不同身份的指紋樣本,并將該模塊采用梯度法得到的結果與掩膜法所提取方向場進行對比評估,如表2 所示。

表2 梯度法與掩膜法對比結果表
文中提出了一種基于梯度法的指紋方向場的FPGA 實現方式,該方式能夠較好地提取出指紋紋線方向特性,且由于方向場是以區域塊的方式生成的,因此對于指紋圖像中部分像素產生的噪聲有較好的抑制作用,并且與傳統基于方向模板方向場生成方式[16]相比,生成的方向數據擁有更高的精度,從而能夠提取出更多奇異點方向特征信息,且生成的方向場更加平滑。該方案為后續指紋圖像處理提供了強堅固性的紋線方向特征信息,從而間接提高指紋識別系統的性能。