李慶梅,鐘燕科
(湖南鐵道職業(yè)技術(shù)學(xué)院,株洲 412001)
鐵路運輸涉及大量旅客的人身和財產(chǎn)安全,機車駕駛員在長時間、連續(xù)地工作情況下,容易出現(xiàn)疲勞駕駛現(xiàn)象,從而為鐵路安全作業(yè)埋下安全隱患。因此,對機車駕駛員疲勞駕駛進行及時監(jiān)測和預(yù)警,對提高鐵路行車安全具有重要意義。駕駛員大約90% 的信息依靠視覺得到的,很多研究機構(gòu)都采用了對眼睛生理特征的檢測來判斷駕駛員的疲勞狀況。在疲勞引發(fā)的事故之前,駕駛員眨眼行為提前發(fā)生變化,眨眼頻率會增加,眼皮覆蓋眼睛的百分比也會增加。因此,通過測量眼睛閉合、眼睛運動和眼睛生理特征來監(jiān)視駕駛疲勞是一個適宜的方法。
根據(jù)PERCLOS原理,在單位時間內(nèi),駕駛員的眼睛處于閉合狀態(tài)累計超過一定比例,則可判斷駕駛員處于疲勞駕駛狀態(tài)。本文對圖像進行預(yù)處理之后,利用Ostu提出的最大類間方差法,將人臉分割出來;在此基礎(chǔ)上,對圖像進行垂直方向和水平方向灰度積分,獲取人眼位置;再將人眼區(qū)域像素視為特征向量,輸入到SVM分類器,實現(xiàn)對駕駛員眼睛睜、閉狀態(tài)判斷;最后依據(jù)PERCLOS對駕駛員駕駛狀態(tài)作出判斷。由于SVM在處理非線性、小樣本問題方面具有其獨特優(yōu)勢,因此本文提出的疲勞駕駛監(jiān)測方法,在實驗中表現(xiàn)出較高的準確度,取得了預(yù)期效果。
圖像在實際運用中,由于自然條件或人為等因素,難免存在各種各樣的噪聲,這些噪聲可能在傳輸中混入,也可能是在量化處理過程中產(chǎn)生。它們會對圖像的定位、識別帶來很大影響,為準確提取駕駛員眼睛位置,必須先對圖像進行消噪處理。中值濾波器是一種常用的非線性平滑濾波器,它的輸出像素值是由領(lǐng)域像素中間值所決定,對極限像素值不是特別敏感,因此中值濾波器產(chǎn)生較少模糊,適合于消除圖像中的孤立噪聲點。本文采用默認3×3濾波器窗口大小,對噪聲進行消除處理。此外,圖像是在不同自然條件下采集的,有些圖像可能亮度偏低,有些可能亮度偏高,這些都會導(dǎo)致圖像清晰度不夠,不利于后續(xù)處理。利用直方圖均化技術(shù),使圖像灰度分布均衡化,削弱了不同光照條件對圖像的影響,提高了圖像的清晰度。圖像預(yù)處理前后對比如圖1所示圖像預(yù)處理之前:駕駛員衣領(lǐng)存在許多和人臉膚色相差無幾的白色碎點,不利于后續(xù)人臉分割,可視為噪聲。中值濾波后,消除了大部分白色碎點。
將人臉從周圍背景圖像中分割出來,一般采用閥值分割法。它充分利用目標(biāo)物和背景在灰度特性上的差異,把圖像視為兩類區(qū)域的組合。通過設(shè)立一個合適的灰度閥值,可以對每個象素點是否屬于目標(biāo)物作出判斷,從而產(chǎn)生對應(yīng)的二值圖像。圖像經(jīng)過分割后,數(shù)據(jù)大大被壓縮,減小了后續(xù)計算量。
圖 1 圖像的預(yù)處理
C0和C1的類的方差可由下式得到:
類間方差為:
類內(nèi)方差為:
圖2 人臉區(qū)域分割
閥值分割圖像原理描述如下:
Ostu提出的最大類間方差法算法簡單、方便可行。
設(shè)原始圖像灰度級為L,灰度級為I的象素點為ni,則圖像的全部像素為:
按灰度級用閥值t劃分為兩類:C0=(0, 1, 2,…,t) 和 C1= (t+1, t+2, …, t-1) 。C0和 C1類的類出現(xiàn)概率以及均值層分別由下列各式給出:
總體方差是這兩者之和。對圖像進行分割后,提取出駕駛員人臉區(qū)域,如圖2所示:由于駕駛員襯衣衣領(lǐng)部分的灰度值恰好與人臉灰度值范圍重合,因此,這部分圖像錯誤劃分到人臉區(qū)域了。該部分圖像具有對稱性,雖然會對圖像積分投影極值的大小帶來影響,卻不會影響積分投影取極值時所對應(yīng)的y坐標(biāo)和橫坐標(biāo),因此,最終不影響人眼區(qū)域的提取操作。
將得到的駕駛員人臉圖像,進行水平積分投影 和垂直積分投影 ,灰度積分投影算法如下:
積分投影后得到圖3。根據(jù)人臉特征,通過分析水平積分圖,可以獲知人眼的y坐標(biāo)范圍。首先,人眼是位于人臉的上半部分,其次,人眼區(qū)域灰度值比較小,對應(yīng)的水平積分投影應(yīng)該是整個水平積分投影圖的一個波谷;結(jié)合上述因素考慮,投影圖的第一個波谷應(yīng)該是眼睛區(qū)域的y坐標(biāo)范圍,即:[60 72]。此外,由于人眼、眉毛、嘴巴、鼻子、下巴等細節(jié)區(qū)域的橫坐標(biāo),都是位于兩眼的橫坐標(biāo)范圍之內(nèi),反映到垂直積分投影圖上,就是在眼睛橫坐標(biāo)范圍內(nèi)存在許多黑色區(qū)域,因此積分投影圖波動較多,其他范圍基本上沒有小塊黑色區(qū)域,基本上沒有波動。從圖上可知:眼睛的橫坐標(biāo)范圍是:[40 80]。
根據(jù)求得的兩個坐標(biāo)范圍,將人眼裁減出來,如圖3(c)所示。
圖 3 提取人眼位置
支持向量機由Vaplik1992年提出[1],現(xiàn)為國際機器學(xué)習(xí)的前沿?zé)狳c。其核心思想是建立一個決策超平面,使正例、反例之間的隔離邊緣最大化。
設(shè)存在兩個超平面為:
H1: ω .x+b=1 和 H2: ω .x+b =-1,則超平面 H1到原點的距離為|1-b|/||ω||,超平面H2到原點的距離為|-1-b|/||ω||。因此,兩個超平面之間的距離是2/||ω||,它被稱為分類間隔,因此,求間隔最大變?yōu)榍髚|ω||最小的問題:
引入正松弛因子ζi和懲罰參數(shù)c,將約束條件修改為:yi=[(wxi)-b]-1+ ζi
目標(biāo)函數(shù)改為:
選取合適的核函數(shù)k(xi, xj),把非線性問題轉(zhuǎn)化為一個高維空間里的線性可分問題,然后在該高維空間中求解最優(yōu)超平面。在特定高維空間中建立的分類決策函數(shù)為:
眼睛睜開時,從圖象特征角度來分析:由于眼球既有黑色部分,又有白色部分,黑色部分的存在使得眼睛區(qū)域的灰度值較小;眼睛閉和時,眼皮完全遮住眼球,而眼皮和人臉其他部分的皮膚是一致的,因此,相對于睜開時來說,眼睛區(qū)域的灰度值要大一些。SVM利用眼睛狀態(tài)不同時的這個特征區(qū)別,可以對眼睛狀態(tài)作出正確判斷。
如果將眼睛區(qū)域中的每個象素點都輸入到SVM分類器,從理論上來說,是可以對眼睛狀態(tài)作出正確判斷的。實際上,由于圖像像素點很多,SVM分類器計算任務(wù)繁重,嚴重影響分類器的分類速度。為進一步壓縮數(shù)據(jù),本文采用小波算法先對提取的眼睛圖像進行小波分解,然后提取各層的近似分量和細節(jié)分量,并把各分量的能量值求出。那么,將各分量的能量值依次排列,即可得到一個蘊含該圖像信息的特征向量。將圖像特征向量輸入到SVM分類器,從而可以實現(xiàn)對眼睛睜、閉狀態(tài)的識別。
1)利用waverec2函數(shù)對眼睛區(qū)域圖像進行2層小波分解,分解后各層圖像如圖4所示。設(shè)眼睛區(qū)域原圖像是A,則分解之后存在下面關(guān)系:
LL2+LH2+LV2+LD2+LH1+LV1+LD1=A
因此,原圖像的特征全部蘊涵在LL2、LH2、LV2、LD2、LH1、LV1、LD1 7個參量之中,LL1和LL2作為圖像的近視分量,大致保持了原圖像的特征;LD2、LD1作為細節(jié)參量,反映原圖象高頻細節(jié)特征;LH2、LV2、LH1、LV1反映原圖像水平和垂直方向的特征。當(dāng)駕駛員眼睛處于睜開和閉合兩個不同狀態(tài)時,7個參量對應(yīng)地有兩種不同取值;通過分析這7個參量,可以判斷眼睛處于何種狀態(tài)。
2)提取各層的近似分量和細節(jié)分量
采用appcoef2()函數(shù)可以提取圖象小波分解的各層近似分量;采用deccoef2()函數(shù)可提取圖像小波分解的各層細節(jié)分量、水平分量和垂直分量。
圖 4 眼睛區(qū)域圖像的2層小波分解
3)計算求出上步獲得的各分量的能量值,得到圖像特征向量
設(shè)小波分解后,某一分量為S,是一個N×M二維數(shù)據(jù),其能量為E:
按照(14)式計算方法,求出7個圖像分量的能量值并按照一定順序排列,例如:
即可得到故障特征向量。
4)設(shè)置好SVM分類器參數(shù),輸入圖像特征向量,實現(xiàn)對駕駛員眼睛狀態(tài)的識別
由于眼睛只有睜開和閉合兩種狀態(tài),只需采用一對一算法建立一個支持向量機分類器。SVM參數(shù)設(shè)置為:gam賦值為10,綜合考慮了模型的復(fù)雜度和數(shù)據(jù)的平滑性要求;sig2設(shè)為0.5核函數(shù)為:RBF-kernel 。最后輸入圖像特征向量,完成眼睛狀態(tài)判別。
為驗證本文采用的方法可有效地識別司機眼睛的睜、閉狀態(tài),采集20張圖片(其中10張屬于睜眼狀態(tài),10張屬于閉合狀態(tài)),經(jīng)過前文所述的一系列操作,得到20個7維特征向量作為訓(xùn)練樣本。先利用這20個訓(xùn)練樣本訓(xùn)練SVM分類器,使 SVM完成“學(xué)習(xí)”,建立眼睛睜、閉兩個狀態(tài)的分類超平面。然后再往該20個樣本中添加5%以內(nèi)的隨機噪聲,構(gòu)造新的20組數(shù)據(jù)作為測試樣本。最后,將測試樣本輸入到SVM分類器進行眼睛狀態(tài)睜、閉識別,以驗證SVM能否有效地識別司機的眼睛狀態(tài)。
實驗結(jié)果為:識別精度100%、識別時間0.589秒。說明在20個測試樣本中,SVM分類器將20個樣本正確識別歸類;識別所花費的時間也較少,效率較高。因此,采用SVM能快速、有效地識別司機的眼睛狀態(tài)。
在完成對司機眼睛狀態(tài)的識別后,利用PERCLOS原理可對司機的駕駛狀態(tài)作出判斷。單位時間內(nèi),眼睛閉合時間所占的百分比率被稱為PERCLOS。當(dāng)此比率超過一個閥值,即可認為人是處于疲勞狀態(tài)。
設(shè)在T時間段內(nèi),每隔t時間間隔采集一張司機圖象,共采集N張司機圖像。對N張圖像進行眼睛狀態(tài)識別,統(tǒng)計眼睛處于閉合狀態(tài)的圖片數(shù)為M。那么依據(jù)PERCLOS原理可得:
司機眼睛閉合狀態(tài)的比率為:f=M/N
當(dāng)f>=8 0%時,判定駕駛員處于疲勞駕駛狀態(tài),需要給出預(yù)警信號;反之,駕駛員處于精力良好駕駛狀態(tài),不需給出預(yù)警信號。
為驗證疲勞檢測的效果,進行模擬實驗測試。隨機抽取20個人參與實驗,在不同時段,對每個人共進行10次連續(xù)監(jiān)測(上午3次、下午3次、晚上4次),檢測結(jié)果的準確率在87.5%以上。具體數(shù)據(jù)如表1所示。實驗數(shù)據(jù)表明:上、下午實驗的監(jiān)測真確度明顯高于晚上,這是由于晚上光線相對較弱而造成的;此外,在實驗中發(fā)現(xiàn),如果頭部位置偏移太大會影響眼睛的檢測,可能導(dǎo)致誤測。
表1 機車司機疲勞駕駛檢測實驗數(shù)據(jù)
實驗數(shù)據(jù)表明:本文采用的方法能夠較準確地對機車司機的駕駛狀態(tài)作出監(jiān)測,準確度在87.5%以上;所花費的時間較少,具有良好的實時性。此外,監(jiān)測的準確度與環(huán)境光線、被測對象的坐姿等有一定關(guān)系,這是本文以后需繼續(xù)深入研究的問題。
[1] 袁勝發(fā), 褚福磊.SVM多類分類算法及其在故障診斷中的應(yīng)用[J], 振動工程學(xué)報, 2004, 17(5): 420-422.
[2] 董長虹. 小撥分析工具箱原理與應(yīng)用[M]. 北京: 國防工業(yè)出版社, 2004.
[3] 鐘燕科. 改進的SVM用于主變流器故障診斷[J]. 機車電傳動, 2010, 02.
[4] 陳特放, 鐘燕科.基于小波分析和SVM的主變流器故障診斷[J]. 機車電傳動, 2009, 01.