摘 要:提出了一種快速而準確的虹膜識別算法,基本思想是:通過圖像預處理,確定虹膜的位置和大小,并將直角坐標系下的環形虹膜展開成極坐標系下的矩形虹膜;利用尋找局部灰度極小值點的方法尋找圖像中每條掃描線上的特征點,去掉偽特征點以后,得到固定長度的虹膜編碼;計算兩個虹膜編碼之間的海明距離,根據海明距離給出識別結果。
關鍵詞:局部灰度極小值; 特征提取; 編碼; 匹配
中圖分類號:TP391.41文獻標志碼:A
文章編號:1001-3695(2007)06-0197-04
0 引言
在高度信息化的現代社會, 人們的身份鑒別已經滲透到日常生活的每一個方面。同時, 由于交通﹑通信和網絡技術的飛速發展, 人類的活動范圍越來越大, 身份鑒別的難度和重要性也越來越突出。對于中國這樣一個人口眾多的國家,身份鑒別有著特別廣泛的應用前景和重要的戰略意義, 金融、安全、網絡、電子商務等無一不需要可靠的身份鑒別。近年來已成為身份鑒別的熱點。常用的生物特征包括指紋、掌紋、虹膜、臉像、聲音、簽名和筆跡等。
虹膜作為重要的身份鑒別特征, 具有唯一性、穩定性、可采集性、非侵犯性等優點。非侵犯性(或非接觸式)的生物特征識別是身份鑒別研究與應用發展的必然趨勢, 與臉像、聲音等非接觸式的身份鑒別方法相比, 虹膜具有更高的準確性。據統計虹膜識別的錯誤率是各種生物特征識別中最低的[1]。基于虹膜的身份鑒別技術逐漸得到學術界和企業界的重視。
對于每個人來說, 虹膜的結構各不相同, 并且這種獨特的虹膜結構在人的一生中幾乎不發生變化。眼科學家[2]和解剖學家[3]經過大量的觀察發現虹膜具有獨特的結構, 即使對于同一個人, 左眼和右眼的虹膜區別也是十分明顯的, 而且自童年以后,虹膜在人的一生中所發生的變化十分微小。因此, 自然界不可能出現完全相同的兩個虹膜。發育生物學家通過大量觀察發現,當虹膜發育完全以后,它在人的一生中是穩定不變的,因而具有穩定性[3]。
最早是由Flom和Safir提出自動虹膜識別的概念[1]。后來又有很多學者進行了相關方面的研究[4-12]。Daugman[4-6] 提出利用2D Gabor濾波器對虹膜紋理進行局部相位量化和編碼。這種算法識別準確性高、速度快,是目前虹膜識別商用系統的基礎;但其需要處理紋理的二維信息,增加了特征提取的運算時間。Wildes等人[7,8] 采用GaussLaplace濾波器在不同分辨率下分解虹膜圖像,并將對應的圖像進行相關比較,計算量比較大。Boles和Boashash[9] 提出了一種新穎的基于小波變換過零檢測的虹膜識別算法,只在小樣本集里取得了有限的結果。這種算法對灰度值變化比較敏感,因而識別率比較低。文獻[10,11]提出了圓對稱濾波器,即把Gabor濾波器的方向信息去掉,把它的虹膜圖像分成了8×8像素窗口的384個特征提取區,分別對它們進行多分辨率濾波,應用最近特征線的方法進行匹配。在提取全局特征的同時,文獻[10,11]利用LogGabor小波濾波后的方向能量作為虹膜紋理的局部紋理特征[12]。
本文虹膜識別方法包括如下幾個步驟:圖像預處理;特征提取及編碼;匹配。圖像進行預處理中,先通過灰度投影的方法找到瞳孔內一點,接著用方向邊緣檢測算子分別找到虹膜內圓上的三個點以及外圓上的四個點,從而定位出虹膜;然后將環形虹膜圖像展開成矩形并進行歸一化與圖像增強,通過筆者自行設計的模板來找虹膜上的斑痕點(局部灰度極小值點),也就是筆者要找的特征點,并進行二進制編碼;最后計算每個碼間的距離,進而進行匹配。要指出的是本算法均是基于灰度圖像的。虹膜圖像如圖1所示。
1 虹膜圖像預處理
圖1中為隨機取出的四幅眼睛圖像(圖像下邊的編號表示該圖像在虹膜庫中的編號)。通過觀察發現虹膜圖像通常不可能僅僅包含虹膜, 往往還有眼睛的其他部分, 如眼瞼、睫毛、眼白等。在某些情況下,虹膜圖像的光照是不均勻的, 會給虹膜識別的準確性帶來影響,影響虹膜圖像的質量從而給下一步的虹膜定位和準確匹配帶來困難。因此, 在進行虹膜識別之前, 必須先確定出虹膜在圖像中的位置并進行大小歸一化。同時, 虹膜的內邊界即瞳孔的大小是會發生變化的, 這將會使虹膜的紋理產生變形。以上這些情況均會影響虹膜圖像的質量,從而給下一步的特征提取和準確匹配帶來困難。為了實現精確地匹配, 就要通過預處理消除上述各種因素對虹膜圖像的影響。虹膜圖像的預處理包含虹膜定位、虹膜圖像歸一化和虹膜圖像增強等三個步驟。
1.1 虹膜定位
首先通過灰度投影的方法找到瞳孔內一點,接著通過筆者自行設計的檢測模板找到虹膜內圓上三個不共線的點,從而快速定位出虹膜內圓;然后用Canny算子和Hough變換進行調整;最后通過筆者自行設計的檢測模板找到虹膜外圓上四個不共線的點,從而快速定位出虹膜外圓。此方法不僅定位準確率高,而且時間短、魯棒性強。詳細信息參見文獻[13]。對圖1中所示圖像的定位結果如圖2所示。
1.2 虹膜歸一化
在定位出虹膜之后不宜立即對提取出的虹膜圖像進行編碼,應當首先進行校準。這是因為眼睛圖像在被捕獲時不可避免地存在旋轉和放縮的現象。旋轉是由頭的傾斜或眼球的旋轉而造成的虹膜圖像的旋轉,放縮則是由被攝目標離鏡頭的遠近不同造成的。因此需要通過歸一化將每幅原始圖像調整到相同的尺寸和對應位置,從而可以消除縮放和旋轉對于虹膜識別的影響。本文采用極坐標變換的方法進行歸一化。由于內外圓邊界是不同心的,這種變換也不是同心的。實驗中,從瞳孔中心左側的水平半徑開始按逆時針方向將環形虹膜展開成360列×110行的矩形虹膜。展開時,根據極坐標求得的直角坐標不可能都是整數,所以在計算展開后圖像像素的灰度值時使用了雙線性插值法。對虹膜庫中隨機挑出的一幅圖像的歸一化結果如圖3(c)所示。
1.3 圖像增強
歸一化后的圖像對比度不高,而且由于光源位置的不同容易造成不統一的光強,這些均會對特征提取以及匹配有較大的影響。需要對圖像進行增強,這樣可以避免虹膜圖像光照的不均勻性,更好地提取出特征。圖像增強上本文采用了局部直方圖均衡化的方法。直方圖均衡化的目的是通過點運算使輸入圖像轉換為在每一灰度級上均有相同的像素點數的輸出圖像。設圖像大小為M×N個像素,且當前像素的灰度值為GA,轉換后該像素的灰度值為GB,則GB可以通過式(1)由GA計算出來:
2 特征提取及編碼
仔細觀察虹膜圖像發現虹膜圖像包含很多細節特征,人眼虹膜內的斑痕由塊狀、條狀、斑點等各種形狀構成,其灰度差別很大,但基本上靠近瞳孔。而且它們的分布是不均勻的,這些不均勻的塊可以作為虹膜的特征。眾所周知,灰度局部極小值(局部突變)指示著圖像的最重要特征,因此可以記錄下這些局部灰度極小值點的位置來取代這些分布不規則的塊作為特征。虹膜的局部細節一般是沿著半徑方向的,也就是說在歸一化以后的圖像中是沿著垂直方向的。在歸一化圖像中,沿著水平方向的信息強度更高一些。在歸一化后的圖像中沿著水平方向去找局部極小值點作為虹膜特征點是可行的。筆者是用這些局部極小值點去取代那些不規則的塊作為特征,因此沒必要沿著歸一化圖像每一行去找局部極小值點。大量觀察和實驗表明:①上眼瞼和在其上生長的睫毛總是隨機地覆蓋虹膜上側1/2-2/3大小的面積,所以矩形虹膜圖像左半側的區域內可用的紋理信息很少。②通常,下眼瞼總會遮擋住虹膜外側的大約10-40行的像素,但是在這10-40行的像素里只有很少量的紋理信息。在歸一化的虹膜圖像中,只需要利用右半側從上到下(也就是從虹膜內邊界開始向外)的60行像素即可滿足虹膜識別的需要。也就是矩形圖中選擇右上半部分進行特征提取。
由于圖像中存在著一定的隨機噪聲,很有必要對圖像進行簡單的降噪處理。算法中是通過對像素進行合并的方法來實現降噪的。具體方法如下:在上述選擇的特征提取區域中,從第一條掃描線(即j=0)開始,按照相鄰的次序,將每三個像素合并成一個像素,合并后的單像素作為本文需要的基本特征點提取單元。常見的合并方法包括最小值合并法和平均值合并法。本實驗中采用的是最小值合并法。經過合并處理,被選擇的特征提取區域被壓縮至60列×60行。壓縮后圖像中的像素灰度值與壓縮前像素的灰度值的關系滿足:
本特征點提取單元組成。
接著進行特征提取以及編碼。在虹膜圖像中,斑痕區域表現為局部灰度極小值。通過邏輯判斷的方法,分別沿60條水平掃描線可以搜索到各個局部灰度極小值對應的基本特征點的坐標值。將這些基本特征點標記為邏輯“1”,作為候選特征點,其他基本特征點標記為邏輯“0”。在找滿足局部灰度極小值的點時,筆者采用了七種模板,因為這樣能找到盡可能多的特征點,既能找到點紋理,也能找到塊紋理,為后邊的編碼以及識別作好充分的準備。模板如圖4所示。
各個模板中標為a的點即是筆者要找的特征點,而各個點均代表基本特征點。凡是符合各個模板條件的a點均可作為候選特征點,模板中相鄰兩點均是對應著壓縮后圖像中相鄰的兩個基本特征點。圖4中處于下邊的點是表示同一灰度的點,而上方的點則代表灰度值大的點,將所有符合條件的候選特征點均編碼為“1”,其他基本特征點編碼為“0”。由于滿足局部灰度極小值條件的點可能很多,得到的特征點編碼為“1”點超過1 000個。其中有些并不是對應于虹膜特征點,而是偽特征點。將所有特征點編碼為“1”的特征點按照灰度值從小到大排列,取前600個局部灰度極小值點作為真正的特征點。將不在前600個序列的候選特征點標記為邏輯“0”。這樣僅僅保留600個局部灰度極小值點作為虹膜編碼的特征點。將這600個特征點編碼為“1”。用Xi表示第i行中特征點編碼為“1”的個數。這600個特征點分布在60行,即
3 匹配
(1)在進行匹配時,首先對登錄虹膜與已經注冊虹膜的每一掃描線的特征點數進行匹配,如果兩虹膜的所有掃描線的特征點數相等或差值小于某個閾值,表明兩個虹膜具有匹配的可能性,可進行下一步的匹配操作;否則作為拒絕操作。如此操作可以大大節省虹膜匹配操作的時間,特別是對于虹膜庫比較大的情況非常有利。
(2)將每一掃描線60個提取單元等分為兩部分,即各30個提取單元。分別比較登錄虹膜與已經注冊虹膜的兩個部分的特征點數量,如果登錄虹膜與注冊虹膜相應部分不相等,對登錄虹膜分別進行左移或右移操作,直到與注冊虹膜相應部分特征點數量相等或小于某個根據經驗獲得的閾值為止。該操作的目的是使所采集的虹膜圖像與待匹配的虹膜圖像角度一致,如果左移或右移操作30個提取單元,表明對登錄虹膜圖像進行±90°的旋轉操作。該操作保證了虹膜識別算法的旋轉不變性。如果左移或右移操作不能達到匹配,則作為拒絕操作。該步操作主要解決旋轉不變性問題。
(4)對特征提取時可能發生的特征點位置的不準確進行一定的調整,對登錄虹膜與注冊虹膜的編碼進行第一次錯位匹配,對60列×60行個提取單元進行壓縮編碼:在每個掃描線上,從第一個編碼開始,將相鄰的編碼進行“或”操作,這樣得到了30列×60行個壓縮編碼位進行模式匹配。任意兩個虹膜碼間的距離定義如下:
(5)對登錄虹膜與注冊虹膜的虹膜編碼進行第二次錯位匹配,對60列×60行個提取單元進行第二種壓縮編碼,也就是在每個掃描線上,從第一個編碼開始,將第一個編碼與最后一個編碼進行“或”操作,第二個編碼與倒數第二個編碼進行“或”操作,依次類推,最后得到了30列×60行個壓縮編碼位進行模式匹配。任意兩個虹膜碼間的距離定義如下:
(6)比較HD1、HD2、HD3大小,選其中最大的那個值作為最后用來比較的HD距離,將HD作為判別依據進行識別,如果這個值大于判定值,則登錄虹膜是圖庫中已經注冊的人的虹膜。
4 實驗結果分析
本文實驗均是在CPU主頻為Pentium 4 2.4 GHz、內存大小為256 MB的計算機環境下,使用Visual C++ 6.0實現的。實驗使用的CASIA虹膜數據庫共有756幅圖像,分辨率為320×280。
在圖像預處理階段,主要進行虹膜定位、歸一化、圖像增強的操作。首先在進行虹膜定位時,使用的是在文獻[13]中介紹的定位算法,對定位后的虹膜圖像進行歸一化操作,從而得到360列×110行的矩形虹膜圖像。最后,對歸一化圖像進行局部直方圖均衡化,實現圖像增強。在特征提取和匹配上,通過自行設計的模板找圖像的局部灰度極小值點,也就是筆者要找的特征點,最后通過類似于海明距離的方法來進行匹配。
在考察算法時,通過以下一些數據去評價,即識別的準確率和所用的時間。表1是本文方法與經典方法的比較。不同算法所需時間如表2所示。
在表1和2中,有些關于其他算法的實驗數據可能會與其他文獻中的實驗數據不太一致。這主要是相同算法由不同的人、在不同的實驗條件下、使用不同的編程工具和不同的編程方法來實現,必然會出現不同的實驗結果。但是只要算法的基本思想和基本原理是相同的,實驗數據一般不會有太大的差別。
5 結束語
本文提出一種快速而準確的虹膜識別方法。該算法不僅在很短的時間找到虹膜的特征點,而且保證了準確性,在保證識別率高的同時,時間上有了很大的提高,而且具有平移、縮放、旋轉不變性。對已有的圖庫進行大量實驗,實驗表明,該算法識別準確率高、時間短。但是在歸一化的圖像中如何自動檢測到眼毛和眼皮以及虹膜上的光斑,使得下面的特征提取工作不是固定地處于某個區域,從而利用更多的特征信息,以及怎么樣將全局的紋理信息加入識別(通過找局部灰度極小值只能反映虹膜的局部特征),這些也是筆者今后工作的重點。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。