天天看點

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

一、為什麼要關注指紋識别

生物識别技術源遠流長,比如人臉識别,我們進化了精細的雙眼系統進行識别,但是如果讓計算機來做精确的人臉識别,卻是一件比較困難的事。而相比指紋識别,可以認為在人類文明史上才開始有所作用,比如我們看到的古代的按手印、掌印畫押,不過跟人臉識别不同的是,計算機做指紋識别相對容易一些。如果說得籠統一點,可以認為指紋的資料量小易處理。

是以,在IPhone 5s之後,指紋識别用在手機等終端裝置上後,指紋識别的發展更是搭上了行進的順風車。

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖1

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖2

如上兩圖是商用的生物識别領域的占比圖,清晰的可以看出,指紋識别在這個行業中的快速發展。

二、指紋識别的流程

清楚了我們為什麼要研究指紋識别,那麼下一步就要提出問題,怎麼研究指紋識别,以及研究指紋識别的什麼?本章泛泛的将一些一顆指紋識别子產品怎麼完成指紋識别功能的。

1、圖像采集

第一步當然要數圖像采集了。目前圖像采集的方式有很多,比如我們比較常見的有打卡機式的光學指紋采集子產品和用在手機或其他終端裝置上的電容式指紋采集子產品。至于這些子產品的分類和如何工作的,我都會在這個系列的稍後提到。通常指紋傳感器采集後的圖像會是什麼樣子的呢?

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖3

這種圖一般不是很清晰,模組内部會有增益、去噪功能,獲得到了圖檔的初步影像。在這個圖像中,我們要引入一個概念,脊線和谷線。

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖4

較暗的線稱為脊線(ridges),它從窄到寬為100 -300 。圖中較亮的線稱為谷線(valleys),一個一個完整的脊谷線約為500 。

2、圖像歸一化

如上圖3所示的指紋圖中,因為按壓力度的不一緻,導緻傳感器采集圖像會有偏向。中間部分的脊線顔色比較重,二邊緣側的脊線則又細又不清楚,那麼可以用過圖檔間的歸一化使圖檔均值、方差一樣一緻,這樣在圖檔中的直覺表現就是指紋像是一張對焦成功的二維圖像,至少應該如下圖。

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖5

如果比較模糊的都至少可以辨識出黑色的脊線和白色的谷線,那麼經過圖像歸一化後,指紋的紋理清晰可見。我們可以把構成指紋圖像的紋線可以細分為七種類型:直形線,波浪線,弓形線,箕形線,環形線,螺形線和曲形線(就不一一羅列)。

3、圖像增強

雖然經過歸一化後的圖像的輪廓清晰可見,但是對于精細的計算機來說仍然是有很多偏差。這時候,我們可以使用算法做圖像增強,目的是讓指紋脊線更清晰,斷裂的脊線可以連起來,并保持原來的結構。經常使用的方法是濾波去噪。比如常用的頻域濾波就是把圖像轉換到頻域,通過濾波找到能量最大、符合指紋頻率範圍的,恢複到空間域,就可以得到清晰的指紋的空域圖像。

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖6

我們可以對比圖3和圖6,可以感覺到圖檔品質有了很大提升。

4、二值化

這個二值化并不是說吧圖像變成數字存儲,因為隻要涉及計算機的處理,早就把這一切變成二進制了。這個二值化是指非黑即白,沒有所謂的中間灰的過度,沒有8bit甚至更高的修飾。這樣做的處理可以讓圖像更清晰。

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖7

5、提取特征點 細節點

我們當然可以把整張圖像都存儲起來,因為它的pixel本身就不大(通常在100*100這個數量級),但是如果深入了解指紋後,我們完全可以存儲更少的資訊,這些資訊就可以代表了整個指紋圖像,這些更少的資訊在指紋上市存在的,那就是指紋的特征點和細節點。

脊線細節一般用三級特征來描述:

一級特征是指紋的全局脊線流形;

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖8

二級特征是細節點;

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖9

三級特征是包含氣孔、紋線邊緣、疤痕、細點線、汗孔等的更加細節的特征資訊

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖10

當然,在實際過程中,不同的算法可能會關注更多的特征點和細節,這裡就不一一贅述。

6、構造特征算子

我們擷取到了特征點之後,就要把這些特征點記錄下來,組成一個圖,一個表或者通過某一個公式關聯起來,這樣便于我們存儲,以及以後的比對算法的使用。

比如下圖将特征點在二維空間X/Y軸上标記處各個點。

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖11

當然這些點也可以用原點坐标的方式畫出向量圖,加以存儲。到此,指紋圖像的處理和存儲就實作完畢了。

7、比對特征算子,計算比對分數

我們把指紋經過了一系列的處理,又精心挑選了特征算子,目的是為了什麼呢?當然是最後一步的比對!當我們重新采集了另外一個指紋,經過上述的所有處理步驟後,就要去我們的指紋庫中比對有沒有一緻的指紋影像,通過特定的算法給這種比對程度打分,如果分數及格(我們可定義及格分數),那我們就認為新采集的指紋是可以跟我們的資料庫中的某一個指紋比對成功的。

如下圖可以直覺一些。

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

圖12

本文隻講解大概流程,至于圖像如何采集,處理過程用了什麼算法,特征算子什麼規則構造,存儲如何加密,比對如何打分都是一個個具體的問題。

不過本文就可以概括為以下兩張圖。

指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程
指紋識别-流程一、為什麼要關注指紋識别二、指紋識别的流程

—-By 一個不務正業的程式員

圖檔來源于網際網路,侵删,謝謝。

adb wait-for-device

繼續閱讀