宋琴琴 楊國平
(上海工程技術(shù)大學(xué)機(jī)械與汽車工程學(xué)院 上海201620)
人眼追蹤在未來生活中的應(yīng)用是越來越多[1],如人機(jī)交互領(lǐng)域[2~4],當(dāng)我們的眼睛看到電腦屏幕時,電腦會自動開機(jī),我們再看一眼瀏覽器,電腦或許就幫我們打開了網(wǎng)頁。在醫(yī)療領(lǐng)域,患者無法用語言或者文字的形式和醫(yī)生交流病情,則可以用眼睛來代替手和嘴巴控制一些設(shè)備與人交流。安全保護(hù)領(lǐng)域,目前已有密碼解鎖,指紋解鎖[5~7],聲音解鎖等[8~10],那眼睛解鎖也是可以的。我們可以通過人眼的運(yùn)動狀態(tài)來設(shè)置更為復(fù)雜和安全的密碼。交通安全方面,判斷駕駛員是否處于疲勞駕駛狀態(tài)對道路公共安全至關(guān)重要。通過觀察瞳孔位置變化,以及眼睛的閉合狀態(tài),可判斷司機(jī)是否過勞駕駛[11~13]。人眼動態(tài)追蹤在未來是一種趨勢和潮流[14~16],涉及的領(lǐng)域也遠(yuǎn)不止前文所說的幾點(diǎn),隨著人工智能發(fā)展和該項技術(shù)的日趨成熟,將會應(yīng)用到更多的領(lǐng)域,滿足更多人的需求。
本文對視頻圖像首先進(jìn)行每一幀的圖像預(yù)處理,然后對預(yù)處理后的圖像二值化。接著通過瞳孔輪廓檢測和瞳孔中心定位實現(xiàn)人眼的動態(tài)追蹤。具體流程如圖1所示。
圖1 流程圖
本文對視頻圖像首先進(jìn)行圖像預(yù)處理,如灰度處理和高斯去噪。
彩色圖像是R、G、B三通道,灰度圖像是單通道,只含有亮度信息不含有彩色信息。在不影響圖片物體識別的基礎(chǔ)上,為了減少計算量,需要對圖像進(jìn)行降維即從彩色空間轉(zhuǎn)化為灰度空間,如圖2所示(選取視頻圖像里的一張圖)。
圖2 灰度圖
圖1 明顯可以看出還是有部分噪音存在,為了后續(xù)更好地對瞳孔進(jìn)行識別和定位,需要對灰度圖先去噪,平滑圖像。圖像去噪的算法很多,有雙邊濾波、均值濾波、中值濾波和高斯濾波等。經(jīng)過實驗發(fā)現(xiàn),本文采取高斯濾波算法的效果是最好的。高斯濾波是一種線性平滑濾波,主要用于消除高斯噪聲,一般應(yīng)用于圖像處理過程的減噪。高斯濾波其實就是對整張圖像進(jìn)行加權(quán)平均的一個過程,每一個像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后得到。高斯濾波的具體操作是用一個卷積核(模板)掃描圖像中的每一個像素點(diǎn),用模板確定的鄰域內(nèi)像素的加權(quán)平均灰度值去替代模板中心像素點(diǎn)的值。將灰度圖I和一個高斯核進(jìn)行卷積操作,公式如下:
其中*表示卷積操作,Gσ是標(biāo)準(zhǔn)差為σ的二維高斯核,定義為
經(jīng)過高斯平滑后如圖3所示。圖像明顯平滑了不少,且噪音減少。
圖3 高斯濾波去噪
視頻圖像經(jīng)過灰度處理和高斯去噪以后,為了凸顯目標(biāo)區(qū)域瞳孔,需要繼續(xù)進(jìn)行二值化操作。我們知道瞳孔的顏色和眼睛內(nèi)其他區(qū)域的顏色是有明顯區(qū)別的,瞳孔更偏黑色,虹膜偏黑褐色,鞏膜總是白色的,要想準(zhǔn)確地識別出瞳孔,需要選取一個合適的閾值把目標(biāo)和背景區(qū)分來,因此二值化處理中閾值的選擇至關(guān)重要。目前閾值選取有全局固定閾值和局部自適應(yīng)閾值兩種方法,本文采用了全局閾值函數(shù)來實現(xiàn),圖像選取一個合理的閾值,當(dāng)灰度級大于或等于閾值的像素點(diǎn)被標(biāo)記為目標(biāo)區(qū)域,否則為背景區(qū)域。經(jīng)過選取多個閾值進(jìn)行實驗發(fā)現(xiàn),當(dāng)閾值設(shè)置為9時,能準(zhǔn)確提取瞳孔區(qū)域,這時的效果是最好的。二值化處理后的結(jié)果如圖4所示,我們的目標(biāo)區(qū)域瞳孔在圖片中很容易被識別到。
圖4 二值化
然后對瞳孔上的所有輪廓進(jìn)行檢測,本文利用openCV自帶的findContours函數(shù)實現(xiàn)輪廓檢測。然后在檢測到的輪廓中找尋最大輪廓,如圖5所示。
圖5 瞳孔輪廓
在上一步瞳孔最大輪廓檢測完成后,在此基礎(chǔ)上繼續(xù)畫出輪廓外接矩形。在已檢測到的最大輪廓基礎(chǔ)上,找尋外接矩形的左上角坐標(biāo)()x,y以及矩形框的長w,寬h。通過w,h確定右下角坐標(biāo)
( )
x+w,y+h。最后通過這兩個坐標(biāo)點(diǎn)畫出矩形框,如圖6所示。
圖6 輪廓外接矩形
找到瞳孔外接矩形后,我們需要在矩形框內(nèi)定位瞳孔中心點(diǎn)。我們先找到矩形框的水平中線和豎直中線,它們的交點(diǎn)即是瞳孔中心點(diǎn)(十字線的交點(diǎn))。矩形框分為上,下,左,右四條線段。
其中像素點(diǎn)的坐標(biāo)是非浮點(diǎn)數(shù)并且必須是整數(shù),故涉及到坐標(biāo)點(diǎn)的標(biāo)注都使用int,表示整型。rows,cols是圖像的shape型,表示圖像的高和寬。定位后的瞳孔中心點(diǎn)位置如圖7所示。
圖7 瞳孔中心點(diǎn)定位
瞳孔中心點(diǎn)的位置確定后,眼睛的一系列運(yùn)動狀態(tài)就是瞳孔中心點(diǎn)位置的變化。當(dāng)眼睛往上看,水平線會上移;向下看,水平線會下移。眼睛往左邊看,豎直線會左移動;往右邊看,豎直線會右移動。本文實驗是人臉正對手機(jī)攝像頭平視拍攝的一段視頻里的右眼運(yùn)動狀態(tài)的部分視頻序列。為了驗證該算法是否有效,我們選取了倆個人的右眼(分別為右眼1和右眼2)都從平視狀態(tài)開始,眼球分別朝不同的方向運(yùn)動。當(dāng)輸入為視頻時,瞳孔位置的變化一幀一幀地顯示出來,本文選取了其中幾幀的若干張圖片,這幾張圖片對整個的眼動過程具有代表性。如圖8、9所示,通過觀察十字線的上下左右移動以及瞳孔中心點(diǎn)的移動,可以追蹤到人眼的目光,即人眼動態(tài)追蹤。
圖8 右眼1實驗結(jié)果
圖9 右眼2實驗結(jié)果
本文對視頻圖像里的人眼運(yùn)動狀態(tài)進(jìn)行追蹤。對視頻先進(jìn)行一系列圖像預(yù)處理操作方便后續(xù)對瞳孔位置的確定。再通過找瞳孔外輪廓,畫出輪廓外接矩形,確認(rèn)矩形中的十字線位置,十字線交點(diǎn)即瞳孔中心點(diǎn)。觀察視頻圖像里瞳孔中心點(diǎn)位置變化,追蹤人眼視向。實驗結(jié)果表明,通過該算法可以較快觀察到視頻圖像中人眼轉(zhuǎn)動時瞳孔中心點(diǎn)和十字線位置的變化,從而對眼動方向進(jìn)行追蹤。實驗證明該算法簡單有效,準(zhǔn)確率較高。