(1.江蘇海事職業(yè)技術(shù)學院信息工程系,江蘇 南京 211170;
2.南京理工大學計算機科學與技術(shù)學院,江蘇 南京 210094)
動態(tài)人臉識別系統(tǒng)的設(shè)計與實現(xiàn)
(1.江蘇海事職業(yè)技術(shù)學院信息工程系,江蘇 南京 211170;
2.南京理工大學計算機科學與技術(shù)學院,江蘇 南京 210094)
介紹了動態(tài)人臉圖像的識別問題,包括模塊結(jié)構(gòu)設(shè)計、系統(tǒng)結(jié)構(gòu)設(shè)計和系統(tǒng)的實現(xiàn)等方面.首先,設(shè)計了圖像采集模塊,通過攝像頭在VC++環(huán)境下實現(xiàn)動態(tài)圖像的采集、捕捉、存儲等功能.其次,對人臉檢測與識別的實現(xiàn)過程和算法進行了詳細的闡述.設(shè)計出的動態(tài)人臉識別系統(tǒng)時間復(fù)雜度比較低,占用較少的系統(tǒng)空間資源,實驗結(jié)果具有很高的準確率.
人臉識別;動態(tài)圖形;人臉錄入;特征提取
人臉識別技術(shù)近年來得到廣泛關(guān)注,是屬于人體生物認證技術(shù)的一種[1],它是通過計算機技術(shù)來識別信息,為人類提供商業(yè)和法律服務(wù).當前人臉識別方法有很多,如Fisher線性判別(Fisher Linear Discriminant,F(xiàn)LD)[2]、主 成分分析方法(Principal Component Analysis,PCA)、獨立成分分 析 (Independent Component Correlation Algorithm,ICA)等[3].這些傳統(tǒng)的特征提取和識別方法具有識別準確率高、性能穩(wěn)定等優(yōu)點,但是也有一些缺點,諸如容易受到光照強弱、人臉姿態(tài)和表情等因素影響識別準確率[4].
本系統(tǒng)的人臉檢測算法主要是差分圖的方法,并加以改進,改進后的算法有著計算速度快、準確率高等優(yōu)點,并采用C/S架構(gòu)設(shè)計,前臺主要包括圖像輸入、人臉檢測、特征提取和人臉識別模塊,這些模塊都是采用VC++6.0來實現(xiàn)的.后臺數(shù)據(jù)庫采用的是Access,里面共有三張表MANINFO、FACEINFO、EIGENFACES.人臉圖像、身份信息和特征值等一切數(shù)據(jù)都保存在這個數(shù)據(jù)庫中.以下主要從模塊結(jié)構(gòu)、系統(tǒng)結(jié)構(gòu)和系統(tǒng)的實現(xiàn)三個方面來介紹本系統(tǒng).
人臉識別系統(tǒng)主要包括兩大模塊:人臉錄入模塊和人臉識別模塊.人臉錄入模塊的功能是把檢測到的人臉圖像錄入到數(shù)據(jù)庫,在錄入的同時,還要讓系統(tǒng)管理員手工的輸入人臉的身份信息,如:姓名、年齡、地址等,在識別過程中,當這張人臉被識別出來時,這些信息就會顯示出來.人臉識別就是對待識別的人臉圖像進行特征提取并進行識別,識別完畢后顯示識別結(jié)果.本課題實現(xiàn)的系統(tǒng)也包括了這兩個模塊,而且為了使系統(tǒng)更加具有模塊性,操作起來更加方便,在開發(fā)和設(shè)計系統(tǒng)時,就把人臉識別模塊分解成兩個模塊,一個是特征提取模塊,它主要做的就是對人臉圖像進行特征提取,并把這些新特征值保存到數(shù)據(jù)庫中;另一個被分解出來的模塊是也叫人臉識別模塊,這個模塊主要是做狹義的人臉識別工作,即:識別圖像中的人臉,并顯示人臉的身份信息.
如圖1所示,這個系統(tǒng)還包括圖像輸入模塊和人臉檢測模塊.
圖1 系統(tǒng)的模塊圖Fig.1 System modules design
圖像輸入模塊就是對捕捉圖像的外設(shè)作實時數(shù)據(jù)檢測,當檢測到有圖像的時候,就把檢測到的圖像傳入緩沖區(qū),并通知人臉檢測模塊,讓它對圖像進行人臉檢測.人臉檢測模塊就是對緩沖區(qū)中的圖像進行人臉檢測計算,來判斷這幅圖像中是否有人臉,如果有人臉就定位出人臉在圖像上區(qū)域的坐標.
這個系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖2所示.圖像輸入是系統(tǒng)啟動后最先被調(diào)用的模塊.因為這個系統(tǒng)處理的原圖像是基于USB口攝像頭的動態(tài)圖像——實時連續(xù)的多幀圖像,所以系統(tǒng)在圖像輸入部分使用了一個線程,這個線程的專職是檢測USB口上是否有圖像傳來,如果檢測到有,首先把圖像顯示在界面上,然后再喚起人臉檢測函數(shù)對圖像進行檢測.當人臉檢測函數(shù)檢測到人臉并定位出人臉在圖像上的坐標時,就根據(jù)系統(tǒng)當時的狀態(tài),來選擇下一步驟,如果系統(tǒng)在人臉錄入狀態(tài),就喚起人臉錄入函數(shù),如果系統(tǒng)在識別狀態(tài),喚起人臉識別函數(shù).在人臉錄入函數(shù)被執(zhí)行時,檢測到的人臉從圖像中被分割出來,連同手工輸入的身份信息都通過ODBC保存到數(shù)據(jù)庫中.當人臉識別函數(shù)被啟動時,該函數(shù)就會通過特定的方法對待識別的人臉進行特征提取,并與數(shù)據(jù)庫中人臉特征進行匹配,找出匹配最好的一組,并顯示在界面上.特征提取是單獨的一塊,它和別的部分沒有太大的聯(lián)系,它計算的數(shù)據(jù)是從數(shù)據(jù)庫中提取,計算的結(jié)果也保存在數(shù)據(jù)庫中.
圖2 系統(tǒng)結(jié)構(gòu)圖Fig.2 System architecture design
攝像頭輸入的圖像被設(shè)置為30幀/幅,也就是說,從得到原始圖像到識別出人臉要在1/30 s中進行完畢,這對于現(xiàn)在的計算機硬件資源和計算速度來說,是可以的,但是對日常生活來說是沒有必要的[5],因為,在動態(tài)圖像中,有人臉的圖像也只是它記錄著人臉在攝像頭前某一時刻的位置信息,如果人臉在攝像頭面前只是一閃而過,那么就沒有必要對它進行識別.所以,系統(tǒng)在喚醒人臉識別或人臉錄入模塊之前,先對當前連續(xù)多幀(系統(tǒng)設(shè)置為10)圖像進行比較,如果在這些幀的圖像中都有人臉,而且人臉區(qū)域是否相對穩(wěn)定的,就啟動后面的步驟,否則,同樣什么也不做,返回系統(tǒng).
3.1 人臉檢測
系統(tǒng)無論在什么狀態(tài),都是以檢測人臉為前提,也就是說,檢測人臉是系統(tǒng)計算的前提,只有檢測到圖像上的人臉,系統(tǒng)才進行以后的人臉錄入和識別工作.
3.1.1 差分圖像 攝像頭捕捉到的圖像是動態(tài)圖像,也就是每秒中連續(xù)的向計算機輸入k幀圖像(本系統(tǒng)k=30).連續(xù)的圖像記錄著圖像上物體的動態(tài)信息.這些信息可以使用圖像間的減法運算來得到[6].在本系統(tǒng)中,如果在系統(tǒng)開始運行的時候保存一張背景圖像,然后再用要預(yù)處理的圖像與背景圖像相減,就可以得到這幅圖像的信息.這個過程如圖3所示.
圖3 差分計算結(jié)果顯示Fig.3 The differential results show
圖3(a)是圖像的背景圖像,圖3(b)是圖像的差分圖像.從圖3(b)中,可以看出,人臉信息得到很好的保存,當然,還不可以拿它直接去做存儲或識別,它還要經(jīng)過二值化、平滑、膨脹等算法環(huán)節(jié).
3.1.2 圖像的二值化、平滑、垂直投影和確定邊界 經(jīng)過上面的計算,得到的差分圖像256級,它的紅色顏色范圍還是從0到255,為了計算,必須給予二值化.
圖4(a)是一幅差分圖像二值化的結(jié)果,但是由于物體的反光和光線的變化,在二值化處理后,圖像上有很多的噪音點,這些噪音點有的是孤立分布,有的是幾個聚集在一起,圍成一個面積不大的區(qū)域,它們共同的特點就是面積小、個數(shù)小.為此,本系統(tǒng)使用了一種區(qū)別與傳統(tǒng)方法的平滑方法,這種方法效果較好,實現(xiàn)也很方便.
這種方法的步驟是:從左到右逐行掃描,在每一列中找到連續(xù)的紅色象素點,判斷它們的高度,高度小于一定權(quán)直的(系統(tǒng)取的是圖像高度的1/10)就應(yīng)為它是噪音點集合,從圖像上去除,否則保留.然后再從上到下,使用同樣的做法處理.圖4(b)就是一幅圖像經(jīng)過這種方法平滑的后的結(jié)果.
圖像經(jīng)過平滑后,還要對圖像的做一次垂直的投影.垂直投影的的算法步驟也比較簡單.從左到右從上到下掃描每一列,在每一列中找到第一個紅色象素點,然后把這個找到的紅色象素點以下的所有象素點都置為紅色.圖4(c)是就是一幅圖像在經(jīng)過差分、二值化、平滑和垂直投影后得到的圖像結(jié)果.
當圖像經(jīng)過垂直投影后,就可以很好的定位出圖像上人臉的區(qū)域.首先,以圖像的列為橫坐標,以每列中的紅色象素點的個數(shù)為縱坐標作一條曲線,這條曲線的最大值對應(yīng)著人臉的中心位置,然后在這個最大值的兩側(cè)找到斜率絕對值最大的曲線點,這兩個曲線上的點的橫坐標是要找的人臉左右兩側(cè),人臉的左右邊界坐標找到了,然后再找人臉上下邊界,再以圖像的行為縱坐標,以每一行中紅色象素點的個數(shù)為橫坐標,作一條曲線,這條曲線如圖4(d)所示.
圖4 處理后的結(jié)果和坐標顯示Fig.4 Processed results and coordinates display
3.2 特征提取
特征提取的方法使用了數(shù)學里的降維思想.在判斷和分析特征向量的時候,將判斷N個特征向量減少為只要判斷T個模最大的(N>>T)特征向量.這種方法很有效果,系統(tǒng)的特征提取步驟分為7步:
(1)計算數(shù)據(jù)庫中全部人臉的平均臉.它的計算公式(1):
這里σ平均臉,M是圖像的個數(shù),F(xiàn)i是第i幅圖像,圖5(a)是系統(tǒng)求出的平均臉.
(2)把Fi(N×T 的矩陣)描述成一個1×NT的向量.
(5)計算ATA矩陣的特征向量,選擇其中模最大的K(K=7)個.
(6)計算AAT矩陣的K個特征向量,使用式(4):
其中,ui為AAT的向量,vi為五計算出來的K個特征值.圖5(b)~(h)是本系統(tǒng)的特征值(特征臉).
(7)求的數(shù)據(jù)庫中每幅圖像的K個特征值,并單位化.
圖5 得到的平均臉和特征臉Fig.5 Obtained average faces and features of the face
最后,求得圖像的特征值為double類型,每個圖像共K(系統(tǒng)中K=7)個特征值.
3.3 人臉識別
人臉識別的步驟可以分為以下4步:
(1)用待識別的人臉圖像減去數(shù)據(jù)庫中的平均臉,見公式(6).Qx=Fx-σ,其中Fx是待識別的人臉圖像,Qx為結(jié)果.
(2)計算待識別的圖像的特征值,如公式(7)所示.
(3)對eigen Vali進行單位化.
(4)找到數(shù)據(jù)庫中,與eigen Val距離最小的一組特征值.這個特征值對應(yīng)的人臉,就認為和待識別的人臉是同一個人,并顯示信息.
該人臉識別系統(tǒng)在VC6.0開發(fā)環(huán)境下進行開發(fā),所開發(fā)的系統(tǒng)具有如下優(yōu)點:(1)系統(tǒng)具有很強的魯棒性,能識別各類人群,即使在運動中也有較準確的識別性能.(2)即使戴眼鏡或者眼鏡反光,系統(tǒng)識別仍然具有很高的準確率.(3)算法具有一定的抗臉側(cè)向的能力和抗臉傾斜識別能力(在人臉旋轉(zhuǎn)范圍-10°~10°內(nèi)).實踐證明,該方法具有較高的識別精度.設(shè)計的算法可行有效,有較強的應(yīng)用價值.
[1]莊哲民,張阿妞,李芬蘭.基于優(yōu)化的LDA算法人臉識別研究[J].電子與信息學報,2007,29(9):2047-2049.
[2]熊曉龍,鐘滿.概率統(tǒng)計應(yīng)用于手寫模式識別系統(tǒng)[J].武漢工程大學學報,2010,32(1):107-110.
[3]Li Zhifeng,Tang Xiaoou,et al.Nonparametric Discriminant Analysis for Face Recognition[J].Pattern Analysis Machine Intelligence,2009,31(4):755-761.
[4]陳伏兵,陳秀宏,張生亮,等.基于模塊2DPCA的人臉識別方法[J].中國圖像圖形學報,2006,11(4):580-585.
[5]楊帆,劉暢.基于D-S證據(jù)理論的多傳感器目標識別應(yīng)用[J].武漢工程大學學報,2009,31(1):73-75.
[6]王偉,張明.基于對稱線性判別分析算法的人臉識別[J].計算機應(yīng)用,2009,29(12):3353-3356.
Design and implementation of dynamic faces recognition system
XIA Ping-ping1,LV Tai-zhi2
(1.Department of Information Engineering,Jiangsu Maritime Institute,Nanjing 211170,China;
2.College of Computer Science,Nanjing University of Science and Technology,Nanjing 210094,China)
In this paper,how to recognize motive human face images is described,including module design,system architecture design and system implementation and so on.First,the image acquisition modules are designed in this paper,and implemented the dynamic image acquisition,capture,storage and other functions by the camera in VC++ environment.Secondly,the implementation process of faces detection and recognition and the algorithms are described in detail.Dynamic face recognition system design complexity is relatively low,taking up less system space resources and the experimental results are of high accuracy.
Face recognition;dynamic graphics;face input;feature extraction
鄒禮平
TP391.41
A
10.3969/j.issn.1674-2869.2011.10.025
16742869(2011)10010704
20110919
江蘇省教育廳高??蒲谐晒a(chǎn)業(yè)化推進項目資助(2011-28)
夏平平(1975),男,安徽馬鞍山人,高級工程師,碩士.研究方向:計算機應(yīng)用.