新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用FPGA實現優化的指紋識別預處理算法

        用FPGA實現優化的指紋識別預處理算法

        作者: 時間:2017-06-05 來源:網絡 收藏

        作為生物識別的一種,因其具有唯一性和穩定性,在身份識別上有著其他手段不可比擬的優勢。隨著指紋傳感器性能的提高和價格的下降,指紋的采集越來越容易,算法也已比較成熟。傳統的系統一般以PC機和DSP為主要處理平臺。隨著人們對便攜設備的安全性要求越來越高,傳統的處理系統在功耗和處理速度及實時性上已經不能滿足需要。

        指紋識別系統在很大程度上依靠指紋圖像的質量。在實際應用中由于采集條件和采集設備的因素,采集到的指紋質量比較差,含有大量噪聲,容易導致很多問題,影響后續處理的效果。所以在對指紋特征提取前,必須進行一系列的,改善輸入指紋圖像的質量,為后續處理奠定基礎。

        本文在進行多方面比較和論證的基礎上,選取較優化的算法,作為指紋平臺的算法。并用實現所選算法。

        1 處理步驟

        本系統采用XILINX公司Spartan 3E系列作為核心控制芯片,通過富士通公司的MBF200指紋傳感器實現對指紋圖像的采集,利用CPLD進行接口傳輸。FPGA通過讀取SDRAM中的指紋數據,在其邏輯單元中進行灰度值歸一化、圖像分割、濾波、二值化、細化等,從而獲得重要的指紋圖像信息,以便與指紋模板庫進行對比。系統模塊圖如圖1。圖2是采集到的指紋圖像。

        本文引用地址:http://www.104case.com/article/201706/349289.htm


        2 灰度值歸一化


        指紋圖像歸一化的目的是把指紋圖像的平均灰度和對比度調整到一個固定級別上,以減少不同指紋圖像上的差異。歸一化并不改變指紋脊線和谷線的清晰度,只是消除樣本采集因外界因素造成的影響,為后續處理提供統一規格的圖像。

        把圖像分為w×w的子塊,對于每一子塊求其灰度均值Mi和方差Vi。子塊灰度均值和方差的計算如下:




        用FPGA實現上述算法的難點在于計算Var0。而計算期望的關鍵是求得每個像素的概率,即求子塊中每個像素出現的次數。考慮到FPGA的硬件結構采用并行比較的方法可以方便求出I(i,j)的概率,本次設計w取為3。實現模塊采用圖3所示。

        3 圖像分割

        圖像識別的基礎是圖像分割,其作用是把反映物體真實情況的、占據不同區域的、具有不同特征的目標區分開來,并形成數字特征。圖像分割的好壞直接影響后續圖像處理的效果,甚至決定其成敗。分割算法至今已有上千種,每年還有不少新算法出現,然而大都基于圖像在像素級的兩個性質:不連續性和相似性。

        筆者研究了Mehtre等提出的基于脊線方向的局部直方圖的分割方法;Rarha,chen和Jain提出的根據垂直于脊線方向的灰度方差區分前景與背景的方法;Maio和Maltoni提出的利用每一子塊的平均梯度來分割指紋圖像的前景與背景等多種方法。在此基礎上選擇圖像分割的經典方法——自適應的局部閾值圖像分割方法。該方法在合理選取閾值T的情況下,能較好地對圖像進行分割[5]。

        但該算法本身沒有給出T的取值大小,所以對原算法進行改進后描述為:

        (1)將待處理的圖像分成W×W的子塊(根據實驗選取W=8或16,對一般和較濕的圖像選為8,較干的選為16)

        (2)求各塊圖像灰度值的標準方差:


        式中G(m,n)表示塊內各點的灰度值,Aver(i,j)表示某一塊的均值。

        (3)根據式(4)確定閾值T

        其中a是調整系數,其值的選取根據圖像的質量而定,一般可取為10~20,對質量較好的圖像,a可取12左右,對較濕的圖像可取下限,對較干的圖像a取上限或更大。若a取得過大,則無法消除指紋區域外的噪聲點(背景被誤判為前景),若a取得過小,則會造成區域內脊線斷裂(前景被誤判為背景),分割后的指紋圖像如圖4。

        4 濾波

        由于分割后的圖像質量仍然不是很好,所以需要對其做進一步的處理,以使指紋圖像清晰,消除不必要的噪聲,以利于進一步的辨識。本系統采用中值濾波作為圖像預處理常用的方法,能有效地去除噪聲,平滑圖像。較之其他平滑濾波的方法如均值濾波等,中值濾波能夠在去噪的同時不模糊圖像的邊緣,較好地保持圖像的清晰度。

        圖像中值濾波的定義:

        其中g(x,y),f(x,y)為像素灰度值,即把f(x,y)領域的所有像素灰度值排序,求其處于中間位置的值代替f(x,y)。濾波窗口可以有各種不同的形狀,如線狀、方形、圓形等。本系統采用的是3×3的窗口。為了突出FPGA快速計算的優點采用如圖5所示方式[6]。


        圖6輸入為以f(x,y)為中心的9個數據,A1、A2、A3、A4是3個比較器,輸出的值分別是第i-1行3個值、第i行3個值、第i+1行3個值的中值。以這3個中值再輸入A4就可以選出9個點的中值。這樣大大提高了算法的效率。


        5 二值化

        經過中值濾波后的指紋圖像首先進行二值化變成二值圖像,才能進行細化處理。由于采集到的指紋圖像不同區域深淺不一,如對整幅圖像使用同一閾值進行二值分割,會造成大量有用信息的丟失。這里使用自適應局部閾值二值化的思想,對每塊指紋圖像,選取的閾值應盡量使該塊圖像內大于該閾值的像素點數等于小于該閾值的像素點數。算法流程如圖7。


        T為該塊指紋圖像的平均灰度值,Nh、Nl分別為第(k,l)塊指紋圖像中灰度值≥T和

        6 細化

        現有的細化算法存在很多問題,如細化不徹底、紋線吞噬、骨架偏離紋線中心等。本設計在對快速細化和改進的OPTA細化算法分析研究后,設計一種改進的細化算法。該算法與傳統的細化算法相比不破壞紋線的連接性,不會引起紋線的吞食,保護了紋線的特征。算法的主要思想是:利用快速細化算法速度快的優點對指紋圖像進行一次細化。由于細化后的紋線大多不是單像素寬,再利用改進的OPTA細化算法對不是單像素寬的紋線進一步細化。算法的描述:

        (1)遍歷整個指紋圖像,找出紋線的邊界點。

        (2)判斷該邊界點是否應該刪除。對邊界點P定義2個特征變量nsum和tsum:


        如果P點同時滿足:tsum=2且nsum≠1,nsum6,則可將其刪除。

        (3)繼續尋找下一個邊界點,直到沒有可刪除的點為止。

        (4)得到的紋線很多不是單像素寬,從圖像的左上角開始掃描,每個像素(圖為P)均抽取出圖7所示的15個相鄰像素,把其中的8個相鄰像素(P1~P8)與圖9的消除模板比較,如果都不匹配,則P保留。

        (5)重復上述過程,直到沒有一個像素值被改變為止。

        細化算法的硬件設計:細化算法的難點在于快速細化后的圖像和模板比較。這次設計的主要思想是把模板圖變為數據流,只有用二進制數據流的方式才便于做比較。如圖10所示,黑色代表1,白色代表0。以第一行最左邊的模板為例,即可變為000 111 010。考慮到FPGA的結構,用并行語句讓輸入的9位像素數據和模板二進制化數據進行關系運算操作,即可并行地和12個模板比較,大大提高了運算速度。FPGA模板匹配仿真圖如圖11,細化后的指紋圖像如圖12。




        實驗結果表明,用FPGA完全能滿足指紋預處理的要求,而且提高了運算速度。FPGA的低功耗特點使其在便攜式設備上具有廣闊的應用前景。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宜丰县| 呼和浩特市| 察哈| 沂水县| 逊克县| 镇沅| 仙游县| 西城区| 枣阳市| 望谟县| 宣城市| 顺昌县| 云浮市| 和平县| 鹤山市| 陆川县| 滕州市| 福鼎市| 勃利县| 灵寿县| 开远市| 方城县| 阜平县| 青铜峡市| 伊川县| 蒙城县| 山阴县| 扶风县| 大田县| 温宿县| 临朐县| 大姚县| 山阴县| 古田县| 思茅市| 偏关县| 六安市| 南靖县| 和平县| 邵阳县| 海南省|