指紋識別算法的matlab實現 - 圖文 - 下載本文

(1)single_point函數

經過去除邊緣端點的操作后進一步減少了指紋細化圖像中的端點和交叉

點的個數。下面就需要找出一些在細化圖像中比較獨特的端點來作為識別的特征點。在一幅細化的指紋圖像中,如果在一個像素(該像素為端點)的周圍半徑為r(r為像素的個數)的圓內沒有任何的端點或者交叉點,那么隨著r的逐漸增大,這樣的點就會越來越少,因此該點也就越來越獨特。于是我們設計了一single_point函數來找出這樣獨特的點。

(2)walk函數

為了進一步找出特征點,我們還需定義一walk函數,它的主要作用就是判斷某一端點在num的距離內是否還有其他的端點。

(3)last1函數

single_point函數和walk函數都是找細化圖像特征點的函數,因此可以設計另一個新的last1函數,通過執行

[pxy3,error2]=last1(thin,r,txy,num)

可以找出一端點以r為半徑的像素內的任何端點和交叉點且沿著脊線走向的num內沒有任何的其他端點和交叉點。

3.3 特征點匹配

由上文的函數可知,已經找出了指紋細化圖像中的特征點,并畫出了一段獨特的脊線,在圖像中用紅色來標示。下面就是指紋匹配[12]的問題了。在此我們設置了三層匹配。

(1)脊線長度匹配

對于上面的函數即可找出細化圖像中的特征點和一段脊線,沿著該段脊

26

線走向,每隔五個像素測量一下,看到到原始端點的距離,此段距離由一distance函數得到。

函數結果會得到一數組(內有脊線的長度信息)。如果兩幅指紋細化圖像中的紋路是相同的,則它們就包含相同的端點和交叉點及用distance函數找出的相同的一段脊,則這兩個指紋圖像中的長度數組對應的位置比例會基本相等(我們選擇的指紋圖像大小基本相等,因此該比例選1),因此函數最終定義了一個數f=(sum(abs((d1./d2)-1))),其中若f的值越接近于0,這兩幅圖像的匹配度就越高,在一定范圍的閾值內我們可以認定為匹配。

(2)三角形邊長匹配

找到一個指紋細化圖像的特征點后,可以找出距離這個端點距離最近的兩個端點或者交叉點,與這個指紋圖像細化的特征點構成一個三角形,若兩幅圖像中的邊長比例基本相等(原理同上,也選1),則說明這兩幅圖像匹配,越接近于1說明這兩幅指紋圖像越匹配。其中設置一find_point函數來找出距離最近的端點或交叉點。

函數最后定義了一個數ff=(sum(abs((dd1./dd2)-1))),因此ff值越接近于0,這兩幅指紋圖像的匹配度越高,在一定范圍的閾值內我們可以認定為匹配。

(3)點類型匹配

找到一個指紋細化圖像的特征點后,在該端點周圍找到四十個端點或者交叉點,統計在這四十個特征點中端點的個數和交叉點的個數。若有兩幅指紋細化圖像中的端點所占的比例近似相同,則兩幅圖像相匹配,越近似,則越相同。函數最終定義了一個數fff=abs(f11-f21)/(f11+f12),所以fff值越接近

27

于0,這兩幅指紋圖像的匹配度就會越高。我們也設定一閾值,在此閾值內都可以認定為匹配。

本文中取r=8,num=60,經過試驗,得到f的閾值為0.5,ff的閾值為1.5,fff的閾值為0.2。即兩幅圖像的f,ff,fff若均小于閾值,則兩幅圖匹配;若三個值中有至少一個值大于閾值,則不匹配。驗證如下: 一、選擇兩幅圖:zhiwen.bmp和zhiwen5.bmp來驗證

圖 3-1(a) 輸出的時間

圖 3-1(b) 特征匹配

通過以上的f,ff,fff和閾值的比較說明zhiwen.bmp和zhiwen5.bmp匹配,為同一手指的指紋,匹配時間為12.514525秒。 二、選擇兩幅圖:zhiwen.bmp和zhiwen2.bmp來驗證

28

圖 3-2(a) 輸出的時間

圖 3-2(b) 特征匹配

通過以上的f,ff,fff和閾值的比較說明zhiwen.bmp和zhiwen2.bmp不匹配,為同一手指的指紋,匹配時間為12.728871秒。

29

總結與展望

該論文是在前人研究的基礎上,參閱了部分資料,并在劉文博老師的指導下認真完成的,文中主要對指紋圖像預處理的各個步驟做了較為詳細的討論,并用matlab加以仿真和驗證。

論文中的算法基本上能夠實現指紋識別的預期目的,但是由于畢業設計的時間較短以及我的知識面的限制,有許多問題的考慮還不全面,有待于進一步完善。

本文中主要對圖像預處理進行了分析比較,最后得到了一套比較合適的算法,但通過實驗驗證可發現比對時間比較長,有待于進一步改進。在指紋特征點的提取和匹配的過程中,均設置了一個函數來實現算法,實現的過程的時間也相對較長,也可以用其他的語言來實現。

30





赌大小必赢数学公式