基于STM32芯片的指紋識別系統(tǒng)設(shè)計與實現(xiàn)
引言
指紋識別是根據(jù)每個人指紋的不變性和唯一性進行身份識別的一門技術(shù)。隨著社會的發(fā)展,嵌入式的指紋識別技術(shù)越來越受到市場的青睞,成為近年研發(fā)的重點,但目前的嵌入式指紋算法大多在實時性和準確度上還存在不足,需要進一步優(yōu)化算法,以實現(xiàn)準確高效的指紋識別。
本研究設(shè)計、實現(xiàn)一種基于STM32芯片的指紋識別系統(tǒng),通過指紋傳感器采集指紋數(shù)據(jù),指紋算法處理指紋數(shù)據(jù)實現(xiàn)指紋識別,同時結(jié)合VC++平臺建立人機交互界面對指紋圖像數(shù)據(jù)顯示。
1、系統(tǒng)硬件設(shè)計
1.1、結(jié)構(gòu)組成及特點
本研究采用ARMcortex-M3內(nèi)核的32位處理器STM32F-103ZET6作為主控制器,該芯片內(nèi)部采用哈佛結(jié)構(gòu)、其中集成有64KB的RAM和512KB的FLASH,運算速度快,并且具有體積小和低功耗的特點,在嵌入式圖像處理方面具有較高的應(yīng)用前景。指紋識別系統(tǒng)結(jié)構(gòu)功能圖如圖1所示。
圖1 系統(tǒng)硬件框圖
系統(tǒng)硬件主要包括:指紋采集模塊、SPI接口模塊、指紋數(shù)據(jù)存儲模塊(SRAM)、指紋程序存儲模塊(FLASH)、UART模塊、指紋圖像算法處理模塊、處理結(jié)果顯示模塊等。
具體工作流程如下:系統(tǒng)通過USB供給5V穩(wěn)壓電源,通過內(nèi)部電路轉(zhuǎn)換成3.3V穩(wěn)壓電源,系統(tǒng)上電后,通過STM32給傳感器的各個寄存器初始化,指紋傳感器FPS200采集指紋圖像,通過SPI接口和STM32最小系統(tǒng)進行通信,將采集到的指紋數(shù)據(jù)發(fā)送到STM32,進而保存指紋圖像到SRAM,通過各種算法實現(xiàn)對指紋圖像信號的預處理、提取特征點和圖像匹配,最后實現(xiàn)指紋識別功能。另外STM32和主機之間通過異步串口通信把指紋圖像數(shù)據(jù)傳送到PC機,顯示圖像,由于一幅圖像的數(shù)據(jù)量就是76.8KB,主控芯片內(nèi)部RAM容量不能滿足存儲和處理圖像數(shù)據(jù)的要求,所以本設(shè)計外擴SRAM來存儲指紋數(shù)據(jù)。系統(tǒng)設(shè)計的程序放在FLASH中,指紋特征數(shù)據(jù)模板也放在FLASH中,以便在使用過程中刪除和添加,并顯示指紋識別結(jié)果,主控制器采用JTAG接口,通過J-link進行仿真調(diào)試,通過IAR-forARM實現(xiàn)程序的設(shè)計。
1.2、指紋采集電路設(shè)計
指紋圖像的采集對系統(tǒng)實現(xiàn)其識別功能至關(guān)重要,一幅采集質(zhì)量較好的指紋圖像有利于后續(xù)對指紋圖像的算法處理,減少算法的復雜程度,提高系統(tǒng)指紋識別的功能。
指紋傳感器FPS200是Veridicom公司的一款新型指紋傳感器,具有500dpi的分辨率,片內(nèi)集成300&mes;256的傳感器陣列,256級的灰度圖像和8位的像素數(shù)據(jù),并且支持MCU、SPI和USB3種接口模式,這里采用比較簡單的SPI接口模式,供給3.3V穩(wěn)壓電源,系統(tǒng)指紋采集硬件電路如圖2所示。
STM32的MODE1接VCC、MODE0接GND,使其工作在SPI模式且為主模式,指紋傳感器FPS200工作在SPI從模式。這樣STM32通過PB12~15管腳與FPS200的SPI接口的4個管腳相連。FPS200根據(jù)STM32由SPI接口發(fā)送過來的寫寄存器的命令、地址和指令數(shù)據(jù)執(zhí)行相關(guān)操作,并將采集到的指紋數(shù)據(jù)經(jīng)由該SPI接口傳回STM32作進一步處理。
圖2 指紋采集系統(tǒng)原理圖
1.3、數(shù)據(jù)處理以及與上位機的通信
本研究接收到的指紋數(shù)據(jù)通過異步串口管腳PA9和PA10與3.3V轉(zhuǎn)換芯片MAX3232相連外接串口線同PC機進行通信,接收和發(fā)送數(shù)據(jù),STM32作為下位機通過SPI接口方式采集指紋數(shù)據(jù),并將數(shù)據(jù)保存在外擴的SRAM中,當采集完一幅指紋圖像后,把該指紋數(shù)據(jù)發(fā)送給上位機,PC機接收數(shù)據(jù),并通過VC編程把接收的指紋數(shù)據(jù)轉(zhuǎn)換成256級灰度圖像并顯示和保存該指紋圖像。
2、系統(tǒng)軟件設(shè)計
2.1、指紋采集程序設(shè)計
程序設(shè)計關(guān)鍵是編程實現(xiàn)SPI通信模式下STM32和指紋傳感器FPS200的通信操作,其采集程序流程圖如圖3所示。
圖3 指紋采集程序設(shè)計流程
FPS200有19個寄存器,用來控制指紋數(shù)據(jù)采集過程中的狀態(tài)和行為,這里介紹幾個比較重要的寄存器的初始化:
(1)初始化CTRLB,使能芯片的ENABLE位使其處于工作狀態(tài),XTALSE位選擇內(nèi)部12M晶振,同時使能指紋自動檢測,通過判斷RDY位的狀態(tài)決定指紋圖像數(shù)據(jù)的讀取。
(2)初始CTRLA,這里可以選擇GETROW、GETIMG和GETSUB這3種存取模式的1種作為存取模式,本研究給CTRLA寫入0x02,即選擇GETIMG模式來獲取整幅圖像。
(3)初始化DTR、DCR和PGC,它們影響采集圖片的質(zhì)量,DTR是放電時間寄存器,影響著圖像背景亮暗程度;DCR是電容放電寄存器,對圖像的前景區(qū)和背景區(qū)的亮暗程度有一定影響;PGC是可編程增益寄存器,對圖片的前景和背景的影響較大。經(jīng)實驗選擇DTR=0x38,DCR=0x01,PGC=0x0C時圖像效果最佳。
2.2、指紋算法設(shè)計
指紋識別算法是指紋識別過程中重要的部分,算法的好壞直接決定指紋識別的精確性和可靠性。
該算法的3個重要部分是指紋圖像預處理、特征點提取和特征匹配。指紋預處理又包括圖像場的計算、分割、均衡化、平滑、增強、二值化、細化等部分。本研究的指紋識別算法流程如圖4所示,下面對算法各部分作簡要介紹。
圖4 指紋識別算法流程
2.2.1、圖像場的計算
圖像場計算包括圖像的強度場、梯度場、方向場以及頻率場計算。
首先本研究采用Sobel算子求指紋圖像灰度函數(shù),再分別沿x和y方向偏導A(xx,y)和A(yx,y),計算該指紋圖像的梯度場,因為梯度場可以較好地分割指紋圖像。
Sobel算子表示方式如下:
2.2.2、指紋圖像的分割
圖像分割的目的是將指紋前景區(qū)域和背景區(qū)域分割開來。因前景區(qū)域和背景區(qū)域在灰度和梯度上存在差異,故均采用閾值分割方法處理。
2.2.3、指紋圖像均衡化
指紋圖像均衡化的目的是使圖像在各種灰度場強上均勻分布相等的點數(shù),通過均衡化使得圖像對比度得到增強。
指紋圖像為F(x,y),由均衡化離散的轉(zhuǎn)換公式為:
2.2.4、指紋圖像的平滑
指紋圖像的平滑的目的是消除圖像噪聲點。本研究通過指紋圖像和模板算子的卷積實現(xiàn)指紋圖像的平滑濾波。卷積運算公式為:
指紋圖像平滑算法相當于低通濾波,只是讓指紋信號的低頻部分通過,而阻止指紋信號的高頻部分,實現(xiàn)濾去指紋圖像中噪聲的目的。
2.2.5、指紋圖像增強
指紋圖像增強是指紋識別系統(tǒng)的重要組成部分,在通過算法使指紋不清晰的地方得到改善的同時盡量保留指紋原有的特征信息,確保后續(xù)圖像處理的準確性和可靠性。
對于指紋圖像的增強,本研究前面通過計算獲得指紋的方向場和頻率場信息,這里采用較成熟可靠的Gabor小波濾波器實現(xiàn)圖像的智能增強,Gabor濾波器公式如下:
2.2.6、指紋圖像二值化
指紋圖像二值化是將連續(xù)灰度圖像轉(zhuǎn)化成只有兩種顏色值的圖像,讓黑的紋線區(qū)域更黑,白的谷線區(qū)域更白。即:使白色的圖像區(qū)域的灰度值為255,黑色的灰度值為0,成為黑白兩色圖像。二值化公式為:
2.2.7、指紋圖像的細化
指紋圖像的細化是為了減少要處理的信息量,把指紋的脊線部分對稱減薄,使指紋紋線由原來的多個像素寬度變?yōu)閱蝹€像素的線形圖。
本研究采用查表法對指紋進行細化處理。因指紋圖像已進行二值化處理,其像素要么是0,要么是255,故把指紋圖像中某個目標點(要處理的黑色點)的8個鄰域的所有要刪除的所有可能情況排列后列入一張表中,再根據(jù)圖像中某點的8個相鄰的點的情況查表,如果滿足表中的情況則刪除該點,否則保留。
2.2.8、特征點提取
特征點提取分兩種情況,即:對端點和交叉點的提取;對指紋特征奇異點的提取。
本研究采用基于交叉數(shù)的特征性提取算法[7(即]通過掃描某點[黑點],根據(jù)該點周圍8點(順時針相鄰兩點灰度的差值情況)來判斷該點是端點還是叉點,并記錄該特征點的位置、類型和方向信息。
指紋特征奇異點提取是利用Poincare公式:
2.2.9、特征點匹配
本研究采用基于指紋特殊點的匹配方法,匹配過程中為減少拒判時間,把匹配分成“初匹配”和“全局匹配”兩個方面,在提高了指紋識別的效率的同時,也大大提高了識別成功率。
3、實驗結(jié)果
在調(diào)試好的樣機上,實驗結(jié)果如圖5所示。
圖5 實驗結(jié)果
通過VC界面顯示的匹配結(jié)果如圖6所示。
圖6 VC界面的圖像匹配結(jié)果
4、結(jié)束語
該設(shè)計實現(xiàn)了基于STM32的指紋識別系統(tǒng),指紋采集方面,本研究通過主控制器和傳感器的SPI通信采集指紋圖像,串口發(fā)送數(shù)據(jù)給PC機,VC界面顯示指紋圖像;算法方面,本研究通過提取方向場對指紋圖像實現(xiàn)Gabor濾波增強,細化圖像時采用查表法對圖像進行細化處理,對細化結(jié)果去噪,為提取特征點提供了良好的指紋數(shù)據(jù),提高了系統(tǒng)識別的準確性,并通過進一步改進匹配算法來提高識別效率,使該系統(tǒng)能準確、高效地完成指紋識別,總體性能達到要求。