基于ARM+DSP的駕駛員眼部疲勞視覺檢測算法設(shè)計
如何為駕駛員提供一個有效實用的安全輔助駕駛系統(tǒng)是車輛安全駕駛的一個重要課題?;跈C(jī)器視覺的疲勞駕駛檢測技術(shù)已在國內(nèi)外開展了廣泛研究,其中以駕駛員眼部特征的檢測最為廣泛。
本文以低成本、低功耗、高實時性為設(shè)計原則,以ARM+DSP構(gòu)成硬件平臺,并移植了嵌入式操作系統(tǒng)Windows CE 5.0,設(shè)計了一套基于駕駛員眼部特征的疲勞駕駛檢測算法,對駕駛員駕駛過程進(jìn)行實時檢測和報警,從而提高駕駛的安全性與舒適性。
1 硬件平臺設(shè)計
系統(tǒng)硬件平臺選用三星公司ARM9架構(gòu)的S3C2440作為核心處理器,利用TI公司的TMS320DM642作為視頻采集處理模塊,其結(jié)構(gòu)框圖如圖1所示。DSP平臺主要負(fù)責(zé)采集圖像、圖像算法處理,ARM平臺主要完成整個系統(tǒng)的控制處理,兩者之間通過網(wǎng)口實現(xiàn)通信和同步。在系統(tǒng)運行過程中,ARM平臺可實時顯示采集到的視頻以及相應(yīng)眼部疲勞特征識別的結(jié)果,同時用戶可通過觸摸屏交互界面對系統(tǒng)進(jìn)行設(shè)置和控制。為保證系統(tǒng)平臺具有高的可靠性以實現(xiàn)復(fù)雜的系統(tǒng)調(diào)度,在設(shè)計過程中對本系統(tǒng)各平臺進(jìn)行了操作系統(tǒng)移植,DSP平臺移植了DSP/BIOS系統(tǒng),ARM平臺移植了Wince操作系統(tǒng)。
S3C2440是一款基于ARM92OT核的16/32 bit RSIC結(jié)構(gòu)的嵌入式微處理器,主頻為400 MHz,最高可達(dá)533 MHz;片內(nèi)外資源豐富,具有強(qiáng)大的處理能力。系統(tǒng)存儲擴(kuò)展了64 MB的NANDFlash、64 MB的SDRAM;另外還有2 MB的NORFalsh,用于存放系統(tǒng)引導(dǎo)加載程序[1]。
TMS320DM642芯片[2]能夠?qū)崟r高速地完成大數(shù)據(jù)量的數(shù)字視頻編解碼處理,是強(qiáng)大的高性能單片多媒體處理器,具有高質(zhì)量、多通道、優(yōu)越的視頻處理性能,以及完整的軟件可編程特性;基于C64x系列VelociTI.2DSP 架構(gòu)的設(shè)計,與TI公司其他的C64x數(shù)字信號處理器代碼相兼容,擁有500/600 MHz時鐘頻率,性能高,其傳輸速率達(dá)4 000/4 800 MIPS;不僅具有C64x系列芯片的主要特征,還高度集成了音視頻等外部設(shè)備的接口,方便多媒體應(yīng)用開發(fā)。
2 圖像識別算法
2.1 總體檢測流程
首先,根據(jù)臉部膚色的聚類特性檢測駕駛員臉部位置,在人臉檢測的基礎(chǔ)上,根據(jù)眼睛在人臉上的幾何位置分布,確定眼睛的大概位置,縮小眼部檢測的區(qū)域范圍;其次,在縮小的眼部搜索區(qū)域范圍內(nèi),利用Sobel邊緣檢測算法對眼部區(qū)域進(jìn)行邊緣檢測,提取眼部的邊緣信息,并對其進(jìn)行二值化處理;再對二值化后的眼部區(qū)域進(jìn)行連通成分分析,采用基于區(qū)域連通的二值圖像濾波方法去除眼部周圍圖像噪聲點的干擾;然后根據(jù)改進(jìn)的積分投影算法,計算左右眼角和上下眼瞼的距離,確定駕駛員眼睛的睜閉狀態(tài);最后,定義眨眼頻率,并據(jù)此實現(xiàn)疲勞駕駛的檢測。具體的算法流程如圖2所示。
2.2 基于膚色聚類的人臉檢測
膚色對面部表情、頭部旋轉(zhuǎn)以及圖像尺度的變化不敏感, 但是人臉檢測的一個重要特征。在HSV 顏色空間, 圖像的照度和色度是分離的,膚色聚類更緊密, 不易受周圍光線的影響。因此, 本文采用基于RGB 和HSV 顏色空間的膚色聚類算法對駕駛員臉部進(jìn)行檢測。從攝像頭采集的圖像為RGB 格式, 可以利用式(1)實現(xiàn)從RGB 顏色空間到HSV 空間的轉(zhuǎn)換[ 3]。
2.3 眼部感興趣區(qū)域確定
假設(shè)檢測出的人臉區(qū)域長度為HF、寬度為WF, 在豎直方向上, 眼睛大概位于臉部二分之一以上、頭頂以下
HF/5 的區(qū)域。在水平方向上, 眼部邊界區(qū)域被定位于距離臉部左邊界WF/8 處開始到距離臉部右邊界WF/8 處
的區(qū)域。根據(jù)上述原則, 初始眼部檢測區(qū)域為如圖3 中所示的矩形EFGH 區(qū)域。
[!--empirenews.page--]
2.4 基于Sobel 算子的邊緣檢測
邊緣是圖像灰度變化劇烈的地方, 在從皮膚到眼白再到瞳孔的變化過程中, 包含了豐富的眼部圖像邊緣信
息, 因此可以用邊緣提取的方法將眼部邊緣提取出來作為人眼檢測和定位的基礎(chǔ)。利用Sobel 邊緣算子對初始眼部檢測區(qū)域進(jìn)行邊緣檢測,能夠有效地將眼部邊緣提取出來。Sobel 算子可用矩陣形式表示為:
2.5 改進(jìn)積分投影算法確定左右眼角和上下眼瞼的距離
對濾波后的二值圖像, 首先將初始眼部檢測區(qū)域EFGH 從水平方向的中線位置分成如圖3 所示的左右兩個部分(即右眼檢測區(qū)域EMNH 和左眼檢測區(qū)域MFGN),然后利用改進(jìn)積分投影算法分別在左右眼檢測區(qū)域內(nèi)確定左右眼的左右眼角距離及上下眼瞼距離。因左、右眼的參數(shù)確定方法類似,故僅以右眼檢測區(qū)域EMNH 為例說明參數(shù)的確定過程。具體實現(xiàn)過程如下:
(1)為避免計算過程中眼睛上方眉毛對定位結(jié)果的影響, 算法在確定上下眼瞼邊緣, 從右眼檢測區(qū)域EMNH
的最下方一行像素開始向上搜索,逐行從左至右統(tǒng)計每行中灰度值等于1 的像素個數(shù), 并將第i 行中灰度值為
1 的像素個數(shù)之和存放在數(shù)組Nc [i] 中, 規(guī)定右眼檢測區(qū)域EMNH 的最下方一行為第0 行, 即i=0 ; 每搜索統(tǒng)計完一行后i 自動加1。
(2) 對當(dāng)前第i 行中灰度值等于1 的像素的個數(shù)之和進(jìn)行統(tǒng)計計算, 如果:
3 實驗與分析
為驗證眼睛疲勞特征檢測算法的有效性,在構(gòu)建的ARM+DSP系統(tǒng)上對采集到的視頻圖像進(jìn)行實驗驗證。在滬寧高速南京段的實驗結(jié)果表明,該系統(tǒng)將算法處理時間控制在50 ms以內(nèi),取得了良好的實時效果,疲勞駕駛檢測正確率達(dá)97.6%。部分圖像的眼部區(qū)域檢測結(jié)果如圖4所示,其中,第一行為人臉檢測后的面部定位圖像,第二行為經(jīng)Sobel邊緣檢測后的眼部二值圖像,第三行為得到的眼部邊界定位圖像。
通過觀察發(fā)現(xiàn),通常情況下,駕駛員在睜眼和閉眼時,左、右眼的睜閉情況是同步的,即同時睜開或同時閉合。因此,在對眼睛睜閉狀態(tài)進(jìn)行判斷時,為減少計算量,僅對左眼的睜閉情況進(jìn)行判斷。針對圖4所示的眼部區(qū)域檢測結(jié)果,利用式(8)計算其左眼睜閉度的大小,計算結(jié)果如表1所示。
由表1可知,圖4中第一列和第二列所示的眼睛閉合時的睜閉度值明顯小于第三列和第四列所示的眼睛睜開時的睜閉度值。故只要選擇合適的閾值,根據(jù)眼睛睜閉度值的大小,就可對駕駛員眼睛的睜閉狀態(tài)進(jìn)行有效判斷。
本文在ARM+DSP系統(tǒng)上實現(xiàn)了基于眼部特征的疲勞駕駛檢測算法。利用基于膚色聚類的臉部檢測算法確定臉部邊界,采用一種簡單有效的改進(jìn)積分投影算法,實現(xiàn)了駕駛員眼部睜閉狀態(tài)的有效判定和疲勞駕駛的實時檢測。