史 彥,夏興國(guó)
(馬鞍山職業(yè)技術(shù)學(xué)院 電氣工程系,安徽 馬鞍山 243000)
指紋識(shí)別是一種基于生物特征的身份認(rèn)證技術(shù)。近年來(lái),伴隨著嵌入式計(jì)算技術(shù)的迅速發(fā)展及其價(jià)格優(yōu)勢(shì)的不斷提升,指紋識(shí)別應(yīng)用日益廣泛,不僅可用于手機(jī)、筆記本電腦等各種數(shù)字設(shè)備,也應(yīng)用于刑偵、IT、醫(yī)療、金融等眾多領(lǐng)域。這表明了指紋識(shí)別技術(shù)有著廣闊的發(fā)展空間,也對(duì)其提出了更高更新的要求。開(kāi)發(fā)高效準(zhǔn)確的指紋識(shí)別算法成為當(dāng)前的研究熱點(diǎn)之一[1]。
為提高指紋識(shí)別的準(zhǔn)確度和速度,提出一種指紋特征點(diǎn)判定的新思路:采取一種8 鄰域算法提取指紋的特征點(diǎn),再建立數(shù)學(xué)模型,完成指紋圖像的二值化和細(xì)化,并去除偽特征點(diǎn)。采用MATLAB軟件,選擇斗形紋、箕形紋、弓形紋、雙龍紋等四種指紋進(jìn)行仿真分析,以檢驗(yàn)算法的可行性,為提升指紋識(shí)別的準(zhǔn)確性與可靠性奠定基礎(chǔ)[2]。
指紋是手指末端皮膚上不平整所形成的紋路,這種紋路被稱(chēng)為“脊”和“谷”。雖然指紋很小,但是其中包含的特征信息量很大,指紋特征是指紋識(shí)別的依據(jù)。指紋的局部特征也稱(chēng)細(xì)節(jié)點(diǎn),按美國(guó)標(biāo)準(zhǔn)化組織分類(lèi)標(biāo)準(zhǔn),分為脊末梢、分岔點(diǎn)、復(fù)合特征和未定義四種。由于人的指紋細(xì)節(jié)點(diǎn)穩(wěn)定而不同,所以利用指紋就可識(shí)別不同的人。根據(jù)指紋細(xì)節(jié)點(diǎn)進(jìn)行模型匹配是目前最常用的指紋識(shí)別法,分為脊末梢識(shí)別和分支點(diǎn)識(shí)別兩種[3]。
圖1 給出了一種以點(diǎn)模式匹配為基礎(chǔ)的自動(dòng)指紋識(shí)別系統(tǒng)(Automatic Framework Identification System,AFIS)的基本流程。
圖1 指紋識(shí)別系統(tǒng)組成及流程
首先,由指紋采集裝置將指紋轉(zhuǎn)換成數(shù)字圖像,一般為一幅灰度圖。在進(jìn)行數(shù)據(jù)采集時(shí),由于手指按壓的力度不同,或手指、采集儀器上有污垢等,難免引起圖像數(shù)據(jù)噪音。其次,為使圖像更清晰,便于進(jìn)行特征提取,需要對(duì)采集的圖像過(guò)濾和增強(qiáng),并進(jìn)行二值化和細(xì)化處理。在此基礎(chǔ)上,再對(duì)圖像進(jìn)行特征提取,剔除偽特征值,得到可用于匹配的細(xì)節(jié)點(diǎn)。最后,將提取的特征點(diǎn)和模板中的特征點(diǎn)進(jìn)行比對(duì),完成最終的指紋匹配和識(shí)別[4]。
人類(lèi)的遺傳基因決定了指紋的復(fù)雜性和唯一性,雖然沒(méi)有完全相同的兩枚指紋,但指紋形狀還是有相似性,可分為四類(lèi)。為便于進(jìn)行指紋圖像處理,采集斗型紋、箕型紋、弓型紋和雙龍紋四種類(lèi)型的指紋圖像如圖2 所示。
圖2 指紋類(lèi)型
為確保正確、高效地獲取指紋原圖特征,需進(jìn)行指紋圖像預(yù)處理。指紋圖像預(yù)處理是指紋特征提取和精準(zhǔn)匹配的前提,其處理結(jié)果直接影響識(shí)別的最終效果。
對(duì)采集的指紋圖像進(jìn)行預(yù)處理,主要是增強(qiáng)指紋中山脊和山谷之間的對(duì)比度,去除指紋中的點(diǎn)狀斷裂和指紋叉的連接現(xiàn)象,刪除偽特征點(diǎn),以改善原始指紋圖像質(zhì)量,得到清晰的指紋點(diǎn)狀圖,獲取新指紋圖像。指紋圖像預(yù)處理過(guò)程如圖3。
圖3 指紋圖像預(yù)處理過(guò)程
2.2.1 歸一化處理
在獲取和加工指紋時(shí),由于圖像的灰度不均勻,難以建立一個(gè)統(tǒng)一高效的識(shí)別體系,給后續(xù)的圖像處理與分析帶來(lái)困擾。歸一化處理就是將兩幅原圖進(jìn)行對(duì)比度和灰度調(diào)節(jié),使其達(dá)到相同的級(jí)別,為后續(xù)處理打下基礎(chǔ)[5]。具體實(shí)施方法是:
設(shè)N×N 為整幅灰度圖像尺寸,M 為其平均值,設(shè)置方差為V,由公式
得到規(guī)格化公式(2),再由式(2)進(jìn)行歸一化處理。
式(2)中,i,j 是節(jié)點(diǎn)編號(hào),M0是預(yù)期均值,V0是預(yù)期方差,Mi是每個(gè)指紋實(shí)際使用的均值,Vi是每個(gè)指紋實(shí)際使用情況的方差。
2.2.2 圖像分割
因?yàn)橹讣y圖像背景的灰色區(qū)域和指紋區(qū)域的方差不同,所以可結(jié)合平均值方差算法分割指紋圖像。首先將圖像進(jìn)行分塊,再對(duì)分割的每個(gè)指紋塊進(jìn)行方差計(jì)算,分割出指紋前景和背景,然后對(duì)分割出的前景圖像進(jìn)行處理[6]。具體步驟如下:
1)設(shè)置M 為閾值,將圖像分割為N×N 塊。
2)設(shè)置N=40,計(jì)算每個(gè)圖像塊的平均值,
在式(3)中,Ave 是每部分的平均值,f(x0,y0)是圖像各點(diǎn)的灰度。
3)若N≥M,則將該塊選作背景,否則為前景,再將方差不為0 的區(qū)域進(jìn)行分割。
2.2.3 方向?yàn)V波增強(qiáng)處理
對(duì)指紋圖像進(jìn)行濾波的方法分為兩類(lèi):一類(lèi)是在空間域上進(jìn)行增強(qiáng),即直接對(duì)圖像上各像素點(diǎn)進(jìn)行處理,常用方法有方向加權(quán)中值濾波、基于規(guī)則的圖像增強(qiáng)、基于模糊邏輯的圖像增強(qiáng)以及Gabor 等;另一類(lèi)是在頻率域上進(jìn)行增強(qiáng),常用方法有小波變換和Fourier 變換。為了對(duì)分割后的指紋圖像進(jìn)行濾波增強(qiáng),可采用改進(jìn)的基于空間域的均值分離濾波器方法。此方法比其他方法速度更快,復(fù)雜度更低,且可更加高效地填充空洞和斷紋。由于均值分離器僅對(duì)某一局部進(jìn)行增強(qiáng),因此,在進(jìn)行方向?yàn)V波時(shí),需要對(duì)圖像進(jìn)行分塊濾波處理。分塊尺寸取決于圖像大小,其目標(biāo)是保證各子塊的紋線(xiàn)方向基本平行[7]。各子模塊的過(guò)濾處理過(guò)程如下:
1)計(jì)算子模塊方向。常用的方向場(chǎng)計(jì)算法有掩模法和公式法兩種。在此采用公式法,即基于最小均方估算法,表示為公式(4)和(5)。
其中,?x(i,j),?y(i,j)是各像素梯度的橫坐標(biāo)和縱坐標(biāo),可用sobel 算子求??;γx和γy是各個(gè)塊的方向。
采用MATLAB 中的函數(shù)fspecial(′sobel′)和imfilter(I,h)求取像素梯度。
2)設(shè)計(jì)相應(yīng)的濾波器。為獲得較好的增強(qiáng)效果,經(jīng)試驗(yàn),選取7 ×7 的均值分離濾波器模板,獲得其水平方向?yàn)V波器為:
非水平方向可通過(guò)模板旋轉(zhuǎn)得到,二次線(xiàn)性插值法是獲取濾波器最理想的方法。
3)采用imfilter(I,h)函數(shù)實(shí)現(xiàn)濾波器對(duì)該塊的增強(qiáng)。
4)進(jìn)行歸一化。如果濾波后的像素灰度是非整數(shù),或不在(0,255)范圍內(nèi),則對(duì)其進(jìn)行歸一化處理。
2.2.4 二值化處理
將上述濾波后的圖像進(jìn)行二值化處理。先將圖像分為A,B 兩種像素,再設(shè)置閾值T。根據(jù)公式(6)進(jìn)行二值化。
式(6)中,“1”是目標(biāo),“0”是背景。再根據(jù)全局Q 參數(shù)法提取指紋輪廓,步驟如下:
1)設(shè)指紋圖像的脊線(xiàn)占整幅圖像的比例為Q,灰度分布為Qk(k=0,1,2,…,255),有
式(7)中,Nobject為脊線(xiàn)的像素點(diǎn)總個(gè)數(shù)。
式(8)中,Nimage為指紋圖像總像素點(diǎn)個(gè)數(shù)。
2)計(jì)算Qk(k=0,1,2,…,255),
3)計(jì)算Ma和Mb,
式(10)(11)中,Na、Nb分別為A、B 的像素。A 和B之間的方差為:
4)A、B 方差以0~255 為周期進(jìn)行計(jì)算。T 為最有效的分割閾值,當(dāng)方差最大時(shí),對(duì)指紋圖像進(jìn)行二值化,取
2.2.5 細(xì)化處理
經(jīng)二值化處理的指紋圖像線(xiàn)條仍具有一定寬度,且像素較多,不能準(zhǔn)確尋找特征點(diǎn),會(huì)影響后續(xù)匹配,故還需要進(jìn)行精細(xì)處理。對(duì)細(xì)化處理后的指紋線(xiàn)條減少像素寬度,可有效減少計(jì)算量,提高速度[8]。
細(xì)化處理是在不改變紋線(xiàn)連通性的前提下去除指紋線(xiàn)條的邊界點(diǎn),直至線(xiàn)條寬度為單個(gè)像素。細(xì)化后的圖像既以紋線(xiàn)骨架為中心,又不影響收斂性和快速性。綜合已有算法,提出一種改進(jìn)的細(xì)化方法,以獲取較理想的細(xì)化圖像,步驟如下。
1)獲取初步細(xì)化圖像。由于原始圖像很多線(xiàn)條特別是三叉處線(xiàn)條寬度均為非單線(xiàn)條,需要加以細(xì)化,給后續(xù)建立細(xì)節(jié)特征模板打基礎(chǔ)。
2)在初圖基礎(chǔ)上進(jìn)行細(xì)化,方法如下:
(1)如圖4 所示,從最上方的像素點(diǎn)開(kāi)始順時(shí)針?lè)较驅(qū)γ總€(gè)像素進(jìn)行8 鄰域編碼。
圖4 像素8 鄰域編碼
(2)紋線(xiàn)上一般有三種情況:一是端點(diǎn)情況,在8 鄰域內(nèi)有1 次像素點(diǎn)值改變;二是連續(xù)像素點(diǎn)情況,在8 鄰域內(nèi)有2 次像素點(diǎn)值改變;三是三叉點(diǎn)情況,在8 鄰域內(nèi)有3 次像素點(diǎn)值改變。在第二種情況下,若8 鄰域不在四個(gè)角上,兩個(gè)目標(biāo)像素間隔了一個(gè)非目標(biāo)像素,則定義此點(diǎn)為非目標(biāo)像素點(diǎn)。在第三種情況下,滿(mǎn)足(P2+P4+P6==3‖P4+P6+P8==3‖P6+P8+P2==3)時(shí),要?jiǎng)h除這一像素點(diǎn),有四種情況需要再次細(xì)化處理,如圖5 所示。
圖5 需要再次細(xì)化的情況
通過(guò)局部特征更能分辨兩枚指紋是否來(lái)自同一人,所以需提取局部特征點(diǎn)。通常情況下,提取特征點(diǎn)的方法有兩種,一是在經(jīng)過(guò)灰度處理后的圖像中直接提取特征點(diǎn),二是在經(jīng)二值化及細(xì)化處理的圖像中提取特征點(diǎn)[9]。前者可避免復(fù)雜的圖像預(yù)處理過(guò)程,但對(duì)原始圖像要求極高,而實(shí)際難以得到極為清晰的原始圖像,因此不常用。反之,后者盡管前期的預(yù)處理復(fù)雜些,但得到的特征點(diǎn)會(huì)更加準(zhǔn)確,更適用于指紋局部特征點(diǎn)的提取。
經(jīng)預(yù)處理的圖像仍存在大量偽特征點(diǎn),大部分分布在圖像邊緣。這些圖像經(jīng)預(yù)處理后,仍具有許多經(jīng)典影像的特性及不足。由于偽特征點(diǎn)十分接近,且在很小區(qū)域內(nèi)存在多個(gè)偽特征點(diǎn),因此主要通過(guò)計(jì)算特征點(diǎn)距離去除偽特征點(diǎn),設(shè)點(diǎn)P1和P2的距離為D(P1,P2),
偽特征點(diǎn)可劃分為兩類(lèi),即位于圖像邊緣和圖像內(nèi)部的偽特征點(diǎn)。前者是由于截?cái)鄨D像產(chǎn)生不連續(xù)點(diǎn)造成的,后者是由于采集指紋時(shí)手指的汗?jié)n、疤痕和按壓輕重不同等各種噪聲影響而產(chǎn)生的,表現(xiàn)為部分紋線(xiàn)的不正常連接、斷裂等。大量的偽特征點(diǎn)會(huì)對(duì)下一步的匹配算法產(chǎn)生很大影響。對(duì)初選出的特征點(diǎn),計(jì)算其與邊界的距離,當(dāng)距離小于預(yù)先設(shè)定的閾值時(shí)(這里取值36),則認(rèn)為該特征點(diǎn)不可靠,從指紋特征中刪除該點(diǎn)記錄[10]。
為了在二值化及細(xì)化后的圖像中提取特征點(diǎn),建立3×3 模板,對(duì)中間點(diǎn)P 及周?chē)? 鄰域像素點(diǎn)計(jì)數(shù),8 個(gè)鄰域像素點(diǎn)的灰度值從0~1 或從1~0 的次數(shù)記為Cn(P),
式中,P9=P1,8 個(gè)鄰域像素點(diǎn)中灰度值為1 的像素點(diǎn)個(gè)數(shù)為Sn(P),
針對(duì)像素點(diǎn)P 的不同狀態(tài)計(jì)算Cn(P)和Sn(P),通??煞譃槎它c(diǎn)、連續(xù)點(diǎn)和分叉點(diǎn)。判斷所有的端點(diǎn)與分叉點(diǎn),得到檢測(cè)結(jié)果,完成特征點(diǎn)的提取。
指紋采集時(shí),手指按壓時(shí)的位置、方向和力度不同,會(huì)導(dǎo)致同一手指的兩幅樣本指紋圖像形變,不易成功識(shí)別,需通過(guò)指紋特征模板匹配算法解決。指紋特征模板匹配是將提取的指紋特征點(diǎn)和已建立的數(shù)據(jù)庫(kù)的某一指紋特征點(diǎn)集合進(jìn)行比較,判斷兩者的相似程度。一般用代價(jià)函數(shù)或匹配能量表示相似度。設(shè)置合適的相似度閾值可以判斷兩個(gè)指紋特征是否來(lái)自同一手指[11]。
將MATLAB 作為仿真平臺(tái),對(duì)指紋庫(kù)中200幅指紋圖像進(jìn)行預(yù)處理,并進(jìn)行特征提取,處理過(guò)程和實(shí)驗(yàn)結(jié)果如圖6 所示。
圖6 指紋特征提取處理過(guò)程與結(jié)果
圖6 中:a)是原圖像歸一化結(jié)果;b)是圖像分割結(jié)果,其區(qū)分了前景和背景;c)是經(jīng)濾波和增強(qiáng)的效果;再進(jìn)行二值化得到d);細(xì)化后得到e)。由e)可見(jiàn),經(jīng)預(yù)處理后,原始指紋轉(zhuǎn)換成了線(xiàn)圖指紋,圖像的主要輪廓得到了保留。特征點(diǎn)存在于線(xiàn)圖中,去除大量虛假特征點(diǎn),得到提取結(jié)果如f)。
仿真結(jié)果表明,被處理的指紋圖像中,92 %可獲得良好的效果。
根據(jù)指紋識(shí)別過(guò)程和指紋的整體結(jié)構(gòu)特征,采用模板匹配分類(lèi)器將指紋分別歸屬至不同的預(yù)設(shè)類(lèi)別,再進(jìn)行指紋匹配。設(shè)計(jì)實(shí)現(xiàn)步驟如下:
1)找出指紋圖像中的全部端點(diǎn)及交叉點(diǎn),并用坐標(biāo)表示圖像中各像素點(diǎn)的8 個(gè)相鄰位置。在此基礎(chǔ)上,從圖像中任意選擇一個(gè)端點(diǎn),在8 個(gè)鄰域按順序進(jìn)行兩兩相減,計(jì)算絕對(duì)值并求和,以判斷此點(diǎn)為端點(diǎn)或交叉點(diǎn)。
2)去除毛刺。找到指紋圖像的端點(diǎn),沿指紋紋線(xiàn)的方向向上進(jìn)行5 個(gè)像素的位移,若在移動(dòng)中出現(xiàn)交叉點(diǎn),就可視為毛刺,將其去除。
3)刪除位于該圖像邊緣上的端點(diǎn)。
4)找出并提取指紋圖像的特征點(diǎn)。
5)進(jìn)行指紋匹配。若兩張指紋圖像中的端點(diǎn)或交叉點(diǎn)數(shù)量占比大致相同,則認(rèn)定為匹配成功,否則提示來(lái)自不同的手指[12]。
建立MATLAB GUI 界面,用改進(jìn)算法對(duì)指紋庫(kù)中的指紋圖像進(jìn)行訓(xùn)練,并與傳統(tǒng)算法進(jìn)行比較,結(jié)果如表1 所示。由表1 可見(jiàn),改進(jìn)算法的識(shí)別精度達(dá)99 %,與傳統(tǒng)的特征點(diǎn)不去偽提取算法相比,識(shí)別率更高,運(yùn)行時(shí)間更短。大量的測(cè)試表明,改進(jìn)算法可快速準(zhǔn)確地對(duì)指紋進(jìn)行識(shí)別。
表1 改進(jìn)算法與傳統(tǒng)算法比較結(jié)果
指紋識(shí)別技術(shù)應(yīng)用于刑事偵查等比較特殊的高端領(lǐng)域時(shí),往往要處理一些質(zhì)量較差的指紋圖像,傳統(tǒng)識(shí)別算法無(wú)法滿(mǎn)足其應(yīng)用要求,需要改進(jìn)識(shí)別算法以改善所采集的指紋圖像質(zhì)量。在對(duì)全局特征和局部特征進(jìn)行詳盡描述的基礎(chǔ)上,提出用改進(jìn)的鄰域算法提取指紋圖像特征點(diǎn),并消除偽特征點(diǎn)。通過(guò)MATLAB 軟件對(duì)斗型、箕型、弓型及雙龍型等四種不同類(lèi)型的指紋進(jìn)行仿真研究,結(jié)果表明,改進(jìn)的指紋識(shí)別算法可減少后期匹配工作量,降低識(shí)別錯(cuò)誤率,方法可行,效果達(dá)到預(yù)期。