徐立杰, 朱建鴻
(江南大學 物聯網工程學院, 無錫 214122)
人臉特征提取是人臉識別、疲勞檢測、人機交互、監控系統等領域中的重要初始工作.與人臉中其他部位相比, 眼睛具有較為突出和穩定的特征, 因此人眼定位是人臉和其他部位檢測和提取的基礎.在人臉檢測中, 眼睛的準確定位可以有效地提高檢測效率和魯棒性[1].此外, 眼睛圖像的獨特性及眼睛的運動特點是表情理解、行為識別等技術的關鍵線索[2].
目前, 人眼定位算法主要有: 基于外形的方法、基于統計學習的方法以及基于外貌特征的方法.基于外形的方法主要有主動形狀模型(Active Shape Model,ASM)[3]和邊緣提取法[4], 主動形狀模型通過選取合適的初始位置來獲取人眼精確的特征點坐標; 邊緣提取法先預處理數據, 然后對人眼邊緣進行提取.基于統計學習的方法主要有AdaBoost分類[5]和支持向量機(Support Vector Machine, SVM)[6], 這類方法通過模型從訓練集學習特征形成分類器, 通常具有較好的魯棒性, 在實際應用中易將人眼定位至灰度值變化較大的區域, 如眉毛區域[7].基于外貌特征的方法主要有濾波器響應法[8]和積分投影法[9], 濾波器響應法主要使用人眼特征點和外貌特征兩種方式, 兩者都是使用濾波器響應值檢測人眼, 用于正面人臉定位效果比較好.積分投影法是根據波峰和波谷的分布信息定位人眼, 定位速度快, 但是很容易受到光照強度的影響, 而且獲得的人眼中心點并不準確.積分投影函數(Integral Projection Function, IPF)是一種較常用的投影函數, 但是IPF不能反映出均值相同的情況下灰度值變化的特點并且易受眉毛的干擾.針對這一問題, 文獻[10]提出一種梯度積分投影函數(Gradient Integral Projection Function,GIPF)用于人眼定位, 該方法可以反映出人臉灰度值變化的特點并且抑制眉毛的干擾, 但是易受面部光照干擾.針對GIPF易受光照影響的問題, 文獻[11]提出一種改進梯度積分投影和形態學濾波相結合的人眼定位算法, 在抑制眉毛干擾的同時減弱了人眼定位時光照的影響, 但是得到的人眼中心點不夠精準.
針對傳統投影方法的這些問題, 本文提出一種基于多尺度自商圖和改進的積分投影法的人眼定位方法.采用多尺度自商圖像排除了光照不均勻導致的干擾區域, 增強了算法的魯棒性.另外, 對積分投影法做出改進, 過濾掉眉毛, 突出人眼位置; 根據分割出的左眼窗口和右眼窗口的尺寸來獲取較為精準的人眼中心點.
在進行人眼定位時, 光照變化的問題是最困難的問題之一.自商圖像能夠對面部的光照效果進行偏移,為這一問題提供了解決辦法.對于一幅給定的圖像I(x,y),可以看做是由入射圖像L(x,y)和反射圖像R(x,y)構成, 入射光照射在反射物體上, 通過反射物體的反射形成反射光進入人眼.則定義圖像I(x,y)的自商圖像R(x,y)為:

其中,L(x,y)是I(x,y)平滑后的版本; ?是卷積運算;F(x,y)是平滑濾波核, 即:

其中,c是高斯函數的尺度參數; λ由歸一化函數決定:

當c比較小的時候, 能較好地保持圖像邊緣的細節信息, 但是對光照的偏移效果較差; 當c比較大的時候, 能夠有效地消除人臉光照, 但是細節保持較差.為了在人臉圖像的保真率和光照反射率之間達到平衡,根據文獻[12], 本文采用多尺度自商圖.多尺度自商圖定義如下:

其中,wk表示第k個平滑濾波核分量平滑的權值, 通常wk=1/K;ck表示第k個平滑濾波核函數的尺度參數.本文通過實驗得到, 當K=3,c取20, 40, 80時效果較好.
圖1中給出YaleB人臉數據庫中的3幅不同方向光照的照片, 圖2為圖1經過處理后得到的多尺度自商圖像.由圖2可知, 經過處理得到的多尺度自商圖已經消除不同方向的光照影響, 同時保持了人臉重要器官的信息, 有利于后續的人眼定位.

圖1 原始圖像

圖2 多尺度自商圖
傳統的積分投影法對圖像進行人眼定位時, 大致分為兩步: (1)人眼初定位: 首先對人臉圖像進行二值化, 然后對二值化圖像進行水平積分投影, 最后根據波谷的分布信息來分割人眼區域; (2)人眼最終定位: 對分割出的人眼區域先進行二值化, 再進行垂直積分投影, 根據波谷的分布信息直接獲取虹膜中心所在列, 從而定位虹膜中心.
本文提出一種改進的積分投影法的人眼定位方法.在人眼初定位時, 針對積分投影法對二值化的人臉圖像進行水平投影后難以區分眼睛和眉毛的問題, 做出改進: 對中值濾波后的行梯度圖進行水平積分投影, 過濾掉眉毛, 得到人眼區域; 在人眼最終定位時, 針對積分投影法對二值化的人眼區域進行垂直積分投影后無法獲取精準的人眼中心的問題, 做出改進: 對經過Sobel算子濾波后的人眼區域進行垂直積分投影并對垂直積分投影曲線進行高斯函數擬合, 分割出左眼和右眼, 根據左眼圖像和右眼圖像的尺寸來獲取精準的人眼中心點.
人眼中心所在行的灰度值在虹膜和鞏膜的交界處變化較大, 而眉毛中心所在行的灰度值變化較小.一維行梯度算子能夠突出圖像水平方向的局部灰度變化,因此, 選擇兩個方向相反且長度相同的行梯度算子作用人臉圖像, 突出人眼水平方向的局部灰度變化, 同時抑制眉毛的響應.行梯度圖的計算公式如下:

其中,l1是行梯度算子, 如圖3所示;l2是與l1方向相反且長度相同的行梯度算子; *是相關運算;l1*RM(x,y)反映了水平方向上從虹膜到鞏膜的灰度變化, 如圖4(b)所示;l2*RM(x,y)反映了水平方向上從鞏膜到虹膜的灰度變化, 如圖4(c)所示;Rg(x,y)反映了水平方向上從鞏膜到虹膜到鞏膜的灰度變化, 如圖4(d)所示.由圖4(d)可以看出,Rg(x,y)中亮度較大的部分對應臉部區域中局部變化突出的眼睛和鼻子部分, 其中眼睛區域特征被有效地增強.這樣的處理可以突出眼部信息, 減弱眉毛的干擾.

圖3 行梯度算子

圖4 行梯度圖計算結果
為了消除行梯度圖中存在的噪聲和邊緣響應, 對行梯度圖進行中值濾波, 行梯度圖中值濾波后的結果如下:

其中,m(x,y)是中值濾波器, 本文選擇 5 ×5的濾波模板.S(x,y)的三維表示如圖5所示.由圖5可以看出, 經過中值濾波后, 行梯度圖中的噪聲被有效地抑制并且邊緣響應非常弱.

圖5 三維圖
由于積分投影法在光照不均勻的情況下對二值化的人臉圖像進行水平投影后, 難以區分眼睛和眉毛, 而中值濾波后的行梯度圖可以過濾眉毛, 故本文對中值濾波后的行梯度圖進行水平投影, 水平積分投影函數如下:

其中,g(x,y)表示該像素點的灰度值;x1和x2表示行梯度圖中像素點的橫坐標.以圖6中人臉原圖為例, 圖7、圖8分別為IPF的水平積分投影曲線和GIPF的水平積分投影曲線, 由于人臉光照較為復雜以及噪聲的干擾, IPF的水平積分投影曲線出現了多處波谷, 根據波谷信息難以區分眼睛和眉毛; GIPF水平投影曲線雖然突出顯示了人眼中心點所在行的位置信息, 但是仍然受到周圍波峰的干擾, 并且邊緣響應較大; 相比之下,本文方法的水平積分投影曲線平滑了曲線, 使得波峰值更為突出并且抑制了邊緣響應, 如圖9所示.

圖6 人臉原圖

圖7 IPF的水平積分投影曲線

圖8 GIPF的水平積分投影曲線

圖9 本文方法的水平積分投影曲線
由于人眼中心點所在行的灰度變化最大, 故本文方法的水平積分投影函數在人眼中心點所在行出現最大值.考慮到人臉傾斜可能導致兩只眼睛的上(下)邊界不在同一水平線上, 將水平積分投影函數的最大值位置作為人眼中心點的水平位置, 從最大值位置開始分別向前、后兩個方向尋找水平積分投影函數值為最大值1/2的位置作為人眼區域的上、下兩條邊界, 完成人眼的初定位.為了給人眼的最終定位節省運算時間,將檢測出來的雙眼區域從人臉上分割出來, 如圖10所示.

圖10 人眼區域
二值化圖像就是把彩色圖像、灰度圖像等轉換為圖像的邊緣, 體現了圖像中灰度分布的不連續性, 可以很好地反映圖像中目標的輪廓、形狀信息且不受光照變化的影響, 故為了提取人眼區域的豎直特征, 本文采用邊緣算子進行檢測.相較于其他邊緣算子, Sobel算子[13]兼容了抗噪性好和計算量小的優點, 本文采用Sobel算子對圖10中人眼區域進行濾波, Sobel算子為:

濾波結果為:

其中,E(x,y)是人眼區域圖像.
人眼濾波圖如圖11所示.由圖11可知, 通過Sobel濾波, 人眼的豎直特征被有效地凸顯, 有利于后續左眼和右眼的分割.

圖11 人眼濾波圖
為了精確定位人眼位置, 還需要對人眼濾波圖進行垂直積分投影來確定左眼和右眼垂直方向上的位置.垂直積分投影函數如下:

其中,y1和y2表示人眼濾波圖中像素點的縱坐標.
大量實驗表明, 由于虹膜和鞏膜周圍的灰度變化復雜, 人眼濾波圖的垂直積分投影曲線在兩眼區域大致呈現兩個高斯分布的趨勢.因此, 本文對人眼濾波圖垂直積分投影曲線進行二階高斯函數擬合[14,15], 擬合結果如圖12所示.

圖12 擬合結果
曲線高斯擬合后的第1個波峰對應左眼中心點,第2個波峰對應右眼中心點.對兩條高斯分布曲線分別取兩個標準差內的范圍作為兩個眼睛窗口的垂直方向上的范圍, 由此分割出左眼和右眼.
傳統的投影方法可以得到虹膜中心, 但眼睛的中心往往不是虹膜的中心, 這是因為虹膜的位置會隨著視線方向的改變而改變.為了得到左眼和右眼中心點的位置, 需要對分割出的左眼和右眼圖像進行尺寸計算.設分割出的左眼圖像分辨率為m×n, 右眼圖像分辨率為p×q.若m和n均為偶數, 則左眼的中心點坐標為(m/2,n/2); 若m為偶數,n為奇數, 則左眼的中心點坐標為(m/2,(n+1)/2); 若m為奇數,n為偶數, 則左眼的中心點坐標為((m+1)/2,n/2); 若m為奇數,n為奇數, 則左眼的中心點坐標為((m+1)/2,(n+1)/2).若p和q均為偶數, 則右眼的中心點坐標為(p/2,q/2); 若p為偶數,q為奇數, 則右眼的中心點坐標為(p/2,(q+1)/2); 若p為奇數,q為偶數, 則右眼的中心點坐標為((p+1)/2,q/2); 若p為奇數,q為奇數, 則左眼的中心點坐標為((p+1)/2,(q+1)/2).通過該方法得到的中心點不僅更接近眼睛的真實中心, 而且具有更好的抗干擾能力.
為了驗證本算法的可行性和準確性, 本文采用YaleB人臉數據庫和JAFFE人臉數據庫進行了仿真實驗.YaleB人臉數據庫包含38個人在9種姿態、64種光照條件下的21 888張圖像, 可用于考察本文算法對光照的適應性.JAFFE人臉庫中包含215張圖像, 通過該人臉數據庫可以考察本文算法對人臉表情的適應性.
實驗采用文獻[16]提出的度量標準.將手工標注的左右眼中心點設置為和, 檢測到的左右眼中心點位置為和.為與之間的歐幾里得距離,為與之 間 的 歐 幾 里 得 距 離.是和之 間 的歐幾里得距離.
位置相對誤差的定義為:

閾值err=0.25表示人眼中心位置偏離真實位置的最大允許誤差,err越小表示定位越精確.
實驗一.分別采用IPF、GIPF、文獻[11]以及本文中的方法在JAFFE人臉數據庫上進行實驗, 各類方法的實驗結果見表1.

表1 JAFFE數據庫的實驗結果準確率對比(%)
由表1可知, 相同標準下, 即err<0.25條件下, 本文算法在JAFFE數據庫的人眼定位性能相對于IPF以及GIPF均有提高, 與文獻[11]的算法性能相當.
實驗二.對IPF、GIPF、文獻[11]以及本文中的方法進行研究, 并在光照復雜的YaleB人臉數據庫上進行實現.經過實驗對比, 4種方法的實驗結果見表2.

表2 YaleB數據庫的實驗結果準確率對比(%)
由表2可知, 當選擇err<0.25作為度量標準時, 定位準確率最低的IPF也達到了84.75%, 這是因為err<0.25意味著檢測到的兩只眼睛的位置離真實位置均在半只眼睛寬度以內, 這種標準非常寬松.隨著度量標準的提高, IPF的準確率快速下降, 這是由于IPF受眉毛和噪聲的影響極易產生多個波谷; 而GIPF可以消除眉毛的干擾并且對噪聲并不敏感, 在err<0.15的精度下的準確率比IPF高31%.但是, 受限于復雜光照和邊緣響應的影響, GIPF的準確率在err<0.10的精度下快速下降; 而文獻[11]改進的GIPF能夠有效地減弱光照和邊緣響應的影響, 在err<0.10的精度下的準確率比GIPF高14.5%.當選擇err<0.05作為度量標準時,IPF、GIPF的準確率較低并且文獻[11]的準確率快速下降, 而本文方法的準確率比文獻[11]高10.5%, 這是由于人的眼球發生轉動時, 本文方法定位的人眼中心是人眼外接矩形的中心點, 而不是虹膜中心, 從而保證了定位人眼中心點位置的精度.為了更好地展示人眼中心點定位結果準確率, 給出了人眼中心定位準確率與相對誤差的分布圖, 如圖13所示.

圖13 不同相對誤差下各種方法的準確率
在算法耗時方面, IPF和GIPF方法的平均耗時為0.080 21 s和0.194 33 s, 文獻[11]的平均耗時為0.464 12 s, 本文方法的平均耗時為0.486 14 s.本文方法的平均耗時和文獻[11]差不多, 但是大于IPF和GIPF,這是由于采用了自商圖像消除人臉光照以及人眼最終定位時采用了高斯函數擬合.但是, IPF、GIPF和文獻[11]只能得到粗略的人眼中心點位置, 而本文方法可以獲得較為精準的人眼中心點位置.
圖14給出了本文算法的部分定位結果, 圖中用紅色十字表示定位的眼睛中心點位置, 在不同數據庫下都能成功定位.

圖14 部分定位效果圖
傳統投影方法對人臉邊緣和光照適應性差, 并且獲得的人眼中心點并不準確.針對此問題, 本文提出了一種基于多尺度自商圖和改進的積分投影法的人眼定位算法.該算法通過多尺度自商圖消除了光照對人眼定位的影響, 大大提高了算法的魯棒性; 通過改進的積分投影法克服了眉毛的影響, 抑制了人臉圖像的邊緣響應, 獲得了較為精準的人眼中心點位置.從YaleB人臉數據庫和JAFFE人臉數據庫的測試結果看, 本文算法的準確率優于傳統的投影方法.