田全 王蘊哲
摘要:針對眉毛和眼鏡框等區域對人眼定位造成較大影響的問題,根據人眼周圍區域各部位灰度值變化特征,提出了一種新的人眼定位及開閉狀態識別算法。該算法利用AdaBoost算法對人眼進行粗定位,通過圖像水平積分法,根據積分極值點特征完成人眼特征的精確定位,實現人眼部位條狀區域的分割。最后利用投影法得出人眼的開閉狀態。實驗結果表明,該文提出的方法能夠有效準確的實現人眼部位的精確定位,對人眼開閉狀態識別率能夠滿足實際需求,且對圖像中的各種干擾因素具有較強的魯棒性。
關鍵詞:人眼定位;人眼狀態識別; AdaBoost算法;水平積分投影法
中圖分類號:TP31 文獻標識碼:A 文章編號:1009-3044(2018)03-0170-03
Abstract: Aiming at the problem that eyebrow frame and other areas have great influence on human eye location, a new eye location and state recognition algorithm is proposed Based on the change of gray value in different parts of the human eye. The algorithm uses AdaBoost algorithm to locate the human eye roughly, and completes the precise location of human eye Based on the integral extremum point feature by image horizontal integration method, and realizes the segmentation of human eye part. Finally, by using the projection method of opening and closing state of the eye. Experimental results show that the proposed method can accurately and accurately locate human eyes, and it can meet the actual demand of human eye opening and closing state, and is robust to all kinds of interference factors in images.
Key words: eye location; eye state recognition; AdaBoost algorithm; projection method
1 概述
在車輛輔助駕駛系統中,人眼作為人臉特征的關鍵特征,其定位精度和開閉狀態判斷的準確度直接影響系統對于駕駛員行車過程中分神或者疲勞狀態檢測的準確性[1]。目前人眼定位算法已較成熟,常用方法有以下幾種:一是基于形狀的人眼定位方法,如Hough變換法,利用瞳孔或虹膜的圓形特征,以眼瞼或眼角的幾何特征加以輔助,能夠實現人眼的精確定位[2]。該方法常用于安檢口身份驗證及手機解鎖等場合,通常需要指定被測者頭部保持固定的姿勢,同時,該方法對測量設備精度要求較高,相應的增加了測量成本,同時,在被測者半閉眼或者完全閉眼情況下,無法完成人眼的定位;二是基于模板匹配進行人眼定位,該方法利用選定的模板圖像與待測圖像各區域進行比較,選出相似度最高的區域作為匹配結果[3]。其優點是原理簡單,操作便捷,缺點是由于每次匹配需要對圖像進行全局掃描,計算量較大,難以滿足實時檢測需要,同時算法對頭部運動以及光照變化等因素的魯棒性較差;三是基于圖像的色彩、頻域、紋理等特征,結合機器學習算法,通過樣本訓練得出的人眼定位決策模型完成定位。然而,該方法受限于樣本數量和樣本多樣性的影響,且在圖像中存在眼鏡鏡片反光、光照較暗等影響因素下,極易發生誤定位。
針對目前人眼定位算法存在的缺陷,本文提出了一種新的人眼定位方法。該方法首先利用AdaBoost算法得到圖像中人眼區域的大致定位,對已得到的眼睛區域圖像進行水平灰度投影,根據不同區域的灰度特征排除干擾區域,得到人眼條狀區域;利用大津法[4]選取自適應閾值對人眼條狀區域進行二值化,最終利用二值化圖像的投影區域寬高比作為判定標準,實現人眼開閉狀態的檢測。實驗結果表明該方法能夠避免眼鏡框、眉毛等區域對人眼定位造成的干擾,有效提高了人眼定位與開閉狀態檢測的準確率。
2 基于灰度特征的人眼定位算法
2.1 AdaBoost算法原理
AdaBoost算法是由Freund和Schapire提出的一種迭代機器學習方法。算法的核心思想是從一系列弱學習算法出發,通過迭代,得到一系列弱分類器,將這些弱分類器進行加權組合,得到一個強分類器,從而實現將弱學習算法提升(Boost)為強學習算法的目的[5]。
算法的具體實現原理[6]是:對于一個給定的訓練樣本數據集,
對于后續迭代,基本分類器在樣本訓練集上的分類誤差率為
其中,表達式的值當時為1,當時為0,從而得到每次迭代后更新數據訓練集的權值分布為
由分類器的線性組合得到最終分類器:
利用AdaBoost算法得到的人眼區域粗定位圖像如圖1所示,可見圖像中含有許多干擾因素,需要進行后續處理加以排除。
2.2 基于圖像灰度特征的檢測原理
大量實際檢測數據表明,基于AdaBoost算法得出的人眼粗定位圖像在圖像x軸方向定位較準確,而在y軸方向容易受眉毛、頭發、眼鏡框和眼鏡表面反光的影響,導致定位出現偏差。因此,在AdaBoost算法定位基礎上,對人眼區域沿y軸方向周邊區域對圖像的灰度特征進行了分析,利用各部位灰度特征的不同對圖像加以區分,從而實現人眼區域的再定位。
考察人眼部位圖像的灰度值特征,發現人眼部位圖像灰度值明顯低于其周邊圖像灰度值。對圖1中的圖像進行水平灰度積分投影,并計算積分圖曲線中的極小值位置,則人眼部位在圖像中的y軸坐標必然對應于其中某個極值點。然而,由于圖像中眉毛、眼鏡框等部位也在水平積分圖中體現為極小值點,同時,受到圖像本身存在的光照不均、鏡片反光、圖像噪聲等諸多因素影響,積分圖的極值點序列中必然存在大量冗余極值點。如圖2所示,本文采用如下算法,定位人眼部位對應的極值點。
首先,對于對應行灰度值過低或過高的極值點加以排除。根據經驗可知,灰度值過低區域極值點通常位于頭發區域,而灰度值過高區域極值點往往位于人眼下方皮膚部位,本文根據實際檢測總結,排除掉灰度值高于圖像行灰度值積分平均值1.1倍的極值點和低于0.35倍的極值點。
對于因圖像噪聲或光照不均產生的冗余極值點,在圖像中通常呈密集分布的狀態,采用從上至下對極值點搜索合并來排除這類極值點。實現方法為:從圖像最上方的極值點開始,向下搜索k行范圍內距離最近的極值點(這里k值根據經驗取10),比較兩個極值點對應行的水平灰度積分值大小,取較小值所在行作為新的比較基準值,并繼續向下進行迭代搜索。由于實際情況中,人眼、眉毛、眼鏡框等關鍵部位的灰度值積分均小于其他部位灰度值積分,所以該搜索方法能夠在不丟失關鍵極值點數據信息的前提下,實現冗余極值點的合并。
對于一些孤立的冗余極值點,按照上面的搜索方法難以進行排除,這類冗余極值點通常由于圖像噪聲干擾產生,在圖像的積分圖中呈現尖刺狀,灰度值變化趨勢不連續,其上下兩行灰度積分圖的二階差分值不相等,利用該特點,能夠排除這類極值點。
如圖3所示,為去除冗余極值點后的剩余極值點位置,集中在眉毛和眼鏡框位置。其中,眉毛區域的灰度值積分通常低于眼睛區域的灰度值積分;而眼鏡框所在位置的灰度值積分根據眼鏡框顏色不同,可能低于也可能高于人眼區域;而其余極值點位置的灰度值均高于人眼區域。根據這一灰度值特征,按照如下方法得到人眼區域對應極值點:
(1) 若僅存在一個極值點,則認為該點為人眼極值點;
(2) 若存在兩個極值點,則取下方極值點為人眼極值點;
(3) 若存在多個極值點,則先剔除最上方極值點后,計算每個極值點對應行臨近上方和下方共4行灰度值積分的和,取該值最低的位置作為人眼區域位置。
如圖4所示,為人眼部位極值點對應行擴展后的條形區域,對該圖進行大津法二值化,并計算二值圖像的水平投影高度h和豎直投影寬度l的比值作為人眼開合度的判斷標準,人眼開合度可以表示為:
其中, 為人眼條形圖像的水平豎直投影的寬高比, 分別為人眼完全睜開和閉合時的寬高比。這里判定閾值取經驗值0.4,大于該閾值時認為人眼處于睜開狀態,小于該值時認為處于閉眼狀態,從而實現了人眼的定位與開閉狀態判斷。
3 實驗
為了驗證本文算法對于人眼定位及開閉狀態識別算法性能,根據環境光照強弱和是否佩戴眼鏡的區別,分別驗證了白天不戴眼鏡、白天戴眼鏡、傍晚不戴眼鏡、傍晚戴眼鏡4段視頻共1967幀圖像的檢測效果,視頻采用紅外攝像頭進行拍攝,幀速率為30FPS,分辨率為640*480,表1所示為不同狀態下人眼定位結果,并與只采用AdaBoost算法直接定位的結果進行了對比。
對實驗數據進行分析,發現在白天無眼鏡狀態,由于光照條件較好,圖像細節明顯,兩種方法均有較高的定位準確率;白天有眼鏡狀態,受到鏡面反光影響,AdaBoost方法定位準確率受到較大影響,而本文方法影響較小;傍晚無眼鏡條件下,由于光照不足,圖像細節變弱,此時眉毛成為主要干擾因素;傍晚有眼鏡條件下,兩種方法檢測準確率都有不同程度的下降。
表2所示為人眼開閉狀態檢測結果。實驗結果表明,本文采用的人眼定位方法和開閉狀態檢測算法能夠滿足不同場景下實際應用的需要。
4 結論
提出了一種基于圖像灰度特征的人眼定位與開閉狀態識別方法。利用AdaBoost算法訓練分類器,對待測視頻中的人眼區域進行粗定位,由于人眼周圍區域各部位在圖像中具有不同的灰度值大小與變化狀態,利用該特征排除了冗余極值點,得到了人眼區域的精確定位。最后對人眼條形圖像求取水平投影和豎直投影,通過計算寬高比確定人眼的開閉狀態。實驗結果表明,與傳統的直接使用AdaBoost算法檢測人眼相比,本文方法對于光照不均及眼鏡框、眉毛等干擾具有較強的魯棒性,在圖像中存在這類干擾時,本文算法的檢測精度有較大提高。在不同視頻檢測中,本文算法的人眼定位精度達到了84%,人眼開閉狀態檢測準確度達到了88%,能夠滿足疲勞檢測的精度要求。
參考文獻:
[1] Yang M H, Kriegman D J, Ahuja N. Detecting Faces in Images: A Survey[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2002, 24(1):34-58.
[2] Wu Y L, Yeh C T, Hung W C, et al. Gaze direction estimation using support vector machine with active appearance model[J]. Multimedia Tools & Applications, 2014, 70(3):2037-2062.
[3] Mbouna R O, Kong S G, Chun M G. Visual Analysis of Eye State and Head Pose for Driver Alertness Monitoring[J]. IEEE Transactions on Intelligent Transportation Systems, 2013, 14(3):1462-1469.
[4] Otsu N. A Threshold Selection Method from Gray-Level Histograms[J]. IEEE Transactions on Systems Man & Cybernetics, 2007, 9(1):62-66.
[5] G. R?tsch, T. Onoda, K.R. Müller. Soft Margins for AdaBoost[J]. Machine Learning, 2001, 42(3):287-320.
[6] Viola P, Jones M. Fast and Robust Classification using Asymmetric AdaBoost and a Detector Cascade[J]. Advances in Neural Information Processing Systems, 2001, 14:1311-1318.