基于ARM9的便攜式人臉識(shí)別系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:介紹了一種硬件基于ARM9處理器,采用主成分分析法(PCA)的人臉識(shí)別系統(tǒng)。實(shí)現(xiàn)了脫離PC機(jī)進(jìn)行人臉識(shí)別。系統(tǒng)采用通用USB攝像頭進(jìn)行圖像采集。軟件基于Linux操作系統(tǒng),可方便地進(jìn)行網(wǎng)絡(luò)連接和圖像顯示。
關(guān)鍵詞:人臉識(shí)別;PCA;ARM9
開(kāi)發(fā)低成本、小型化人臉識(shí)別系統(tǒng)在發(fā)展實(shí)際人臉識(shí)別應(yīng)用中具有重要的意義。本系統(tǒng)采用ARM9作為系統(tǒng)控制芯片,達(dá)到了系統(tǒng)低成本、便攜化、小型化的要求。不同于運(yùn)行在PC機(jī)的人臉識(shí)別算法,系統(tǒng)的識(shí)別算法必須更多地考慮算法的計(jì)算量和ARM的運(yùn)行速度,使識(shí)別準(zhǔn)確率和識(shí)別時(shí)間都達(dá)到可接受范圍。
1 硬件平臺(tái)
1.1 ARM9處理器
本系統(tǒng)采用三星公司的ARM9系列S3C2410作為處理器,工作頻率可達(dá)到203 MHz,可滿足系統(tǒng)對(duì)計(jì)算速度的要求。該處理器內(nèi)置2個(gè)USB HOST,本系統(tǒng)可用來(lái)掛載USB攝像頭。
1.2 液晶顯示屏
為顯示攝像頭當(dāng)前采集圖像的預(yù)覽,系統(tǒng)采用三星的320×240像素液晶屏,大小為106.68 cm。該液晶屏的每個(gè)像素深度為2 bit,采用RGB565色彩空間。
1.3 攝像頭
攝像頭采用市場(chǎng)上常見(jiàn)的網(wǎng)眼2000攝像頭,內(nèi)部是含CMOS傳感器的OV511+芯片。
CMOS傳感器采用感光元件作為影像捕獲的基本手段,核心是1個(gè)感光二極管,該二極管在接受光線照射之后能夠產(chǎn)生輸出電流,而電流的強(qiáng)度則與光照的強(qiáng)度對(duì)應(yīng)。相對(duì)CCD圖像傳感器,CMOS傳感器具有成本低廉的優(yōu)點(diǎn)。該攝像頭通過(guò)USB接口與ARM9處理器通信。該攝像頭輸出格式y(tǒng)uv,在輸出至屏幕之前,需將數(shù)據(jù)格式轉(zhuǎn)化為RGB565格式。
1.4 存儲(chǔ)器
系統(tǒng)采用64 MB的SDRAM,由兩片K4S561632芯片組成,工作在32位模式。另有64 MB的NANDFlash,采用K9F1208芯片。該芯片在系統(tǒng)中空間分配情況,如圖2所示。
[!--empirenews.page--]
2 軟件平臺(tái)
系統(tǒng)的軟件設(shè)計(jì)主要由底層的操作系統(tǒng),驅(qū)動(dòng)程序以及應(yīng)用程序組成。操作系統(tǒng)采用Linux 2.4內(nèi)核。通過(guò)對(duì)內(nèi)核的適當(dāng)裁剪,刪除對(duì)本系統(tǒng)不需要的系統(tǒng)服務(wù)以及驅(qū)動(dòng)程序。
本系統(tǒng)的驅(qū)動(dòng)程序主要用來(lái)驅(qū)動(dòng)攝像頭、按鍵和指示燈。這3個(gè)驅(qū)動(dòng)程序在操作系統(tǒng)啟動(dòng)后,采用Linux特有的動(dòng)態(tài)加載模塊方式加載至系統(tǒng)內(nèi)核。攝像頭驅(qū)動(dòng)程序可在Linux內(nèi)核自帶的OV 51l驅(qū)動(dòng)程序基礎(chǔ)上修改,使其兼容OV 511+芯片。指示燈驅(qū)動(dòng)程序主要用來(lái)提示當(dāng)前程序工作狀態(tài)。由于程序運(yùn)行于Linux操作系統(tǒng)之上,應(yīng)用程序無(wú)法直接控制硬件I/O口,需要先經(jīng)過(guò)驅(qū)動(dòng)程序?qū)ξ锢淼刂愤M(jìn)行地址映射,才可通過(guò)映射的虛擬地址進(jìn)行I/O操作。按鍵驅(qū)動(dòng)程序采集用戶輸入,并通過(guò)硬件中斷傳至Linux內(nèi)核空間,再由驅(qū)動(dòng)程序通過(guò)Linux進(jìn)程間通信方式之一的信號(hào)通信,傳至運(yùn)行在Linux用戶空間的應(yīng)用程序。
3 識(shí)別算法
3.1 PCA算法
PCA方法(即特征臉?lè)椒?是M.Turk和A.Pentland在文獻(xiàn)中提出的,該方法的基本思想是:將圖像向量經(jīng)過(guò)K-L變換后由高維向量轉(zhuǎn)換為
低維向量,并形成低維線性向量空間,即特征子空間,然后將人臉投影到該低維空間,用所得到的投影系數(shù)作為識(shí)別的特征向量。識(shí)別人臉時(shí),只需將待識(shí)別樣本的投影系數(shù)與數(shù)據(jù)庫(kù)中目標(biāo)樣本集的投影系數(shù)進(jìn)行比對(duì),以確定與哪一類最近。
PCA算法分為兩步:核心臉數(shù)據(jù)庫(kù)生成階段,即訓(xùn)練階段以及識(shí)別階段。[!--empirenews.page--]
(1)核心臉數(shù)據(jù)庫(kù)生成階段。
1)假設(shè)共有K張M×N大小的人臉圖像。先將每張圖像按列化為(M×N)×1的列向量,命名為xi,i=1,2,…,K。
5)計(jì)算AAT的特征向量μi;根據(jù)計(jì)算量保留j個(gè)最大特征向量組成特征子空間。
6)將每張臉φ(減去均值后)表示成j個(gè)特征向量的線性組合,即為φ的特征臉。每張標(biāo)準(zhǔn)化訓(xùn)練臉φi用Ω=(ω1i,ω2i,…,ωji)T,i=1,2,…,K表示。
(2)識(shí)別階段。
1)設(shè)要識(shí)別的未知人臉為T(mén),先將T按列變化為一列向量xt。
2)xt求與平均臉ψ得差值φ。再將φ向特征子空間投影,即
3)將φ表示成
4)最后計(jì)算兩個(gè)矩陣的歐氏距離
若er<ξ,其中ξ為固定值,則該人臉被識(shí)別。
3.2 PGA算法的預(yù)處理
雖然PcA算法在待識(shí)別圖像質(zhì)量較好的情況下,有識(shí)別準(zhǔn)確且計(jì)算量不大的優(yōu)點(diǎn),但在以下幾點(diǎn)情況下,存在缺陷。其一是待識(shí)別圖像和訓(xùn)練圖像光照度差別較大。其二是人臉背景差別較大。為改進(jìn)PCA算法,可對(duì)圖像做以下預(yù)處理:
(1)刪除背景。要?jiǎng)h除背景就要找出人臉在圖像的位置。對(duì)此,本系統(tǒng)通過(guò)人臉膚色建模的方法找出人臉的位置,并進(jìn)一步找出眼睛位置,然后根據(jù)兩個(gè)眼睛之間的距離計(jì)算出人臉大概范圍,通過(guò)對(duì)人臉?lè)秶倪m當(dāng)調(diào)整,使其規(guī)格化。
(2)調(diào)整每張人臉圖像的亮度。通過(guò)設(shè)定一固定值,調(diào)整圖像像素的灰度值,使圖像灰度平均值達(dá)到這一固定值。通過(guò)同態(tài)濾波,減少光照不均。
4 結(jié)束語(yǔ)
采用了在ARM9控制下CMOS圖像傳感器進(jìn)行圖像采集,并利用改進(jìn)的PCA算法對(duì)圖像識(shí)別,提高了識(shí)別效率和系統(tǒng)的實(shí)用性。測(cè)試表明,臉部范圍在180×200像素時(shí),設(shè)定閾值er為2×1015的情況下,系統(tǒng)的識(shí)別率為89.2%。