毛須偉,景文博,王曉曼,劉學,張姍姍,張茂楨
(1.長春理工大學 電子信息工程學院,長春 130022;2.長春理工大學 光電工程學院,長春 130022)
?
一種基于眼部狀態(tài)的疲勞駕駛檢測方法
毛須偉1,景文博2,王曉曼1,劉學1,張姍姍1,張茂楨1
(1.長春理工大學電子信息工程學院,長春130022;2.長春理工大學光電工程學院,長春130022)
摘要:針對傳統(tǒng)的疲勞駕駛檢測準確率低和實時性差的問題,提出了一種基于眼部狀態(tài)的疲勞駕駛檢測方法。利用CCD相機實時獲取駕駛員的臉部圖像,采用直方圖均衡化增強圖像的對比度;通過改進的cascade(Hear分類器)的人臉檢測算法檢測出臉部區(qū)域;利用OTSU閾值分割和形態(tài)學運算提取人眼區(qū)域,根據人眼的寬高比判定眼睛的閉合程度;依據PERCLOS-P80原理和眨眼頻率判斷駕駛員的疲勞狀態(tài)。實驗結果表明:改進的人臉檢測算法對每幀圖像的檢測時間約為45ms,在人臉檢測速度上提高了2.3倍,為整個疲勞駕駛檢測節(jié)省了大量的時間。研究疲勞駕駛檢測方法檢測一幀圖像的時間約為65ms,而且在不同的光照強度下的檢測均有較高的準確率,滿足疲勞駕駛檢測對準確性和實時性的要求。
關鍵詞:疲勞駕駛;人臉檢測;人眼檢測;PERCLOS-P80
隨著世界經濟的快速發(fā)展,汽車的數量越來越多,由駕駛員疲勞駕駛造成的交通事故也越來越多,為了預防交通事故的發(fā)生,研究一種能有效檢測駕駛員疲勞并及時給出報警的方法有著重要的現實意義。
近年來,對于疲勞駕駛檢測技術國內外取得了大量的研究成果。主要方法分為以下幾類:彭軍強通過檢測駕駛員的腦電信號和肌電信號等生理特征判定駕駛員的疲勞狀態(tài)[1],但該方法需在駕駛員的身上安裝相應的設備,影響正常駕駛;Jin L S提出通過檢測方向盤的狀態(tài)來判定駕駛員的疲勞程度[2],但是該方法沒有確定的的判斷標準,易出現誤判或是漏判的情況;Lenskiy基于顏色和紋理特征實現了駕駛員眼部的準確定位和分割[3],但這種方法檢測速度慢,難以保證實時性;成波利用多重回歸對PERCLOS、平均睜眼程度以及最長閉合時間3個指標進行融合實現了對疲勞狀態(tài)的檢測[4],但該方法檢測的準確率低且實時性差。
針對上述方法存在的問題,提出一種基于眼部狀態(tài)的疲勞駕駛檢測方法。通過CCD相機實時獲取駕駛員的臉部圖像,對圖像進行直方圖均衡化預處理,增強圖像的對比度;該方法通過逐步縮小檢測區(qū)域進行疲勞檢測。首先,利用改進的cascade (Hear分類器)的人臉檢測算法檢測出臉部區(qū)域;然后在臉部區(qū)域的上半部分進行人眼檢測,并計算眼睛的寬高比,利用眼睛的寬高比衡量眼睛的閉合程度;最后依據PERCLOS原理和眨眼頻率進行疲勞判定。該方法能夠快速并準確地檢測出駕駛員是否處于疲勞狀態(tài),適用于對駕駛員疲勞程度的實時性檢測。
眼睛的閉合程度和眨眼頻率能直接反映一個人的疲勞程度,通過獲取駕駛員的眼部狀態(tài)判斷駕駛員是否疲勞駕駛。疲勞駕駛檢測系統(tǒng)由CCD相機、圖像處理單元和報警單元組成。如圖1所示,將CCD相機置于車內的儀表盤附近,實時監(jiān)測駕駛員的眼部狀態(tài),在圖像處理單元對圖像進行實時處理和檢測,如果檢測到駕駛員處于疲勞駕駛狀態(tài),則報警單元給予警示,避免因疲勞駕駛導致交通事故的發(fā)生。
圖1 疲勞駕駛檢測系統(tǒng)結構圖
2.1直方圖均衡化處理
由于受到光照等天氣狀況的影響,導致采集到的駕駛員的圖像對比度差,影響圖像的閾值分割效果,使得人臉檢測和人眼檢測不準確,為后續(xù)駕駛員的疲勞檢測帶來不便。因此,需要合理的圖像增強算法對駕駛員圖像進行預處理。
直方圖均衡化是圖像增強中比較常用方法,與其它方法相比,該方法簡單、執(zhí)行速度快并且能有效的增強圖像中目標與背景的對比度,采用直方圖均衡化對采集到的駕駛員圖像進行預處理。假定圖像中的總像素為N,灰度級總數為L個,第k個灰度級的值為rk,圖像中具有灰度級rk的像素數目為nk,則該圖像中灰度級rk的像素出現的概率為:
對其進行均衡化處理的變換函數為:
圖2所示為根據直方圖均衡化的原理對獲取的圖像進行預處理的結果。
圖2 直方圖均衡化
2.2人臉檢測
為了快速并精確的檢測人眼,首先需進行人臉檢測,采用基于cascade(Hear分類器)的人臉檢測算法[5],在圖像分辨率為768×576的情況下,檢測一幀圖像所用的時間為150ms,對人臉進行實時檢測的幀頻小于7幀/s,不能滿足檢測的實時性,同時影響后續(xù)的疲勞判斷的準確性,為了減少檢測過程中所花費的時間,對上述算法進行改進和優(yōu)化,以減少對檢測臉部的計算復雜度。
在cascade(Hear分類器)人臉檢測算法中,有兩個參數將極大地影響計算時間,一個是感興趣區(qū)域(表示為FACE_ROI),另一個是最小搜索窗口(表示為MIN_WND)。在進行第一幀檢測時,設置MIN_WND為一個較小的區(qū)域,使FACE_ROI覆蓋整個圖像,對人臉進行檢測并用矩形框標示出臉部區(qū)域。在正常駕駛的過程中,駕駛員的面部不會發(fā)生迅速的移動,實時獲取的圖像也不會發(fā)生急劇的變化,因此,在后續(xù)的人臉檢測過程中,可將上一幀檢測到臉部區(qū)域按照一定比例分別進行擴展和縮小,并將擴展后的臉部區(qū)域作為本次檢測的FACE_ROI,將縮小后的臉部區(qū)域作為本次檢測的MIN_WND,經過反復試驗得出:綜合考慮到檢測的精度和速度,通常將擴展倍率設置為5/4,縮小的倍率設置為4/5,如果沒有檢測到臉部,對FACE_ROI進行進一步的擴展,并對MIN_WND再次縮小直至臉部被檢測到或是區(qū)域擴展和縮小達到邊界為止。利用該方法對人臉進行檢測的流程如圖所示,經過試驗得到:該方法檢測一幀圖像所用時間為45ms,極大提高了臉部檢測速度。
圖3 人臉檢測流程
如圖4所示為使用改進后的算法在不同光照強度下的人臉檢測的結果,圖4中的(b)為在正常光照下的人臉檢測結果,(a)為在強光下的人臉檢測結果,(c)為在弱光下的檢測結果。
圖4 不同光照條件下的人臉檢測結果對比
2.3眼部特征提取
在進行人眼檢測過程中,可縮小檢測區(qū)域,在已檢測出的人臉區(qū)域的上半部分進行人眼檢測。首先采用最大類間方差(OTSU閾值法)對圖像進行分割,分離出頭發(fā)、眉毛和眼睛等特征區(qū)域。
設圖像的灰度值為0~m-1級,用T將其分成兩組C0={0~T-1}和C1={T~m-1},C0產生的概率為ω0,C1產生的概率為ω1,C0的像素平均值為μ0,C1的像素平均值為μ1。
全部采樣的灰度平均值為:
兩組間的方差用下式求出:
從1~m -1之間改變T,求上式為最大值時的T,即求max δ2(T)時的T?值,此時,T?便是閾值。
按照上述原理將人臉的上半部分進行OTSU閾值分割后,頭發(fā)、眉毛、眼睛等被分割出來,如圖5所示為分割效果。
圖5 圖像OTSU閾值分割
形態(tài)學中的開運算能去掉邊緣的毛刺突起,去除點和細線的干擾。因此對分割后的圖像做形態(tài)學開運算處理,使已分離的各部分特征更加清晰,處理后的圖像如圖6所示。
圖6 圖像的形態(tài)學運算處理
通過上圖可知:經過形態(tài)學運算處理后的人眼和眉毛等區(qū)域邊界更加平滑,皮膚紋理、眉毛等毛刺突起基本消除,人眼圖像的形態(tài)學處理更有利于人眼狀態(tài)的檢測。
2.4眼睛閉合程度判斷
眼睛的閉合程度主要是通過眼睛的高度[6]或寬高比來衡量的。但由于人眼的大小不盡相同,同時圖像的分辨率和像素大小等因素也會影響到眼睛高度的判定,因此通過人眼的高度判定駕駛員的疲勞狀態(tài)在嚴重干擾情況下誤差較大,存在一定的局限性。經過大量的實驗統(tǒng)計得知:當人眼完全睜開或閉合時眼睛的寬高比穩(wěn)定在較小的范圍,且不易受到其他客觀因素的影響。采用積分投影法計算人眼的寬度和高度,根據人眼的寬高比判定眼睛的閉合程度。
積分投影是自動定位特征時常用的一種技術。設G(x,y)表示圖像在(x,y)處的灰度值,在圖像[y1,y2]區(qū)域的水平積分投影表示為:
在圖像[x1,x2]區(qū)域的垂直積分投影表示為:
首先,對人臉上半部分的圖像作水平積分投影如圖7所示:
圖7 水平積分投影示意圖
由圖7可以看出:最下面的波谷對應眼睛在垂直方向上的位置(即縱坐標y),波谷的高度H即為眼睛的高度,上下兩個波谷之間的距離h為眉毛與眼睛之間的距離。為了避免水平積分投影時眉毛和頭發(fā)的影響[7],將區(qū)域進一步縮小,在人臉的上半部分區(qū)域取一個以y為中心,高度為h的條形區(qū)域,在該區(qū)域內作垂直積分投影,投影曲線如圖8所示。
圖8 垂直積分投影示意圖
如圖8所示,由垂直積分投影曲線可以得到人眼的寬度W,計算人眼寬高比就可以判定人眼的閉合程度,人眼的閉合程度(The Closure Of Eye)可表示為:
由于不同駕駛員的眼睛形狀存在差異,在不同光照、天氣等情況下眼睛的狀態(tài)也不盡相同,直接采用TCOE判斷駕駛員的疲勞程度會增加判定的虛警率。假設駕駛員初始狀態(tài)是清醒的,此時眼睛的閉合程度為TCOEinit,將TCOE進行修正:
根據修正后TCOE的閾值判定眼睛的閉合程度,有效的減少了眼睛形狀和外界條件的影響,提高了判定的準確率。若人眼閉合80%時的TCOE的閾值用ThreshP80表示,則人眼的閉合狀態(tài)可根據下式判斷:
通過對大量人眼圖像的訓練統(tǒng)計得知:當人眼的閉合程度大于80%時,修正后TCOE的值大于4,故可將ThreshP80設定為4。
2.5眨眼頻率
眨眼頻率是指單位時間內眨眼的次數。眨眼頻率能在一定程度上反映駕駛員疲勞程度。如果上一幀圖像人眼的TCOE≤ThreshP80,而當前幀圖像人眼的TCOE≤ThreshP80,即視為一次眨眼過程;或者上一幀圖像人眼的TCOE≤ThreshP80,而當前幀圖像人眼的TCOE≤ThreshP80,同樣也視為一次眨眼過程。
由于正常人每分鐘的眨眼次數在15~30次/分鐘,如果眨眼頻率小于15次/分鐘,則有可能是駕駛員在一段時間內處于閉眼狀態(tài),或者是在發(fā)呆、走神等等,也是疲勞的征兆;如果眨眼頻率大于30次/分鐘,則有可能是人眼在受到強光或風吹的影響時,會出現快速眨眼的應激反應,不能判定為疲勞狀態(tài)。如圖9所示為眨眼頻率比值與疲勞關系。
圖9 眨眼頻率比值與疲勞關系
PERCLOS(percentage of eyelid closure)為眼睛閉合程度超過某一閾值的時間占總時間的百分比。PERCLOS方法是當前主流的駕駛員疲勞狀態(tài)判斷方法[8,9]。PERCLOS原理中的P80標準認為眼睛閉合超過80%則認為眼睛處于閉合狀態(tài)。PERCLOS-P80的測量原理[10]如圖10所示,圖11為眼睛睜開程度示意圖。
圖10 PERCLOS測量原理
圖11 眼睛睜開程度示意圖
如圖10所示,縱軸表示的是眼睛閉合的程度,橫軸表示時間,t1是眼睛從完全睜開到20%閉合所用時間,t2是眼睛從完全睜開到80%閉合所用時間,t3是眼睛從完全睜開到下一次80%閉合所用時間,t4是眼睛從完全睜開到下一次20%閉合所用時間。計算眼睛閉合時間所占百分比,即PERCLOS的值f:
若在某段時間采集的圖像幀數為N,其中眼睛閉合程度大于80%的幀數為K,則PERCLOS值f為:
依據PERCLOS-P80標準判別駕駛員的疲勞狀態(tài),通過大量實驗得出:當駕駛員處于清醒狀態(tài)時,f值絕大多數大于0.18;當駕駛員處于疲勞狀態(tài)時,f值絕大多數小于0.18,因此可將f=0.18定義為疲勞判定的閾值。人眼在受到強光或風吹的影響時,會出現快速眨眼的應激反應。在這個過程中,f值很可能超過閾值,但這種異常情況并不是由駕駛員疲勞導致的,此時系統(tǒng)會出現誤判的情況,針對這種情況,引入眨眼頻率輔助PERCLOS-P80標準進行疲勞程度判斷。
為了避免因人眼的應激反應導致的誤判,可首先計算眼睛的PERCLOS值,如果由PERCLOS值判定駕駛員處于疲勞狀態(tài),此時對眨眼頻率進行判定,若頻率大于30次/分鐘,則判定該情況為應激反應而非疲勞狀態(tài);若頻率小于30次/分鐘則判定為疲勞狀態(tài)。
在眼睛定位出現錯誤或跟蹤眼睛丟失時或攝像頭獲取圖像失敗,都會影響到對眼睛閉合程度和眨眼頻率的判定,最終導致對疲勞程度的判定出現偏差,由公式(11)可推導出判定誤差為:
其中ΔN為獲取圖像失敗造成的幀丟失數,ΔK為眼睛定位出現錯誤或跟蹤眼睛丟失造成的眼睛檢測遺漏或錯誤的幀數。由公式(12)可知,為了減小疲勞判定誤差,提高檢測的準確率,應選取性能好、幀頻高的相機;進行疲勞判定時應采集盡可能多的人臉圖像,并且提高眼部定位和疲勞判定算法的準確性。
基于PERCLOSE-P80標準和眨眼頻率的疲勞判斷流程如圖12所示。
圖12 疲勞判斷流程
設計實驗模擬駕駛員開車的狀態(tài),利用Mikrotron公司的EosensCL型相機獲取人臉視頻圖像并進行疲勞程度的判斷,使用的相機分辨率為1280×1024,幀頻為500fps,該型號的相機具有圖像分辨率高、幀頻高的特點,采用該類型的相機采集人臉圖像減少了丟幀的可能性,提高了疲勞檢測的準確率。為了減少疲勞判定過程中幀丟失帶來的誤差,依據公式(12)以及其理論分析,并綜合考慮實驗設計的復雜度,實驗過程中采集400幀圖像進行統(tǒng)計分析,分別在強光、正常光照和弱光條件下進行實驗,并對每組圖像進行檢測統(tǒng)計。
表1 不同光照條件下人臉檢測準確率
對獲取的圖像進行人臉檢測,實驗中對采用基于cascade(Hear分類器)的人臉檢測算法和改進算法的人臉檢測精度和速度進行對比,表1為兩種算法在不同光照強度下人臉檢測成功率的對比。
由表1可知:兩種算法在不同光照情況下的檢測成功率基本一致,兩者均有較高的檢測準確率。
如圖13所示為兩種人臉檢測算法在不同光照強度下的檢測時間對比。
圖13 兩種算法的檢測時間對比
由圖13可得出:采用傳統(tǒng)的基于cascade(Hear分類器)的人臉檢測算法檢測一幀圖像所需的平均時間約為150ms,而改進的人臉檢測算法的平均檢測時間約為45ms,相比之下,改進的算法檢測速度提高了2.3倍,為疲勞駕駛檢測節(jié)省了大量的時間。
成功檢測到人臉以后,對人眼進行檢測并判定出眼睛的閉合程度和眨眼頻率,如表2所示為在不同光照強度下利用本文算法對眼睛的閉合程度和眨眼頻率判定的準確率。
表2 不同光照條件下人眼檢測準確率
從表2可以看出:在不同的光照條件下,該算法對人眼的閉合程度以及眨眼頻率的判定均有較高的準確率。確保了后續(xù)對駕駛員疲勞程度判斷的準確性。
如圖14所示為在不同光照強度下對人眼的閉合程度和眨眼頻率的判定所用時間的對比。
圖14 不同光照條件下對人眼的閉合程度和眨眼頻率判定時間對比
由圖14可知:在不同光照強度下對人眼的閉合程度和眨眼頻率的判定所用時間平均值約20ms,能夠在較短的時間內完成對人眼的檢測及判定,為系統(tǒng)實時檢測駕駛員的疲勞狀態(tài)提供了可靠的保證。
綜合以上的實驗數據可知:本文提出的疲勞駕駛檢測方法對每幀圖像的檢測時間約為65ms,而且在不同的光照條件下檢測均有較高的準確率,滿足疲勞駕駛檢測對實時性和準確性的要求。
本文通過對基于cascade(Hear分類器)的人臉檢測算法進行改進和優(yōu)化,使得人臉檢測速度提高了2.3倍,采用PERCLOSE-P80原理并結合眨眼頻率對駕駛員的疲勞程度作出判斷,依據這種判定方式避免了因駕駛員的應激反應導致的誤判現象,提高了疲勞駕駛檢測的準確率。通過大量的實驗表明:在圖像分辨率為1280×1024的情況下,本文提出的疲勞駕駛檢測算法對每幀圖像的平均檢測時間約為65ms,且在不同的光照條件下檢測均有較高的準確率。該方法操作簡單易于實現,可用于對駕駛員疲勞程度的實時監(jiān)測。
參考文獻
[1]彭軍強,吳平東,殷罡.疲勞駕駛的腦電特性探索[J].北京理工大學報,2007,27(7):585-589.
[2]Jin L S,Niu Q N,Hou H J,et al. Driver cognitive distraction detection using driving performance measures[J].Discrete Dynamics in Nature and Society,2012,30(10):1555-1565.
[3]Lenskiy A A,Lee J S. Driver’s eye blinking detection using novel color and texture segmentation algorithms[J].International Journal of Control Automation and Systems,2012,10(2):317-327.
[4]成波,張廣淵,馮睿嘉,等.基于眼睛狀態(tài)識別的駕駛員疲勞實時檢測[J].汽車工程,2008,30(11):1001-1005.
[5]Paul Viola,Michael J Jones. Rapid object detection using a boosted cascade of simple features[A]. In:Proceeding of IEEE International Conference on Computer Vision and Pattern Recognition Hawaii:IEEE,2001:511-518.
[6]蔣建國,劉揚,詹曙,等.灰度視頻序列中駕駛員疲勞實時檢測方法[J].合肥工業(yè)大學學報:自然科學版,2008,31(9):1424-1427,1442.
[7]章玲,蔣建國,齊美彬.一種微分與積分投影相結合的眼睛定位方法[J].合肥工業(yè)大學學報:自然科學版,2006,29(2):182-185.
[8]董占勛,孫守遷,吳群,等.心率變異性與駕駛疲勞相關性研究[J].浙江大學學報:工學版,2010,44(1):46-50.
[9]郁偉煒,吳卿.基于HMM的駕駛員疲勞識別在智能汽車空間的應用[J].計算機應用于軟件,2011,28(10):43-46.
[10]宋正河,周一鳴.基于PERCLOS的機動車駕駛員駕駛疲勞的識別算法[J].中國農業(yè)大學學報,2002,7(2):104-109.
A Fatigue Driving Detection Method Based on Eye State
MAO Xuwei1,JING Wenbo2,WANG Xiaoman1,LIU Xue1,ZHANG Shanshan1,ZHANG Maozhen1
(1. School of Electronics and Information Engineering,Changchun University of Science and Technology,Changchun 130022;2. School of Optoelectronic Engineering,Changchun University of Science and Technology,Changchun 130022)
Abstract:According to the problem of low accuracy and poor real-time with traditional fatigue driving detection method,a fatigue driving detection method based on eye state was proposed. Using the CCD camera to capture face image of driver in real time,using histogram equalization to enhance image contrast;The face area was detected by improved face detection method based on cascade;Extracting the eye area with OTSU threshold and morphology operation,The eye closure degree is determined by the aspect ratio of eye;Using PERCLOS-P80 and blink frequency to judge whether Driver is fatigue. Experimental results show that Detecting a frame needs about 45ms with Improved face detection algorithm,The face detection speed increased by 2.3 times,to save a lot of time for the entire fatigue driving detection. The fatigue driving detection method in this paper needs about 65ms per frame,and it has high accuracy at different light intensities,which meets the requirements of the precision and real-time for the fatigue driving detection.
Key words:fatigue driving;face detection;eye detection;PERCLOSE-P80
中圖分類號:TP391.41
文獻標識碼:A
文章編號:1672-9870(2016)02-0125-06
收稿日期:2015-06-15
作者簡介:毛須偉(1991-),男,碩士研究生,E-mail:1291056753@qq.com
通訊作者:景文博(1980-),男,博士,副教授,E-mail:wenbojing@sina.com