崔慶華 程 科,2 李肇基
(1.江蘇科技大學計算機學院 鎮江 212000)(2.江蘇科技大學海洋裝備研究院 鎮江 212000)
人臉識別近年來一直是熱門研究課題之一,它覆蓋了神經網絡、計算機視覺、模式識別、圖象處理、生理學等諸多學科,是一門結合了多學科領域的挑戰性難題。經過了40多年的研究,目前,人臉識別系統已經發展到了一定相對成熟的程度。人臉識別技術應用前景廣泛,可用于身份證和駕駛證的證件驗證、門衛系統、公安罪犯身份辨認、醫學應用以及海關監控等方面[1]。人臉識別研究主要根據圖象部件特征和圖象整體特征兩個方向入手[2]。但無論基于哪個方向,人眼作為人臉最規則和最穩定的特征,具有更好的識別性能[3],已經成為人臉識別中最關鍵的部分。
當前,國內外已經提出了不少人眼定位方法,例如:文獻[4]中提出了基于灰度積分投影法眼睛定位算法,該方法先對圖像進行二值化處理,再對二值圖象進行垂直和水平灰度投影,利用人眼獨特的灰度特征,定位人眼[4]。該方法雖然定位快,但是準確率不高,難以區分眼睛與眉毛。文獻[5]采用了基于霍夫變換的方法,在邊緣提取的基礎上,采用傳統的橢圓檢測算法定位人眼虹膜,盡管實現簡單,卻未考慮人眼的微結構特征[5],而且該方法計算量大。文獻[6]將灰度投影法進行改進,每三行進行一次灰度積分,并結合人眼的復雜度,灰度均值以及結構居中等信息對人眼進行定位[6],該方法雖然定位準確,但計算量大,過程繁雜。文獻[7]選用了神經網絡的方法,該方法將窗口內的像素數設為神經網絡的輸入,若窗口內含有人眼,則神經網絡的輸出很大[7],從而來定位人眼,該方法只可大抵獲得人眼的位置,并不精確。因此,目前很多提出的人眼定位的算法計算量大,對光照旋轉敏感,不夠精確,具有很大的局限性。
本文提出一種基于灰度積分投影法和連通域算法相結合來實現人眼準確快速定位的方法。首先用基于Haar-like特征的Ada-Boost級聯分類器檢測出人臉塊,分割出感興趣的人臉塊,用積分投影法初步估計眼睛和眉毛的區域,結合人臉“三庭五眼”的特征,將人的眉眼區域分割出來,對眉眼區域閾值分割,形態學膨脹處理,最后采用連通區域法標記定位人眼。實驗表明,該方法不但定位快,還能準確區別開人眼和眉毛。
Adaboost人臉檢測方法是目前人臉檢測中較為成功的一種方法,該方法極大地提高了人臉檢測的精度和速率。它的主要思想是先從大量的分類能力較弱的弱分類器中篩選出一部分最有分類價值的分類器,將這部分有價值的分類器進行疊加,最終構成一個分類能力很強的強分類器[8]。
Adaboost人臉級聯檢測器[9]主要構成如下:
1)人臉表示:用矩形特征來表示人臉,算出人臉特征值。
2)弱分類器:用Adaboost算法挑選出最能代表人臉的一部分矩形特征,即弱分類器。
3)強分類器:將弱分類器加權投票構造成一個強分類器。
4)層疊分類器:將通過訓練得到的一系列強分類器串聯起來,即構成了一個層疊分類器。
分類器示意圖如圖1所示。
使用分類器檢測人臉時,對待檢測窗口逐級進行檢驗,若其中的某個分類器將其判別為非人臉,當即排除,不再進入下一級分類器。最終的目標區域能通過所有分類器檢測即我們所需要的人臉區域。通過大量實驗表明,基于AdaBoost算法的人臉檢測效果令人滿意。基于Adaboost算法檢測的人臉效果如圖3所示。

圖1 分類器示意圖

圖2 原始圖像

圖3 Adaboost算法檢測的人臉
對檢測到的人臉區域進行圖像分割,獲取其中的ROI區域[10]。圖像ROI包含了圖像的主要信息和關鍵信息,可以完全代替原圖像。ROI如圖4所示。

圖4 ROI圖像
積分投影法是通過分析圖像在某些方向上的灰度投影的分布特征來實現的,主要有垂直積分投影和水平積分投影[11]。
垂直積分投影即對圖像進行垂直方向上的灰度投影,分別將每列中所有像素點的灰度值進行累加,并顯示出來。公式如下:

(x,y)表示像素所的位置,I(x,y)表示該像素點的灰度值,M表示一列中所有的像素點的個數。
水平積分投影即對圖象進行水平方向上的灰度投影,分別將每行中所有像素點的灰度值進行累加,并顯示出來。公式如下:

(x,y)表示像素的位置,I(x,y)表示該像素點的灰度值,n表示一行中所有的像素點的個數。
對人臉水平積分投影,投影曲線如圖5所示。

圖5 人臉的水平積分投影
從上圖可以看出,在對檢測出的人臉區域進行水平投影時,灰度值的分布在眉毛、眼睛、鼻子、嘴巴處都有突變,呈現灰度極小值或灰度極大值,又由于人臉圖象中人眼部位的灰度值通常比其它區域的灰度值小[12],因此,利用這個特點,大概的粗定位出人眼的水平位置即人眼的縱坐標。粗定位人眼如圖6所示。

圖6 粗定位人眼
積分投影函數可反映圖象在垂直和水平方向上的整體灰度值分布清況,經過水平灰度積分投影,理論上可確定眼睛的縱向位置,但實驗發現,這種方法經常會受到眉毛的影響[13],產生誤判,原因是眼睛與眉毛距離較近且顏色相近,當眉毛較淡時,眉毛的灰度投影值很有可能小于眼睛的投影值,此時,就會將眉毛當作眼睛進行誤判[14]。因此,本文針對這種問題,提出了積分投影和連通域算法相結合的方法,不僅能對眼睛和眉毛進行區分,而且對人眼和眉毛進行精確定位。
連通域算法是提取原圖像中所有連通區域,給每個連通區域唯一分配一個代表該區域的編號的算法。在輸出圖像中,原圖像中的所有連通區域的像素值都被賦值為該連通區域的編號,輸出圖像也稱作標注圖像。
基于連通區域算法的應用非常廣泛,通過標注圖像,我們可以對連通區域進行很多的操作。例如:計算連通區域的質心,計算連通區域中像素值的平均值和所有的像素總數等等。
為了簡化操作的難度,盡可能地排除鼻子、嘴巴、下巴對實驗產生影響,本文根據積分投影法和人臉“三庭五眼”的先驗知識,先劃定一個眉眼所在區域。
“三庭五眼”[15]是人臉的長度和寬度的一般比例,三庭即將人臉的長度分為三塊,分別為人的發跡線到眉線,人的眉線到鼻底線,人的鼻底線到頸底線,并且這三塊距離一般相等。五眼是指人的面部最寬地方的距離即為五只眼睛的寬度。
本文設人臉長度為L,寬度為N,將人臉按照三庭五眼的方式劃分,如圖7所示。

圖7 “三庭五眼”示意圖

圖8 眉眼區域
將眉眼所在區域的灰度圖先用最大類間方差法閾值分割[16],將人的膚色和眉毛眼睛區分開來,凸顯出人的眉毛與眼睛(最大類間方差法的原理是以一個閾值P將圖像的灰度直方圖分為兩組,即將一個圖像分為前景和背景兩部分,取P使得這兩組的方差最大,此時P即可以最大保障的區分開圖像的前景和背景)。閾值分割圖如9所示。

圖9 閾值分割
再對經過閾值分割的二值化圖像進行膨脹處理[17],擴大物體的邊界,將二值圖像中原本相連卻斷開的區域橋接起來。效果如圖10所示。

圖10 膨脹處理
用連通域算法[18]標注該二值圖象的連通分量,Matlab圖象處理工具中,采用bwlabel和bwlabeln[19]這兩個函數實現對圖象的連通區域進行標記,并可以獲得該連通區域的相關屬性。
調用代碼如下:
[B,num]=bwlabel(A,8);
(A指二值圖像,8指連通分量是8連通的,B是標注矩陣(和A一樣大),0代表背景,1代表第一個對象,2代表第二個對象等等,以此類推,num指二值圖象中連通分量的個數。)
很顯然本實驗有四個連通區域,兩個眉毛,兩個眼睛,標注完連通分量后,獲得標注圖像B,通過標注圖像B,即可獲得各個連通區域的質心坐標(質心指物體的質量中心,二值圖像中,假設每個像素的質量是完全相同的,此處完全可以代表連通區域的中心)。通過函數 regionprops[20]實現,代碼如下:
C=regionprops(B,‘Centriod’)
(C指結構數組,用來放質心坐標)
因為人眼區域永遠在眉毛區域的下方,我們只需要比較每個連通域的質心坐標的縱坐標,縱坐標小的兩個連通域就對應著兩只眼睛的位置,縱坐標大的兩個連通域就對應著眉毛所在區域,從而可以輕松區分眼睛和眉毛,同時可以獲得人眼的中心坐標,從而精確定位人眼。人眼定位效果如圖11所示。

圖11 人眼精確定位
實驗整個流程如圖12所示。

圖12 實驗流程圖
人眼精確定位部分效果如圖13所示。

圖13 人眼精確定位效果圖
本文實驗人臉庫采用ORL人臉庫,該人臉庫由灰度級為256的400幅40個人的人臉圖象構成,圖象分辨率為92×112像素,從ORL人臉庫中,選取100張人臉正面圖象進行測試,測試結果如表1所示。

表1 兩種方法準確率比較
從上表數據能夠看出,將兩種算法相結合與單一使用積分投影法相比,可取得更高的準確率。實驗結果證明,改進的算法可靠。
在人臉識別中,快速準確地定位人眼的位置尤為重要,本文先用Adaboost算法初步定位人臉,并獲取RIO區域,通過灰度投影法,大致估計眉眼區域,結合人臉“三庭五眼”的特點,將人的眉眼區域分割出來,對分割出的圖像進行閾值分割以及膨脹處理,對所形成的二值化圖像進行連通域標記。本文形成四個連通域,求得各個連通域區域的質心,縱坐標小的兩個連通域即人眼所在位置,且質心即為人眼的坐標,從而準確區分人眼和眉毛。經過實驗測試,本文提出的灰度投影法與連通域算法相結合的人眼定位算法,不僅能區分人眼和眉毛,準確定位人眼的位置,而且速度非常快,具有實用意義。