馮志偉
【摘 要】將指紋識別技術(shù)與嵌入式系統(tǒng)相結(jié)合可以使指紋識別系統(tǒng)擺脫空間與環(huán)境的限制,更加廣泛的適用于各種場合的需要。系統(tǒng)硬件平臺采用基于ARM9架構(gòu)的S3C2410嵌入式平臺。本文對指紋圖像預(yù)處理、特征值提取和指紋匹配算法進(jìn)行了改進(jìn)。實(shí)測結(jié)果表明,本系統(tǒng)可以穩(wěn)定的運(yùn)行在ARM平臺上,對指紋識別技術(shù)在嵌入式平臺應(yīng)用具有很大參考價(jià)值。
【關(guān)鍵詞】嵌入式;Linux;指紋識別;MiniGUI
0.引言
計(jì)算機(jī)的發(fā)展使指紋識別技術(shù)得到高速發(fā)展。目前指紋識別系統(tǒng)的發(fā)展以嵌入式系統(tǒng)為主,嵌入式指紋識別系統(tǒng)需要構(gòu)建可靠的嵌入式平臺,而且由于資源有限,對指紋識別算法要求較高。嵌入式指紋識別系統(tǒng)體積小、靈活性高、操作簡單,能夠很好的滿足實(shí)際需要。與其它生物識別技術(shù)相比,指紋具有較高的穩(wěn)定性、獨(dú)特性。指紋絕對可以通過每個(gè)指紋的細(xì)節(jié)特征進(jìn)行區(qū)分。
1.指紋識別系統(tǒng)設(shè)計(jì)方案
本系統(tǒng)以S3C2410微處理器為核心,外圍擴(kuò)展了SDRAM、RAM芯片、FLASH芯片、RTL8019AS網(wǎng)卡芯片。S3C2410的通用IO口與液晶顯示屏、鍵盤相連,完成與用戶的交互操作,構(gòu)成了了本系統(tǒng)的硬件開發(fā)板。指紋采集模塊采用的是Veridicom公司的FPS200指紋傳感器模塊,并通過USB接口與開發(fā)板相連,實(shí)現(xiàn)數(shù)據(jù)指令的傳送,從而在開發(fā)板上完成指紋的獲取、預(yù)處理、提取特征值、特征值對比等功能。系統(tǒng)機(jī)構(gòu)框架見圖1。
操作系統(tǒng)啟動后對FPS200指紋模塊進(jìn)行初始化,然后通過USB將采集到的指紋圖像傳送到ARM開發(fā)板上,應(yīng)用程序?qū)ψx入的指紋圖像進(jìn)行處理并,最后進(jìn)行指紋的匹配。
2.嵌入式linux開發(fā)平臺搭建與實(shí)現(xiàn)
2.1嵌入式系統(tǒng)概述
嵌入式操作系統(tǒng)(Embedded Operating System,簡稱EOS)負(fù)責(zé)嵌入式系統(tǒng)的全部資源的分配和調(diào)度工作,管理任務(wù)和并發(fā)操作,為開發(fā)人員提供統(tǒng)一的接口和硬件抽象。嵌入式操作系統(tǒng)除具備任務(wù)調(diào)度、中斷處理、文件操作等一般操作系統(tǒng)所具有的最基本功能外,還具有小巧、穩(wěn)定可靠、可移植性好、可擴(kuò)展性好、具有強(qiáng)大的網(wǎng)絡(luò)功能及硬件支持等優(yōu)點(diǎn)。
2.2嵌入式Linux交叉編譯環(huán)境的搭建
交叉編譯需要一個(gè)高性能的宿主機(jī),用來編譯應(yīng)用開發(fā)的源程序,然后可以生成目標(biāo)平臺的可執(zhí)行程序。建立交叉編譯環(huán)境需要完成兩件事:宿主機(jī)的選擇和交叉編譯環(huán)境的建立。
2.2.1宿主機(jī)的選擇
嵌入式Linux開發(fā)的宿主機(jī)可以選擇安裝Linux操作系統(tǒng)的主機(jī)或是裝有Linux虛擬機(jī)的主機(jī)。本文選擇Fedora12作為宿主機(jī)的操作系統(tǒng),Linux宿主機(jī)與目標(biāo)機(jī)通過兩種方式進(jìn)行連接:(1)網(wǎng)絡(luò)方式,通過TFTP和NFS服務(wù);(2)串口方式minicom。
2.2.2交叉編譯環(huán)境的建立
交叉編譯就是在一個(gè)平臺上編譯生成可在另一個(gè)平臺上執(zhí)行的程序。平臺是指體系結(jié)構(gòu)(Architecture)和操作系統(tǒng)(Operating System)。為了Linux的應(yīng)用程序的開發(fā),構(gòu)建一個(gè)多體系結(jié)構(gòu)的交叉編譯環(huán)境是非常必要的。
2.5設(shè)備驅(qū)動程序移植
在Linux系統(tǒng)下將設(shè)備分為三類:字符設(shè)備,塊設(shè)備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備驅(qū)動程序與訪問普通文件一樣,需要至少實(shí)現(xiàn)open、close、read和write等方法,但是普通文件可以前后移動的訪問,字符設(shè)備通常只能順序訪問。塊設(shè)備與字符設(shè)備類似,塊設(shè)備上可以容納文件系統(tǒng)。但是塊設(shè)備和字符設(shè)備在內(nèi)核中數(shù)據(jù)的管理方式不同,內(nèi)核與驅(qū)動程序之間的軟件接口也不同。
Linux設(shè)備驅(qū)動的移植分為兩種,一種是內(nèi)核已經(jīng)支持的硬件,這些設(shè)備驅(qū)動移植比較簡單,只需在內(nèi)核配置時(shí)加入該設(shè)備,并添加相應(yīng)的初始化代碼即可。另一種是內(nèi)核不支持的硬件,首先要編寫相應(yīng)的驅(qū)動程序,然后通過交叉編譯生成驅(qū)動模塊文件,在應(yīng)用程序使用該驅(qū)動時(shí)加載驅(qū)動模塊。與U-Boot的移植一樣,Linux內(nèi)核也需要對K9F1208U0B NAND Flash、RTL8019AS網(wǎng)卡進(jìn)行驅(qū)動的移植,而且內(nèi)核中還要加入LCD、觸摸屏和USB驅(qū)動的移植。
2.6根文件系統(tǒng)的設(shè)計(jì)
嵌入式Linux可以支持的多種文件系統(tǒng),最常用的是Cramfs、YAFFS、JFFS等。
3.指紋識別算法研究
指紋識別算法是將采集到的指紋與指紋模板進(jìn)行對比,判斷它們是否為同一枚手指。目前的指紋識別過程如圖3所示。系統(tǒng)從指紋傳感器獲得原始指紋圖像,首先要對采集的圖像進(jìn)行預(yù)處理,將噪聲等無用信息去除,并且將有用信息加強(qiáng)。其次對處理后的圖像提取特征,獲得能夠區(qū)分指紋的唯一性特征。注冊指紋是把得到的指紋加入到指紋庫中。最后對指紋匹配,通常為了節(jié)省查找時(shí)間,會將指紋數(shù)據(jù)庫分類。
3.1指紋圖像預(yù)處理
指紋模塊采集到的指紋圖像是灰度圖像,這些灰度圖像中通常包含有噪聲等無用信息,而這些無用信息嚴(yán)重影響到指紋識別系統(tǒng)的準(zhǔn)確性,為了提高系統(tǒng)的性能需要對指紋圖像進(jìn)行預(yù)處理。指紋圖像預(yù)處理包括提取指紋圖像中指紋的有效區(qū)域,去除有效區(qū)域中的噪聲,加強(qiáng)指紋有效信息,為指紋特征提取和最終的識別提供好的條件。
3.1.1歸一化
歸一化的算法描述如下:假設(shè)指紋圖像大小為N×N,G(i,j)為像素點(diǎn)(i,j)的灰度值,N(i,j)為歸一化后像素點(diǎn)(i,j)的灰度值,對指紋圖像中的像素點(diǎn)依次應(yīng)用公式(1)實(shí)現(xiàn)歸一化。歸一化處理調(diào)整圖像灰度值的均值和方差到一個(gè)希望的范圍內(nèi),保證采集到的指紋圖像的灰度值能夠在同一個(gè)級別上,為以后的處理算法提供一個(gè)好的條件。
3.1.2分割
指紋模塊采集到的指紋圖像包括指紋和背景兩部分,所以在預(yù)處理時(shí)需要將背景分割出去,只留下指紋部分。分割操作就是將指紋圖像的有效指紋區(qū)域保留下來進(jìn)行后續(xù)的預(yù)處理操作。
3.1.3基于點(diǎn)方向的二值化
通常在對指紋圖像進(jìn)行二值化之前要先完成濾波去噪,如卷積法、Gabor等,但是這些算法運(yùn)算量較大,不適宜在嵌入式應(yīng)用系統(tǒng)中使用,所以本文中采用將濾波和二值化合并的算法,即基于點(diǎn)方向的二值化,能夠在較小的運(yùn)算代價(jià)下去除一定的粘連和連接斷文等。二值化操作就是將255級灰度圖像轉(zhuǎn)化為只顯示黑和白兩種顏色的指紋圖像。
3.1.4去噪
雖然二值化能夠消除一些噪聲干擾,但是可能會引入新的噪聲,而且指紋紋線上可能會存在少數(shù)氣泡噪聲,指紋圖像邊緣上也會有部分毛刺存在。這些噪聲會對后面的指紋特征提取造成影響,所以在完成二值化操作后需要進(jìn)行一步去噪的操作,刪除指紋圖像邊緣的毛刺和對指紋紋線上的氣泡進(jìn)行填充。
3.1.5細(xì)化
經(jīng)過上面幾步的處理,基本得到了指紋紋線,但是紋線的寬度卻是不均勻的,原因可能是采集指紋圖像時(shí)手指壓力大小不同或是手指不干凈等噪聲影響,紋線不均勻會給指紋特征提取帶來比較大的誤差。對圖像進(jìn)行細(xì)化的算法有很多,常用算法有:Hitditcb算法、E.S.Deutsch算法和OPTA算法。
3.2指紋特征提取
在進(jìn)行指紋特征提取前會利用紋線跟蹤算法對指紋圖像中紋線進(jìn)行修復(fù),修復(fù)后的指紋圖像會提高指紋特征提取的效果和效率,但是如果指紋圖像噪聲干擾嚴(yán)重時(shí),指紋修復(fù)就是一件非常困難的任務(wù),對于不同的指紋圖像,指紋修復(fù)算法效果差別會很大,從而影響到指紋識別算法。還有一種處理方法是,對細(xì)化后的指紋圖像直接進(jìn)行指紋特征提取,當(dāng)然提取的特征中會包含大量的偽特征,但是這樣的提取過程簡單,簡化了算法的復(fù)雜度;然后再根據(jù)實(shí)際中真實(shí)特征點(diǎn)和偽特征點(diǎn)的特點(diǎn),對提取的特征進(jìn)行篩選,刪除偽特征,最終得到真實(shí)有用的特征點(diǎn)集。
3.3指紋特征匹配
指紋匹配是指紋識別系統(tǒng)非常關(guān)鍵的一步,目前已經(jīng)做了大量的研究,常見的匹配算法有基于點(diǎn)模式的指紋匹配算法,基于紋理結(jié)構(gòu)的匹配算法,基于紋線的匹配算法等。點(diǎn)模式匹配算法因其不高的時(shí)間和空間復(fù)雜度,非常適合在嵌入式環(huán)境下使用。本文就采用基于二維群集的點(diǎn)模式匹配算法進(jìn)行指紋匹配。
4.結(jié)束語
本設(shè)計(jì)在S3C2410實(shí)驗(yàn)箱平臺上實(shí)現(xiàn)基于Linux操作系統(tǒng)的指紋識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),采用先進(jìn)的FPS200指紋采集模塊,設(shè)計(jì)了良好的圖形交互界面。本文對基于嵌入式linux的指紋識別系統(tǒng)進(jìn)行了深入研究,硬件平臺采用基于ARM9架構(gòu)的S3C2410嵌入式平臺。對指紋識別算法進(jìn)行了深入的研究,選擇和改進(jìn)后的算法更適用于嵌入式平臺,算法主要分為三個(gè)部分:指紋圖像預(yù)處理、特征值提取和指紋匹配。 [科]
【參考文獻(xiàn)】
[1]顏永龍.嵌入式自動指紋識別系統(tǒng)若干問題的研究[D].重慶:重慶大學(xué)碩士學(xué)位論文,2008.
[2]陳梁.嵌入式指紋識別系統(tǒng)研究與實(shí)現(xiàn)[D].南京:南京航空航天大學(xué)碩士學(xué)位論文,2007.
[3]丁飛.基于的指紋識別系統(tǒng)的研究與實(shí)現(xiàn)[D].廣州:華南理工大學(xué)碩士學(xué)位論文,2007.
[4]柴曉光,岑寶熾.民用指紋識別技術(shù)[M].北京:人民郵電出版社,2004.