陳東亞, 王孟彬, 袁三男
(上海電力學(xué)院 電子與信息工程學(xué)院, 上海 200090)
?
指紋識別在ARM處理器上的實(shí)現(xiàn)
陳東亞, 王孟彬, 袁三男
(上海電力學(xué)院 電子與信息工程學(xué)院, 上海 200090)
指紋識別技術(shù)近年來逐漸成熟,在日常生活中得到了廣泛的應(yīng)用,如應(yīng)用于工作中的指紋門禁、簽到,智能手機(jī)的解鎖等方面.根據(jù)指紋識別算法,采用STM32F103ZET6芯片,設(shè)計(jì)了一款基于ARM的指紋識別系統(tǒng),對硬件設(shè)計(jì)進(jìn)行了分析,并采用Keil軟件對指紋識別系統(tǒng)進(jìn)行了軟件設(shè)計(jì).
指紋識別系統(tǒng); ARM處理器; 預(yù)處理
在當(dāng)今社會,隨著科技的發(fā)展,電子商務(wù)的流行,網(wǎng)上交易的安全性至關(guān)重要,指紋識別的應(yīng)用得到了廣泛關(guān)注.面對身份被盜用的問題,指紋識別相較于傳統(tǒng)的認(rèn)證識別方式,具有唯一性、穩(wěn)定性和不易盜用性的特點(diǎn).近年來,隨著指紋識別技術(shù)的逐漸成熟以及指紋采集工具這一難題的解決,指紋識別已經(jīng)成為目前最廣泛應(yīng)用的生物識別技術(shù)之一,并且廣泛應(yīng)用于各個領(lǐng)域[1].因此本文針對ARM的指紋識別系統(tǒng)進(jìn)行設(shè)計(jì)和開發(fā).
指紋識別系統(tǒng)的本質(zhì)是判斷采集到的指紋與指紋庫中的指紋數(shù)據(jù)是否匹配.其實(shí)現(xiàn)主要通過指紋的采集、預(yù)處理以及匹配幾個過程[2],算法實(shí)現(xiàn)的整個過程如圖1所示.
1.1 指紋采集
指紋采集就是利用硬件指紋采集器,將采集到的指紋轉(zhuǎn)換成圖片數(shù)據(jù),上傳到軟件中,以便之后的圖像處理.指紋采集具有多種方式,如利用硅傳感器、光學(xué)傳感器和超聲波傳感器等[3].這幾種采集器各有優(yōu)缺點(diǎn),硅傳感器對干、臟手成像效果好,卻對手汗多的無法成像;光學(xué)傳感器雖耐用,但是對于臟手成像效果差,手汗多的成像模糊;超聲波傳感器成像效果最好但價格貴[4].
圖1 指紋識別算法實(shí)現(xiàn)過程
1.2 圖像預(yù)處理
圖像預(yù)處理就是將得到的原始圖像進(jìn)行有針對性的處理,去除圖像中的噪聲、干擾等,以便于之后的計(jì)算分析.指紋圖像的預(yù)處理包括二值化、修剪、歸一化、濾波這幾個步驟,之后得到的指紋圖像比較清晰,便于指紋特征點(diǎn)的提取.
1.2.1 二值化
圖像的二值化就是將圖像變成只有白色和黑色兩種顏色.二值化采用的方法有很多種,諸如最大類間方差法、迭代閾值法、P分類法等.這里采用的是分塊二值化的思想,將圖像進(jìn)行分塊,取每一塊的平均灰度值作為動態(tài)閾值,根據(jù)該閾值再進(jìn)行二值化.其公式如下:
(1)
(2)
式中:T——每塊的平均灰度值;pi——像素點(diǎn);g(pi)——原圖像的灰度值;h(pi)——二值化后的圖像的灰度值;N——分塊后的圖像的像素點(diǎn)的個數(shù).
將圖像二值化后,確定中心點(diǎn)十分重要,這里采用Sobel算子思想,將指紋圖像的塊方向與Sobel算子結(jié)合,能夠快速并精準(zhǔn)地定位到中心點(diǎn).Sobel算子是在圖像空間利用兩個方向模板與圖像進(jìn)行領(lǐng)域卷積完成的[5].對圖像的水平和垂直方向分別進(jìn)行檢測,由于梯度方向和圖像邊緣方向總是正交垂直的,因此可以分為水平梯度算子Gx和垂直梯度算子Gy,其算式如下:
(3)
(4)
根據(jù)Sobel算子對每塊以(i,j)為中心點(diǎn)的塊方向θ(i,j)進(jìn)行計(jì)算.其計(jì)算公式如下:
(5)
(6)
(7)
式中:w——每一塊的總像素點(diǎn).
根據(jù)這些公式,得到了圖像塊內(nèi)每一個像素點(diǎn)的塊方向,由于得到的塊方向圖會受到噪聲和Sobel算子本身產(chǎn)生的誤差影響,因而對得到的塊方向采用二維低通濾波器濾波,并且對其每一個像素點(diǎn)求取sine函數(shù),得到一個極值點(diǎn),這個點(diǎn)便是中心點(diǎn).
1.2.2 剪 切
原本錄入的圖像像素大小為256×256,為了只提取有用的指紋的中心區(qū)域,因此這里會判斷其中心點(diǎn)(利用之前二值化過程中的最后得到的中心點(diǎn)坐標(biāo)),以中心點(diǎn)坐標(biāo)為基準(zhǔn),將圖片修剪成像素175×175的大小.
1.2.3 歸一化
歸一化的目的是將圖像的平均灰度調(diào)整到一個固定的值上,從而能夠使指紋的脊線和谷線之間的灰度偏差減小.這里圖像的歸一化需要對原圖像求其平均灰度值和方差,比較原始圖像的灰度值與平均灰度值的大小,設(shè)定一個期望均值和期望方差,將其調(diào)整到期望均值的附近.
1.2.4 濾 波
這里采用的是Gabor濾波,Gabor濾波具有頻率選擇性和方向選擇性的特點(diǎn),在圖像處理的過程中,利用卷積,可以將噪聲去除,以達(dá)到圖像增強(qiáng)的效果.其在空間域的二維函數(shù)公式如下:
(8)
(9)
(10)
式中:θ——Gabor濾波方向;f——紋線正弦曲線波形沿著xθ軸的頻率;δx,δy——高斯函數(shù)沿x軸和y軸的高斯包絡(luò)線常數(shù).
Gabor濾波采用了8個方向,從0°到180°等分,對圖像的每個方向,得到不同的特征圖,這也是后續(xù)指紋特征提取的重要步驟.
1.3 指紋匹配
對于已經(jīng)處理好的指紋圖像,根據(jù)之前經(jīng)過Gabor濾波后得到的8方向特征圖編碼,匹配的主要根據(jù)是對這8個方向圖的特征比對,查看指紋庫中是否含有符合這8方向特征的指紋圖像.
指紋識別硬件系統(tǒng)的設(shè)計(jì)模塊如圖2所示.
圖2 系統(tǒng)硬件示意
本文采用STM32F103ZET6作為主控制器,其內(nèi)核采用ARM 32位的Cortex-M3處理器,這是一種新興的ARM處理器,其管腳數(shù)目少,成本低且提供了很好的計(jì)算性能、先進(jìn)的中斷系統(tǒng)響應(yīng)和額外的代碼效率,該芯片具有64 K RAM,高達(dá)512 K的閃存程序存儲器,112個快速I/O口,11個定時器,13個通信接口和并行的LCD接口,且其功耗低、體積小,在嵌入式方面的應(yīng)用前景廣闊.STM32F103ZET6硬件設(shè)備如圖3所示.
圖3 STM32F103ZET6硬件設(shè)備
指紋采集模塊采用指紋傳感器FPC1011C,其具有采集到的圖像數(shù)據(jù)可靠性高、材料不易磨損、靜電絕緣性好、消耗能源低等特點(diǎn),同時其分辨率為363 dpi.傳感器陣列為152×200點(diǎn),有效觸摸次數(shù)達(dá)100萬次[6].其內(nèi)部具有8位的模/數(shù)轉(zhuǎn)換器,高速串行外設(shè)接口(SPI),8PIN的軟排線,使得其易于與外部系統(tǒng)連接.FPC1011C包括STATUS寄存器、DRIVC寄存器、ADCREF寄存器、SENSEMODE寄存器、FIFI_TH寄存器、XSHI FT寄存器、YSHI FT寄存器、XREADS寄存器、XSENSE寄存器、YSENSE寄存器、SPI_STATUS寄存器共11個控制寄存器[7].
LCD顯示模塊采用LCD1602,其直接與主控制器連接,由主控制器經(jīng)過編程I/O口輸出結(jié)果并實(shí)現(xiàn)在LCD1602上顯示.
硬件工作流程如下:PC機(jī)通過USB線給系統(tǒng)提供5 V的電源,然后系統(tǒng)通過內(nèi)部電壓轉(zhuǎn)換電路把5 V轉(zhuǎn)換成3.3 V.系統(tǒng)上電后,STM32F103ZET6通過發(fā)出指令將指紋傳感器的所有寄存器復(fù)位,從而控制指紋傳感器(FPC1011C),并使其正常工作——檢測指紋.當(dāng)手指按下時,指紋傳感器將采集到的指紋數(shù)據(jù)保存下來,主控制器通過I/O口模擬SPI時序?qū)崿F(xiàn)與指紋傳感器的同步串口通信[8],將指紋數(shù)據(jù)發(fā)送到主控制器并保存到RAM中,通過一些算法對采集到的指紋圖像數(shù)據(jù)進(jìn)行預(yù)處理,并提取出有效的特征點(diǎn)和圖像匹配,最后實(shí)現(xiàn)指紋識別的功能.若指紋匹配成功,則LCD顯示模塊顯示“yi yang”;若指紋匹配不成功,則LCD顯示模塊顯示“bu yi yang”.此外,采集到的圖像數(shù)據(jù)經(jīng)過STM32F103ZET6預(yù)處理,再通過異步串口通信把處理過的圖像傳到PC機(jī)上顯示.
本文軟件系統(tǒng)采用的是Keil軟件,根據(jù)硬件中芯片的要求,在Keil軟件中也需將芯片設(shè)置為STM320F103,將在Keil軟件上編譯成功程序下載到ARM處理器上,對指紋識別系統(tǒng)的設(shè)計(jì)調(diào)試.本文中采用異步串口通信將ARM和PC機(jī)連接,以便指紋采集到的圖像能夠上傳到PC機(jī)中,同時通過算法的處理將指紋圖像顯示在ARM上.對于整個系統(tǒng)而言,其核心是指紋識別代碼的編寫.
由于指紋識別系統(tǒng)應(yīng)用于實(shí)際生活,故其實(shí)現(xiàn)過程分為兩個部分:一是指紋的輸入部分,即將指紋編號存入數(shù)據(jù)庫,以便對采集到的指紋進(jìn)行比對;二是在已有的指紋庫的基礎(chǔ)上,對指紋進(jìn)行檢測,查看輸入的指紋是否與指紋庫匹配.
因而在設(shè)計(jì)過程中,分別對指紋輸入和指紋檢測這兩部分進(jìn)行設(shè)計(jì).指紋輸入的設(shè)計(jì)流程如圖4所示.首先需要將程序初始化,讓整個系統(tǒng)應(yīng)用的硬件處在工作狀態(tài),之后根據(jù)算法的思想,進(jìn)行指紋采集、預(yù)處理和特征值提取.這里需要判斷采集到的指紋是否有效,若有效,則將得到的指紋數(shù)據(jù)編號并且存入數(shù)據(jù)庫中,若無效,則重復(fù)指紋的采集等步驟.
指紋檢測部分的設(shè)計(jì)流程如圖5所示.指紋檢測的流程與指紋輸入相似,區(qū)別在于,在提取特征值后,需要用到之前存入指紋庫中的指紋數(shù)據(jù),查找是否有匹配的指紋.本文根據(jù)實(shí)際的需求,增加了一個判斷,即是否需要繼續(xù)輸入新的指紋,若是的話,其步驟則將從指紋采集開始重復(fù),若不需要繼續(xù)的話,則整個程序結(jié)束.
圖4 指紋輸入流程
圖5 指紋檢測流程
隨著社會和科學(xué)技術(shù)的不斷發(fā)展,人們對安保的便利和安全要求也越來越高,每個人的指紋具有唯一性和不變性,安保方面采取指紋識別安全便利,且指紋識別技術(shù)已越來越成熟.本文設(shè)計(jì)了一個基于 STM32F103ZET6的指紋識別系統(tǒng),指紋采集采用了指紋傳感器FPC1011C,以確保圖像采集的數(shù)據(jù)更加準(zhǔn)確,并編寫了對指紋數(shù)據(jù)的裁剪、Gabor濾波、特征值提取和指紋匹配更好的算法,使指紋匹配更加準(zhǔn)確,有效地提高了安全性.
[1] 欽小平,潘煉.基于ARM的QNMV指紋識別系統(tǒng)的研究[J].計(jì)算機(jī)測量與控制,2012,20(4):1 076-1 078.
[2] 河漢.試論嵌入式自動指紋識別系統(tǒng)設(shè)計(jì)[J].信息通信,2014(7):55.
[3] 黎珊,吳運(yùn)東,鄧曉蘭.通信線路的雷電過電壓及抑制措施[J].中國新通信,2011(53):104-108.
[4] 樊勇,田立偉,莫夫,等.自動指紋識別系統(tǒng)概述[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(21):42-44.
[5] 陳戈珩,王飛.基于Matlab的Sobel算子的指紋中心點(diǎn)定位[J].現(xiàn)代電子技術(shù),2009(8):79-80.
[6] 李爽.基于FPC1011C電容式傳感器指紋識別系統(tǒng)設(shè)計(jì)[J].信息與電腦,2010(6):30-31.
[7] 陳淑靜,馬天才.基于FPC1011C的指紋識別系統(tǒng)[J].山西電子技術(shù),2009(5):32-33.
[8] 張延杰,齊文釗,史毅.FPC1011C在指紋識別模塊中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010(8):67-68.
(編輯 桂金星)
Fingerprint Recognition Implemented on ARM Processor
CHEN Dongya, WANG Mengbin, YUAN Sannan
(SchoolofElectronicsandInformationEngineering,ShanghaiUniversityofElectricPower,Shanghai200090,China)
In recent years,fingerprint recognition technology has gradually matured and is widely used in daily life.For example,it is usually applied to the access control and attendance of fingerprint,unlocking of smart phone,etc.According to the fingerprint identification algorithm,fingerprint identification system based on ARM is designed,which uses STM32F103ZET6 chip.Hardware design is analyzed and then fingerprint recognition system is designed by using Keil software.
fingerprint recognition system; ARM processor; preconditioning
10.3969/j.issn.1006-4729.2017.01.021
2016-03-16
袁三男(1967-),男,副教授,江蘇蘇州人.主要研究方向?yàn)橥ㄐ排c信息系統(tǒng),流媒體網(wǎng)絡(luò),數(shù)字電視,嵌入式系統(tǒng)等.E-mail:.samuel.yuan@shiep.edu.cn.
TP391.41;TP368.1
A
1006-4729(2017)01-0097-05