陳壽坤,鄭清蘭
(閩南理工學(xué)院實(shí)踐教學(xué)中心,福建 石獅 362700)
當(dāng)今社會(huì),大多數(shù)公司、企業(yè)都會(huì)對員工的上、下班進(jìn)行考勤。常見的有通過比對指紋的考勤機(jī)、用帶磁的卡刷卡的考勤機(jī)、采用單片機(jī)為CPU的考勤系統(tǒng)等。指紋打卡主要是利用指紋膜打卡,若指紋膜用久了出現(xiàn)破損、丟失等情況就不能正常的打卡;刷卡主要是利用磁卡打卡,若磁卡無磁性或丟失也打不上卡,而且兩者都會(huì)出現(xiàn)由別人代替打卡的情況;而用單片機(jī)的考勤系統(tǒng)功能相對簡單、不穩(wěn)定,無法滿足當(dāng)今高效率、易存儲(chǔ)、識別度高的考勤系統(tǒng)的要求?,F(xiàn)在社會(huì)生物識別技術(shù)在各種場合都得到了廣泛的應(yīng)用,人臉是一種具有不可替代性的生物特征,因此采用人臉識別的各種考勤系統(tǒng)、門禁產(chǎn)品等也隨之產(chǎn)生,其中嵌入式人臉識別考勤系統(tǒng),具有高效、安全、可擴(kuò)展的特點(diǎn),適合各種公司的考勤、門禁出入、智能安防系統(tǒng)等[1-3]。
人臉識別技術(shù)首先要采集不同的人臉圖像做為圖像比對數(shù)據(jù)庫,再對獲取的圖像進(jìn)行計(jì)算處理、去噪處理、提取特征參數(shù)等操作,以獲得最佳圖像,最后與數(shù)據(jù)庫中的人臉數(shù)據(jù)進(jìn)行比對。要想獲得高質(zhì)量的人臉圖像,事先要對征得到的圖像進(jìn)行科學(xué)的處理和計(jì)算。
在用設(shè)備采集圖像時(shí)或多或少都會(huì)伴有一定的噪聲,它會(huì)使圖像降質(zhì),影響到后期的人臉圖像識別,因此為了得到較優(yōu)質(zhì)的圖像,須對所采集到的圖像實(shí)行降噪處理。去噪的方式有多種,其中中值濾波是目前應(yīng)用較多的一種非線性濾波器[4-5]。中值濾波主要方法是將像素四周點(diǎn)的像素值按從大到小的順序進(jìn)行排列,然后取出中間值。設(shè)yij為數(shù)字圖像點(diǎn)xij的灰度值,中值濾波器的數(shù)學(xué)公式如下所示:
當(dāng)像素點(diǎn)為奇數(shù)時(shí),中值就為中間的數(shù);當(dāng)像素點(diǎn)為偶數(shù)時(shí),就取中間兩個(gè)數(shù)的均勻值,經(jīng)由中值濾波去噪后,圖像效果如圖1所示。
圖1 去噪前后對比
PCA人臉識別算法即主成分分析法,它的實(shí)質(zhì)是穿過線性變換取一組最優(yōu)向量基來重修原樣本,使誤差達(dá)到最小值,一般協(xié)方差矩陣S的對角化是通過特征值問題來實(shí)現(xiàn)的。
式中,N為樣本總數(shù);xˉ為樣本均值,將特征值按自小到大的順序擺列,選取前m個(gè)為主元。樣本可用投影系數(shù)ai來表示它在特征子空間中的位置,表達(dá),通過PCA算法,可從中提取到標(biāo)準(zhǔn)的人臉特征向量,由這些向量的線性加權(quán)給合來表示人臉圖像。
人臉識別考勤系統(tǒng)主要是完成人臉圖像的采集、分析處理,并將處理好的圖像與數(shù)據(jù)庫中的數(shù)據(jù)比對進(jìn)行識別,選出符合要求的數(shù)據(jù)完成考勤。該系統(tǒng)選用ARM9為核心的嵌入式控制模塊,具有高速的圖像處理能力,能支持OS和TCP/IP協(xié)議,相較于其他的考勤設(shè)備具有使用安全、處理高效、無法復(fù)制等優(yōu)勢,其系統(tǒng)總體構(gòu)架如圖2所示。
圖2 系統(tǒng)框架
整個(gè)系統(tǒng)設(shè)計(jì)框架包括攝像頭、解碼模塊、緩存模塊、核心控制模塊、軟件算法、系統(tǒng)管理、設(shè)備終端機(jī)幾個(gè)部分。人臉頭像搜集采用網(wǎng)絡(luò)攝像頭,并選用TVP5147將采集的模擬信號轉(zhuǎn)換為所需的數(shù)字信號??刂颇K是人臉識別的CPU,包括硬件和軟件兩部分,硬件圍繞ARM9系統(tǒng)來擴(kuò)展。軟件為操作系統(tǒng)及人臉圖像算法的實(shí)現(xiàn),此模塊的作用是對算法的結(jié)果進(jìn)行識別,并發(fā)出相應(yīng)的控制信號。設(shè)備終端是整個(gè)系統(tǒng)的執(zhí)行部件,當(dāng)接收到信號時(shí)執(zhí)行考勤操作。
人臉圖像采集采用網(wǎng)絡(luò)攝像頭,此攝像頭為USB端口輸出,使用基于CMOS的感光元件,此元件采用半導(dǎo)體制作流程,能將周圍設(shè)施一次性整合在單晶片中,節(jié)省了制作成本,且工作電壓低,可直接與ARM9的USB接口相連,不需要轉(zhuǎn)接電路。
解碼是將采集到的模擬信號轉(zhuǎn)為數(shù)字信號輸出的,這樣才能提取到可靠的數(shù)據(jù)。TVP5147是一種具有濾波功能的視頻處理器,內(nèi)部包含A/D轉(zhuǎn)換、數(shù)字解碼、視頻切換等電路,能將輸入的模擬視頻轉(zhuǎn)換為數(shù)字視頻信號輸出,支持多個(gè)分量視頻輸入并具有先進(jìn)的VBI功能[6-7]。幾乎所有常用的模擬視頻信號都能通過它進(jìn)行解碼。
系統(tǒng)通電時(shí),首先對TVP5147進(jìn)行初始化,一般通過IIC總線完成。若系統(tǒng)初始化從Y[8....0]端口輸出9位視頻數(shù)據(jù),那么其輸出的時(shí)序如圖3所示。
圖3 輸出時(shí)序
解碼模塊TVP5147輸出的數(shù)據(jù)很難直接由ARM處理器同步讀取,所以設(shè)計(jì)中采用了CPLD控制器作為緩存單元,完成圖像的保存和更新。該設(shè)計(jì)中的緩存模塊選用CPLD器件的EPM7128S,該器件的引腳至引腳的邏輯時(shí)延最小為5 ns,最高的計(jì)數(shù)頻率可達(dá)175.4 Hz,引腳可設(shè)置為開漏輸出,帶有使能控制的可編程宏單元觸發(fā)器,并且還提供了JTAG接口,可實(shí)現(xiàn)在線編程[8]。其電路連接如圖4所示。
圖4 器件接口電路
S3C2440是三星公司開發(fā)的一種32位的CMOS微處理芯片,是基于ARM9內(nèi)核的產(chǎn)品。它具有4通道DMA并有外部請求引腳,8通道10 bitADC和觸摸屏接口[9-10],管理電源和時(shí)鐘的模式多樣,可使用軟件來實(shí)現(xiàn)處理器工作頻率的切換。S3C2440主要應(yīng)用于手持設(shè)備和工業(yè)控制方面的處理器,具有功耗低、成本價(jià)格低、處理及運(yùn)算能力強(qiáng)等特點(diǎn)。該設(shè)計(jì)中主要采用DMA的數(shù)據(jù)傳輸方式從緩存器中讀取圖像數(shù)據(jù),如圖5所示。
圖5 數(shù)據(jù)連接示意圖
系統(tǒng)在運(yùn)行軟件時(shí)嵌入式操作系統(tǒng)選擇Linux,此系統(tǒng)運(yùn)行簡便且允許任何人修改源碼,運(yùn)用成本低,具有較高的開發(fā)效果。
設(shè)計(jì)中PC機(jī)的主要作用是開發(fā)并運(yùn)行嵌入式系統(tǒng)的程序。ARM9嵌入式系統(tǒng)可以使用Linux開發(fā)環(huán)境,并采用ARM-Linux-gcc進(jìn)行鏈接,即可執(zhí)行代碼,在調(diào)試時(shí)使用串口與主機(jī)進(jìn)行通信[11]。Linux安裝交叉編譯環(huán)境搭建順序如下所示:
1)創(chuàng)建環(huán)境存放的目錄:sudo mkdir/usr/local/arm;
2)下載并解壓安裝包arm-linux-gcc-4.3.2tar.gzc到目錄/usr/local/arm下;
3)將原文件改為“PATH=/usr/local/sbin∶/usr/local/bin∶/usr/bin∶/sbin∶/bin∶usr/games∶/usr/local/arm/4.4.3/bin”;
4)查看路徑,若顯示內(nèi)容為“/usr/local/sbin∶/usr/local/bin∶/usr/sbin∶/usr/bin∶/usr/games∶/usr/local/arm/4.4.3/bin”說明編譯環(huán)境安裝完成。
程序編寫采用C語言編程,程序運(yùn)行后,首先打開采集到的人臉圖像文件,再對圖像進(jìn)行預(yù)處理,獲得較準(zhǔn)確的數(shù)據(jù),將數(shù)據(jù)通過串口發(fā)送到人臉庫進(jìn)行比對,若符合要求則執(zhí)行考勤操作,若不符合則結(jié)束程序,等待下一輪采集的數(shù)據(jù)。整個(gè)軟件流程如圖6所示。
圖6 軟件流程
3.2.1 人臉圖像檢測
此部分用來檢測攝像頭采集到的圖像是否有人臉。首先,加載攝像頭拍的圖像;其次,在PC機(jī)中用圖像分檢器檢測所拍的圖像是否有人臉;最后,檢測人臉中是否含有眼睛從而來確定是否為人臉照片。人臉圖像檢測程序流程如圖7a所示。
3.2.2 人臉圖像識別
此部分用來確定所采集到的圖像為人臉庫中的哪一張。首先,加載要識別的圖像;其次,提取圖像的特征與人臉庫比對;最后,確定比對結(jié)果。人臉圖像識別程序流程如圖7b所示。
系統(tǒng)的界面使用Qt設(shè)計(jì),Qt廣泛應(yīng)用于嵌入式開發(fā)中,只要編寫一次程序和UI,就能跨不同的桌面與嵌入式系統(tǒng)進(jìn)行部署,不用修改源代碼,從而減少了開發(fā)成本。系統(tǒng)的界面如圖8所示,單擊開始鍵,待識別人臉方框中就會(huì)出現(xiàn)攝像頭拍到的圖像;點(diǎn)擊檢測,就會(huì)出現(xiàn)一個(gè)紅色的小方框框住待檢測的具體臉面位置;點(diǎn)擊識別,在識別方框中就會(huì)出現(xiàn)人臉庫中與待識別框中相似的人臉;若采集的庫中沒有此人,則顯示“無此人”,點(diǎn)擊退出鈕即可。
圖7 人臉檢測與識別流程
圖8 人機(jī)界面
系統(tǒng)測試時(shí)任意采集3個(gè)人的正面臉部照片,建立一個(gè)小型的人臉圖像為庫,如圖9a所示,在PC機(jī)上對這些照片進(jìn)行處理,形成.XML庫文件,并傳送到嵌入式開發(fā)板上。點(diǎn)擊Qt界面的開始鈕進(jìn)行系統(tǒng)的初始化,然后打開攝像頭在待識別方框中采集到的圖像。按下檢測,然后點(diǎn)識別,系統(tǒng)對采集的圖像進(jìn)行特征提取,與庫中圖像進(jìn)行比對,最后在識別結(jié)果中顯示出最相似的人臉,如圖9b所示。經(jīng)過多次實(shí)驗(yàn)測試,系統(tǒng)在識別時(shí)受外限影響較小,在很大程度上提高了人臉識別的效率。
圖9 實(shí)驗(yàn)結(jié)果
該設(shè)計(jì)結(jié)合了嵌入式和人臉圖像識別技術(shù)兩大方面,設(shè)計(jì)了一套智能考勤系統(tǒng)。從系統(tǒng)設(shè)計(jì)的整體要求、圖像的算法研究、軟件的選擇應(yīng)用等方面進(jìn)行闡述,完成了整個(gè)考勤系統(tǒng)的設(shè)計(jì)。實(shí)驗(yàn)測試結(jié)果顯示,該系統(tǒng)能夠正確的識別出人臉庫中的圖像,此設(shè)計(jì)可根據(jù)需要進(jìn)行更改及擴(kuò)展,具有功能齊全、圖像識別度高、運(yùn)用方便、價(jià)格可觀等特點(diǎn),能廣泛的應(yīng)用在各種需要考勤的場合。