本站小編為你精心準備了多參數的駕駛員疲勞檢測參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
《無線通信技術雜志》2014年第二期
1系統的實現
本系統共分為兩個部分:人眼狀態檢測系統和心跳速率檢測系統,圖1為系統流程圖。實時的心跳數據和面部圖像同時輸入計算機,通過不同的處理方法,將演講狀態和心跳速率生成向量,然后利用已訓練好的分類器進行疲勞檢測,如果疲勞則發出警報。
1.1單一心跳檢測子系統的實現在心跳檢測子系統中,首先采用由Zephyr公司開發的心跳檢測設備獲取實時心跳數據[6]。該設備佩戴于胸口,可通過藍牙與智能手機或計算機通信。該設備每秒發送60個字節的十六進制數據,其中包括心跳速率(第13個字節),海拔,速度,距離等實時數據信息[6]。通過不同實驗者佩戴該設備,分別記錄其清醒和疲勞時的心跳數據。通過計算清醒時心跳速率的均值μ和標準差σ,得出心跳速率大致服從高斯分布,且多分布在(μ-3σ,μ+3σ)區間,如圖2所示。因此在判斷駕駛員是否疲勞時,可先計算前30秒清醒狀態下心跳速率的均值和標準差。參考"3σ"原則[7],當平均值與當前心跳速率的差值大于標準差的三倍時,則認為該駕駛員處于疲勞狀態,系統發出警報。
1.2單一眼睛狀態檢測子系統的實現在眼睛狀態檢測子系統中,主要分為三部分:人臉檢測,人眼檢測和疲勞檢測算法。本系統采用OpenCV中已訓練好的級聯分類器檢測正面人臉區域,然后基于人眼在臉部的分布特征進行人眼區域的粗提取,最后改進了現有的PER-CLOS(PercentageofEyelidClosureoverthePupiloverTime)疲勞檢測算法,大大提高了系統的實時性。
1.2.1人臉檢測OpenCV是指開源的計算機視覺庫,可以運行在Linux,Windows和MacOS操作系統上。它輕量級且高效,由一系列C函數和少量C++類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法[8]。本系統使用OpenCV中已訓練好的正面人臉檢測分類器[9],大致分為3步:載入分類器,函數cv-LoadHaarClassifierCascade是用于從OpenCV的文件或分類數據庫載入級聯分類器;使用分類器,函數cvHaarDetectObjects用于在圖像中檢測出目標;釋放分類器,函數cvReleaseHaarClassifierCascade用于釋放分類器的動態內存。圖3所示為實驗結果,紅色方框內即為選定的人臉區域,當人臉發生輕微旋轉時,亦可準確檢測出人臉區域。
1.2.2人眼區域的粗提取上一節中已實現了人臉區域的精確提取,因此可采用算法簡單的人眼區域粗提取即可滿足需求。分析現有的人眼檢測算法,發現這些算法已能達到很高的精確度,但由于算法的復雜程度較高,實時性方面有時無法滿足要求。在美術界,畫人臉時最基本的原則是"三庭五眼",如圖4所示[10]。根據這一原則,在已確定的人圖4"三庭五眼"結構臉矩形框內,可畫出眼睛區域的矩形框。在縱向方向,設長度為l,則選取1/4l到2/4l的區域。在橫向方向,設寬度為d,則選取1/6d到5/6d的區域。實驗結果如圖5所示。圖5眼睛區域的提取
1.2.3疲勞檢測算法PERCLOS(PercentageofEyelidClosureoverthePupiloverTime)是指眼睛閉合時間所占的百分比。美國聯邦公路管理局于1999年4月召集多所大學的專家學者,討論PERCLOS的有效性,認為PER-CLOS是目前最有效的車載、實時、非接觸的疲勞評估方法。PERCLOS通常有P70,P80,EM三種測量方式:P70:指眼瞼遮住瞳孔的面積超過70%就認為眼睛閉合,統計在一定時間內眼睛閉合時所占的時間比例。P80:指眼瞼遮住瞳孔的面積超過80%就認為眼睛閉合,統計在一定時間內眼睛閉合時所占的時間比例。EM:指眼瞼遮住瞳孔的面積超過50%就認為眼睛閉合,統計在一定時間內眼睛閉合時所占的時間比例。通常計算30秒或60秒內眼睛閉合時所占的時間比例,由此可見,系統的延遲較大。然而交通事故發生在瞬間,疲勞檢測系統的實時性直接關系到駕駛員的生命安全。為了提高系統的實時性,改進了已有的PER-CLOS算法。首先需要定義眼睛閉合狀態。由于受到光線等外界條件的影響,很難獲得眼睛的精確輪廓。所以將得到的眼睛部分的圖像二值化,計算前100幀中黑色像素點的平均值。如果當前幀中黑色像素的數目小于平均值的Z倍,則認為眼睛處于閉合狀態。分別模擬了沒有佩戴眼鏡和配戴眼鏡兩種情況各50次,實驗結果表明Z=0.7時,系統性能最優,ROC曲線如圖6所示。圖6不同Z值下的ROC曲線然后定義疲勞狀態,需要考慮兩種情況,即閉眼時間過長和眨眼頻率過低。按照上述定義的眼睛閉合規則,如式(1)所示。計算機每秒能采集30幀圖像,且正常眨眼時間大約為0.2s,所以當30幀內眼睛閉合的幀數大于6幀(30幀/秒*0.2秒=6幀),即p>0.2時,駕駛員處于疲勞狀態駕駛員疲勞時,會出現目光呆滯,眨眼頻率過低的現象。清醒時大約每5秒眨眼一次,當眼睛睜開的幀數大于1500幀時,認為同樣處于疲勞狀態。
1.3融合系統的實現由于兩種檢測方法均存在一定缺點,本文結合兩種方法進行疲勞檢測。首先,獲取大量眼睛狀態數據和心跳速率數據,即每一秒內眼睛閉合的幀數和同一秒時的心跳速率,生成三維向量V=(眼睛閉合的幀數,心跳速率,疲勞狀態)。采用十折交叉檢驗的方法,將獲得的訓練數據隨機等分為10份,其中9份為訓練集,另外一份為驗證集。十折交叉檢驗的過程實際上是把實驗重復做10次,每次實驗都從10個部分中選擇一個不同的部分作為測試數據(保證10個部分的數據都分別做過測試數據),剩下的9個當作訓練數據進行實驗。采用其中9份畫出不同K值下的K近鄰分類器的分類邊界,利用第10份數據進行分類器的驗證與檢測,找到使錯誤率最低的K值。然后當輸入新的實時的數據時,利用K近鄰法進行疲勞判別。
2實驗結果
在實驗階段,分別模擬了兩個單一子系統的準確率,然后驗證了融合系統的優越性。
2.1無眼鏡的實驗結果當測試者沒有佩戴眼鏡時,模擬結果如圖7所示。左側圖像為眼部區域,右側圖像為二值化后的眼睛區域。分別模擬清醒狀態和疲勞狀態(包括長時間閉眼和長時間不眨眼)各25次,實驗結果如表1所示。
2.2佩戴眼鏡的實驗結果由于存在駕駛員佩戴眼鏡的情況,需要驗證戴眼鏡時系統的可行性。模擬結果如圖8所示,左側圖像為眼部區域,右側圖像為二值化后的眼部區域。同樣模擬了清醒狀態和疲勞狀態(包括長時間閉眼和長時間不眨眼)各25次,實驗結果如表2所示。由于佩戴眼鏡的影響,準確率略低于無眼鏡的情況。
2.3心跳檢測子系統的實驗結果由于模擬心跳具有一定的難度,所以記錄了測試者清醒和疲勞狀態各10次實驗結果,如表3所示。此次準確率為100。由此可見,心跳檢測系統的準確率雖為100%,但是延遲較大。
2.4融合系統的實驗結果由上述實驗結果可見,單一基于眼睛狀態的疲勞檢測錯誤率較高,單一心跳檢測系統的延遲較大。從實驗結果,得出當K=23,25,27時,準確率最高,如圖9所示。由此可見,融合兩個參數的檢測系統準確率大大提高,且具有較好的實時性。
3結語
本文研究了一種融合了眼睛狀態和心跳速率檢測的駕駛員疲勞檢測系統,具有良好的準確性:(1)在人臉檢測之前,采用了直方圖均衡化,高斯濾波器濾波和光照補償的預處理手段,降低了噪聲和光照對系統的影響;(2)在系統設計的過程中,采用MATLAB驗證不同算法的優劣,最終選擇了適合的人臉檢測方法和人眼定位算法,為準確的疲勞檢測打下了基礎;(3)采用了已訓練好的OpenCV的檢測正面人臉的級聯分類器,快速又準確地找到人臉區域;(4)結合眼睛狀態和心跳速率檢測兩種不同原理的檢測方法,克服了準確率低和實時性差的缺點。該系統只在實驗環境下模擬了駕駛員的疲勞狀態,將來要應用于實際駕駛,還需要設計硬件電路并在道路上測試。
作者:劉金金林慶單位:江蘇大學計算機科學與通信工程學院