浙江大學(xué)城市學(xué)院信息與電子工程系 尚麗娜 石晴瑤 方 健
引言:個(gè)人駕駛出行所具備的高自由度以及私家車的大范圍普及給人們提供了便利的同時(shí)也帶來了很多安全隱患。車輛駕駛者特別是長(zhǎng)途貨運(yùn)司機(jī)和客運(yùn)司機(jī)若是沒有得到良好且充沛的休息時(shí)間,就很有可能會(huì)引發(fā)疲勞駕駛。而在公路尤其是高速公路上駕駛員必須時(shí)時(shí)刻刻保持警惕清醒的駕駛狀態(tài),一恍惚的走神都有可能引發(fā)交通事故從而造成嚴(yán)重的后果甚至危及人命,與此相比疲勞駕駛更是可怕。人處在疲勞狀態(tài)中是不會(huì)有平時(shí)那么快的反應(yīng)時(shí)間和平時(shí)那么敏捷的反應(yīng)能力的,在車來車往的馬路上這種狀態(tài)更是可能造成嚴(yán)重的交通事故,且根據(jù)相關(guān)統(tǒng)計(jì),疲勞駕駛所引發(fā)的交通事故的數(shù)量占事故總數(shù)的一大部分,而在日常生活中因疲勞而導(dǎo)致的工作效率降低以及不必要的麻煩也十分常見。而疲勞駕駛以及各項(xiàng)因疲勞狀態(tài)而導(dǎo)致的事故所發(fā)生的大部分原因是參與者并未意識(shí)到自己已經(jīng)身處疲勞狀態(tài),所以在意識(shí)到自己已處于疲勞狀態(tài)之前及時(shí)讓自己得到提醒可以讓許多因疲勞而帶來的后果避免發(fā)生,從而大大降低各種因疲勞而導(dǎo)致的事故發(fā)生。基于此種現(xiàn)狀,設(shè)計(jì)了疲勞檢測(cè)系統(tǒng),可以對(duì)被測(cè)者進(jìn)行疲勞程度檢測(cè),并進(jìn)行相應(yīng)提醒,從而避免很多事故的發(fā)生。
圖1 設(shè)計(jì)流程框圖
人眼檢測(cè)率離不開人眼檢測(cè)算法和多次定時(shí)獲取當(dāng)前幀圖像的操作,這一切又都是以圖像數(shù)據(jù)的獲取作為前提的。該人眼檢測(cè)及疲勞檢測(cè)系統(tǒng)的主要流程劃分為六個(gè),分別是“獲取圖像”部分,“人臉檢測(cè)”部分,“人眼區(qū)域計(jì)算”部分,“人眼檢測(cè)”部分,“單位時(shí)間人眼檢測(cè)率計(jì)算”部分以及“結(jié)果判定”部分,如圖1所示。
單單使用現(xiàn)成的人眼檢測(cè)算法會(huì)帶來很大的誤判率,既影響成果的使用效率,也影響結(jié)果的正確率。先進(jìn)行人臉檢測(cè)后再通過坐標(biāo)的方式進(jìn)行區(qū)域劃分和人眼長(zhǎng)度與寬度的預(yù)測(cè)來確定人眼區(qū)域,使用這種方式大大提高了人臉人眼檢測(cè)的準(zhǔn)確率和效率。
在開始疲勞檢測(cè)之前需要先打開攝像頭來完成圖像數(shù)據(jù)的采集或是使用按鈕打開圖片獲取圖像,完成圖像數(shù)據(jù)采集之后需要完成圖像數(shù)據(jù)的傳輸,接下來使用已有的人臉檢測(cè)算法來檢測(cè)出人臉的所在位置,之后再通過對(duì)人臉長(zhǎng)度人臉寬度進(jìn)行計(jì)算來完成坐標(biāo)的設(shè)置,再以程序編寫的形式實(shí)現(xiàn)人臉上人眼區(qū)域的位置預(yù)估及大小計(jì)算,并在通過預(yù)測(cè)計(jì)算得出的區(qū)域進(jìn)行人眼檢測(cè),從而提高人眼檢測(cè)的工作效率以及減少誤判概率。因?yàn)槿颂幱谄跔顟B(tài)時(shí)人眼的張開力度會(huì)出現(xiàn)明顯的減小,現(xiàn)成的人眼檢測(cè)算法在人眼張開力度較小時(shí)檢測(cè)不到人眼,所以可以將單位時(shí)間內(nèi)的人眼檢測(cè)率數(shù)值作為疲勞判斷的重要依據(jù)。同時(shí)檢測(cè)到人眼后以人眼的張開的寬敞比例進(jìn)行人物疲勞程度的再次判斷。
圖2 級(jí)聯(lián)分類器
本系統(tǒng)中的人臉檢測(cè)使用Adaboost級(jí)聯(lián)分類器。haar分類器的結(jié)構(gòu)如下。
Haar分類器 = Haar-like特征+積分圖方法+Adaboost+級(jí)聯(lián)
圖3 程序?qū)υ捒蚪缑?/p>
圖4 測(cè)試結(jié)果1
圖5 測(cè)試結(jié)果2
Haar分類器由Haar-like特征加積分圖加Adaboost再加級(jí)聯(lián)構(gòu)成,具體強(qiáng)分類器的方式如下。
haar分類器可由多個(gè)強(qiáng)分類器進(jìn)行級(jí)聯(lián)組合,級(jí)聯(lián)分類器圖像如圖2所示。
圖像數(shù)據(jù)的預(yù)先處理過程主要包括了“灰度化cvtColor”處理和“直方圖均衡化EqualizeHist”處理;因?yàn)樵趯?duì)物體的識(shí)別過程中,識(shí)別的關(guān)鍵就是對(duì)物體邊緣的認(rèn)識(shí)程度,而影響對(duì)物體邊緣認(rèn)知程度的本質(zhì)在于梯度,可是計(jì)算梯度時(shí)所要求的處理對(duì)象必須是灰度圖,所以在進(jìn)行檢測(cè)之前先對(duì)圖像進(jìn)行灰度化處理是不可少的預(yù)備工作。經(jīng)過這些處理之后再進(jìn)行人臉檢測(cè),可以獲得不錯(cuò)的檢測(cè)效果。
圖像預(yù)處理的部分代碼實(shí)現(xiàn)如下所示。
因?yàn)橹苯硬捎矛F(xiàn)成的人眼檢測(cè)算法進(jìn)行人眼檢測(cè)會(huì)因?yàn)闄z測(cè)區(qū)域較大的因素而存在不小的誤判率,與此同時(shí)檢測(cè)效率也較低,會(huì)導(dǎo)致整個(gè)程序的響應(yīng)變慢。而在進(jìn)行人眼檢測(cè)模塊之前,先利用已經(jīng)訓(xùn)練好的結(jié)果進(jìn)行人臉的檢測(cè),再通過對(duì)人眼位置的預(yù)測(cè)而進(jìn)行人眼區(qū)域的劃分,最后再在劃分出來的人眼區(qū)域內(nèi)通過現(xiàn)成訓(xùn)練好的XML文件進(jìn)行人眼檢測(cè)。因此,在正式進(jìn)行人眼檢測(cè)的工作前先進(jìn)行人眼區(qū)域的預(yù)測(cè)劃分是具有實(shí)用特質(zhì)的。
通過對(duì)人臉的長(zhǎng)度采集以及人臉寬度采集,并對(duì)采集到的數(shù)據(jù)加以數(shù)據(jù)運(yùn)算,可以得到人眼區(qū)域的大致位置以及區(qū)域大小。同時(shí)實(shí)現(xiàn)對(duì)人左眼位置和右眼位置的分別預(yù)測(cè),在完成人眼區(qū)域的預(yù)測(cè)之后再針對(duì)預(yù)測(cè)出來的區(qū)域進(jìn)行人眼檢測(cè)可以在很大程度上提高人眼檢測(cè)的準(zhǔn)確率,并且在此同時(shí)可以大大提高工作效率,為實(shí)時(shí)輸出判斷結(jié)果打下基礎(chǔ)。
被測(cè)者在比較疲勞的時(shí)候,眼睛會(huì)張開比較小,甚至有可能偶爾閉上,這種情況下,用已有的人眼檢測(cè)算法不能檢測(cè)到人眼,所以可以通過最終能否檢測(cè)出人眼來判斷是否疲勞。在此基礎(chǔ)上再次在檢測(cè)到人眼后通過人眼的長(zhǎng)寬比例來判定人物的疲勞程度。
為了實(shí)現(xiàn)實(shí)時(shí)輸出,需要先獲取當(dāng)前的時(shí)間,函數(shù)GetTime()可以幫助我們實(shí)現(xiàn)這一功能,主要代碼如下。
系統(tǒng)最終實(shí)現(xiàn)的運(yùn)行對(duì)話框界面如圖3所示。
人臉及人眼的區(qū)域在左側(cè),通過矩形框了出來,在眼睛正常張開的情況下,檢測(cè)結(jié)果區(qū)(在后側(cè))快速地輸出了檢測(cè)時(shí)間及檢測(cè)結(jié)果偏精神的結(jié)論,如圖4所示。
被測(cè)者減小了眼睛的張開力度,顯示出疲勞狀態(tài),檢測(cè)結(jié)果變?yōu)槠冢鐖D5所示。
在被測(cè)者戴眼鏡和不戴眼鏡的不同情況下,該程序都能檢測(cè)出被測(cè)者的疲勞程度。
本系統(tǒng)能夠快速進(jìn)行人眼區(qū)域劃分及疲勞判斷,并且檢測(cè)結(jié)果區(qū)迅速輸出檢測(cè)結(jié)果;在是否佩戴眼鏡的兩種情況下都能保持較為良好的工作效率和準(zhǔn)確率。
經(jīng)過測(cè)試,該程序性能穩(wěn)定,效果良好。