王科俊,丁欣楠
(哈爾濱工程大學 自動化學院,哈爾濱 150001)
基于Android平臺的非接觸指紋識別研究
王科俊,丁欣楠
(哈爾濱工程大學 自動化學院,哈爾濱 150001)
提出一種利用手機攝像頭獲取指紋在Android平臺中進行實時指紋識別的方法。采用多尺度Harris角點檢測和ORB圖像匹配算法進行特征提取與匹配,并運用Android開發(fā)工具和OpenCV對其技術(shù)實現(xiàn),最后分別在不同的Android移動設(shè)備上進行實驗和測試。實驗結(jié)果表明此方法能夠在Android平臺上進行實時的指紋圖像的采集、注冊與識別,具有較高的識別率和穩(wěn)定性,基本滿足移動平臺非接觸式指紋識別的需求。
指紋識別; Harris角點檢測; ORB匹配; Android平臺
隨著智能手機市場的發(fā)展和性能的提升,移動互聯(lián)網(wǎng)技術(shù)的大規(guī)模普及,移動支付、手機付款方式的流行,迫切需要一種更加方便而且有效的身份認證技術(shù)來保證手機用戶的移動支付安全和信息安全。接觸式指紋識別已在部分高檔智能手機(華為、蘋果、三星等)中被廣泛使用,有效提高了手機信息的安全性,但是接觸式指紋識別需要在手上安裝專用指紋傳感器,這不僅增加了手機成本,同時還存在接觸面積小,指紋圖像畸變,不衛(wèi)生等問題。非接觸(通過攝像機或者其他非接觸式采集元件)指紋識別技術(shù)是近幾年興起的生物特征識別技術(shù)之一,克服了傳統(tǒng)的指紋識別技術(shù)在指紋獲取方式上存在的缺陷,具備宜采集和宜接受等優(yōu)點,具有很大的應(yīng)用前景和研究價值。同時現(xiàn)今移動平臺中所占比例最大的智能手機幾乎全帶有攝像頭,這使在移動平臺上開發(fā)的非接觸指紋識別技術(shù)具有先天的優(yōu)勢,具有更廣闊的應(yīng)用前景。據(jù)了解,2015年三星公司非接觸指紋識別技術(shù)已得到美國專利局的認可,用戶只需要將手指放至移動設(shè)備的攝像頭前,該設(shè)備會自動從內(nèi)存中搜尋匹配的指紋圖像,完成身份識別與認證。
目前針對非接觸指紋識別的研究多是利用多個攝像頭采集手指指紋的3D指紋圖像,再展開為等效的2D手指指紋圖像進行識別,以解決旋轉(zhuǎn)變形等問題。李永等[1]使用基于聚類的Dynamic-score-selection算法將2D指紋圖像進行融合,提升系統(tǒng)的性能。Labati等[2]通過利用兩視圖結(jié)構(gòu)光學的方法對指尖進行重構(gòu)并獲得3D圖像,然后將其展開成平面圖像完成指紋圖象識別。但是這類方法通常需要多個攝像頭,且算法復雜,成本較高,故應(yīng)用范圍有限。針對這個缺陷,梁小龍等[3]提出利用2D指紋圖像模型重構(gòu)出3D指紋圖像模型的方法,以指紋脊線為信息,利用包括脊線和細節(jié)點特征的指紋模型進行重構(gòu)。在此基礎(chǔ)上,Zhang等[4]和 Kono等[5]重構(gòu)出3D指紋圖像的結(jié)構(gòu)信息,并用其進行識別。另外,非接觸指紋采集方式的研究也取得了很大的進展。自2004年起,韓國Yonsei University進行非接觸指紋采集設(shè)備的研究[6],現(xiàn)已制作出多款采集設(shè)備,但距離實際應(yīng)用仍有較大差距。
本文研究使用手機自帶的攝像頭實現(xiàn)非接觸指紋識別技術(shù),為普通智能手機的信息安全提供有效手段,提出了一種多尺度的Harris角點檢測算法用于非接觸指紋識別的特征提取過程中,彌補Harris角點算法無尺度信息的不足,以適應(yīng)手機拍攝指紋圖像時分辨率的變化,提高識別率與可靠性。同時在Android移動平臺上實現(xiàn)非接觸指紋識別過程。利用手機攝像頭進行指紋圖像采集,運用OTSU[7]算法完成手指指尖的前背景分割,多尺度Harris角點檢測算法用于特征提取,最后通過ORB進行指紋匹配識別。實驗結(jié)果表明此方法具有較高的識別率和實時性,能夠基本滿足移動平臺非接觸式指紋識別的需求。
1.1 Harris角點提取算法
Harris角點是指某一塊圖像沿每一個方向移動時,變化快速的點。通過局部自相關(guān)函數(shù),計算出某一塊圖像在每一個方向移動時的變化,自相關(guān)性較大的點即為Harris角點。其原理是取以目標像素點為原點的一個小的矩形區(qū)域的窗口向任意方向以較小的位移來移動,用解析表達式表征它的灰度變化量。Harris算子用式(1)的高斯函數(shù)代替二值窗口函數(shù),將離中心位置點較近的像素賦予更大的權(quán)重,進而減小噪聲的影響。
(1)
設(shè)以某一個像素點(x,y)為中心位置的小區(qū)域在x方向上移動u,在y方向上移動v,則Harris給出的灰度變化量的解析表達式為:
(2)
寫成矩陣形式為:
(3)
其中,Ix表示x方向的梯度,Iy表示y方向的梯度,矩陣M的特征值是自相關(guān)函數(shù)的一階曲率。Harris利用I1和I2來表示變化最快和最慢的兩個方向。如果兩者都非常大就是角點,一大一小就是邊緣,兩者都非常小即為圖像區(qū)域。矩陣兩個特征值的和與矩陣M的跡相等,兩個特征值的積與矩陣M的行列式相等,為了避免計算矩陣M的特征值,常通過下式來計算特征點的響應(yīng)函數(shù),亦稱興趣值:
R=detM-k(traceM)2
(4)
其中,det(M) 為矩陣M的行列式,trace(M)為矩陣M的跡,即M特征值之和。k為經(jīng)驗值常數(shù),一般為0.04~0.06。
Harris算子是一種非常有效的特征提取算子,可以有效應(yīng)對圖像的灰度變化、旋轉(zhuǎn)性和噪聲等,相對其他特征提取算子較穩(wěn)定。但對尺度敏感,受尺度的影響較大。
1.2 基于尺度的Harris角點檢測算法
Harris角點檢測算法相對于其他特征提取算法,在相同條件下具有更好的穩(wěn)定性和較高的識別率。但手機拍照采集的指紋圖像尺度會與檢測圖像發(fā)生變化,傳統(tǒng)的Harris算法無法應(yīng)對尺度變化,因此提出一種帶尺度信息的Harris算法,適用于手機拍照。
1.2.1 尺度空間理論
如果人的視覺在觀察某一物體時,隨著人與這個物體的距離變化時,會出現(xiàn)大小和清晰度的變化,這種視覺變化即為一種尺度[8]。利用手機攝像頭進行指紋圖片采集時,景深的不同直接影響采集清晰度,且圖片的實際分辨率不一定能夠很好地表示其特點,直接影響指紋識別率??紤]在Harris角點檢測算法中引入多尺度空間,使指紋關(guān)鍵點在不同尺度范圍內(nèi)都能夠被檢測,具有尺度不變性,以提高識別率。
Lindeberg從理論上驗證了高斯核是唯一可以產(chǎn)生多尺度空間的核[9]。二維的高斯函數(shù)的定義為:
(5)
則圖像的尺度空間的概念定義為:
L(x,y,σ)=G(x,y,σ)*I(x,y)
(6)
根據(jù)上式,不同的尺度空間即為利用不同的高斯卷積核對圖像進行卷積的結(jié)構(gòu)。二維空間的高斯函數(shù)的結(jié)構(gòu)見圖1。
尺度空間在實現(xiàn)時用高斯金字塔表示,見圖2。金字塔構(gòu)造的主要步驟:①對圖像進行低通的平滑處理;②對處理后的圖像進行采樣(主要是進行水平和豎直方向的1/2采樣),從而得到一系列尺寸范圍的圖像。
圖1 二維高斯卷積核函數(shù)的三維空間分布圖Fig. 1 Three-dimensienal spatial distribution map of two-dimensional Gauss convolution kernel
圖2 二維圖像的金字塔圖Fig.2 Two-dimensional image of the Pyramid diagram
1.2.2 改進的多尺度Harris特征提取算法
圖3 多尺度Harris角點檢測示意圖Fig.3 Sketch map of multiscale Harris corner detection
為了滿足尺度不變性的要求,對原有的Harris角點提取算法進行改進,提出了基于尺度的Harris特征提取算法,以適應(yīng)手機拍照后分辨率的變化。多尺度Harris角點檢測的示意圖見圖3。
改進的算法將多尺度空間的理論引入到傳統(tǒng)的Harris算法中。參考原始的Harris角點檢測中的公式,使用M=μ(x,σI,σD)作為多尺度的二階矩:
(7)
其中,g(σI)是σI尺度下的高斯卷積的核,x為圖像的位置,L(x)為高斯平滑后的圖像,符號?表示的卷積,Lx(x,σD)與Ly(x,σD)分別表示的是對圖像進行高斯函數(shù)平滑后,在x或y方向求微分的結(jié)果,也就是Lx=?xL,Ly=?yL,σt稱為Harris角點的積分尺度,σD稱為微分尺度。
則改進的多尺度的Harris角點檢測主要分成兩個步驟:①在多尺度下進行Harris角點檢測;②自動搜索角點的最佳的特征尺度值。
多尺度下的Harris角點檢測:先構(gòu)造一組積分的尺度,這一組尺度的定義是:σ1…σn=σ0…knσD。
經(jīng)驗表明k取值為1.4。這時為了較小復雜度,對于微分尺度σD的選擇即在積分尺度的基礎(chǔ)上,乘上一個比例系數(shù),即σD=sσ1,比例系數(shù)s選取0.7。這樣生成μ(x,σ1,σD),然后運用Harris角點檢測,具體的步驟是:
首先,對于給定尺度空間值σn,進行下面的角點響應(yīng)值的運算:
cornerness=det(μ(x,σn))-atrace2(μ(x,σn))thresholdH
(8)
然后,對上一步提取出來的特征點,進行非最大值抑制過濾,找出這8個鄰域的角點的響應(yīng)為最大值的角點。同理在每一個尺度上進行同樣的操作,即找到了空間中的極值點。接著進行尺度空間判斷,對位置空間搜索每一個候選點,通過拉普拉斯計算,求出響應(yīng)值,并且要滿足給定的閾值大?。?/p>
F(x,σn)=σ2|Lxx(x,σn)+Lyy(x,σn)|≥thresholdL
(9)
最后與周圍的兩個尺度空間的拉普拉斯的響應(yīng)值進行比較,使其能夠滿足:
F(x,σn)F(x,σl),l∈{n-1,n+1}
(10)
搜索角點的最佳尺度值:為了精確定位角點,對離散的拉普拉斯響應(yīng)函數(shù)迭代擬合。經(jīng)過多尺度Harris角點搜索,得到提取的特征點集(x,σ1),對于當中的每一個特征點,精化的迭代算法如下:
(11)
圖像的匹配算法有SIFT、SURF、ORB等幾種。其中SIFT、SURF算法準確率較高,但執(zhí)行效率較低,不適用于實時運行的手機環(huán)境。在計算速度方面,ORB是SIFT的100倍左右,是SURF的10倍左右,計算快速,且占用較低的內(nèi)存,非常適合手機端,滿足實時的特征匹配的要求。因此選用ORB來進行指紋圖像的匹配。
ORB作為一種局部不變特征匹配算法,是建立在FAST特征點和BRIEF特征點描述基礎(chǔ)之上的。實現(xiàn)步驟:①用Oriented FAST算法找出圖像關(guān)鍵點的位置;②利用上節(jié)所述改進的多尺度Harris角點檢測,通過Rotated BRIEF描述符生產(chǎn)特征點的二進制描述向量;③將兩幅圖像的特征點利用漢明距離比值準則得到最終的匹配結(jié)果。計算第二幀圖像上的每一個特征點與第一幀圖像上的全部特征點描述向量的漢明距離,若距離越小說明兩個特征點越相似,距離最小的即為匹配對。
oFAST是在FAST特征檢測基礎(chǔ)上對特征點來增加方向信息θ。計算公式為:
θ=atan 2(m01,m10)
(12)
(13)
其中,m01,m10是圖像的一階矩,mpq是矩的計算公式。
rBRIEF是對BRIEF描述子添加特征點的方向,然后用貪婪算法從所有的像素對中找到256個相關(guān)性最低的像素對,最后得到rBRIEF。
3.1 系統(tǒng)開發(fā)平臺介紹
3.1.1 硬件平臺
1)PC用戶端:Acer 4741G型筆記本,配置:CPU為Intel Core i3、雙核,2GB內(nèi)存,Microsoft Windows7操作系統(tǒng)。
2)Android手機:三星S4型號手機和LG-D802型號手機,都為Android4.2.2操作系統(tǒng),屏幕分辨率都為1 920×1 080,內(nèi)存2G。
3.1.2 軟件平臺
1)Eclipse Juno(4.2版本)開發(fā)環(huán)境,同時選擇JDK作為Java的語言環(huán)境。Eclipse是一個大型的開發(fā)平臺,而JDK是Java語言的運行環(huán)境。
2)Android NDK R8和Cygwin。運用Android NDK R8來完成C++庫文件的調(diào)用的互相編譯,且自動將so和java應(yīng)用組成apk文件。NDK編譯代碼要用到make和gcc,而Cygwin用來模擬linux的操作環(huán)境。
3)Android SDK的開發(fā)工具包,包括開發(fā)應(yīng)用程序時所用的的軟件工具包、調(diào)試工具和最后的Android模擬器。在開發(fā)過程中運用DDMS和ADB工具進行調(diào)試,應(yīng)用程序在Android模擬器上調(diào)試。
4)OpenCV 2.4.6版庫函數(shù),提供了Android端的接口,運用OpenCV版庫文件來實現(xiàn)Android平臺下的圖像處理操作。
3.2 系統(tǒng)實現(xiàn)過程
確定了關(guān)于指紋圖像預處理算法、特征提取和匹配算法之后,開始對智能手機上的指紋識別的軟件進行開發(fā)設(shè)計和實現(xiàn),具體流程見圖4。安卓平臺上的指紋識別系統(tǒng)共有4大模塊,分別為攝像頭模塊、指紋圖像處理模塊、指紋圖像匹配模塊和匹配結(jié)果模塊。
圖4 非接觸指紋識別安卓應(yīng)用流程圖Fig.4 Flowchart of Android application for contactless fingerprint identification
攝像頭模塊:功能主要由CameraActivity活動來完成,同時調(diào)用處理模塊,即ProcessActivity。其中包括攝像頭對手指指紋的采集,通過takepicture實現(xiàn)對指紋圖像的拍攝,并設(shè)置了拍攝所需要的參數(shù),拍攝完成的瞬間對拍攝到的整個圖像開始灰度化。
預處理模塊:在ProcessActivity活動中實現(xiàn),利用關(guān)鍵函數(shù)Imgproc.cvtColor(matCameraFrame,matGrayScale,Imgproc.COLOR_RGB2GRAY) 使指紋圖像的灰度化,接著運用Imgproc.equalizeHist()對圖像完成直方圖均衡化,然后計算脊線方向場,設(shè)置gradientSigma=1,blockSigma=13,orientSmoothSigma=15。并對脊線頻率進行計算:fBlockSize=36,fWindowSize=5,fMinWaveLenth=5,fMaxWaveLenth=25。且對脊線方向進行濾波,濾波器大小filterSize=1.9。最后通過enhancement方法進行增強。
圖像匹配模塊:由于進行圖像匹配的算法幾乎全是用C++進行編寫的,且要調(diào)用OpenCV庫,而Java是應(yīng)用層語言[10]。所以需用到JNI技術(shù)[11],使Java應(yīng)用層使用特定算法的功能。JNI是Java平臺的接口,使其與其他語言實現(xiàn)交互,完成兩種語言的調(diào)用,同時提高程序的運行效率。 Android平臺也有相應(yīng)的JNI接口,使應(yīng)用程序方便地調(diào)取C語言。其具體的結(jié)構(gòu)見圖5。
圖5 JNI接口的結(jié)構(gòu)圖Fig.5 Structure diagram of JNI interface
匹配結(jié)果模塊:FLAAN表示快速近似最近鄰庫,對于基于FLANN的匹配器,傳遞IndexParams和SearchParams兩個字典,指定所用的算法及相關(guān)的參數(shù)集合。并用DescriptorMatcher.creat(DescriptorMatcher.FLANNBASED)進行初始化。接著調(diào)用match()和knnMatch函數(shù),運算完全部的描述子后利用DescriptorMatcher.match(descriptors1,descriptor2, matches)進行關(guān)鍵點匹配。調(diào)用drawMatches()來幫助進行繪制結(jié)果,顯示所得到的的匹配。
至此,非接觸指紋識別的安卓實現(xiàn)基本完成,注冊與識別界面見圖6。其中,圖6(a)為應(yīng)用程序首頁,即注冊識別界面;圖6(b)~圖6(d)為直接拍攝指紋的身份注冊過程;圖6(e)~圖6(g)為對采集的指紋圖像進行識別的過程。
圖6 應(yīng)用程序的操作界面Fig.6 Application’s operation interface
4.1 應(yīng)用程序識別性能的測試
非接觸指紋識別系統(tǒng)識別率的高低直接決定系統(tǒng)性能。測試中,發(fā)現(xiàn)光照強度和背景因素對識別率的影響較大,測試結(jié)果見表1。
表1 指紋庫的檢測識別結(jié)果Table 1 Recognition results of fingerprint Library
指紋的識別率受光照和背景的影響,在70%左右。而識別速度可以控制在2 s以內(nèi),基本滿足實時性的要求。同時對已采集的好指紋圖像進行測試,選取在不同的光照條件下測試結(jié)果見表2。
表2 指紋圖片的檢測識別結(jié)果Table 2 Recognition results of fingerprint image
以上的測試都是Android手機上完成的,這些實驗結(jié)果基本達到預期的要求,有較好的識別率和檢測速度。由于直接拍攝指紋受到光照和背景等的影響,包括手機配置等諸多因素在內(nèi),識別效率一般,而直接采集預處理過的指紋圖片,達到了較好的實驗效果。如何進一步完善指紋數(shù)據(jù)庫的質(zhì)量,降低外界光照和背景因素的影響,對識別算法進行進一步的優(yōu)化,降低計算的復雜度都是未來研究的重點。
4.2 應(yīng)用程序工作效率測試
運用兩種不同手機進行應(yīng)用程序的效率測試,其中三星S4和LG-D802獲取的指紋照片的像素都是1 920×1 080,分別對80枚指紋圖像進行了測試,實驗結(jié)果見表3。結(jié)果表明應(yīng)用程序基本達到實時性的要求。同時三星S4和LG-D802手機在相同條件下的識別率也有一定的差異。
表3 不同型號手機的識別結(jié)果對比Table 3 Comparison of recognition results of different cell phones
圖7 對比測試的結(jié)果圖Fig.7 Comparison of test results
4.3 應(yīng)用程序與PC機上識別率的對比測試
在PC機上進行識別結(jié)果的測試針對的是標準的數(shù)據(jù)庫,圖像受外界影響較小,識別率較高。而在手機設(shè)備上進行指紋識別時受到外界光照和背景等因素的影響,會使識別精度下降。兩種情況下的對比測試結(jié)果見圖7。同時同一畫面在不同尺度下在手機上進行圖像采集,結(jié)果表明,在各種尺度下的指紋圖像匹配率差異不大,基本滿足要求,驗證了多尺度的Harris特征提取算法在手機拍照采集指紋下能獲得較好效果。
手機等移動設(shè)備逐漸改變?nèi)藗兊纳睿瑫r移動平臺的身份認證技術(shù)也受到了廣泛關(guān)注。非接觸指紋識別有較好的識別率、穩(wěn)定性和可靠性,克服了傳統(tǒng)指紋圖像采集中的圖像畸變等問題,有很好的發(fā)展前景。本文利用手機攝像頭進行指紋圖像采集,運用OTSU算法完成手指指尖的前背景分割和基本圖像預處理后,采用多尺度Harris角點檢測和ORB匹配算法進行指紋識別。并在Android平臺上得以實現(xiàn)和應(yīng)用,有較好的識別率和實時性,能夠基本滿足移動平臺非接觸式指紋識別的需求。
但該系統(tǒng)仍存在很多需要改進的地方:實際指紋拍攝過程中會有光照過強等因素影響采集效果,文中的測試均在實驗條件較好情況下進行,識別率雖達到預期,但在手機軟件上注冊的指紋圖像較少,對系統(tǒng)的檢驗程度不足;手機攝像頭是光學成像采集的指紋圖像,只能采用基于圖片的識別算法,假指紋同樣能夠完成身份認證,且存在指紋圖像易被盜取的安全隱患。未來研究中應(yīng)提高系統(tǒng)對光照的魯棒性,同時應(yīng)對指紋的真假進行判斷,并對采集的指紋圖像數(shù)據(jù)庫設(shè)計相應(yīng)的加密技術(shù),提高精確度、穩(wěn)定性和安全性。
[1] 李永,殷建平,祝恩,等.動態(tài)分數(shù)選擇的多視角非接觸指紋識別融合[J].哈爾濱工業(yè)大學學報,2012,44(7):108-113.
[2] Labati R D,Genovese A,Piuri V,et al.Quality measurement of unwrapped three-dimensional fingerprints:a neural networks approach[C]//Neural Networks(IJCNN), The 2012 International Joint Conference on.IEEE,2012:1-8.
[3] 梁小龍,殷建平,祝恩,等.基于紋路的三維指紋模型重建算法[J].計算機科學,2012, 39(10):282-285.
[4] Zhang D, Lu G.3D biometrics:systems and applications[J].Springer,2013,6(3):2432-2442.
[5] Kono M,Ueki H,Umemura S.A new method for the identification of individuals by using of vein pattern matching of a finger[C]//Proceedings of the 5th symposium on pattern measurement,Yamaguchi,Japan.2000: 9-12.
[6] Kim J.Touchless sensor capturing five fingerprint images by one rotating camera[J]. Optical Engineering, 2011, 50(11):828-832
[7] NishimuraS,Manabe I,Nagasaki M,et al.CD8+ effector T cells contribute to macrophage recruitment and adipose tissue inflammation in obesity[J].Nature Medicine,2009, 15(8):914.
[8] Luo J,Gwun O.A comparison of SIFT,PCA-SIFT and SURF[J].International Journal of Image Processing,2009,3(4):143-152
[9] Perona P,Malik J.Scale-space and edge detection using anisotropic diffusion[J].IEEE Transactions on Pattern Analysis & Machine Intelligence,2002,12(7):629-639.
[10] 曾健平,邵艷潔. Android系統(tǒng)架構(gòu)及應(yīng)用程序開發(fā)研究[J]. 微計算機信息,2011(9):1-3.
[11] 衛(wèi)紅春. JNI調(diào)用本地方法的原理及應(yīng)用[J]. 計算機與信息技術(shù), 2010, 12(6): 84-87.
Implementation of non-contact fingerprint identificationbased on Android platform
WANG Ke-Jun, DING Xin-Nan
(CollegeofAutomation,HarbinEngineeringUniversity,Harbin, 150001)
A method of real-time fingerprint identification using the camera on mobile-phone to acquire fingerprints in Android platform is proposed. Multi-scale Harris corner detection and ORB image matching algorithm are used for feature extraction and matching, furthermore Android development tools and OpenCV are used for technical implementation, respectively experiment and test in Android different mobile devices. The experimental results show that this algorithm can acquire, register and recognize the fingerprint images in real time on the Android platform, and it has higher recognition rate and stability to meet the requirements of contactless fingerprint identification on mobile platform.
fingerprint identification; Harris corner detection; ORB match; Android platform
10.13524/j.2095-008x.2017.03.045
TP273.4
A
2095-008X(2017)03-0082-08
2017-08-15
國家自然科學基金資助項目(61573114);黑龍江省自然科學基金資助項目(F2015033);中央高?;究蒲谢鹳Y助項目(HEUCF160415)
王科俊(1962-),男,黑龍江哈爾濱人,教授,博士,博士研究生導師,學科帶頭人,研究方向:模糊混沌神經(jīng)網(wǎng)絡(luò)、自適應(yīng)逆控制理論、模式識別和多模態(tài)生物特征識別等,E-mail:wangkejun@hrbeu.edu.cn。