史 彥,夏興國
(馬鞍山職業技術學院 電氣工程系,安徽 馬鞍山 243000)
指紋識別是一種基于生物特征的身份認證技術。近年來,伴隨著嵌入式計算技術的迅速發展及其價格優勢的不斷提升,指紋識別應用日益廣泛,不僅可用于手機、筆記本電腦等各種數字設備,也應用于刑偵、IT、醫療、金融等眾多領域。這表明了指紋識別技術有著廣闊的發展空間,也對其提出了更高更新的要求。開發高效準確的指紋識別算法成為當前的研究熱點之一[1]。
為提高指紋識別的準確度和速度,提出一種指紋特征點判定的新思路:采取一種8 鄰域算法提取指紋的特征點,再建立數學模型,完成指紋圖像的二值化和細化,并去除偽特征點。采用MATLAB軟件,選擇斗形紋、箕形紋、弓形紋、雙龍紋等四種指紋進行仿真分析,以檢驗算法的可行性,為提升指紋識別的準確性與可靠性奠定基礎[2]。
指紋是手指末端皮膚上不平整所形成的紋路,這種紋路被稱為“脊”和“谷”。雖然指紋很小,但是其中包含的特征信息量很大,指紋特征是指紋識別的依據。指紋的局部特征也稱細節點,按美國標準化組織分類標準,分為脊末梢、分岔點、復合特征和未定義四種。由于人的指紋細節點穩定而不同,所以利用指紋就可識別不同的人。根據指紋細節點進行模型匹配是目前最常用的指紋識別法,分為脊末梢識別和分支點識別兩種[3]。
圖1 給出了一種以點模式匹配為基礎的自動指紋識別系統(Automatic Framework Identification System,AFIS)的基本流程。

圖1 指紋識別系統組成及流程
首先,由指紋采集裝置將指紋轉換成數字圖像,一般為一幅灰度圖。在進行數據采集時,由于手指按壓的力度不同,或手指、采集儀器上有污垢等,難免引起圖像數據噪音。其次,為使圖像更清晰,便于進行特征提取,需要對采集的圖像過濾和增強,并進行二值化和細化處理。在此基礎上,再對圖像進行特征提取,剔除偽特征值,得到可用于匹配的細節點。最后,將提取的特征點和模板中的特征點進行比對,完成最終的指紋匹配和識別[4]。
人類的遺傳基因決定了指紋的復雜性和唯一性,雖然沒有完全相同的兩枚指紋,但指紋形狀還是有相似性,可分為四類。為便于進行指紋圖像處理,采集斗型紋、箕型紋、弓型紋和雙龍紋四種類型的指紋圖像如圖2 所示。

圖2 指紋類型
為確保正確、高效地獲取指紋原圖特征,需進行指紋圖像預處理。指紋圖像預處理是指紋特征提取和精準匹配的前提,其處理結果直接影響識別的最終效果。
對采集的指紋圖像進行預處理,主要是增強指紋中山脊和山谷之間的對比度,去除指紋中的點狀斷裂和指紋叉的連接現象,刪除偽特征點,以改善原始指紋圖像質量,得到清晰的指紋點狀圖,獲取新指紋圖像。指紋圖像預處理過程如圖3。

圖3 指紋圖像預處理過程
2.2.1 歸一化處理
在獲取和加工指紋時,由于圖像的灰度不均勻,難以建立一個統一高效的識別體系,給后續的圖像處理與分析帶來困擾。歸一化處理就是將兩幅原圖進行對比度和灰度調節,使其達到相同的級別,為后續處理打下基礎[5]。具體實施方法是:
設N×N 為整幅灰度圖像尺寸,M 為其平均值,設置方差為V,由公式
得到規格化公式(2),再由式(2)進行歸一化處理。
式(2)中,i,j 是節點編號,M0是預期均值,V0是預期方差,Mi是每個指紋實際使用的均值,Vi是每個指紋實際使用情況的方差。
2.2.2 圖像分割
因為指紋圖像背景的灰色區域和指紋區域的方差不同,所以可結合平均值方差算法分割指紋圖像。首先將圖像進行分塊,再對分割的每個指紋塊進行方差計算,分割出指紋前景和背景,然后對分割出的前景圖像進行處理[6]。具體步驟如下:
1)設置M 為閾值,將圖像分割為N×N 塊。
2)設置N=40,計算每個圖像塊的平均值,
在式(3)中,Ave 是每部分的平均值,f(x0,y0)是圖像各點的灰度。
3)若N≥M,則將該塊選作背景,否則為前景,再將方差不為0 的區域進行分割。
2.2.3 方向濾波增強處理
對指紋圖像進行濾波的方法分為兩類:一類是在空間域上進行增強,即直接對圖像上各像素點進行處理,常用方法有方向加權中值濾波、基于規則的圖像增強、基于模糊邏輯的圖像增強以及Gabor 等;另一類是在頻率域上進行增強,常用方法有小波變換和Fourier 變換。為了對分割后的指紋圖像進行濾波增強,可采用改進的基于空間域的均值分離濾波器方法。此方法比其他方法速度更快,復雜度更低,且可更加高效地填充空洞和斷紋。由于均值分離器僅對某一局部進行增強,因此,在進行方向濾波時,需要對圖像進行分塊濾波處理。分塊尺寸取決于圖像大小,其目標是保證各子塊的紋線方向基本平行[7]。各子模塊的過濾處理過程如下:
1)計算子模塊方向。常用的方向場計算法有掩模法和公式法兩種。在此采用公式法,即基于最小均方估算法,表示為公式(4)和(5)。
其中,?x(i,j),?y(i,j)是各像素梯度的橫坐標和縱坐標,可用sobel 算子求取;γx和γy是各個塊的方向。
采用MATLAB 中的函數fspecial(′sobel′)和imfilter(I,h)求取像素梯度。
2)設計相應的濾波器。為獲得較好的增強效果,經試驗,選取7 ×7 的均值分離濾波器模板,獲得其水平方向濾波器為:
非水平方向可通過模板旋轉得到,二次線性插值法是獲取濾波器最理想的方法。
3)采用imfilter(I,h)函數實現濾波器對該塊的增強。
4)進行歸一化。如果濾波后的像素灰度是非整數,或不在(0,255)范圍內,則對其進行歸一化處理。
2.2.4 二值化處理
將上述濾波后的圖像進行二值化處理。先將圖像分為A,B 兩種像素,再設置閾值T。根據公式(6)進行二值化。
式(6)中,“1”是目標,“0”是背景。再根據全局Q 參數法提取指紋輪廓,步驟如下:
1)設指紋圖像的脊線占整幅圖像的比例為Q,灰度分布為Qk(k=0,1,2,…,255),有
式(7)中,Nobject為脊線的像素點總個數。
式(8)中,Nimage為指紋圖像總像素點個數。
2)計算Qk(k=0,1,2,…,255),
3)計算Ma和Mb,
式(10)(11)中,Na、Nb分別為A、B 的像素。A 和B之間的方差為:
4)A、B 方差以0~255 為周期進行計算。T 為最有效的分割閾值,當方差最大時,對指紋圖像進行二值化,取
2.2.5 細化處理
經二值化處理的指紋圖像線條仍具有一定寬度,且像素較多,不能準確尋找特征點,會影響后續匹配,故還需要進行精細處理。對細化處理后的指紋線條減少像素寬度,可有效減少計算量,提高速度[8]。
細化處理是在不改變紋線連通性的前提下去除指紋線條的邊界點,直至線條寬度為單個像素。細化后的圖像既以紋線骨架為中心,又不影響收斂性和快速性。綜合已有算法,提出一種改進的細化方法,以獲取較理想的細化圖像,步驟如下。
1)獲取初步細化圖像。由于原始圖像很多線條特別是三叉處線條寬度均為非單線條,需要加以細化,給后續建立細節特征模板打基礎。
2)在初圖基礎上進行細化,方法如下:
(1)如圖4 所示,從最上方的像素點開始順時針方向對每個像素進行8 鄰域編碼。

圖4 像素8 鄰域編碼
(2)紋線上一般有三種情況:一是端點情況,在8 鄰域內有1 次像素點值改變;二是連續像素點情況,在8 鄰域內有2 次像素點值改變;三是三叉點情況,在8 鄰域內有3 次像素點值改變。在第二種情況下,若8 鄰域不在四個角上,兩個目標像素間隔了一個非目標像素,則定義此點為非目標像素點。在第三種情況下,滿足(P2+P4+P6==3‖P4+P6+P8==3‖P6+P8+P2==3)時,要刪除這一像素點,有四種情況需要再次細化處理,如圖5 所示。

圖5 需要再次細化的情況
通過局部特征更能分辨兩枚指紋是否來自同一人,所以需提取局部特征點。通常情況下,提取特征點的方法有兩種,一是在經過灰度處理后的圖像中直接提取特征點,二是在經二值化及細化處理的圖像中提取特征點[9]。前者可避免復雜的圖像預處理過程,但對原始圖像要求極高,而實際難以得到極為清晰的原始圖像,因此不常用。反之,后者盡管前期的預處理復雜些,但得到的特征點會更加準確,更適用于指紋局部特征點的提取。
經預處理的圖像仍存在大量偽特征點,大部分分布在圖像邊緣。這些圖像經預處理后,仍具有許多經典影像的特性及不足。由于偽特征點十分接近,且在很小區域內存在多個偽特征點,因此主要通過計算特征點距離去除偽特征點,設點P1和P2的距離為D(P1,P2),
偽特征點可劃分為兩類,即位于圖像邊緣和圖像內部的偽特征點。前者是由于截斷圖像產生不連續點造成的,后者是由于采集指紋時手指的汗漬、疤痕和按壓輕重不同等各種噪聲影響而產生的,表現為部分紋線的不正常連接、斷裂等。大量的偽特征點會對下一步的匹配算法產生很大影響。對初選出的特征點,計算其與邊界的距離,當距離小于預先設定的閾值時(這里取值36),則認為該特征點不可靠,從指紋特征中刪除該點記錄[10]。
為了在二值化及細化后的圖像中提取特征點,建立3×3 模板,對中間點P 及周圍的8 鄰域像素點計數,8 個鄰域像素點的灰度值從0~1 或從1~0 的次數記為Cn(P),
式中,P9=P1,8 個鄰域像素點中灰度值為1 的像素點個數為Sn(P),
針對像素點P 的不同狀態計算Cn(P)和Sn(P),通常可分為端點、連續點和分叉點。判斷所有的端點與分叉點,得到檢測結果,完成特征點的提取。
指紋采集時,手指按壓時的位置、方向和力度不同,會導致同一手指的兩幅樣本指紋圖像形變,不易成功識別,需通過指紋特征模板匹配算法解決。指紋特征模板匹配是將提取的指紋特征點和已建立的數據庫的某一指紋特征點集合進行比較,判斷兩者的相似程度。一般用代價函數或匹配能量表示相似度。設置合適的相似度閾值可以判斷兩個指紋特征是否來自同一手指[11]。
將MATLAB 作為仿真平臺,對指紋庫中200幅指紋圖像進行預處理,并進行特征提取,處理過程和實驗結果如圖6 所示。

圖6 指紋特征提取處理過程與結果
圖6 中:a)是原圖像歸一化結果;b)是圖像分割結果,其區分了前景和背景;c)是經濾波和增強的效果;再進行二值化得到d);細化后得到e)。由e)可見,經預處理后,原始指紋轉換成了線圖指紋,圖像的主要輪廓得到了保留。特征點存在于線圖中,去除大量虛假特征點,得到提取結果如f)。
仿真結果表明,被處理的指紋圖像中,92 %可獲得良好的效果。
根據指紋識別過程和指紋的整體結構特征,采用模板匹配分類器將指紋分別歸屬至不同的預設類別,再進行指紋匹配。設計實現步驟如下:
1)找出指紋圖像中的全部端點及交叉點,并用坐標表示圖像中各像素點的8 個相鄰位置。在此基礎上,從圖像中任意選擇一個端點,在8 個鄰域按順序進行兩兩相減,計算絕對值并求和,以判斷此點為端點或交叉點。
2)去除毛刺。找到指紋圖像的端點,沿指紋紋線的方向向上進行5 個像素的位移,若在移動中出現交叉點,就可視為毛刺,將其去除。
3)刪除位于該圖像邊緣上的端點。
4)找出并提取指紋圖像的特征點。
5)進行指紋匹配。若兩張指紋圖像中的端點或交叉點數量占比大致相同,則認定為匹配成功,否則提示來自不同的手指[12]。
建立MATLAB GUI 界面,用改進算法對指紋庫中的指紋圖像進行訓練,并與傳統算法進行比較,結果如表1 所示。由表1 可見,改進算法的識別精度達99 %,與傳統的特征點不去偽提取算法相比,識別率更高,運行時間更短。大量的測試表明,改進算法可快速準確地對指紋進行識別。

表1 改進算法與傳統算法比較結果
指紋識別技術應用于刑事偵查等比較特殊的高端領域時,往往要處理一些質量較差的指紋圖像,傳統識別算法無法滿足其應用要求,需要改進識別算法以改善所采集的指紋圖像質量。在對全局特征和局部特征進行詳盡描述的基礎上,提出用改進的鄰域算法提取指紋圖像特征點,并消除偽特征點。通過MATLAB 軟件對斗型、箕型、弓型及雙龍型等四種不同類型的指紋進行仿真研究,結果表明,改進的指紋識別算法可減少后期匹配工作量,降低識別錯誤率,方法可行,效果達到預期。