摘要:文章介紹了以凌陽(yáng)SPCE061A為核心的一種新型指紋識(shí)別系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,可靠性強(qiáng),操作方便,可廣泛應(yīng)用于需要指紋識(shí)別的各種場(chǎng)合。詳細(xì)介紹了系統(tǒng)的總體設(shè)計(jì)方案,以及指紋采樣算法,最后介紹了軟件設(shè)計(jì)方法及流程圖。
1? 引言
??? 指紋是指手指末端正面皮膚上凸凹不平產(chǎn)生的紋路。盡管指紋只是人體皮膚的一小部分,但是,它蘊(yùn)涵大量的信息。這些皮膚的紋路在圖案、斷點(diǎn)和交叉點(diǎn)上是各不相同的,在信息處理中將它們稱作“特征”,依靠特征的唯一性,就可以把用戶同他的指紋對(duì)應(yīng)起來(lái),通過(guò)比較輸入的指紋特征和預(yù)先保存的合法指紋特征,就可以驗(yàn)證用戶的真實(shí)身份。
??? 以前的各種指紋識(shí)別系統(tǒng)屬于光學(xué)識(shí)別系統(tǒng),由于光不能穿透皮膚表層,所以只能夠掃描手指皮膚的表面,或者掃描到死性皮膚層,但不能深入真皮層。在這種情況下,手指表面的干凈程度,直接影響到識(shí)別的效果。如果,用戶手指上粘了較多的灰塵,可能就會(huì)出現(xiàn)識(shí)別出錯(cuò)的情況。并且,如果人們按照手指,做一個(gè)指紋手模,也可能通過(guò)識(shí)別系統(tǒng),對(duì)于用戶而言,使用起來(lái)不是很安全和穩(wěn)定。
??? 本系統(tǒng)采用了凌陽(yáng)SPCE061A單片機(jī)作為控制核心,SPCE061A不僅僅是具有單片機(jī)的控制功能,它還是一款運(yùn)算能力很強(qiáng)的DSP芯片;對(duì)于指紋的采集,本系統(tǒng)采用了富士通公司的新型指紋傳感器MBF300,這種電容傳感器發(fā)出的電子信號(hào)可以穿過(guò)手指的表面和死性皮膚層,達(dá)到手指皮膚的真皮層,直接讀取指紋圖案,從而大大提高了該系統(tǒng)的安全性。
2? 系統(tǒng)設(shè)計(jì)
??? SPCE061A的指紋識(shí)別系統(tǒng)總體設(shè)計(jì)方案如圖1所示。
圖1? 指紋識(shí)別系統(tǒng)總體設(shè)計(jì)方案
??? 本系統(tǒng)采用凌陽(yáng)公司的SPCE061A單片機(jī),它是將控制功能、數(shù)據(jù)處理功能以及數(shù)字信號(hào)處理(DSP)功能集于一身的一種新型單片機(jī)。它的CPU采用凌陽(yáng)最新推出的16位微處理芯片,工作頻率可達(dá)到40MHz。它的指令系統(tǒng)提供了16位乘法運(yùn)算指令和內(nèi)積運(yùn)算指令,可以對(duì)指紋模板進(jìn)行高速的DSP處理。它的內(nèi)部采用總線結(jié)構(gòu),減少了各個(gè)功能部件之間的連線,提高了可靠性和抗干擾能力。它的結(jié)構(gòu)采用模塊化,易于系統(tǒng)的擴(kuò)展。它的中斷處理能力較強(qiáng),適用于各種實(shí)時(shí)控制領(lǐng)域。它的地址線達(dá)到22根,可以擴(kuò)展4M空間的程序和數(shù)據(jù)存儲(chǔ)器,適合指紋識(shí)別系統(tǒng)對(duì)存儲(chǔ)器容量較大的要求。它的低功耗和低電壓工作模式也使它特別適合于電池供電的指紋識(shí)別系統(tǒng)。
??? MBF300是富士通開(kāi)發(fā)出的一種微型指紋傳感器,系統(tǒng)利用MBF300將采樣指紋模板輸入到單片機(jī)中進(jìn)行比較分析。它是利用手指在傳感器表面滑動(dòng)進(jìn)行指紋的采樣,所以被稱為掃描型傳感器。
??? 鍵盤和LCD都是I/O設(shè)備。鍵盤可以讓用戶修改信息和輸入ID號(hào),增強(qiáng)該系統(tǒng)的安全性;LCD采用CHIPS65545,用于顯示界面信息,為防電磁干擾和信號(hào)衰減,LCD連接線必須作一些特殊處理。
3? MBF300傳感器的基本原理及特點(diǎn)
??? 電容式傳感器可以將物體、圖形、文字等具有二維的圖象轉(zhuǎn)換成電信號(hào)。MBF300屬于電容式傳感器。它由一個(gè)2維金屬電極陣列構(gòu)成。一端為固定極板,而人的手指皮膚則作為活動(dòng)極板。當(dāng)手指置于感應(yīng)器上時(shí),一個(gè)微細(xì)的信號(hào)從驅(qū)動(dòng)環(huán)耦合到手指真皮表層上,并隨著指紋的紋脊和紋谷的變化而變化。感應(yīng)器偵測(cè)這種細(xì)微變化,對(duì)感應(yīng)信號(hào)放大,經(jīng)模數(shù)轉(zhuǎn)換后,從而最終形成精確的指紋圖象。
3.1? MBF300傳感器的基本原理
MBF300電容式傳感器的基本原理如圖2所示。
圖2? MBF300傳感器的基本原理圖
??? S是固定極板,H為活動(dòng)極板,即用戶的手指指紋。當(dāng)活動(dòng)極板因被測(cè)參數(shù)的改變而引起移動(dòng)時(shí),兩極板間的距離d發(fā)生變化,從而改變了兩極板之間的電容量。設(shè)兩極板相互覆蓋的有效面積為A(M2),兩極板間的距離為d(M),板極間介質(zhì)的介電常數(shù)為ε(F·m-1),在忽略板極邊緣影響的條件下,其靜態(tài)電容量C(F)為:
??3.2?
?MBF300傳感器的特點(diǎn)
??? MBF300表面保護(hù)膜異常堅(jiān)硬,使得該傳感器經(jīng)久耐用。它的工作電壓為2.8V~5V,所以可以利用電池進(jìn)行供電。它具有256*32像素感應(yīng)矩陣,使得指紋的特征采樣數(shù)據(jù)更精確。它的總線接口分別支持USB1.1、增強(qiáng)型8位微處理器接口和SPI串行接口。SPCE061A利用
USB接口芯片PDIUSBD12和MBF300指紋傳感器進(jìn)行通信。
4軟件設(shè)計(jì)
4.1指紋識(shí)別算法
??? 人類的指紋由緊密相鄰的凹凸紋路構(gòu)成,根據(jù)公式3-2,通過(guò)對(duì)每個(gè)像素點(diǎn)上利用標(biāo)準(zhǔn)參考放電電流,便可檢測(cè)到指紋的紋路狀況,具體算法分為四部分。
4.1.1指紋識(shí)別預(yù)處理算法
?? 指紋識(shí)別預(yù)處理的目的是使指紋圖像更清晰,邊緣更明顯,以便提取指紋的特征點(diǎn)進(jìn)行識(shí)別。本文采取極值濾波和改進(jìn)的平滑濾波進(jìn)行噪聲消除,使圖像不失真;采取拉普拉斯銳化對(duì)指紋進(jìn)行紋線增強(qiáng),突出邊緣信息,為背景分離算法提供方便。
4.1.2背景分離
?? 采用迭代閥值的方法對(duì)指紋圖像進(jìn)行閥值分割。在圖像處理中,反復(fù)地用一種運(yùn)算直至條件滿足而得到輸出圖像的方法稱為迭代。迭代閥值方法如下:
?①設(shè)定初始灰度閾值T(如令T=127),指指紋圖像的灰度值分為兩組R1和R2。
?②計(jì)算兩組的平均灰度值u1和u2。
?③重新設(shè)定新的灰度閾值T。新的T定義為:T=(u1+u2)/2。
?④依據(jù)新的T對(duì)指紋圖像進(jìn)行閥值分割。
?這種方法是以自適應(yīng)的閥值對(duì)指紋圖像進(jìn)行二值化處理。實(shí)驗(yàn)結(jié)果表明,該方法比設(shè)定固定閥值進(jìn)行處理更有普遍意義,且行之有效。
4.1.3? 特征點(diǎn)提取
??? 采用脊跟蹤法,其基本思想是直接對(duì)圖象進(jìn)行脊線跟蹤,在跟蹤過(guò)程中檢測(cè)和提取特征點(diǎn)。
4.1.4分類算法
??? 指紋被分成5大類:拱類、做環(huán)類、右環(huán)類、尖拱類和旋渦類,預(yù)先使用全局特征排序,可以加速指紋的匹配服務(wù)。
4.2程序流程
??? 當(dāng)系統(tǒng)處于空閑狀態(tài)時(shí),SPCE061A利用P_SystemClock單元寫(xiě)入CPUCLK STOP控制字,使系統(tǒng)從運(yùn)行狀態(tài)轉(zhuǎn)入睡眠狀態(tài),關(guān)閉系統(tǒng)時(shí)鐘(PLL振蕩器)。當(dāng)用戶有指紋或按鍵輸入時(shí), 系統(tǒng)接收到喚醒信號(hào)后接通PLL振蕩器,同時(shí)CPU會(huì)響應(yīng)喚醒事件的處理并進(jìn)行初始化。利用IRQ3_KEY為觸鍵喚醒源,利用FIQ為MBF300指紋傳感器輸入喚醒源。下面是程序流程圖3和IRQ3_KEY喚醒程序的部分代碼。
圖3? 程序流程圖
R1=0x0000; ??????? ???//設(shè)置A口為帶下拉電阻的輸入口
[P_IOA_Attrib]=R1; ?? //設(shè)置3個(gè)屬性向量
[P_IOA_Dir]=R1;
[P_IOA_Data]=R1;???? //中斷設(shè)置(允許IRQ3_KEY觸鍵中斷)
INT OFF;?????????? //關(guān)中斷
R1=0x0080;???????? //設(shè)置中斷標(biāo)置
[P_Int_Ctrl]=R1;
INT IRQ;??? ?????? //開(kāi)中斷
//讀P_IOA_Latch單元,以鎖存IOA[0~7]的數(shù)據(jù),用于觸鍵喚醒
R1=[P_IOA_Latch];? //鎖存A口低8位的數(shù)據(jù)
//將P_SystemClock(寫(xiě))7013H單元的第0~2位置為“111”,使系統(tǒng)進(jìn)入睡眠狀態(tài),
R1=0x0007;???????????????? //系統(tǒng)進(jìn)入睡眠狀態(tài)
[P_SystemClock]=R1;
//IRQ3子程序(端口A的觸鍵喚醒源被觸發(fā)后,調(diào)用IRQ3 中斷服務(wù)子程序):
.TEXT
.PUBLIC _IRQ3
?_IRQ3:
??? R1 = 0x0100;?????????? ??? //比較是否為L(zhǎng)_IRQ3_Ext1中斷
??? TEST R1,[P_INT_Ctrl];
??? JNZ L_IRQ3_Ext1;?????????? //是,則進(jìn)入;否,進(jìn)行下面的判斷
??? R1 = 0x0200;
??? TEST R1,[P_INT_Ctrl];????? //是否為L(zhǎng)_IRQ3_Ext2中斷
??? JNZ L_IRQ3_Ext2;?????? ??? //是,進(jìn)入該中斷;否,執(zhí)行下面的程序
L_IRQ3_KeyChange_WakeUp:??????? //不是上面的兩種中斷則一定為鍵喚醒中斷
??? R1 = 0x0080;?????????? ??? //清除IRQ3觸鍵中斷請(qǐng)求
??? [P_INT_Clear]= R1;
??? ? :
??? (處理系統(tǒng)被喚醒后的任務(wù))?
??? ? :???? ?
??? RETI
L_IRQ3_Ext2:
??? [P_INT_Clear] = R1;??????????? //清除IRQ3_EXT2中斷請(qǐng)求
??? RETI
L_IRQ3_Ext1:
??? [P_INT_Clear] = R1;??????????? //清除IRQ3_EXT1中斷請(qǐng)求
??? RETI
??? 相對(duì)于其它指紋識(shí)別系統(tǒng)控制核心大多數(shù)是DSP運(yùn)算能力強(qiáng),但控制能力差的缺點(diǎn),本系統(tǒng)最大的創(chuàng)新點(diǎn)是控制核心采用了既具有單片機(jī)的控制功能,又具有強(qiáng)大的DSP運(yùn)算能力于一體的16位SOC芯片SPCE061A,使本系統(tǒng)在進(jìn)行簡(jiǎn)單的擴(kuò)展后即可以在指紋鎖、無(wú)鑰汽車、PDA設(shè)備、大型門禁系統(tǒng)等各種需要指紋控制的領(lǐng)域進(jìn)行廣泛的應(yīng)用。
參考文獻(xiàn)
[1]羅亞非等,凌陽(yáng)16位單片機(jī)應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2003
[2] 彭宣戈,一種嵌入式Internet接口系統(tǒng)[J].微計(jì)算機(jī)信息,2005,2 8-9
[3]孫傳友,孫曉斌.測(cè)控系統(tǒng)原理與設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2002
評(píng)論
查看更多