1、前言
指紋因其唯一性,終身不變性等特點(diǎn),在安全性要求較高的行業(yè),如海關(guān)、金融和刑偵領(lǐng)域得到廣泛應(yīng)用。隨著人們安全意識(shí)和隱私覺(jué)悟的提高,手機(jī)、筆記本、PDA等日常電子消費(fèi)品中也逐漸開(kāi)始使用指紋識(shí)別技術(shù)。此類(lèi)電子消費(fèi)品因?yàn)楸銛y、手持等特點(diǎn),在體積、重量、功耗方面都有很高的要求,而傳統(tǒng)的指紋傳感器面積較大,不適合此類(lèi)產(chǎn)品的使用。
隨之產(chǎn)生的滑動(dòng)指紋傳感器(sweep fingerprint sensor),因?yàn)樗〉捏w積、更低的價(jià)格和極低功耗,已經(jīng)逐漸開(kāi)始應(yīng)用于電子消費(fèi)領(lǐng)域和其他安全系統(tǒng)中。以ATMEL公司的AT77C104A FingerChip為例[1],與傳統(tǒng)的指紋傳感器相比,它具有以下優(yōu)點(diǎn):(1)體積小,僅為1.5×15mm;(2)強(qiáng)魯棒性,采集到的相鄰的指紋幀沒(méi)有旋轉(zhuǎn)形變等;(3)低功耗,圖像采集時(shí)為4.5mA,導(dǎo)航時(shí)為1.5mA,睡眠模式小于10uA。然而手指滑過(guò)滑動(dòng)指紋傳感器時(shí),采集到的一個(gè)指紋幀序列而并非完整的指紋圖像。
為了解決這個(gè)難題,本文實(shí)現(xiàn)了基于ARM9芯片AT91RM9200[4]和滑動(dòng)指紋傳感器AT77104A FingerChip的指紋采集系統(tǒng),并在該系統(tǒng)中完成指紋有效拼接。
簡(jiǎn)單點(diǎn)講,指紋傳感器目前主要分為兩類(lèi),光學(xué)指紋傳感器和半導(dǎo)體指紋傳感器;
光學(xué)指紋傳感器:主是利用光的折攝和反射原理,光從底部射向三棱鏡,并經(jīng)棱鏡射出,射出的光線(xiàn)在手指表面指紋凹凸不平的線(xiàn)紋上折射的角度及反射回去的光線(xiàn)明暗就會(huì)不一樣。CMOS或者CCD的光學(xué)器件就會(huì)收集到不同明暗程度的圖片信息,就完成指紋的采集。
半導(dǎo)體指紋傳感器:這類(lèi)傳感器,無(wú)論是電容式或是電感式,其原理類(lèi)似,在一塊集成有成千上萬(wàn)半導(dǎo)體器件的“平板”上,手指貼在其上與其構(gòu)成了電容(電感)的另一面,由于手指平面凸凹不平,凸點(diǎn)處和凹點(diǎn)處接觸平板的實(shí)際距離大小就不一樣,形成的電容/電感數(shù)值也就不一樣,設(shè)備根據(jù)這個(gè)原理將采集到的不同的數(shù)值匯總,也就完成了指紋的采集。
2、指紋采集和拼接系統(tǒng)的硬件設(shè)計(jì)
AT91RM9200是ATMEL推出的ARM9 32位處理器,具有一下優(yōu)點(diǎn):運(yùn)算速度快(在工作頻率為180MHz的情況下它的運(yùn)算速度為200MIPS)、低功耗、可提供片上或片外存儲(chǔ)器以及一系列外圍控制、通信和數(shù)據(jù)存儲(chǔ)的靈活配置。這些特征使得這款芯片適合嵌入式指紋采集系統(tǒng)的開(kāi)發(fā)。
在本系統(tǒng)中,包括的通信過(guò)程為:
(1)主機(jī)和ARM板之間的通信包括:首先PC主機(jī)在超級(jí)終端中使用Xmodem協(xié)議發(fā)送文件RomBoot.bin到AT91RM9200內(nèi)置的ROM中,下載完畢后,自動(dòng)運(yùn)行;其次分別將RomBoot.bin和U-Boot.bin程序下載存儲(chǔ)到DataFlash,復(fù)位后自動(dòng)啟動(dòng)U-Boot;最后通過(guò)以太網(wǎng)口將Linux鏡像文件和應(yīng)用程序下載到DataFlash中。再次復(fù)位后,開(kāi)發(fā)板進(jìn)入Linux系統(tǒng)。
(2)AT77C104A和控制芯片之間的通信:通過(guò)SPI接口完成。控制芯片通過(guò)寫(xiě)寄存器,設(shè)置AT77C104A的工作模式;AT77C104A將采集到的數(shù)據(jù)傳遞到SDRAM中。
圖1 指紋采集和拼接系統(tǒng)框圖
3、AT91RM9200與AT77C104B FingerChip連接及通信過(guò)程
指紋采集芯片采用ATMEL公司的熱敏傳感芯片AT77C104A FingerChip,通過(guò)滑過(guò)傳感陣列的指紋脊和谷的溫度變化來(lái)獲取指紋數(shù)據(jù)。與傳統(tǒng)的指紋傳感器相比,AT77C104A在體積、功耗、工作頻率以及對(duì)工作環(huán)境的魯棒性等方面均有優(yōu)勢(shì)。該芯片提供了SPI接口,有兩種通信總線(xiàn):
(1)SLOW總線(xiàn):對(duì)應(yīng)SLOW模式,起控制作用,控制和讀寫(xiě)內(nèi)部寄存器;
(2)FAST總線(xiàn):對(duì)應(yīng)FAST模式,用于獲取象素,使主機(jī)獲得所有的指紋象素。
在本指紋采集系統(tǒng)中,利用AT91RM9200的SSC接口與AT77C104B FingerChip相連。SSC 包含獨(dú)立的接收器、發(fā)送器及一個(gè)時(shí)鐘分頻器。每個(gè)發(fā)送器及接收器有三個(gè)接口:針對(duì)數(shù)據(jù)的TD/RD 信號(hào)、針對(duì)時(shí)鐘的TK/RK 信號(hào)及針對(duì)幀同步的TF/RF信號(hào)。AT91RM9200與AT77C104B FingerChip 通信時(shí),前者處于主機(jī)方式,后者處于從機(jī)方式,連接如圖2所示。
圖2 AT91RM9200與AT77C104B FingerChip連接
在該通信過(guò)程中,SSC的接收器時(shí)鐘RK由TK驅(qū)動(dòng),同時(shí)接收端與發(fā)送端同步,所以TF與RF相連。SSC的可編程高電平及兩個(gè)32位專(zhuān)用PDC 通道,可在沒(méi)有處理器干涉的情況下進(jìn)行連續(xù)的高速率數(shù)據(jù)傳輸,適用于快速獲取指紋數(shù)據(jù)。
滑動(dòng)時(shí)指紋傳感器獲得的每一個(gè)像素,由一個(gè)16進(jìn)制數(shù)表示,對(duì)應(yīng)著4個(gè)時(shí)鐘周期。當(dāng)傳感器通過(guò)SPI端口傳輸獲取到一幀數(shù)據(jù)時(shí),先傳輸一個(gè)幀同步信號(hào)F0F00200,然后再傳輸232×8像素指紋數(shù)據(jù)。獲取到的指紋數(shù)據(jù)存儲(chǔ)在SDRAM中,通過(guò)指紋拼接程序?qū)⒓y幀序列拼接成完整的指紋圖像,然后通過(guò)USB傳輸回PC主機(jī)中顯示。
4、系統(tǒng)定制和驅(qū)動(dòng)程序加載
4.1 系統(tǒng)定制
為了增加系統(tǒng)的可維護(hù)性,采用Linux系統(tǒng),Linux內(nèi)核可根據(jù)需要裁減。系統(tǒng)定制流程:
1、在ShopEx客服的幫助下,以書(shū)面形式整理需求;
2、ShopEx開(kāi)發(fā)人員根據(jù)開(kāi)發(fā)工作量進(jìn)行報(bào)價(jià):
3、簽約,開(kāi)發(fā)內(nèi)容做為合同附件:
4、客戶(hù)支付相應(yīng)開(kāi)發(fā)費(fèi)用;
5、ShopEx進(jìn)行系統(tǒng)開(kāi)發(fā)、測(cè)試;
6、ShopEx客服協(xié)同客戶(hù)共同就開(kāi)發(fā)內(nèi)容進(jìn)行驗(yàn)收;
7、驗(yàn)收通過(guò),客戶(hù)開(kāi)始使用定制系統(tǒng): 會(huì)議的管理和控制
8、基于 Web 的會(huì)議管理和資源管理,使會(huì)議定制、資源管理、用戶(hù)管理輕松實(shí)現(xiàn)。
9、 系統(tǒng)支持多種會(huì)議類(lèi)型,分別對(duì)會(huì)議類(lèi)型、用戶(hù)角色等進(jìn)行了不同級(jí)別的驗(yàn)證。
10、系統(tǒng)支持多種會(huì)議成員身份和認(rèn)證,每個(gè)會(huì)議成員在系統(tǒng)中擁有不同角色權(quán)限。會(huì)議主持人可遠(yuǎn)程實(shí)時(shí)控制與會(huì)者的視音頻參數(shù),以達(dá)到完美的會(huì)議效果。
4.2 加載驅(qū)動(dòng)程序
設(shè)備驅(qū)動(dòng)程序在Linux內(nèi)核中,使某個(gè)特定的硬件響應(yīng)一個(gè)定義良好的內(nèi)部編程接口,同時(shí)完全隱藏了設(shè)備的工作細(xì)節(jié)。用戶(hù)通過(guò)一組標(biāo)準(zhǔn)化的調(diào)用完成對(duì)硬件的操作,而這些調(diào)用是和特定的驅(qū)動(dòng)程序無(wú)關(guān)的。將這些調(diào)用映射到作用了實(shí)際硬件的設(shè)備特定的操作上,就是設(shè)備驅(qū)動(dòng)程序的任務(wù)。也即Linux中的模塊化實(shí)現(xiàn),這也是Linux中設(shè)備驅(qū)動(dòng)程序的一大特點(diǎn)。
將FingerChip驅(qū)動(dòng)程序加載到Linux文件系統(tǒng)中,當(dāng)系統(tǒng)運(yùn)行時(shí),使用insmod命令,即可實(shí)現(xiàn)指紋傳感器設(shè)備的裝載。通過(guò)標(biāo)準(zhǔn)化的調(diào)用,實(shí)現(xiàn)對(duì)傳感器的控制。
5、基于滑動(dòng)式指紋傳感器的指紋拼接算法
當(dāng)手指滑過(guò)時(shí),滑動(dòng)指紋傳感器采集到是一系列指紋幀序列,因此在嵌入式系統(tǒng)中,需要對(duì)獲取的指紋幀序列進(jìn)行拼接。與PC機(jī)中的CPU相比,ARM芯片速度較低。為了減少刮取指紋后的等待時(shí)間,對(duì)指紋拼接速度的要求很高。
本文運(yùn)用基于塊匹配指紋拼接算法[5],能夠快速有效的尋找到相鄰指紋幀之間的偏移量。塊匹配算法是:(1)在圖像A中選取M×N大小的X區(qū)域;(2)在圖像B中選取所有可能的M×N大小的Y區(qū)域;(3)計(jì)算X區(qū)域和Y區(qū)域?qū)?yīng)象素差值的平均值MAE;MAE越小,兩區(qū)域相似度越高;計(jì)算公式為:
(1)
其中0≤i≤M-1,0≤j≤N-1,p(i,j)為X區(qū)域的點(diǎn)p的象素值,q(i,j)為Y區(qū)域?qū)?yīng)點(diǎn)q的象素值。MAE越小,兩區(qū)域相似度越高。理想情況下,MAE最小值為0。
具體實(shí)現(xiàn)步驟:(1)FingerChip AT77104A獲取到的指紋幀數(shù)據(jù)大小為232×8,設(shè)x方向?yàn)?32,y方向?yàn)?。為了有效的拼接相鄰兩幀指紋,設(shè)置獲取每一幀數(shù)據(jù)的頻率,使得y方向的偏移量dy不大于8,即保證相鄰兩幀一定有重疊。(2)理想情況下,手指在y方向滑動(dòng),在x方向上偏移量為0。因此,只考慮dx不大于dy的情況。當(dāng)dx超過(guò)dy時(shí),滑動(dòng)無(wú)效。(3)由(1)(2)可得,|dx|<8。同時(shí)可得,最后一行,中間的(232-8×2)個(gè)象素與下一幀必有重疊。(4)取前一幀最后一行(232-8×2)個(gè)象素,即(232-8×2)×1的模板,與新獲取的一幀指紋匹配。(5)匹配方法:在新的指紋幀里面尋找所有可能的(232-8×2)×1的模板,計(jì)算求得MAE。選取MAE的最小值對(duì)應(yīng)的模板,此模板與上一幀的最后一行的(232-8×2)×1的模板相匹配。即得dx,dy。(6)重復(fù)執(zhí)行以上步驟,直到得到一幅完整的指紋圖像。圖3-a為拼接前的指紋幀,圖3-b為拼接后的指紋圖像。
圖3 a.拼接前的指紋幀 b.拼接后的指紋圖像
6、總結(jié)
本文實(shí)現(xiàn)了基于ARM9芯片AT91RM9200和滑動(dòng)指紋傳感器AT77C104B FingerChip的指紋采集系統(tǒng),具有低功耗,采集便捷,通信系統(tǒng)簡(jiǎn)單等優(yōu)點(diǎn),具有很大的實(shí)用價(jià)值。開(kāi)發(fā)的指紋拼接算法通過(guò)了AT77C104B FingerChip獲取的100幅指紋幀序列的測(cè)試,均能達(dá)到較好的效果。該系統(tǒng)獲取到的指紋幀序列和拼接后的指紋圖像,均可通過(guò)USB接口導(dǎo)出,可用于指紋拼接算法有效性的測(cè)試和指紋識(shí)別算法的測(cè)試。
作者:朱文娟 王正勇 張超 葉勇建 來(lái)源:《微計(jì)算機(jī)信息》
我推薦大家讀
輕松參與
VS
表達(dá)立場(chǎng)
這是垃圾文章