隋 博,趙永勝
(河南省電力通信自動化公司,河南 鄭州 450052)
駕駛員疲勞狀態實時檢測及預警技術能夠在駕駛員的疲勞駕駛行為發生之初,檢測到危險狀況,隨即發出報警信息,要求駕駛員采取措施避免進入疲勞狀態,從而有效地保障駕駛員的行車安全。
早期的駕駛疲勞測評主要是從醫學角度出發,借助醫療器械進行的。隨著科學的進步,疲勞駕駛測量方法也有了很大的發展,其中具有代表性的有基于駕駛人生理信號的方法、基于駕駛人生理反應特征的方法、基于駕駛人操作行為的方法和基于車輛狀態信息的檢測方法。各種疲勞檢測方法的對比見表1。

表1 疲勞檢測技術對比表
基于駕駛人生理信號的檢測方法對于疲勞判斷,在所有檢測方法中是最可靠的。但生理信號需要采用接觸式測量,且對個人依賴程度較大。因此該方法主要應用在實驗階段,作為實驗的對照參數,實用性不高。準確性對于基于操作行為的檢測是關鍵問題。同樣的問題也會出現在基于行駛軌跡的檢測中,目前還沒有統一的標準來認定如何通過車輛的速度和偏移度來判斷駕駛員的疲勞。
相比其他檢測方法,基于駕駛員生理反應特征的檢測方法具有非接觸式測量的優點。對于疲勞狀態的識別有國際上認可的疲勞檢測模型PERCLOS作為標準,具有精度高和實用性好的優勢。視覺疲勞檢測技術是基于駕駛員生理反應特征檢測方法的代表,也是目前該領域內研究的重點方向。
視覺疲勞檢測技術實際上是用基于駕駛員生理特征的方法來進行疲勞檢測。通常通過簡單的觀察駕駛員面部特征(如眼睛,頭部,臉部)的變化來評價是否疲勞。其中最典型的困倦特征表現在眼睛。例如,長時間的眨眼,緩慢的眼瞼活動,眼睛睜開程度變小或閉合,無變化的視線等。計算機視覺是基于生理特征檢測方案的最佳技術選擇。
基于視覺的駕駛員疲勞檢測算法流程如圖1所示。首先是視頻圖像采集過程,視頻圖像信息的清晰程度和飽和度等因素,會直接影響到檢測算法的準確性。圖像預處理過程是系統流程的第二步,通過若干圖像算法處理原始圖像是為了給人臉檢測提供符合要求的標準格式圖像。人臉檢測是系統中的關鍵步驟。人臉檢測算法的選擇要從算法精度、實用性、實時性、可移植性等方面綜合考慮。人眼跟蹤的方法比較多,可以根據人臉的位置,通過“三庭五眼”的原則大致定位,也可以用單獨的人眼定位算法選擇人眼區域。最后,經過特征提取和PER?CLOS計算,結束循環檢測的一次流程。

人臉檢測是基于視覺的疲勞駕駛檢測算法中的關鍵步驟。人臉檢測是指在輸入圖像中確定人臉(如果存在)的位置、大小和姿態的過程(即設置感興趣區域),見圖2。

人臉屬于非剛性物體,其檢測方法的關鍵和困難就在于如何建立起合適的數學模型來描述人臉目標模式的多樣性,人臉檢測的基本思想一般采用以下步驟:先對人臉進行建模,然后比較所有可能的待檢測區域與人臉模型的匹配度,從而得到可能存在的人臉區域。大體上可以把目前的人臉檢測方法分為四類:基于知識的檢測方法,特征不變的檢測方法,模板匹配的檢測方法,基于外觀的檢測方法。各種人臉檢測算法都有自己的優勢和缺陷。然而真正影響人臉檢測算法在實際中應用的重要因素,歸根結底還是算法的準確性和實時性無法匹配的問題。很多學者在此方向上作了大量研究,AdaBoost算法的提出使得人臉檢測走向實用。
AdaBoost算法是基于特征的檢測方法,通過尋找那些即使當姿勢、視角和光線條件變化時仍然存在的結構特征,并利用這些特征來定位人臉。該算法將矩形作為人臉檢測的特征向量(特征矩陣)。在給定有限的數據情況下,基于特征的檢測能夠編碼特定區域的狀態,而且基于特征的系統比基于像素的系統要快得多。如圖3所示,將特征矩陣組合形成特征模板,就能描述人面部一些區域線性或者邊緣特征。如圖4所示,編號(1)~(5)分別代表5類不同的矩陣模板。(1)和(2)可以反映圖像的邊緣特征,(3)和(4)反映圖像的線性特征,(5)主要用來反映圖像在特定方向上的特征。例如圖3中的人臉圖像,人眼要比臉頰顏色更深這一特征正是使用模板(2)來描述。


AdaBoost算法首先利用特征矩陣提取人面部特征,如眉毛、眼睛、鼻子、嘴和發際。然后根據提取的特征,建立統計模型描述特征之間的關系并確定存在的人臉。相比于其他人臉檢測算法,AdaBoost算法具有精度高、速度快的優勢。
3.2.1 圖像和色彩空間
在一個典型的多媒體計算機系統中,常常涉及到用幾種不同的色彩空間表示圖形和圖像的顏色,以適合不同場合的應用。因此,數字圖像的生成、存儲、處理及顯示時對應不同的色彩空間需要作不同的處理和轉換。RGB色彩空間是使用最多的色彩空間,它采用R(紅)、G(綠)、B(藍)三種顏色的相加來產生其他顏色。YUV色彩空間被歐洲的電視系統所采用(屬于SECAM和PAL系統),其中Y是指亮度,U和V是指色度。GRB與YUV之間的對應關系如下

除上述色彩空間外,YCbCr色彩空間也是一種常見的色彩空間,JPEG采用的正是該色彩空間。它是從YUV色彩空間衍生出來的,其中對Y和V進行少量調整而得到的。另外,還有CMY和YIQ等色彩空間,它們都適用于不同的領域和應用。
3.2.2 圖像平滑處理
圖像生成和傳輸過程中經常收到各種噪聲的干擾和影響,噪聲使圖像質量下降。為了達到系統的處理要求,就要抑制噪聲,改善圖像質量,也就是對圖像進行平滑和去噪聲的處理。
3.2.3 灰度變換
只含有亮度信息,不含有色彩信息的圖像是灰度圖像。通常將灰度級別劃分成0~255,0表示最暗(全黑),255表示最亮(全白),中間值表示灰色。灰度變換的目的一般是為了改善圖像顯示畫質,使圖像更加清晰。灰度變換又被稱為圖像的對比度增強變換或對比度拉伸變換。
3.2.4 二值運算
圖像的二值處理,只能針對灰度圖像。它是將灰度圖像上的點的灰度置為0或255,也就是將整個圖像呈現出明顯的黑白效果。即將256個亮度等級的灰度圖像通過適當的閾值選取而獲得仍然可以反映圖像整體和局部特征的二值圖像。二值運算的目的是為了使目標物體和背景分開。
PERCLOS是指在單位時間里眼睛閉合時間所占的百分比率。PERCLOS被認為是目前最具有前景的疲勞檢測模型。
圖5是PERCLOS的數學模型示意圖,若用f代表眼睛閉合時間的百分率,則有


定義眼睛瞳孔開度大于20%是睜開,而瞳孔開度等于20%或者更小為閉合。公式中,t1代表眼睛(由眼皮遮蓋瞳孔的大小來決定)最大閉合到80%所用的時間;t2代表眼睛閉合80%到閉合20%所用的時間;t3代表眼睛閉合20%到睜開20%所用的時間;t4代表眼睛睜開20%到睜開80%所用的時間。f值越大,則說明駕駛員的疲勞程度越高。
為了給人眼狀態判斷的算法提供更好品質的輸入圖像,需要對原始圖像進行灰度化處理。預處理的另一個重要步驟是直方圖均衡化。由于攝像頭采集圖像容易受駕駛環境、曝光不足或過度、設備的非線性等因素的影響,都會出現對比度不足,圖像細節分辨不清的問題。另外,自然圖像由于其灰度通常分布在較窄的區間,也會引起圖像細節不清楚。而直方圖歸一化的目的就是把灰度圖像增強亮度對比使得特征突出,同時減少亮度不平均而造成的干擾。在可靠性疲勞檢測算法中,直方圖均衡化處理有很重要的意義。一般駕駛員面靠近車窗的半邊人臉易受到光照影響,亮度會明顯大于背光半邊人臉。如果不進行輸入圖像直方化處理,會影響最終檢測結果。也可進行多次迭代處理,以達到圖像亮度均衡的要求。
利用AdaBoost算法使用人臉分類器對圖像進行模式識別,對圖像中的人臉區域進行標定。人臉檢測功能能夠給人眼的定位提供基礎圖像,同時還能夠驗證人眼區域的正確位置。最重要的是,確定人臉位置后,在人臉圖像上定位人眼區域可以大大節省直接在整幅圖像上尋找人眼的開銷,減少了算法的執行時間,提高了算法的效率。人眼檢測使用與人臉檢測相同的分類算法。不同的地方在于,人臉檢測的搜索區域是整幅圖像,而人眼檢測搜索的區域只在人臉區域。如果人臉定位失敗,則無須進行人眼檢測,直接轉到下一幀圖像的處理。
圖像算法最終任務需要提供能夠用于PERCLOS算法的人眼閉合程度(百分比)。在完成了人眼的精確定位后,剩下的工作就是該特征參數的提取。得到人眼閉合參數信息并不困難,可以通過觀察人眼中虹膜(深色區域)特征的變化來進行判斷。
如圖6所示,精確的人眼區域圖像需要經過高斯去噪、二值變換、圖像求反等步驟,才能得到最終的目標圖像。從目標圖像可以看出,人眼的角膜已經被清楚地從背景圖像中分離出來。在各種圖像處理算法中,高斯去噪是為了消除圖像存在的噪聲和干擾,平滑輪廓。例如,人眼虹膜中心會一般存在一塊白色的反光區域,這塊區域通過平滑處理可以減小甚至消除,如果不進行此類處理,得到的圖像效果會使最后的計算產生誤差。二值變換和圖像求反是為了將人眼虹膜從背景圖像中分離,從而為計算人眼開合程度所做的最后準備。通過以上幾個關鍵步驟,就可以將駕駛員眼部狀態信息清晰地反應出來。

通過二值化的目標圖像計算人眼開閉信息的方法有很多。最簡單的就是直接計算目標圖像中白色區域的面積,將該區域的面積視為虹膜的面積。但是這種方法的缺點是誤差比較大,因為在人眼閉合時,上下眼瞼陰影產生的面積并不是虹膜的面積,會影響計算結果。本算法使用求圖像投影最大像素和的方法,在一定程度上減小了誤差的產生。如圖7所示,在目標圖像投影后的最大投影值與人眼開閉程度之間建立一個簡單的映射關系,利用這種對應關系將投影值轉化成為人眼閉合程度的百分數表示,最后結合PERCLOS模型完成駕駛員疲勞判斷。

白天和黑夜的交替會使得駕駛員所處的環境光線亮度變化劇烈。使用確定閾值的二值算法無法滿足檢測需求,這是因為光線的變化會改變圖像整體像素的灰度值。同樣的閾值在白天和在夜間分離出來的人眼區域會不同,而且差異很大。所以,必須選擇合適的自適應閾值的二值算法,減少由于光線變化造成的影響,才能保證人眼目標提取出來的區域統一。
本算法采用Otsu算法作為圖像分割的方法,在完成人眼局部圖像定位后,通過該算法進行人眼的虹膜目標提取。分割效果如圖8所示。

由圖8可以看出,用Otsu法得出的閾值直接用于圖像二值化,對圖像的分割效果達不到區分眼睛開合的要求。所以嘗試用Otsu得到一個閾值T1的情況下,再加入一個調整值T2,令T=T1+T2,然后實驗測試分割效果。經過大量實驗后發現,T2取45時(最大灰度為255的圖像),能得到突出虹膜的二值圖,并且區分人眼的開閉效果明顯,如圖9所示。

通過對比可以看出,加上調整閾值的Otsu算法得到的圖像眼睛虹膜的輪廓比較分明,更適合作為中間圖像。根據此方法得到的目標圖像再經過灰度投影算法的處理,完全可以滿足判斷上下眼瞼距離的要求。
疲勞駕駛是導致交通事故頻發的主要因素之一,實時準確的駕駛員疲勞預警技術能改善交通安全狀況,具有長遠的社會意義。本文主要研究了各種圖像處理技術在基于視覺的疲勞檢測中的綜合應用。設計了利用PERCLOS模型進行疲勞駕駛行為判斷算法流程,還針對復雜背景、不同光照強度等特殊情況,提出加入調整參數的自適應閾值算法。通過實驗驗證,本方案具有精度高、可靠性和實時性好的特點,能夠滿足疲勞駕駛檢測要求。
[1]VOOLA P.Rapid object detection using a boost cascade of simple features[C]//Proc.IEEE Conference on Computer Vision and Pattern Recognition.[S.l.]:IEEE Press,2001:511-518.
[2]CHEN Chiyuan.Driver fatigue detection based on eye tracking and dynamic template matching[C]//Proc.IEEE International Conference on Networking.[S.l.]:IEEE Press,2004:7-12
[3]夏芹,宋義偉.基于PERCLOS的駕駛疲勞監控方法進展[J].模式識別與仿真,2008,27(6):43-46.
[4]王磊.駕駛疲勞檢測方法的研究進展[J].自動化與信息工程,2007,24(1):245-248.
[5]高曉晶,于鴻洋.在司機疲勞監控中的人眼狀態檢測方法研究[J].電視技術,2009,33(S2):212-213.
[6]江水郎,楊明.面向駕駛員疲勞檢測的雙空間人眼定位辦法[J].計算機工程,2008,34(24):180-182.