摘 要: 通過(guò)研究指紋圖像預(yù)處理算法,提出了基于指紋灰度分類(lèi)的圖像預(yù)處理算法,設(shè)計(jì)了指紋圖像匹配算法,其減少了計(jì)算復(fù)雜度,提高了匹配速度,并設(shè)計(jì)了一套聯(lián)網(wǎng)型指紋識(shí)別系統(tǒng)。通過(guò)對(duì)指紋識(shí)別系統(tǒng)軟、硬件的設(shè)計(jì)和開(kāi)發(fā)解決了現(xiàn)有系統(tǒng)網(wǎng)絡(luò)方面的不足。
關(guān)鍵詞: 嵌入式系統(tǒng); 指紋識(shí)別; 方向場(chǎng); 圖像預(yù)處理
中圖分類(lèi)號(hào): TN919?34; TM417 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)13?0156?04
Abstract: The fingerprint image preprocessing algorithm is studied to propose the image preprocessing algorithm based on fingerprint grayscale classification and fingerprint image matching algorithm based on block orientation field, which can reduce the computation complexity and improve the matching speed. A set networking fingerprint identification system was designed. The insufficient of the available system network was solved by means of the design and development of the fingerprint identification system hardware and software.
Keywords: embedded system; fingerprint identification; direction field; image preprocessing
0 引 言
傳統(tǒng)的身份識(shí)別技術(shù)主要包括基于實(shí)物的身份識(shí)別技術(shù)和基于知識(shí)的身份識(shí)別技術(shù),基于實(shí)物的識(shí)別技術(shù)主要是借助于某一種或某幾種實(shí)物來(lái)實(shí)現(xiàn)身份的認(rèn)證;基于知識(shí)的身份識(shí)別技術(shù)主要是借助于某些特征信息來(lái)實(shí)現(xiàn)身份的認(rèn)證。但是這兩種身份識(shí)別技術(shù)都存在一定的缺陷:對(duì)于基于實(shí)物的身份認(rèn)證方式來(lái)說(shuō),這些實(shí)物容易丟失、損壞或偽造;對(duì)于基于知識(shí)的身份認(rèn)證方式存在信息選擇的問(wèn)題,復(fù)雜信息不易記憶,簡(jiǎn)單信息可靠性差。
生物識(shí)別技術(shù)中,指紋識(shí)別技術(shù)具有采集容易、安全性高、易存儲(chǔ)、穩(wěn)定性好、性?xún)r(jià)比高等優(yōu)點(diǎn),因此近年來(lái)得到了快速發(fā)展?,F(xiàn)階段指紋識(shí)別技術(shù)分為基于PC的指紋識(shí)別技術(shù)和基于嵌入式的指紋識(shí)別技術(shù)?;赑C的指紋識(shí)別技術(shù)在理論上與應(yīng)用上都比較成熟,但其存在價(jià)格較貴、功耗高、移動(dòng)性能差等缺點(diǎn),而嵌入式指紋識(shí)別技術(shù)則提供了良好的解決方案。
1 聯(lián)網(wǎng)型指紋識(shí)別系統(tǒng)的總體設(shè)計(jì)
1.1 總體方案
聯(lián)網(wǎng)型指紋識(shí)別系統(tǒng)由上位機(jī)和客戶(hù)端兩部分組成,其中上位機(jī)部分包括PC和服務(wù)器,PC進(jìn)行信息的管理,服務(wù)器進(jìn)行信息的存儲(chǔ);客戶(hù)端部分為一個(gè)小型的嵌入式指紋識(shí)別系統(tǒng),主要進(jìn)行指紋的增刪、處理、對(duì)比等操作,同時(shí)實(shí)現(xiàn)與上位機(jī)的交互功能。結(jié)合實(shí)驗(yàn)室現(xiàn)有條件,本文進(jìn)行了聯(lián)網(wǎng)型指紋門(mén)禁系統(tǒng)的設(shè)計(jì)。該門(mén)禁系統(tǒng)總體框架如圖1所示。
PC為控制中心,與客戶(hù)端通信實(shí)現(xiàn)對(duì)客戶(hù)端的管理;同時(shí)對(duì)PC采集和客戶(hù)端上傳的用戶(hù)信息進(jìn)行管理,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的讀/寫(xiě)操作,讀取、保存需要的信息。服務(wù)器為存儲(chǔ)中心,主要進(jìn)行海量信息的存儲(chǔ),其中內(nèi)容包括用戶(hù)信息、指紋信息、房間信息以及開(kāi)門(mén)記錄等。門(mén)鎖端即客戶(hù)端,為聯(lián)網(wǎng)系統(tǒng)的終端,是一個(gè)小型的嵌入式系統(tǒng),主要實(shí)現(xiàn)指紋信息的采集、處理等功能,同時(shí)實(shí)現(xiàn)與上位機(jī)的通信功能。為了拓展系統(tǒng)的使用范圍,選擇TCP/IP方式進(jìn)行信息的傳輸,則相應(yīng)的中繼器即為路由器。
1.2 上位機(jī)設(shè)計(jì)
(1) 應(yīng)用軟件開(kāi)發(fā)。對(duì)PC功能進(jìn)行分析后,將該部分的開(kāi)發(fā)分為以下幾個(gè)模塊:人員信息管理模塊、門(mén)鎖通信模塊和開(kāi)門(mén)記錄查詢(xún)模塊。人員管理模板主要用于實(shí)現(xiàn)人員信息的管理、顯示功能,同時(shí)實(shí)現(xiàn)用戶(hù)信息與指紋信息、密碼信息的關(guān)聯(lián)功能。門(mén)鎖通信模塊實(shí)現(xiàn)了PC與客戶(hù)端的通信功能,同時(shí)實(shí)現(xiàn)對(duì)門(mén)鎖的實(shí)時(shí)監(jiān)控功能。開(kāi)門(mén)記錄查詢(xún)模塊實(shí)現(xiàn)了開(kāi)關(guān)門(mén)記錄的查詢(xún)功能,實(shí)現(xiàn)記錄信息的存儲(chǔ)和打印功能。
(2) 數(shù)據(jù)庫(kù)設(shè)計(jì)。數(shù)據(jù)庫(kù)作為一個(gè)信息存儲(chǔ)倉(cāng)庫(kù),主要用于實(shí)現(xiàn)對(duì)信息的有序管理功能,在系統(tǒng)中結(jié)合系統(tǒng)需求,主要使用數(shù)據(jù)庫(kù)存儲(chǔ)以下信息:用戶(hù)的基本信息、指紋信息、密碼信息,房間的基本信息以及對(duì)應(yīng)的IP地址信息,開(kāi)門(mén)記錄等信息。
1.3 客戶(hù)端設(shè)計(jì)
結(jié)合系統(tǒng)聯(lián)網(wǎng)型應(yīng)用的需求,選擇以ARM芯片作為核心芯片進(jìn)行相應(yīng)系統(tǒng)的開(kāi)發(fā)。針對(duì)ARM系統(tǒng)計(jì)算能力相對(duì)較差的問(wèn)題,可以通過(guò)選擇高主頻的芯片對(duì)算法進(jìn)行優(yōu)化改進(jìn)加以克服。結(jié)合系統(tǒng)應(yīng)用的需求,選擇嵌入式Linux系統(tǒng)作為本文的軟件平臺(tái)。
2 指紋識(shí)別系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)總體設(shè)計(jì)
結(jié)合系統(tǒng)的應(yīng)用需求,在嵌入式系統(tǒng)基本設(shè)計(jì)環(huán)節(jié)之外,加入了指紋采集模塊、鍵盤(pán)電路模塊和網(wǎng)絡(luò)模塊。整個(gè)系統(tǒng)的硬件框圖如圖2所示。
在圖2中,ARM芯片為整個(gè)系統(tǒng)的運(yùn)算單元和控制核心;指紋采集模塊用于實(shí)現(xiàn)指紋圖像的采集;存儲(chǔ)模塊用來(lái)存儲(chǔ)系統(tǒng)程序、應(yīng)用程序以及用戶(hù)信息;鍵盤(pán)模塊用于實(shí)現(xiàn)功能的選擇和密碼的輸入功能;LCD模塊用于提示信息的輸出;電插鎖模塊用于模擬門(mén)鎖的開(kāi)關(guān)功能;網(wǎng)絡(luò)模塊用于實(shí)現(xiàn)與上位機(jī)的交互功能等。
2.2 系統(tǒng)硬件設(shè)計(jì)
選擇S3C2440A作為核心處理芯片,DM9000A作為網(wǎng)絡(luò)控制芯片進(jìn)行硬件的設(shè)計(jì)。
電源電路設(shè)計(jì):外部輸入電壓為5 V,S3C2440A芯片的內(nèi)核工作電壓為1.3 V,存儲(chǔ)器電壓為3.3 V,接口電壓為3.3 V,因此需要設(shè)計(jì)相應(yīng)的電壓轉(zhuǎn)換電路。在系統(tǒng)中選用LM1117作為核心轉(zhuǎn)換芯片。選用LM1117?ADJ作為核心電壓的轉(zhuǎn)換芯片,選用LM1117?CT3.3作為接口電壓和存儲(chǔ)電壓的轉(zhuǎn)換芯片。
網(wǎng)絡(luò)部分設(shè)計(jì):以DM9000A作為核心芯片設(shè)計(jì)網(wǎng)絡(luò)部分的接口電路,使用HR911105A作為網(wǎng)絡(luò)的接口。DM9000A是一個(gè)帶有通用處理器接口的完全集成的單芯片快速以太網(wǎng)控制器,集成有一個(gè)10/100M的自適應(yīng)收發(fā)器和一個(gè)4 KB的雙字SRAM。
LCD與觸摸屏電路設(shè)計(jì):選用WXCAT35?TG3作為顯示設(shè)備。WXCAT35?TG3是一個(gè)投射型TFT?LCD模塊,它包含一個(gè)TFT?LCD面板、一個(gè)驅(qū)動(dòng)電路,、一個(gè)背光單元和一個(gè)4線模擬電阻式觸摸屏。它的面板尺寸為3.5英寸,分辨力為320×240,廣泛應(yīng)用于便攜式設(shè)備。
指紋識(shí)別模塊:采用實(shí)驗(yàn)室已有的指紋識(shí)別模塊ZAZ?010作為指紋采集模塊。ZAZ?010系列指紋識(shí)別模塊以高速DSP處理器為核心,配有光學(xué)指紋傳感器,具有指紋錄入,圖像處理,指紋匹配、搜索和模板存儲(chǔ)等功能。
電插鎖模塊:系統(tǒng)選用電插鎖模塊LS?204,其電源供給為DC 12 V,啟動(dòng)狀態(tài)電流為960 mA,平常狀態(tài)為130 mA,該鎖可根據(jù)用戶(hù)需要設(shè)定上鎖延遲時(shí)間為0 s,3 s,6 s和9 s。
3 指紋識(shí)別系統(tǒng)軟件設(shè)計(jì)
3.1 嵌入式Linux系統(tǒng)開(kāi)發(fā)
(1) 建立交叉編譯環(huán)境
為建立交叉編譯環(huán)境首先需要安裝交叉編譯工具,在系統(tǒng)開(kāi)發(fā)過(guò)程中,選擇現(xiàn)有的cross?3.4.1.tar.bz2作為編譯工具。建立交叉編譯環(huán)境的過(guò)程如下:首先在PC機(jī)Linux系統(tǒng)的/usr/local目錄下建立arm目錄,將cross?3.4.1.tar.bz2拷貝至該目錄下;然后進(jìn)入該目錄,執(zhí)行命令“tarjxvfcross?3.4.1.tar.bz2”進(jìn)行解壓,最后編輯/etc/bashrc文件,增加該交叉編譯器的路徑。
(2) 編譯Bootloader
Bootloader是在操作系統(tǒng)內(nèi)核或用戶(hù)應(yīng)用程序運(yùn)行之前的一段啟動(dòng)硬件的引導(dǎo)程序,在絕大部分系統(tǒng)中,整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)完全由Bootloader完成。常見(jiàn)的Bootloader包括Redboot,ARMboot,U?Boot,Bootldr等,系統(tǒng)選擇U?Boot作為系統(tǒng)的Bootloader。
(3) Linux內(nèi)核的選擇、配置和編譯
在系統(tǒng)中選用Linux?2.6.12作為核心,該版本運(yùn)行穩(wěn)定、內(nèi)核精簡(jiǎn),目前使用較為廣泛。在開(kāi)發(fā)過(guò)程中,首先下載Linux?2.6.12源碼,使用tar命令進(jìn)行解壓;然后進(jìn)入內(nèi)核源碼,找到“Makefile”文件,添加對(duì)ARM的支持,將“ARCH?=(SUBARCH) ”和“CROSS_COMPILE?=”分別修改為“ARCH=arm”和“CROSS_COMPILE=arm?linux?”;接下來(lái)修改輸入時(shí)鐘,結(jié)合本系統(tǒng)所使用的12 MHz晶振,將時(shí)鐘的頻率由16.934 MHz改為12 MHz;再次,對(duì)系統(tǒng)內(nèi)核進(jìn)行配置,添加對(duì)系統(tǒng)硬件的支持,主要包括:CPU、串口、LCD、鍵盤(pán)、文件系統(tǒng)等。最后通過(guò)輸入命令makezImage實(shí)現(xiàn)內(nèi)核的完全編譯,編譯結(jié)束后,可在arch/arm/boot目錄下得到Linux內(nèi)核壓縮映像zImage,使用該映像即可實(shí)現(xiàn)系統(tǒng)的引導(dǎo)。
(4) 文件系統(tǒng)的構(gòu)建
編譯內(nèi)核之后,系統(tǒng)僅僅能實(shí)現(xiàn)正常的引導(dǎo),為保證系統(tǒng)的正常運(yùn)行,還需要添加相應(yīng)的文件系統(tǒng)。在系統(tǒng)中,結(jié)合需求,使用Yaffs2文件系統(tǒng)。搭建Yaffs2文件系統(tǒng)步驟如下:
獲取Yaffs源碼,在內(nèi)核和配置單中添加對(duì)Yaffs的支持;獲取BusyBox源碼,修改并配置BusyBox進(jìn)行編譯安裝;使用_install中的文件,構(gòu)建文件系統(tǒng)框架;使用mkyaffs2image工具制作文件系統(tǒng)。
3.2 驅(qū)動(dòng)開(kāi)發(fā)
驅(qū)動(dòng)程序是一種可以使操作系統(tǒng)和設(shè)備通信的特殊程序,相當(dāng)于硬件的接口,在系統(tǒng)開(kāi)發(fā)過(guò)程中具有重要意義,Linux中85%的源代碼都是驅(qū)動(dòng)程序。在本系統(tǒng)中,為滿(mǎn)足聯(lián)網(wǎng)型應(yīng)用的要求,需進(jìn)行網(wǎng)絡(luò)驅(qū)動(dòng)程序的開(kāi)發(fā),該過(guò)程可分為網(wǎng)卡驅(qū)動(dòng)程序的編碼與配置兩個(gè)部分。
(1) 網(wǎng)卡驅(qū)動(dòng)程序編碼
網(wǎng)卡驅(qū)動(dòng)程序的編碼需結(jié)合硬件原理圖進(jìn)行,在本系統(tǒng)中選用的網(wǎng)絡(luò)芯片為DM9000A,下面針對(duì)其進(jìn)行具體的設(shè)計(jì),具體步驟如下:
① Linux?2.6.12內(nèi)核不支持DM9000A芯片,因此需先獲得DM9000A驅(qū)動(dòng)的源碼,從Linux?2.6.20內(nèi)核的driver/net/拷貝dm9000.c和dm9000.h到Linux?2.6.12相應(yīng)目錄下,同時(shí)拷貝include/linux下的dm9000.h到相應(yīng)位置。
② 修改Linux?2.6.12內(nèi)核arch/arm/ mach?s3c2410/devs.c文件使其支持DM9000A網(wǎng)卡。首先,添加頭文件:#include
③ 修改arch/arm/mach?s3c2410/devs.h文件,導(dǎo)出DM9000A設(shè)備。
④ 修改arch/arm/mach?s3c2410/mach?smdk 2410.c文件,添加DM9000A。
⑤ 修改driver/net/dm9000.c文件,設(shè)置中斷模式。
經(jīng)過(guò)以上過(guò)程即完成了對(duì)網(wǎng)絡(luò)驅(qū)動(dòng)程序的編碼,接下來(lái)需要進(jìn)行驅(qū)動(dòng)程序的配置。
(2) 網(wǎng)卡驅(qū)動(dòng)程序配置
首先,修改文件drivers/net/Kconfig,添加DM9000A驅(qū)動(dòng)選項(xiàng);其次,修改文件drivers/net/Makefile,添加DM9000A的編譯選項(xiàng);再次,在內(nèi)核中添加對(duì)網(wǎng)絡(luò)模塊的支持,該過(guò)程分兩步完成:一是配置網(wǎng)絡(luò)協(xié)議支持,加入對(duì)TCP/IP協(xié)議的支持;二是配置網(wǎng)絡(luò)設(shè)備的支持,加入對(duì)網(wǎng)絡(luò)芯片DM9000A的支持;最后,對(duì)內(nèi)核進(jìn)行編譯,生成新的內(nèi)核映像文件,通過(guò)該過(guò)程就完成了對(duì)網(wǎng)絡(luò)模塊驅(qū)動(dòng)程序的設(shè)計(jì)。
3.3 應(yīng)用開(kāi)發(fā)
完成了嵌入式Linux的系統(tǒng)開(kāi)發(fā)和驅(qū)動(dòng)開(kāi)發(fā),接下來(lái)需要進(jìn)行嵌入式的應(yīng)用開(kāi)發(fā)。嵌入式Linux應(yīng)用開(kāi)發(fā)是指結(jié)合系統(tǒng)應(yīng)用需求進(jìn)行軟件的具體設(shè)計(jì)。在該過(guò)程中涉及應(yīng)用程序設(shè)計(jì)、數(shù)據(jù)庫(kù)開(kāi)發(fā)、GUI設(shè)計(jì)和網(wǎng)絡(luò)程序設(shè)計(jì)等內(nèi)容[1]。
(1) 應(yīng)用程序的設(shè)計(jì)
應(yīng)用程序設(shè)計(jì)就是對(duì)系統(tǒng)進(jìn)行功能分析,畫(huà)出相應(yīng)的流程圖并進(jìn)行編碼實(shí)現(xiàn)的過(guò)程。在本系統(tǒng)中,主要實(shí)現(xiàn)指紋信息的增加、匹配和刪除功能。因此在開(kāi)發(fā)過(guò)程中將系統(tǒng)分為三種模式:指紋增加模式開(kāi)發(fā)、指紋匹配模式開(kāi)發(fā)、指紋刪除模式開(kāi)發(fā)等。
指紋增加模式主要是實(shí)現(xiàn)指紋數(shù)據(jù)庫(kù)中指紋數(shù)據(jù)的添加功能,它是指紋匹配和刪除的先行條件。結(jié)合指紋采集模塊的通信協(xié)議,其流程圖如圖3所示。
指紋匹配模式主要實(shí)現(xiàn)指紋的匹配,進(jìn)行用戶(hù)身份的判別。在該模式下,首先進(jìn)行用戶(hù)指紋信息的采集和處理,然后搜索指紋特征庫(kù),查找相匹配的指紋,進(jìn)而做出相應(yīng)的判斷。指紋匹配模式流程圖,如圖4所示。
指紋刪除模式主要是指刪除過(guò)期的指紋信息,以保證該系統(tǒng)的安全可靠。在該模式中,主要是通過(guò)ID號(hào)進(jìn)行身份的驗(yàn)證,進(jìn)而實(shí)現(xiàn)用戶(hù)指紋模板的刪除,結(jié)合指紋采集模塊具體的通信協(xié)議,其流程圖如圖5所示。
(2) 數(shù)據(jù)庫(kù)設(shè)計(jì)
需要對(duì)采集到的指紋模板進(jìn)行存儲(chǔ),因此引入了數(shù)據(jù)庫(kù),考慮到嵌入式系統(tǒng)資源的限制,本系統(tǒng)中使用SQLite。在數(shù)據(jù)庫(kù)的使用過(guò)程中,考慮到系統(tǒng)的要求需要建以下幾個(gè)表格:user,finger,finger_open,passwd_open。其中user表格用來(lái)存儲(chǔ)用戶(hù)的信息;finger用來(lái)記錄對(duì)應(yīng)的指紋信息;finger_open用來(lái)記錄指紋開(kāi)門(mén)的信息;passwd_open用來(lái)記錄密碼開(kāi)門(mén)的信息。
(3) 網(wǎng)絡(luò)程序設(shè)計(jì)
在網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)中,廣泛使用TCP/IP參考模型,在本系統(tǒng)中,為保證信息安全可靠的傳輸,選用TCP協(xié)議作為T(mén)CP/IP通信方式的核心協(xié)議。
經(jīng)過(guò)以上步驟即完成了前期的準(zhǔn)備工作,接下來(lái)需要進(jìn)行網(wǎng)絡(luò)程序具體的設(shè)計(jì)。該部分作為聯(lián)網(wǎng)型系統(tǒng)的客戶(hù)端,采用如下步驟進(jìn)行程序的設(shè)計(jì):首先,用Socket()函數(shù)創(chuàng)建一個(gè)Socket套接字;其次,設(shè)置服務(wù)器端的IP地址和端口等屬性;再次,用Connect()函數(shù)連接服務(wù)器;接下來(lái)進(jìn)行數(shù)據(jù)的收發(fā);最后,斷開(kāi)連接。相應(yīng)步驟如圖6所示。
4 結(jié) 論
本文旨在對(duì)基于嵌入式系統(tǒng)的指紋識(shí)別技術(shù)進(jìn)行相關(guān)研究。研究?jī)?nèi)容主要包括兩個(gè)方面:一是對(duì)指紋識(shí)別算法進(jìn)行研究,結(jié)合嵌入式系統(tǒng)的特點(diǎn),對(duì)指紋圖像預(yù)處理算法、特征提取算法和特征匹配算法進(jìn)行優(yōu)化改進(jìn),以提高指紋圖像處理的魯棒性,加快特征匹配的速度;二是對(duì)指紋識(shí)別技術(shù)的應(yīng)用展開(kāi)研究,設(shè)計(jì)一套聯(lián)網(wǎng)型嵌入式指紋識(shí)別系統(tǒng),滿(mǎn)足現(xiàn)在日益普遍的聯(lián)網(wǎng)型應(yīng)用需求。
參考文獻(xiàn)
[1] 葛明濤,關(guān)景新,董素鴿.基于雙目視角的嵌入式3D指紋識(shí)別系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2014,37(18):155?158.
[2] 劉增明,張文山.嵌入式軟件浮點(diǎn)運(yùn)算精度分析[J].航空兵器,2010(3):42?45.
[3] 羅西平,田捷.自動(dòng)指紋識(shí)別中的圖像增強(qiáng)和細(xì)節(jié)匹配算法[J].軟件學(xué)報(bào),2010,13(5):946?956.
[4] 王業(yè)琳,寧新寶,尹義龍.指紋圖像細(xì)化算法研究[J].南京大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,39(4):468?475.
[5] 林建民.嵌入式操作系統(tǒng)技術(shù)發(fā)展趨勢(shì)[J].計(jì)算機(jī)工程,2011,27(10):1?4.
[6] 張微,張華春.U?Boot在S3C2440上的移植方法[J].電子器件,2007,30(4):1423?1426.
[7] 張娟,張雪蘭.基于嵌入式Linux的GUI應(yīng)用程序的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2013,23(4):115?117.
[8] 黎妹紅,張其善.一種基于智能卡的指紋認(rèn)證方案[J].北京航空航天大學(xué)學(xué)報(bào),2011,31(1):74?77.
[9] 林建民.嵌入式操作系統(tǒng)技術(shù)發(fā)展趨勢(shì)[J].計(jì)算機(jī)工程,2011,27(10):1?4.
[10] 王藴紅,朱勇,譚鐵牛.基于虹膜識(shí)別的身份鑒別[J].自動(dòng)化學(xué)報(bào),2012,28(1):1?10.