張志文 付永慶
(西安工業(yè)大學(xué)電子信息工程學(xué)院 西安 710021)
?
基于眼球運動狀態(tài)檢測的疲勞預(yù)警系統(tǒng)研究*
張志文付永慶
(西安工業(yè)大學(xué)電子信息工程學(xué)院西安710021)
摘要基于ARM+Linux平臺上對于疲勞預(yù)警方案的實現(xiàn),采用了一種新的適用于駕駛疲勞檢測的疲勞狀態(tài)判別算法。即當人處于疲勞狀態(tài)時,眼球運動速率會大幅度下降,根據(jù)這一特點,并結(jié)合新型的CortexA8的ARM處理器,以及Linux操作系統(tǒng)、Qt圖像化界面庫和OpenCV計算機視覺庫,設(shè)計了基于此嵌入式平臺的疲勞預(yù)警系統(tǒng)。最后仿真可表明,該系統(tǒng)對駕駛員疲勞預(yù)警具有一定的準確性與可研究性。
關(guān)鍵詞疲勞預(yù)警; 眼球運動; 人臉、人眼檢測
Fatigue Warning System Based on the State of Eyemovement Detection
ZHANG ZhiwenFU Yongqing
(School of Electronic Information Engineering, Xi’an Technological University, Xi’an710021)
AbstractAiming at the realization of the fatigue early warning scheme based on ARM+Linux platform, a new method is designed for the fatigue detection of driver fatigue detection in this paper. When a person is in a state of fatigue, it will be a significant decline in the rate of eye movement, According to this feature, and combining with the new ARM CortexA8 processor, Linux operating system, Qt graphical interface library and OpenCV computer vision library, a fatigue warning system is designed based on this embedded platform. Finally, the simulation shows that this system has certain accuracy and scientific research.
Key Wordsfatigue warning, eye movement, face and eye detect
Class NumberTN919.85
1引言
本課題是通過使用AdaBoost算法對人臉、人眼的識別[2],然后結(jié)合Canny算子進行邊緣檢測,再用Hough變換方法實現(xiàn)人眼虹膜中心的定位跟蹤[3],最后利用角點檢測原理檢測出眼角位置,然后采用幀差分法和人眼在臉部的方位信息來跟蹤人眼區(qū)域[4],并且提取與人眼相關(guān)的疲勞特征信息,最后可以根據(jù)眼球運動速率、Perclos等人眼疲勞判定方法來判斷疲勞狀態(tài)[1]。由于在實際情況下使用Perclos方法[5],即對人眼黑色像素比例計算來判斷疲勞駕駛的方法實時性不夠好、準確度不夠高,鑒于這種情況,可以通過采用計算眼球運動速率的方法進行疲勞預(yù)警,當人處于疲勞狀態(tài)時,人的眼球運動速率會大幅度降低,因此本文針對于這種新的疲勞檢測預(yù)警方法進行了研究。
2人臉以及人眼的檢測
本文涉及的Haar分類器方法是一種從整體算法來講較為成熟、可靠的算法。其算法原理可以通過這種表達方式得來:Haar分類器=Haar-like特征+積分圖+AdaBoost+級聯(lián)。
Haar-like是一個特征點,它可以用來訓(xùn)練一些質(zhì)量比較好的級聯(lián)分類器,當然也可以把人臉、人眼區(qū)域特征化檢測出來,加以區(qū)分。目前常用的Haar-like特征可以分為邊緣特征、線性特征、中心特征和對角特征這四大類。
在系統(tǒng)的算法思路中,主要是利用Adaboost算法[6],就是把訓(xùn)練出好的分類器模板,進行匹配來得到我們所需要的人眼特征區(qū)域。在這其中,比較重要的環(huán)節(jié)是訓(xùn)練出可以檢測到人臉、人眼分類器。AdaBoost是一種可以加強一般性分類器的算法,更有效的檢測出特征點,在Haar中可以生成一個更好的矩陣特征組合,即Haar分類器[7]。
圖1 眼睛識別流程圖
由于訓(xùn)練分類器存在耗時[8]比較長、計算量大等缺陷,并且在樣本較少的情況下不是很精確,因此本設(shè)計選取采用OpenCV視覺庫中OpenCV/date/haarcascades有臉部和眼部haarcascade_frontalface和haarcascade_eye_tree_eyeglasss[9]的xml分類器。OpenCV(Open Source Computer Vision Library)是由Intel公司提供開發(fā)的一個開源的跨平臺的計算機視覺圖像庫,包含了超過500個函數(shù)來實現(xiàn)圖形處理和計算機視覺方面的算法,并可用于移植運行在Linux、Windows和Mac OS操作系統(tǒng)上。OpenCV庫中存在一些分類器,它們都經(jīng)過了優(yōu)化,檢測精度高,速度快,而且在VC++平臺上加載OpenCV視覺庫中的臉部和眼部分類器在實際應(yīng)用中得到了驗證,識別的流程圖可如圖1所示。
3眼睛虹膜中心的識別跟蹤
在識別定位人臉人眼后,還需對人眼進行眼瞼輪廓跟蹤找中心方法進行眼睛虹膜中心點位,即對瞳孔的定位是對二值化后的圖像分別向X軸、Y軸投影,取其最小的累加值。而虹膜外邊緣的定位是先用Canny算子進行邊緣檢測,再用Hough變換實現(xiàn)定位,在VC平臺上實現(xiàn)的效果圖如圖2所示。
圖2 眼睛虹膜中心定位
4眼睛的定位與跟蹤
在完成眼睛的檢測后,下一步就是對眼部圖像進行相關(guān)的算法處理,更清楚地得到有用的眼睛圖像特征數(shù)據(jù)。圖像特征處理的原理是是對攝像頭采集到的圖像進行連續(xù)的循環(huán)處理,如平滑濾波、背景擦除、二值化等實時圖像處理。對于圖像進行高斯濾波是為了防止圖像模糊、出現(xiàn)細小斑點等問題,用來平滑圖像,從而得到更清晰的人眼部圖像。由于采集相鄰兩幀圖像間的時間間隔非常短,因此采用幀差法,也就是用前一幀圖像作為當前幀的背景,并且結(jié)合二值化處理方法來得到眼部眼睛與眉毛等信息。這種方法背景并不積累,而且更新速度較快、計算量相對比較小,可以更好地保證實時性。形態(tài)學(xué)濾波則是利用形態(tài)學(xué)運開、閉運算進行相關(guān)濾波操作,去掉噪聲,保證圖像質(zhì)量。
為了更加快速地定位人眼,提高精度,可以根據(jù)人眼在臉部比例位置近似定位人眼。人眼區(qū)域位于臉部水平方向區(qū)域的1/6~5/6處;位于臉部垂直方向區(qū)域的1/4~2/4處,并且結(jié)合分類器方法,可以得到人眼是否配戴眼鏡的二值化后檢測效果圖,如圖3所示,可以看出檢測后眼睛的狀態(tài)特征很清晰。
圖3 眼睛的定位與跟蹤
5疲勞預(yù)警判斷
在疲勞檢測這方面大多數(shù)人所使用的方法是比較通用的PERCLOS方法。PERCLOS(Percentage of Eyelid Closure Over the Pupil Time)是指眼睛睜開和閉合時所占的比例。PERCLOS算法在國際上將閉合程度大于80%的眼睛狀態(tài)歸于閉合狀態(tài),故可得PERCLOS值的計算公式是PERCOLS=(眼睛閉合幀數(shù)/檢測時間段總幀數(shù))×100%?,F(xiàn)實中通過VC平臺對PERCLOS方法進行了驗證,其方法雖然是當前疲勞預(yù)警[10]的主流方法,但是在運行結(jié)果檢測速率過低,實時性不高,導(dǎo)致預(yù)警不準確,僅可以用于靜態(tài)的室內(nèi)監(jiān)控。圖4是P80方法檢測實時視頻的時間效果圖。
由此可以看出對于實時視頻的幀檢測預(yù)警時間為將近700ms,由人的視覺暫態(tài)理論分析,只有當圖像處理系統(tǒng)的處理速度每秒25幀以上人眼才會意識到連續(xù)幀的圖像,從而達到視頻流的效果,也就是要求實時圖像處理系統(tǒng)必須在40ms內(nèi)完成一幀圖像的運算處理,才能保證圖像的實時性。也就是說筆記本上的P80檢測方法不能達到實時性要求。本文采用了使用計算眼球運動速率的方法來進行疲勞預(yù)警,只需定位到人眼虹膜中心和內(nèi)眼角這兩個人眼特征點,便可計算出眼球運動速度來判斷疲勞。這種方法從理論上可以提高疲勞預(yù)警的實時性。
圖4 P80疲勞預(yù)警方法cmd窗口
5.1疲勞檢測
在通過圖像二值化后得到人眼的狀態(tài)特征,需要對虹膜中心以及內(nèi)眼角進行定位。圖5是人眼睛的實物狀態(tài)圖。
圖5 人眼實物圖
1) 虹膜中心定位
在上文中已經(jīng)提到虹膜定位的方法,并且經(jīng)過計算機上驗證具有一定的準確率以及實時性,圖6為人臉在不同方位的虹膜中心驗證效果圖。
圖6 虹膜中心定位
2) 眼角定位
眼角定位的方法,可以通過Harris算法進行角點檢測,尋找到二值圖像中的輪廓,由于檢測出來的角點可能會存在一些偽角點,通過與輪廓信息相結(jié)合的方法進行Harris角點檢測,將這些偽角點剔除出去,然后標定得到的角點。其流程圖如圖7所示。
圖7Harris角點檢測流程圖
本設(shè)計選擇了以O(shè)penCV為編程環(huán)境,因為自帶的分類器可以很好的進行人臉識別和眼睛識別,只要在這個基礎(chǔ)上擴展即可。首先將兩個分類器文件指針CvHaarClassifierCascade*,分別指向兩個文件,以便在調(diào)用cvHaarDetectObjects函數(shù)時使用。根據(jù)cvHaarDetectObjects函數(shù)的其它參數(shù),分別定義,然后進行識別,返回一串CvSeq*序列,其數(shù)目代表識別出的數(shù)目。從中提取出區(qū)域的信息,然后畫出所在區(qū)域。在確定眼睛的區(qū)域后,對它設(shè)置ROI,進行角點檢測。由于ROI區(qū)域很小,只需要設(shè)置max_corner為10,角點選擇的方法是找到X最大和最小的點,但根據(jù)運行情況,還增加了一個條件,
ymin+1/4*eye_height 使眼角位于眼睛區(qū)域的中央,提高識別精度。最后設(shè)置ROI為NULL就能返回大圖片。下圖8為眼角檢測效果圖。 圖8 人眼眼角定位 然后可以通過修改參數(shù),需要對檢測到的faces->total,將每個ROI區(qū)域進行保存,因此設(shè)置max_face=10,設(shè)置變量 CvRect eye_ROI[2*max_face]; CvRect nose_ROI[max_face]; CvRect mouth_ROI[max_face]; 可以達到檢測多張人臉的效果。 3) 眼球速率計算 檢測到虹膜中心與眼角后需要對眼球速率進行計算。由于攝像頭采集每幀圖像到處理完之間的時間間隔t幾乎一樣,因此只需計算出相鄰兩幀眼球運動的距離即可。下圖9假設(shè)為連續(xù)兩幀單眼睛狀態(tài)。 圖9 連續(xù)兩幀眼睛狀態(tài) 那么在此相鄰兩幀眼球運動的距離L可這樣計算: 則L=|L1-L2| 然后通過L與時間間隔t做比值便可求出這時刻的眼球速度。 5.2疲勞判定 圖10 疲勞判定流程圖 基于眼球運動速度檢測疲勞狀態(tài)的原理是在提取跟蹤到人臉、人眼的基礎(chǔ)上,再定位出人眼虹膜中心和內(nèi)眼角位置,然后通過相鄰兩幀圖像虹膜中心到內(nèi)眼角之間的位移之差與定位此兩幀圖像虹膜中心所用時長做比值求出眼球的轉(zhuǎn)動速率,正常情況下,當駕駛員駕駛車輛行走時,目光會時不時地看向后車鏡以及側(cè)車鏡,眼球會非均勻的轉(zhuǎn)動,當人處于疲勞狀態(tài)時,眼球運動速度變慢,根據(jù)眼球運動速率判斷出疲勞狀態(tài)。由于這種預(yù)警方法比較新穎,疲勞狀態(tài)所對應(yīng)的眼球運動速率目前還沒有一個統(tǒng)一標準,需要在后面工作中以實際出發(fā)進行統(tǒng)計計算一個標準值。但可以給出該方法的應(yīng)用流程如圖10所示。 6結(jié)語 本課題的整體思路為在PC機上實現(xiàn)程序編寫,然后在Linux系統(tǒng)下查看運行效果,然后交叉編譯為開發(fā)板可執(zhí)行文件,編譯好開發(fā)板所依賴的環(huán)境移植到開發(fā)板,利用QT圖像庫實現(xiàn)眼睛的檢測及后續(xù)的疲勞判定,并且在開發(fā)板上利用v4l2協(xié)議和QT圖像庫,對攝像頭數(shù)據(jù)進行采集和顯示,并利用OpenCV的函數(shù)對采集的一幀幀圖片進行處理,提取人眼疲勞特征,進而進行判定,最后再利用QT圖像庫進行界面顯示及后續(xù)的預(yù)警[11]。本研究的新思想在于如何使用眼球速率進行疲勞判定,在后期的努力中應(yīng)該將如何計算出眼球運動速率為重點,構(gòu)建研究出疲勞駕駛方向的新篇章。 參 考 文 獻 [1] 張志文,張沛晨.基于人眼運動檢測的疲勞預(yù)警系統(tǒng)研究[J].電子設(shè)計工程,2015,23(6):172-174. ZHANG Zhiwen, ZHANG Peichen. Motion detection based on the human eye fatigue warning system[J]. Electronic Design Engineering,2015,23(6):172-174. [2] 梁濤,張志文.基于OpenCV的視頻圖像人眼跟蹤方法的研究[J].科學(xué)技術(shù)與工程,2013,5:24-27. LIANG Tao, ZHANG Zhiwen. OpenCV Based on a video image of the human eye tracking method[J]. Science Technology and Engineering,2013,5:24-27. [3] 鄭夜星,林其偉.基于AdaBoost人臉檢測的改進FGS視頻編碼[J].電視技術(shù),2010,34(2):85-87. ZHENG Yexing, LIN Qiwei. AdaBoost face detection improved FGS video encoding technology based on[J]. TV,2010,34(2):85-87. [4] 王磊,吳曉娟,俞夢孫.駕駛疲勞/瞌睡檢測方法的研究進展[J].生物醫(yī)學(xué)工程學(xué)雜志,2007,24(1):245-248. WANG Lei, WU Xiaojuan, YU Mengsun. Research progress in driving fatigue drowsiness detection methods[J]. Journal of Biomedical Engineering,2007,24(1):245-248. [5] 朱振華,吳曉娟,王磊,等.基于眨眼持續(xù)時間的司機疲勞檢測方法[J].計算機工程,2008,34(5):201-203. ZHU Zhenhua, WU Xiaojuan, WANG Lei, et al. Detection Method of Driver Fatigue Based on Blink Duration[J]. Computer Engineering,2008,34(5):201-203. [6] Viola P, Jones M. Rapid Object Detection Using aboosted Caseade of SimpIe Features[J]. IEEE Computer Society Conference on ComPuter Vision and Patten recognition,2001,24(1):511-518. [7] Rainer Lienhart, Joehen Maydt. An Extended Set of Haar-like Features for Rapid Object Detection[J]. IEEE ICIP,2008,24(1):28-56. [8] Paul Viola, Miehael Jones. Robust Real-Time Faee Deteetion[J]. International Journal of ComPuter Vision,2004,57(2):137-154. [9] 于仕琪.OpenCV概述[Z].http://wiki.opencv.org.cn/index.php/OpenCV概述,2010-04-16,34(2):85-87. YU Shiqi. Abstract .OpenCV Overview[Z]. http://wiki.opencv.org.cn/index.php/OpenCVoverview,2010-04-16,34(2):85-87. [10] 蘭婷,普杰信.視頻圖像中的視覺疲勞實時檢測方法研究[J].計算機工程與應(yīng)用,2012,35:147-150. Lanting Bhuj letter video images in real-time visual fatigue detection method[J]. Computer Engineering and Applications study,2012,35:147-150. [11] 陳香.基于Qt平臺下嵌入式現(xiàn)場監(jiān)測裝置的研究[D].南京:南京師范大學(xué),2013,24(1):28-31. CHEN Xiang. Based platform Qt embedded under study site monitoring device[D]. Nanjing: Nanjing Normal University,2013,24(1):28-31. 中圖分類號TN919.85 DOI:10.3969/j.issn.1672-9722.2016.02.018 作者簡介:張志文,男,碩士,教授,研究方向:計算機測控技術(shù)、智能化儀表等。付永慶,男,碩士研究生,研究方向:通信與信息系統(tǒng)。 *收稿日期:2015年8月10日,修回日期:2015年9月20日