朱遠知 陸汝華 李 佳 李亞蘭*
(1. 湘南學院電子信息與電氣工程學院,湖南 郴州 423000;2. 湘南學院軟件通信工程學院,湖南 郴州 423000)
視線檢測與跟蹤,是指借助電子設備定位人的視線方向,然后跟蹤并記錄視線方向的變化。市場上多用眼動儀等專業硬件設備與其配套軟件來實現,主要產品有接觸式測量儀、非接觸式測量儀、非接觸電極測量儀三種。為了降低視線追蹤系統對硬件設備的要求并減小成本,使其具有更強的普適性。本文設計了一個視線檢測與追蹤系統,結合基于回歸樹的人臉對齊算法和自動校準算法自適應檢測瞳孔輪廓,根據水平比和眨眼比判斷瞳孔位置和視線方向,僅需要一臺計算機和一個攝像頭就可以實現視線的檢測與跟蹤。
程序流程如圖1所示,讀取視頻幀并提取幀HOG特征并進行人臉檢測;采用ERT 算法對人臉特征點進行標記;建立眼睛掩膜分離出眼睛部分;設計自動校準算法,求出最佳閾值以得到最優虹膜圖像;檢測虹膜輪廓和計算虹膜質心以此得出瞳孔中心點坐標;建立一個水平比和眨眼比,借此判斷瞳孔的位置,以判定視線位置實現視線檢測與跟蹤;反復循環以上步驟;并將判定結果及瞳孔位置實時反饋在視頻窗口。
對采集到的圖像進行預處理,先取出我們需要的部分(人臉),將圖像灰度化如式1所示,其中Gray表示某點灰度,RGB分別代表圖像中某一點的三原色。
改善檢測窗口灰度效果和光照不均勻情況,將圖像正則化,對檢測窗口進行伽馬(Gamma)校正,正則化如式2所示。
其中γ為伽馬值,I(x,y)為檢測窗口像素點(x,y)的灰度值,Y(x,y)表示進行伽馬校正后點(x,y)的灰度值。
弱化光照的干擾,對大小和方向的值求梯度進一步優化。
其中Gx(X,Y)表示輸入圖像中像素點(x,y)處的水平方向梯度,Gy(x,y)輸入圖像中像素點(x,y)處的垂直方向梯度,I(x,y)輸入圖像中像素點(x,y)處的像素值,通過Gx(X,Y),Gy(x,y)計算出G(x,y)表示像素點(x,y)處的梯度幅值和α(x,y)表示像素點(x,y)處的梯度方向。
將圖像分為小的細胞單元,每個細胞單元計算一個梯度方向直方圖,將這些梯度的幅值相加得到梯度強度,統計每個細胞單元的梯度方向直方圖,進行相對鄰域歸一化,得到一個塊的梯度方向直方圖。計算所有塊的梯度方向直方圖即可得到HOG特征。通過HOG特征訓練得到人臉模型,再用HOG特征進行人臉檢測。
先取出人臉檢測后的圖片進行手動標點,作為模型的訓練數據集,假設代表經過HOG處理后圖像的上所有特征點形狀,利用級聯回歸建立模型。
其中表示迭代前預測出的特征形狀(坐標組成的向量),表示更新后預測的特征形狀,t 表示級聯級數,I 為圖像,rt是當前形狀與真實形狀的殘差,是當前級聯層的殘差形狀或坐標。
通過級聯的方式學習rt,求出效果最優的模型,其算法步驟如下:
(1)先初始化r0,設訓練數據為,學習率0<λ<1(λ∈R2p),利用下式對進行初始化。
(2)迭代更新rt:
(3)通過rik得到回歸方程,后進行迭代,更新如下:
(4)循環更新參數rt和,直到收斂或達到設定迭代次數,最后輸出:
訓練出模型后,對圖片進行標點,圖2。
提取特征點之后建立眼睛的掩膜,用預先制作的眼睛掩模與待處理圖像相乘得到眼睛圖像,眼睛圖像值保持不變,而區外圖像值都為0,效果如圖3。
通過分離虹膜和虹膜質心的計算來確定瞳孔的位置,最終實現視線跟蹤,為了更準確地分離虹膜,設計了一個自動校準算法找到最佳閾值。
2.4.1 自動校準算法
自動校準算法找出閾值的大小需算出虹膜占眼睛表面的比例,首先需區別出虹膜,使用處理后得出的圖像,求出虹膜占眼睛總面積的比值,用像素數量來代替面積。采用不同閾值求出眼睛的像素數量P1(圖4),再求出虹膜部分的像素數量P2,P2/P1就是虹膜占眼睛總面積的比值(進行非零像素點數統計,即對眼睛部分白色像素點數進行統計,再用總像素點數減去白色像素點數得出黑色像素點數,即得出虹膜部分像素點數,如圖5;返回虹膜像素值與眼睛部分像素值之比)。找出與平均虹膜(不同閾值虹膜比值相加取平均)占比最為接近的虹膜占比,將他所對應的閾值作為最終閾值,注意區分左右眼,分別求出左右眼的最佳閾值。
通過數據可知,該照片的最佳閾值為0.48。

表1 25組不同閾值求出的虹膜和眼睛部分像素數量實驗數據
2.4.2 檢測瞳孔中心點
瞳孔位于虹膜的中心,可由虹膜質心的坐標來代表瞳孔中心點的位置,再由瞳孔中心點坐標代表瞳孔位置最終實現視線跟蹤。虹膜質心可由虹膜輪廓得出,用掩膜后得出的圖像,求出其質心的坐標(圖6)。采用輪廓樹結構,求出所有輪廓,計算質心坐標:
其中m00 為零階矩,表示圖像的灰度質量,m10 與m01為一階矩。
2.4.3 判斷瞳孔位置與瞳孔狀態
計算出質心得出瞳孔中心點坐標后,再對瞳孔位置進行判定,將左瞳孔中心點橫坐標比上左眼寬度,得出左眼水平比,右眼同理,返回兩眼水平比值的平均值作為最終比值(大于0 小于1 的參數),記為水平比值,右視時水平比應為0,左視時水平比應為1(圖7)。
正常生活中,人的眼睛狀態會發生變化(睜閉眼),需要能實時地判斷眼睛當前狀態。根據Soukupová 和?ech 在2016 年發表的論文Real-Time Eye Blink Detection using Facial Landmarks,能夠得到反映眼睛特征點之間關系的數學公式,即眼睛縱橫比(EAR),其利用了實時人臉特征標記檢測,隨著人眼狀態發生改變,其標記的坐標位置也進行改變,具有實時性,如圖8、9所示。計算公式如下:
‖p2-p6‖表示p2(x1,y1) ,p6(x2,y2)兩點間的歐式距離(即求二維圖像中兩點之間的距離其余同理。
據統計,我國虹膜平均直徑大概為11.4 毫米,眼睛寬約等于30~34毫米,虹膜直徑與眼睛寬度比值大概為0.34,實驗檢驗得出:當水平比值在0.33~0.67之間,判定為中視;當水平比值在0 至0.33 之間,判定為右視;當水平比值在0.67~1之間,判定為左視。
實驗發現,如圖10所示,眼睛的縱橫比在眼睛張開的時候恒定在0.25左右,但是眨眼時會下降到接近0,所以當左右眼縱橫比的均值低于0.25時,判定為眨眼。
本文設計的程序代碼采用Python語言編寫,實驗在配置為CPU i7-9700 ,RAM 32G,顯卡2080ti 的Ubuntu 20.04系統PC機中終端運行,彈出視頻窗口。
實驗結果如圖11~14所示,系統可實時檢測和跟蹤人眼視線,并在視頻窗口中顯示瞳孔坐標和視線方向,操作便捷,所需硬件設備簡單。
本文通過提取視頻HOG 特征,訓練人臉模型并檢測人臉位置。結合ERT算法提取人臉特征點,從而建立掩膜分離眼睛,并自適應調整閾值檢測瞳孔輪廓。建立眼睛水平、縱橫比,計算瞳孔的位置跟蹤視線方向。該檢測跟蹤系統操作方便,降低了傳統算法對硬件設備的要求,促進視線追蹤系統的應用。