劉東華 劉慶華 李 楊 黃凱楓
(江蘇科技大學(xué) 鎮(zhèn)江 212003)
統(tǒng)計顯示,全世界每年發(fā)生的交通事故導(dǎo)致的后果,不僅造成人員重大傷亡,還直接帶來了巨額經(jīng)濟(jì)損失,將導(dǎo)致事故發(fā)生的因素歸類發(fā)現(xiàn),在這些交通事故中約有57%的事故率跟疲勞駕駛有直接的關(guān)系[1]。疲勞對于我們來說,雖是一個尋常的機(jī)體表現(xiàn),但對駕駛員這一類特殊人群來說,疲勞駕駛極易引起交通事故。同樣,對國內(nèi)近幾年的交通事故頻發(fā)的原因進(jìn)行分類發(fā)現(xiàn),疲勞駕駛也是這些原因中的主要分類之一。
駕駛員在長時間駕駛過程中會產(chǎn)生的一種機(jī)體生理疲勞現(xiàn)象,但駕駛員在剛出現(xiàn)駕駛疲勞時并不會直接引發(fā)交通事故,因此若能設(shè)計一種對駕駛員在駕駛過程中實時對其進(jìn)行疲勞檢測的方法,當(dāng)檢測到駕駛員疲勞時立即就能給出預(yù)警,提醒駕駛員應(yīng)停車休息或迫使車輛減速,甚至強(qiáng)制車輛靠邊停車,這樣就能有效提升車輛行駛安全系數(shù)。調(diào)查發(fā)現(xiàn),在這些疲勞駕駛導(dǎo)致的交通事故中,如果駕駛員的機(jī)體應(yīng)對能及時對其操作,一半以上的交通事故就能有效避免[2]。駕駛員在無法得到充足睡眠或長時間駕駛過程中,集中注意力目視前方、以及對方向盤的重復(fù)操作,極易產(chǎn)生疲勞。而研究發(fā)現(xiàn),用PERCLOS進(jìn)行疲勞判定,是目前最好的方法之一,測定時產(chǎn)生的數(shù)據(jù)也真正能夠用來判定疲勞,總體來說是對檢測駕駛員是否出現(xiàn)疲勞測定的最好方法[3]。
PERCLOS(Percentage of Eyelid Closure Over the Pupil Over Time)的含義是指在單位時間內(nèi)眼睛閉合狀態(tài)下所占用的時間百分比[4]。
結(jié)合圖1 可以較為容易地理解其測量原理。根據(jù)下面的計算公式,通過測量t1~t4 的值來計算PERCLOS的值。
圖1 PERCLOS的測量原理
其中f 為計算后求得的PERCLOS 值,t1~t4 代表的含義如測量原理圖所示,表示時間區(qū)間內(nèi)眼睛開閉程度。
在具體實驗中PERCLOS 有三種度量標(biāo)準(zhǔn),即為P70、P80、EM,分別代表眼睛在不同閉合程度下所占用的時間百分比。其中P80 指的是在測試過程中,檢測對象的眼睛閉合面積超過80%所占用的時間百分比。大量研究表明,在三種度量標(biāo)準(zhǔn)中對疲勞駕駛的檢測準(zhǔn)確率最高的是P80[5]標(biāo)準(zhǔn)。
因此本文采用此標(biāo)準(zhǔn)進(jìn)行疲勞判定,計算公式為[6]
用此方法追蹤眼睛狀態(tài)時,由攝像頭對駕駛員的頭部區(qū)域進(jìn)行捕獲,對采集過程中可能出現(xiàn)的過暗圖像加上光照補償,采取YCbCr對膚色進(jìn)行分割來確定人臉區(qū)域,對眼部輪廓進(jìn)行提取,運用圖像處理來判斷眼睛的開閉狀態(tài)。定義檢測過程中人物眼睛睜開程度只要滿足大于20%這個條件,就記為睜開狀態(tài),反之為閉合。
算法的關(guān)鍵部分是眼睛定位與求取眼睛睜開、閉合時對應(yīng)面積的值,根據(jù)PERCLOS 計算得出PERCLOS的數(shù)值,從而對其進(jìn)行疲勞判定。
圖2 算法流程圖
在采集圖像的過程中,容易受到不同光照因素的影響,可能會無法準(zhǔn)確捕獲人臉,為了更好地解決這種問題,消除亮度因素造成的影響,提高人臉識別的準(zhǔn)確率,在進(jìn)行人臉定位前進(jìn)行必要的光照補償。
YCbCr色彩空間具有不僅聚類特性好,而且能加好的分離亮度信息,最主要的是計算復(fù)雜度低等特點[7],而人類皮膚的顏色范圍又恰巧于色度空間中,更是集中在一個小的區(qū)域,因此可以很好被運用于人物的膚色檢測。本文選取YCbCr 對人物圖像進(jìn)行膚色檢測,待檢圖像中是否存在皮膚,主要是根據(jù)圖像的像素值來進(jìn)行判斷,過程如下。
1)通常攝像頭采集到的圖像由RGB 模型表示,而這種圖像亮度信息恰恰對光照變化較敏感,所以,先將RGB空間轉(zhuǎn)換到Y(jié)CbCr空間,公式如下[8]:
2)膚色判定采用膚色橢圓模型,橢圓模型描述公式如下[9~10]:
根據(jù)上述公式,只要圖像的像素點能落在上述給出的設(shè)定膚色橢圓模型區(qū)域內(nèi),則判定該點為人物膚色像素點。因此,可將人臉圖像分割為兩部分區(qū)域,即為非膚色和膚色,將后者區(qū)域賦值為0。分割后結(jié)果如圖3(b)所示。
圖3 膚色分割結(jié)果
膚色分割之后的圖像中存在一些“毛刺”,即噪聲干擾,為了去除這些不必要的“毛刺”可利用形態(tài)學(xué)對其進(jìn)行處理。基于形態(tài)學(xué)圖像處理具有可以對圖像數(shù)據(jù)進(jìn)行一定的簡化作用,簡化之后也不會改變它們基本的形狀特性,并能去除圖像中一些不相干的結(jié)構(gòu)等優(yōu)點[11]。形態(tài)學(xué)圖像處理中的開操作對圖像進(jìn)行處理之后,首先可以將分割之后的圖像中存在的一些細(xì)小的突出結(jié)構(gòu)消除掉,并且可以優(yōu)化圖像的輪廓,使其變得光滑,進(jìn)一步斷開圖像中存在的一些狹窄的間斷。所以,這里采用開操作對有噪聲的圖像進(jìn)行操作。開操作之后的圖像如圖3(c)所示。
經(jīng)過膚色分割之后,圖片中區(qū)域明顯的特征點有眉毛、眼睛等,根據(jù)這些特征點很容易確定圖像中哪部分為人臉區(qū)域,最常見的方法就是進(jìn)行模式匹配[12~15],又稱為局部匹配,但此類方法忽視了臉部主要部位間的結(jié)構(gòu)特征的相對位置。本文為了避免鼻子和嘴巴對眼睛定位產(chǎn)生影響,可根據(jù)“三庭五眼”的臉部結(jié)構(gòu)對圖像進(jìn)行劃分?!叭ァ奔慈四槾怪狈较蚓譃樯贤?、中庭、下庭[16],取圖像的中庭部分作為眼睛定位區(qū)域。
人的眼部區(qū)域處的灰度特征與其他部位的灰度特征存在一定的差異,從而可以方便獲取眼睛的大致區(qū)域,選用積分投影法能較好地獲取該目標(biāo)區(qū)域。先對圖像進(jìn)行二值化處理,再對圖像進(jìn)行積分投影操作[17]。設(shè)圖像(x,y)處的像素灰度值為P(x,y),取兩個操作區(qū)間設(shè)為[x1,x2] 和[y1,y2],在這兩個區(qū)間內(nèi)分別用公式Sv(x)和Sh(y)來表示垂直、水平這兩個積分投影函數(shù)[18],則
用Mv(x)和Mh(y)分別表示兩者的平均函數(shù),則:
根據(jù)上述公式,只要圖像中的某一點的像素灰度均值出現(xiàn)變化時,這種變化也會導(dǎo)致對應(yīng)的函數(shù)值跟隨均值的變化而發(fā)生變化。所以通過閾值的選擇和水平、垂直積分投影的計算,可以有效、快速地確定人眼。運用程序?qū)Λ@取到的中庭部分的圖像進(jìn)行二值化處理,處理后的結(jié)果如圖4(a)。對經(jīng)過二值化處理之后的圖像分別進(jìn)行兩種積分投影操作,操作之后的結(jié)果為如圖4(b)和圖4(c)。
圖4 積分投影結(jié)果圖
定義確定眼睛的面積為圖像中眼睛區(qū)域內(nèi)的像素點的數(shù)目[3]。普遍情況下,目標(biāo)區(qū)域的寬高比值應(yīng)介于1~1.6的,即為人眼區(qū)域。另外,在檢測的人物圖像中,人眼區(qū)域的面積應(yīng)大于10,面積具體指的是膚色分割之后,目標(biāo)膚色區(qū)域中定義下的取值設(shè)為0 的像素點的數(shù)目,此外眼睛部位的區(qū)域面積與整幅圖像總面積之應(yīng)大于0.001,因此可能的眼睛目標(biāo)篩選區(qū)域應(yīng)滿足如下條件:
其中S0為準(zhǔn)備篩選的目標(biāo)區(qū)域中的每塊區(qū)域的面積,H 和W 則分別為對應(yīng)的每塊區(qū)域的高和寬,H 指的是上下臨界點值之差,W 指的是左右臨界點值之差,S1為檢測圖像的總面積。首先去除不滿足上述條件的區(qū)域,去除之后有可能出現(xiàn)目標(biāo)區(qū)域仍然不是唯一,說明還有其他因素干擾,如眉毛。進(jìn)一步對區(qū)域劃分,從上下左右四個方位再次對目標(biāo)區(qū)域進(jìn)行檢索,目的除去眉毛帶來的干擾,最終可以得到眼睛部位的特征圖如圖5。
圖5 眼部特征圖
測試過程中,當(dāng)人物眼睛處于完全睜開狀態(tài)時,此刻眼睛目標(biāo)區(qū)域中白色像素點數(shù)最多,面積也為最大值,設(shè)為Amax。反之,閉合時面積為最小值。測試過程中規(guī)定眼睛目標(biāo)區(qū)域的面積若大于Amax/5 時,記為睜開狀態(tài),否則為閉合狀態(tài)。記錄眼睛眨眼的次數(shù)及測試的開始與結(jié)束時刻,先根據(jù)測試流程來實時計算PERCLOS 值,當(dāng)求出的值大于0.4,并用設(shè)定好的時間閾值比對眼睛閉合狀態(tài)下的計時,如果計時超過設(shè)定的閾值3s 時,就判定駕駛員現(xiàn)已處于疲勞駕駛,對其立即發(fā)出警報。
此方法下設(shè)計的系統(tǒng)其運行環(huán)境搭建為,操作系統(tǒng)選擇Windows 7,安裝的運行軟件選擇Visual Studio 2015,函數(shù)庫為開源的OpenCV 3.4,視頻圖像采集設(shè)備為樂視LeTMC-520。
囿于場地和設(shè)施短缺,實驗采取本地實驗室進(jìn)行測試,測試對象為實驗的三名同學(xué),測試過程分為正視攝像頭、頭部傾斜、左右輕微搖晃三種情況,對測試對象在每種情況下進(jìn)行50 次的模擬測試。啟動系統(tǒng),打開攝像頭對人物進(jìn)行采集,程序?qū)Σ杉降囊曨l圖像進(jìn)行處理,人物分別做睜眼與閉眼操作。系統(tǒng)運行中,人物在睜眼狀態(tài)下,系統(tǒng)檢測人物不屬于疲勞,不會提示預(yù)警;當(dāng)檢測到人物眼睛閉合時,計算出此刻對應(yīng)的PERCLOS的值,若值大于0.4,并對眼睛閉合時間進(jìn)行計時若計時時間大于3s 時,系統(tǒng)發(fā)出疲勞預(yù)警提示。結(jié)果表明,系統(tǒng)對人物頭部傾斜時的檢測效果也比較理想。
三種情況下的測試過程如圖6,最終測試結(jié)果如表1,每個人物的行為分為50次的睜眼與閉眼。
圖6 實驗測試
表1 檢測結(jié)果
實驗證明,該方法下設(shè)計的系統(tǒng)具有較好的魯棒性,能夠達(dá)到對駕駛員在駕駛過程中實時進(jìn)行疲勞檢測的要求,在系統(tǒng)運行過程中能夠準(zhǔn)確地定位人臉與人眼,并計算出眼睛睜開與閉合時的面積,根據(jù)設(shè)定好的PERCLOS 設(shè)定的值,最終能檢測駕駛員此刻的狀態(tài)是否為疲勞狀態(tài)。
本文介紹了一種對駕駛員駕駛過程中是否出現(xiàn)疲勞進(jìn)行檢測的方法,即對實時采集的圖像,確定眼睛目標(biāo)區(qū)域,計算此刻確定區(qū)域的面積,進(jìn)一步結(jié)合PERCLOS 進(jìn)行疲勞判定。實驗表明,該方法雖對駕駛員疲勞駕駛行為進(jìn)行疲勞判定,能取得比較理想的效果,但仍有不足之處,如:1)駕駛員頭發(fā)遮擋或者佩戴墨鏡,無法定位眼睛;2)駕駛員的頻繁低頭容易導(dǎo)致無法準(zhǔn)確定位到眼睛;3)駕駛員可能會出現(xiàn)睡覺時不會閉眼的情況,產(chǎn)生誤判;因此,為了提高疲勞駕駛檢測方法的可靠性、準(zhǔn)確性等,基于多種檢測方法的混合模式(比如融合打哈欠檢測、轉(zhuǎn)向盤檢測,車道偏離檢測等),將是未來疲勞駕駛檢測研究的主要方向。