基于DSP的自動(dòng)指紋識(shí)別系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:文章介紹了一種基于TI公司的TMS320VC5402來(lái)構(gòu)造指紋識(shí)別系統(tǒng)的方法。詳細(xì)論述了系統(tǒng)的各個(gè)組成部分以及指紋識(shí)別算法的實(shí)現(xiàn)流程,結(jié)合VC5402的指令集和自身結(jié)構(gòu)特點(diǎn),討論了如何高效的設(shè)計(jì)應(yīng)用程序的方法。文章對(duì)如何將DSP的主機(jī)接口(HPI)改造成通用輸入輸出口(GPIO)、將多通道緩沖串行口(McBSP)設(shè)置成SPI接口進(jìn)行了詳細(xì)的說(shuō)明,對(duì)數(shù)據(jù)圖像處理需要較大空間而DSP可尋址的數(shù)據(jù)空間又過(guò)小的矛盾,提出了切實(shí)可行的解決辦法。
關(guān)鍵詞:指紋識(shí)別;DSP;混合語(yǔ)言編程
指紋識(shí)別技術(shù)是以數(shù)字圖像處理技術(shù)為基礎(chǔ),而逐步發(fā)展起來(lái)的。相對(duì)于密碼、各種證件等傳統(tǒng)身份認(rèn)證技術(shù)和諸如語(yǔ)音、虹膜等其它生物認(rèn)證技術(shù)而言,指紋識(shí)別是一種更為理想的身份認(rèn)證技術(shù)。使用指紋識(shí)別具有許多優(yōu)點(diǎn),例如:每個(gè)人的指紋都不相同,極難進(jìn)行復(fù)制或被盜用;指紋比較固定,不會(huì)隨著年齡的增長(zhǎng)或健康程度的變化而變化;最重要的在于指紋圖像便于獲取,易于開(kāi)發(fā)識(shí)別系統(tǒng),具有很高的實(shí)用性和可行性。
1 指紋識(shí)別系統(tǒng)的架構(gòu)
本課題設(shè)計(jì)了一個(gè)嵌入式系統(tǒng),通過(guò)DSP來(lái)完成指紋圖像的采集和指紋識(shí)別的算法。另外為使系統(tǒng)有更廣闊的應(yīng)用領(lǐng)域,在設(shè)計(jì)上還采用異步串行通訊方式實(shí)現(xiàn)了DSP和PC之間的數(shù)據(jù)交互。據(jù)此,系統(tǒng)由指紋傳感芯片、復(fù)雜可編程邏輯器件、閃爍存儲(chǔ)器和UART等硬件組成。系統(tǒng)的結(jié)構(gòu)框圖和主要程序流程圖如圖1和圖2所示:
2 系統(tǒng)各部分設(shè)計(jì)要點(diǎn)
2.1 DSP的選擇和存儲(chǔ)空間的設(shè)計(jì)
TMS320VC5402具有很高的性價(jià)比,可以訪問(wèn)1M的程序空間和64K的數(shù)據(jù)空間。內(nèi)部自帶的16K 雙尋址RAM,可以在一個(gè)指令周期內(nèi)完成兩次讀操作或一次讀和一次寫(xiě)操作。鎖相環(huán)電路則可提供高達(dá)100MHz的工作頻率,從而使VC5402完全有能力在較短的時(shí)間內(nèi)完成指紋的識(shí)別操作。
由于指紋圖像具有數(shù)據(jù)量大特點(diǎn),因此程序的設(shè)計(jì)不可避免的需要較大的存儲(chǔ)空間。系統(tǒng)中所采集到的8bits灰度圖像大小為300×256,則存儲(chǔ)一幅圖像就需要75K的空間,而VC5402可尋址的數(shù)據(jù)空間范圍總共才有64K。為此,可以參照VC5402空間分配結(jié)構(gòu)圖,通過(guò)程序空間頁(yè)擴(kuò)展功能來(lái)解決圖像的存儲(chǔ)和運(yùn)算問(wèn)題,運(yùn)用RPT、READA和WRITA指令完成圖像數(shù)據(jù)在程序空間和數(shù)據(jù)空間的搬移操作。
2.2 指紋采集電路的設(shè)計(jì)
指紋傳感芯片選用Fujitsu公司的MBF200。它由256列×300行電容陣列組成,芯片內(nèi)設(shè)計(jì)有兩套采樣保持電路用于指紋圖像的采集。圖像傳輸速度最大可達(dá)30幀/秒,能夠滿足連續(xù)指紋圖像的采集和比對(duì)。MBF200具有手指自動(dòng)檢測(cè)電路(AFD),它允許DSP在沒(méi)有指紋時(shí)處在低功耗待命模式,當(dāng)有手指時(shí)才通過(guò)中斷喚醒它進(jìn)行相應(yīng)的處理。然而實(shí)驗(yàn)證明,AFD功能的可靠性較差,不能滿足設(shè)計(jì)要求。為此,在設(shè)計(jì)上采用了手動(dòng)開(kāi)關(guān)加軟件查詢方式來(lái)判斷是否進(jìn)行指紋的采集。當(dāng)主機(jī)接口(HPI)中的HPIENA管腳通過(guò)電阻接地,則系統(tǒng)復(fù)位上電后,HPI接口將作為通用輸入輸出口(GPIO)來(lái)使用。將手動(dòng)開(kāi)關(guān)的輸出信號(hào)線和GPIO的一個(gè)指定的輸入口相連接,當(dāng)要進(jìn)行指紋采集時(shí),通過(guò)開(kāi)關(guān)產(chǎn)生一個(gè)輸出信號(hào);而系統(tǒng)初始化后DSP不斷的查詢GPIO中指定的輸入口狀態(tài),一旦發(fā)現(xiàn)狀態(tài)發(fā)生變化,就進(jìn)行指紋圖像的采集。實(shí)驗(yàn)證明,這種方式很好的解決了圖像采集的問(wèn)題,提升了系統(tǒng)的可靠性。除此之外,GPIO中其它的管腳可作為輸出管腳來(lái)使用,用于控制聲光報(bào)警電路。
2.3 DSP與PC接口的設(shè)計(jì)
為了充分利用VC5402的片上資源,降低成本。系統(tǒng)中使用MAXIM公司的通用異步串行收發(fā)器MAX3111E實(shí)現(xiàn)DSP和PC的通信。MAX3111E應(yīng)用SPI接口與主控制器進(jìn)行通信,它具有四個(gè)RS-232電平轉(zhuǎn)換器,這樣無(wú)需再接入MAX232進(jìn)行電平轉(zhuǎn)換,從而應(yīng)用一個(gè)芯片就實(shí)現(xiàn)了具有SPI接口的主控器與PC進(jìn)行異步數(shù)據(jù)傳輸?shù)墓δ堋?/P>
VC5402的時(shí)鐘停止模式兼容SPI通信協(xié)議。當(dāng)McBSP被設(shè)置成時(shí)鐘停止模式時(shí),可將發(fā)送幀同步信號(hào)(FSX)用作SPI協(xié)議中/SS,將發(fā)送時(shí)鐘(CLKX)用作SPI協(xié)議中SCK;接收串行數(shù)據(jù)(DR)和發(fā)送串行數(shù)據(jù)(DX)分別作為協(xié)議中的MISO和MOSI。由于發(fā)送器與接收器在芯片內(nèi)部實(shí)現(xiàn)了同步,所以接收時(shí)鐘(CLKR)和接收幀同步信號(hào)(FSR)不用于SPI模式中。當(dāng)將VC5402配置為主器件,MAX3111E配置為從器件時(shí),系統(tǒng)中McBSP各個(gè)寄存器參數(shù)的設(shè)置如表1所示:
表1 DSP作為SPI協(xié)議主器件時(shí),McBSP的配置信息
需要設(shè)置的位 |
所在寄存器 |
功能描述 |
系統(tǒng)所采用的值 |
CLKSTP |
SPCR1 |
禁止或使能SPI模式 |
11b |
CLKXP |
PCR |
控制BCLKX信號(hào)的極性 |
0b |
CLKXM |
PCR |
控制BCLKX信號(hào)的方向 |
1b |
CLKSM |
SRGR2 |
采樣率時(shí)鐘從CPU時(shí)鐘中取得 |
1b |
CLKGDV |
SRGR1 |
設(shè)定采樣率分頻系數(shù) |
29 |
FSXM |
PCR |
控制BFSX信號(hào)的方向 |
1b |
FSGM |
SRGR2 |
BFSX在每次數(shù)據(jù)傳輸時(shí)有效 |
0b |
FSXP |
PCR |
控制BFSX信號(hào)極性 |
1b |
XDATDLY |
XCR2 |
給BFSX信號(hào)提供正確的建立時(shí)間 |
01b |
RDATDLY |
RCR2 |
給BFSX信號(hào)提供正確的建立時(shí)間 |
01b |
RWDLEN1 |
RCR1 |
控制接受數(shù)據(jù)包長(zhǎng)度 |
010b |
XWDLEN1 |
XCR1 |
控制發(fā)送數(shù)據(jù)包長(zhǎng)度 |
010b |
2.4 握手信號(hào)與程序加載的設(shè)計(jì)
系統(tǒng)中使用EPM7128SLC84作為全局邏輯控制器件。FLASH用于存儲(chǔ)系統(tǒng)的應(yīng)用程序,當(dāng)系統(tǒng)復(fù)位后,通過(guò)Bootloader完成程序的搬移。設(shè)計(jì)上將FLASH映射到數(shù)據(jù)空間的后32K處,選用XF來(lái)區(qū)分是對(duì)SRAM尋址還是對(duì)FLASH尋址。當(dāng)系統(tǒng)上電復(fù)位后,XF引腳輸出高電平,這時(shí)FLASH將映射到數(shù)據(jù)空間中;當(dāng)程序加載結(jié)束后,在系統(tǒng)初始化期間拉低XF信號(hào)屏蔽FLASH,從而使SRAM占據(jù)數(shù)據(jù)空間。另外,將MBF200映射到I/O空間的前32K處,使用A15和/IS作為片選信號(hào)。在設(shè)計(jì)上采用原理圖形式編寫(xiě)CPLD程序,部分程序代碼如圖3所示:
3 指紋識(shí)別算法設(shè)計(jì)概述
原始指紋圖像通常含有較多噪聲,因此需要進(jìn)行預(yù)處理來(lái)改善圖像的質(zhì)量,以便進(jìn)行特征提取和比對(duì)。預(yù)處理包括方向圖計(jì)算、圖像增強(qiáng)、二值化及去噪、圖像細(xì)化及去噪。
由于指紋的紋線具有緩慢變化的特點(diǎn),在局部通常具有明確的方向性,所以可以利用方向圖對(duì)圖像進(jìn)行平滑和銳化處理。沿紋線的切線方向?qū)D像進(jìn)行平滑,以起到連接不應(yīng)有的間斷的作用:沿紋線的法線方向?qū)D像進(jìn)行銳化,以突出紋線的邊緣信息。二值化就是把8灰度的指紋圖像變成0和255的二值圖像。二值化后的圖像通常在脊線上會(huì)有白色的斑點(diǎn),程序上使用種子填充法把斑點(diǎn)去掉。為了進(jìn)一步壓縮數(shù)據(jù),需要對(duì)二值化圖像進(jìn)行細(xì)化處理。細(xì)化時(shí)應(yīng)保持紋線的連接性、方向性不變,還應(yīng)保持紋線的中心基本不變。細(xì)化后的紋線會(huì)出現(xiàn)搭橋及豁口,因此必須進(jìn)行細(xì)化后的去噪工作。預(yù)處理中各步驟的圖像如圖4所示。
設(shè)計(jì)中使用紋線端點(diǎn)和分叉點(diǎn)作為指紋特征點(diǎn),這不僅是因?yàn)檫@兩類特征點(diǎn)出現(xiàn)的幾率最高且容易檢測(cè),更重要的是它們足以描述指紋的唯一性。程序中使用紋線跟蹤方法提取特征點(diǎn),其中紋線端點(diǎn)的屬性由橫縱坐標(biāo)和紋線角度來(lái)表示;分叉點(diǎn)的屬性由橫縱坐標(biāo),紋線角度和三個(gè)分支間的夾角(從大到?。﹣?lái)表示。在提取出指紋特征點(diǎn)后,便會(huì)得到一組矢量點(diǎn),同樣在指紋模板庫(kù)中保存的指紋模板也是一組矢量點(diǎn),要判斷兩個(gè)指紋是否相同的問(wèn)題也就轉(zhuǎn)化成判斷兩組矢量點(diǎn)是否相同的點(diǎn)模式匹配問(wèn)題。
4 識(shí)別算法在DSP上的實(shí)現(xiàn)
程序設(shè)計(jì)上使用混合語(yǔ)言編程,用C語(yǔ)言設(shè)計(jì)程序中對(duì)運(yùn)行時(shí)間影響不大的模塊,而用匯編語(yǔ)言設(shè)計(jì)嚴(yán)格要求實(shí)時(shí)性的核心算法。為達(dá)到最佳利用DSP資源的目的,在程序的設(shè)計(jì)中要注意以下幾個(gè)方面:
(1)VC5402指令集中提供了一些零開(kāi)銷(xiāo)的循環(huán)指令,如RPT和RPTB等。為進(jìn)一步提高效率,在執(zhí)行循環(huán)指令時(shí),應(yīng)充分利用輔助寄存器和累加器。數(shù)組盡量用寄存器間接尋址,中間變量盡量存放于累加器中,以盡可能地減少中間變量存放所消耗的時(shí)間。
(2)VC5402采用流水線結(jié)構(gòu),允許多條指令同時(shí)訪問(wèn)CPU資源,從而提高系統(tǒng)的執(zhí)行速度。但當(dāng)CPU的某一資源同時(shí)被流水線的幾個(gè)階段訪問(wèn)時(shí),就會(huì)發(fā)生流水線沖突。因此,必須通過(guò)合理的調(diào)整匯編程序的代碼順序或加入適當(dāng)?shù)腘OP指令來(lái)解決這一問(wèn)題。
(3)識(shí)別算法中涉及到了卷積和乘累加操作,這可以通過(guò)使用循環(huán)尋址功能和乘累加指令來(lái)實(shí)現(xiàn)。另外,VC5402提供了可延遲的轉(zhuǎn)移、調(diào)用和返回指令。這些指令的執(zhí)行時(shí)間比它們對(duì)應(yīng)的非延遲指令要少2個(gè)周期,需要注意的是有時(shí)要在延遲指令后插入NOP指令,以保證適當(dāng)?shù)牟僮黜樞颉?/P>
(4)在涉及數(shù)字信號(hào)處理算法時(shí)應(yīng)盡可能地使用DSPLIB庫(kù)中的函數(shù),因?yàn)檫@些函數(shù)均用匯編語(yǔ)言編寫(xiě),優(yōu)化程度很高。另外,在C程序中盡可能地采用內(nèi)聯(lián)(inline)函數(shù),以便提高代碼的集成度。由于采用混合編程方法,因此在程序設(shè)計(jì)上要嚴(yán)格遵循函數(shù)調(diào)用規(guī)則和寄存器的使用約定。
5 結(jié)束語(yǔ)
本系統(tǒng)采用TMS320VC5402完成了從指紋圖像的采集到特征匹配的功能,并結(jié)合DSP的結(jié)構(gòu)特點(diǎn)和相應(yīng)的指令詳細(xì)的闡述了系統(tǒng)硬件設(shè)計(jì)和程序的優(yōu)化。實(shí)踐證明本系統(tǒng)工作穩(wěn)定、實(shí)時(shí)性好,具有很強(qiáng)的實(shí)用性和指導(dǎo)性。