王向豪,謝鈞霖,曾凡馨,姚西成
(西南石油大學(xué)理學(xué)院,成都610000)
這個(gè)高速發(fā)展的時(shí)代,一切事物都將與“快”相聯(lián)系。人臉識(shí)別技術(shù)的發(fā)展成熟保證了人們的信息安全,二維碼的飛速發(fā)展成為了現(xiàn)如今信息傳遞的新媒介?!奥本蜁?huì)被淘汰,因此減少現(xiàn)如今人臉識(shí)別過程的時(shí)間仍是目前研究的一個(gè)課題。本文將現(xiàn)今兩項(xiàng)比較前沿的領(lǐng)域——人臉識(shí)別和二維碼,融合在一起,以達(dá)到快速識(shí)別人臉信息的目的。
其中,人臉識(shí)別技術(shù)的優(yōu)點(diǎn)在于:①圖像采集方式靈活、方便,通過手機(jī)、相機(jī)等設(shè)備就能完成;②圖像的采集過程簡單;③人臉圖像信息易于處理;④人臉面部特征易于提取和識(shí)別。QR 二維碼的優(yōu)點(diǎn)在于:①Q(mào)R碼的可存儲(chǔ)信息量大;②技術(shù)簡單便于實(shí)現(xiàn)。本文將這兩項(xiàng)前沿技術(shù)相結(jié)合,有望為人臉識(shí)別技術(shù)未來的發(fā)展提供一個(gè)新的思路。
主成分分析(Principal Component Analysis)是一種應(yīng)用非常廣泛的基礎(chǔ)數(shù)學(xué)分析方法。其內(nèi)在思想是K-L 變換或者霍特林變換,通過分析變量找出一組最優(yōu)正交基,使得變換后的變量與原來變量之間的均方誤差最小。通過K-L 變換后,將原來的自變量變換成另一組變量,變換后的變量便是“主成分”。從“主成分”中提取一部分重要成分作為新的自變量,最后用最小二乘法對(duì)選取主成分后的模型參數(shù)進(jìn)行估計(jì)。
PCA 原理是將一個(gè)高維向量通過一個(gè)特征變換矩陣將變換后的變量投影到一個(gè)低維向量空間中形成一個(gè)低維向量,并且?guī)缀醪粨p失主要信息。本文的人臉識(shí)別過程中,將每一個(gè)特征臉處理成了一個(gè)特征臉。
PCA 算法經(jīng)過多年的發(fā)展和研究已經(jīng)非常完善和成熟,因此本文將直接應(yīng)用MATLAB 本身的PCA 算法將ORL 人臉庫的數(shù)據(jù)信息進(jìn)行降維處理,得到的特征臉信息再與QR 二維碼技術(shù)結(jié)合,設(shè)計(jì)出基于主成分分析的人臉二維碼識(shí)別系統(tǒng)。
本文的訓(xùn)練集以及測試集采用的是ORL 人臉庫?;贠RL 人臉庫的信息多樣和標(biāo)準(zhǔn)灰度圖像的優(yōu)點(diǎn),我們將直接對(duì)選取的人臉樣本集進(jìn)行訓(xùn)練。從ORL 人臉庫中選取380 張人臉圖像,每張圖像的像素為112×92,為了方便數(shù)據(jù)處理我們將每張圖像放縮成像素為64×64 的圖像。
圖1 所示的圖像為放縮后的圖像,可以看出經(jīng)過放縮后的圖像仍然可以完全識(shí)別,而且沒有損失主要的特征信息。
圖1 放縮前后的圖像
通過放縮后的人臉圖像矩陣為Ai=R64×64,其中每個(gè)圖像矩陣按照64×64 的列向量進(jìn)行重新排列,構(gòu)成一個(gè)樣本訓(xùn)練集φ=[φ1,φ2,…,φ380],φi表示長度為64×64 的列向量。
圖2 圖像壓縮成向量示意圖
樣本訓(xùn)練集構(gòu)成后我們將獲取平均臉,平均臉在數(shù)學(xué)意義中表示為樣本訓(xùn)練集的平均值,為同時(shí)平均值mφ也為樣本集所有人臉圖像共有的特征成分。
將得到的平均臉放縮成像素為64×64 的人臉圖像,如圖3 所示。
圖3 平均臉圖像
因?yàn)槲覀冃枰?xùn)練集樣本中圖像彼此不同的部分,因此需要將訓(xùn)練集中的共有成分去掉,即X=[x1,x2,…,x380],其中xi=φi-mφ。
接著求出協(xié)方差矩陣的特征值λi和對(duì)應(yīng)的特征向量ui。本文對(duì)于求協(xié)方差矩陣的特征向量和特征值使用的是MATLAB 自帶的PCA 算法,通過MATLAB自帶的PCA 算法計(jì)算出的特征值和特征向量經(jīng)過測試得到的結(jié)果可以正確地識(shí)別測試圖像。
將協(xié)方差矩陣的特征值進(jìn)行降序排列,即:
經(jīng)過多次測試,我們?nèi)=350 時(shí)得到的測試相對(duì)誤差最小,即大于λ350的特征值對(duì)應(yīng)的特征向量構(gòu)成主成分,因此主成分構(gòu)成的變換矩陣為:
這樣每一幅人臉都可投影到Ueig=[u1,u2,…,u350]構(gòu)成的特征臉子空間中,任何一幅人臉圖像都可以向其作投影y=xUeig T,得到一組經(jīng)變換后的變量,即低維向量y,此低維向量可作為人臉識(shí)別的依據(jù)。
計(jì)算出特征臉子空間后,我們便可以將被識(shí)別人臉圖像向其投影。首先將被識(shí)別人臉圖像壓縮成向量,然后將其共有的成分剔除。即:
其中xs為被識(shí)別人臉圖像的特有成分,φs為被識(shí)別人臉圖像的全部信息,mφ為訓(xùn)練集樣本平均值或者平均臉信息。
將被識(shí)別的人臉圖像的特有成分經(jīng)過特征變換矩陣投影后,便得到了降維后的向量ys,此向量也稱為被識(shí)別人臉圖像的“主成分”。即:降維后我們需要再對(duì)主成分進(jìn)行人臉圖像重構(gòu),因?yàn)镵-L 變換是正交對(duì)稱性的,因此Ueig
-1=Ueig T,即:
其中E為單位矩陣,因此xs=ysUeig,再將得到的被識(shí)別人臉圖像的特有成分加上平均臉,即φs=xs+mφ,重構(gòu)出被識(shí)別的人臉圖像。
Java 是現(xiàn)如今實(shí)現(xiàn)QR 二維碼生成與信息識(shí)別的主流工具,因此在提取被識(shí)別人臉圖像的主成分后,我們將使用Java 來實(shí)現(xiàn)將此主成分的信息轉(zhuǎn)換成QR 二維碼,進(jìn)而再對(duì)QR 二維碼信息提取并對(duì)人臉圖像的重構(gòu),以達(dá)到對(duì)人臉信息的快速識(shí)別的目的。
圖4 二維碼圖形格式
QR 碼(Quick Response)是一種矩陣式二維碼符號(hào)。QR 碼有制作成本低、存儲(chǔ)容量大、應(yīng)用和儲(chǔ)存范圍廣、可靠性高等特點(diǎn)。QR 碼可以同時(shí)在水平和垂直方向的二維空間儲(chǔ)存信息,在表示信息方面也可以記載更復(fù)雜的數(shù)據(jù),除了字母和數(shù)字外還可以錄入漢字、圖片、指紋、網(wǎng)址等信息,相當(dāng)一個(gè)可移動(dòng)的數(shù)據(jù)庫。而相比其他二維碼而言,QR 二維碼具有識(shí)讀速度快、數(shù)據(jù)密度大、占用空間小的優(yōu)勢。結(jié)合QR 二維碼以上優(yōu)勢,它能夠儲(chǔ)存大量人臉信息,制作成本低,并且能夠快速識(shí)別,所以本文采用QR 二維碼來對(duì)人臉信息進(jìn)行儲(chǔ)存。
MATLAB 本身不具備生成和識(shí)別二維碼的函數(shù),所以需要借助Java 的ZXing 開源庫,之后再使用MAT?LAB 提供的用于和Java 模塊通信的各種函數(shù)。為了生成二維碼。首先創(chuàng)建一個(gè)ZXing.MultiFormatWriter的實(shí)例,從而把抽象的Java 類實(shí)例出個(gè)體,實(shí)例對(duì)象才能直接進(jìn)行交互。接下來,使用MultiFormatWriter 的encode 方法,對(duì)之前導(dǎo)入的人臉數(shù)據(jù)信息進(jìn)行編碼。至此,編碼就已經(jīng)完成。下一步要做的,是從我們創(chuàng)建的BitMatrix 實(shí)例中提取圖像數(shù)據(jù),用它的ToBitmap 將其轉(zhuǎn)化為一個(gè)dotNET 的Bitmap 對(duì)象,然后再將其轉(zhuǎn)化成MATLAB 矩陣。在這過程中需要將像素之間空格和換行符刪除,從而將字符串轉(zhuǎn)換為MATLAB 可以接受的圖像矩陣。最終生成的包含人臉數(shù)據(jù)信息的二維碼示例如圖5。
圖5 含有主成分信息的二維碼
識(shí)別QR 二維碼,需要用到的類主要是BinaryBit?map,識(shí)別過程關(guān)鍵類是QRCodeReader。通過指令查閱類可知,所用到的函數(shù)輸入變量類型是BinaryBit?map,所以就要求解碼之前要進(jìn)行類型轉(zhuǎn)換,即將普通格式的二維碼圖片轉(zhuǎn)化為Java 類型圖像格式,之后就可以調(diào)用函數(shù)對(duì)Java 類型圖像灰度化、降噪、邊緣檢測、輪廓提取、矯正畸變,最終得到二維碼中的人臉信息(向量數(shù)據(jù))。
將二維碼主要信息提取后,我們?cè)倮肒-L 變換是正交對(duì)稱性:U-1=UT,即:UUT=E,其中E為單位矩陣,U為特征臉子空間。因此我們?cè)賹亩S碼中提取的信息乘以特征臉子空間,即xs=ysU,得到被識(shí)別人臉圖像的特有成分后,我們?cè)賹⒌玫降谋蛔R(shí)別人臉圖像的特有成分加上平均臉,即φs=xs+mφ,重構(gòu)出被識(shí)別的人臉圖像。
圖6 原始圖像以及重構(gòu)圖像及誤差率
從圖6 中可以看出,被識(shí)別的人臉圖像可以很好地被重構(gòu)出來,而且并沒有產(chǎn)生明顯的失真。同時(shí)重構(gòu)前后的數(shù)據(jù)均在誤差允許的范圍之內(nèi),因此我們的人臉識(shí)別系統(tǒng)已經(jīng)基本完成,且具有很高的可靠性。
本文是將當(dāng)前較為熱門的兩個(gè)領(lǐng)域結(jié)合,人臉識(shí)別和QR 二維碼結(jié)合在一起,將人臉圖像信息錄入二維碼中,可以通過掃描二維碼迅速識(shí)別出人臉信息。本文實(shí)現(xiàn)了人臉圖像信息處理、QR 二維碼的生成及識(shí)別,雖然二維碼有著識(shí)別快、存儲(chǔ)信息量大等優(yōu)點(diǎn),但是通過二維碼能夠快速識(shí)別出人臉信息的同時(shí),也存在信息泄露的風(fēng)險(xiǎn),可以在當(dāng)前研究的基礎(chǔ)上進(jìn)一步提高二維碼的加密性和安全性,對(duì)人臉識(shí)別系統(tǒng)我們還需要更加完善的措施,以保證二維碼內(nèi)信息的安全。
目前能夠識(shí)別QR 二維碼的設(shè)備有限,二維碼的識(shí)別設(shè)備大部分是手機(jī)和平板等手持電子設(shè)備,因此,下一步的研究可以將PC 端轉(zhuǎn)換到Android 平臺(tái)或者iOS 平臺(tái)上。