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