朱維寧,任明武
(南京理工大學 計算機科學與技術學院,江蘇 南京210094)
本文提出了一種基于近紅外圖像的人眼定位算法。目前基于可見光環(huán)境下的人眼定位算法的研究受光照強度影響比較大,而且在夜間很難在圖像中找到人眼,因此這些方法很難有效地識別駕駛員的行車狀態(tài)。采取近紅外光源照射人眼時,瞳孔吸收了大部分紅外光,而虹膜反射的比較多,這樣在人眼位置就會出現(xiàn)亮瞳特性,利用此特性可以檢測人眼[1]。
目前用與人眼定位的方法有很多種,主要有基于模版匹配的方法、基于統(tǒng)計的方法以及基于規(guī)則的方法。文獻[2]先對紅外圖像通過投影找到人臉區(qū)域,然后找出眉眼區(qū)域,最后根據(jù)梯度特征精確定位出人眼。文獻 [3]是先在具有亮瞳與暗瞳特性的圖像里做差分,然后選擇眼睛的候選區(qū)域,根據(jù)眼睛的幾何特性去除一些候選區(qū)域,最后用SVM分類器檢測到雙眼。文獻 [4]在只有亮瞳的圖像的面部圖像里,先對圖像進行二值化,然后進行區(qū)域標記再根據(jù)人臉幾何特征找出人眼。人眼相對于整幅圖像所占面積比較小很難直接檢測到,因此可先檢測到人臉,再根據(jù)人臉區(qū)域檢測到人眼。文獻 [5]認為在虹膜與鞏膜的結合處的像素可形成一個圓,而且這些圓的像素值幾乎一樣,即是接近等強度的,因此根據(jù)這一特性可以準確定位到人眼中心。
本文是在整個圖像中直接定位人眼,具體的算法流程如圖1所示。
圖1 算法
文獻 [6]的方法,采用隔行掃描相機,配備兩個照明光源,當臨近相機鏡頭的紅外燈組點亮時,得到亮瞳孔圖像,內圈熄滅時,得到的是暗瞳孔圖像。于是通過設置相機就能得到瞳孔處亮暗相間的連續(xù)視頻。而本文所使用的都是具有亮瞳效應的圖像,如圖2所示,分辨率為600×450,可以運用形態(tài)學上的開運算去除瞳孔上的較亮的區(qū)域,得到的結果如圖3所示。經過差分,圖像中大部分區(qū)域就會被排除,如圖4所示。
圖2 原圖
圖3 開運算圖像
圖4 差分圖像
接下來就是對差分圖像進行二值化。這里閾值的選取十分重要,太小容易丟失瞳孔候選區(qū)域,太大則會產生很多噪聲,導致后面算法復雜度的增加。本文采取的方法是:對當前圖像的像素值進行直方圖累積,取一定數(shù)量的最亮像素,其余像素值設為0。由于本文圖像背景復雜,實驗發(fā)現(xiàn)選取前500個最亮像素較為合適。瞳孔區(qū)域面積較小,可以把二值圖像里連通區(qū)域面積大的像素值也設為0。結果如圖5所示。
圖5 二值化圖像
二值化后的圖像會出現(xiàn)多個瞳孔候選區(qū)域,本文根據(jù)圖5獲得每個候選區(qū)域的坐標位置,在原圖上用子窗口覆蓋這些區(qū)域。由于瞳孔不會出現(xiàn)在圖像的邊界附近,這樣可以排除一部分離邊界比較近的候選區(qū)域。如果一些子窗口重疊得較多,則只需保留其中一個。得到的結果如圖6所示。接下來的任務就是找出包含人眼的子窗口。
圖6 瞳孔候選區(qū)域標記
本文所采用的是基于PCA和SVM[7]的人眼檢測算法。選取468張包含人眼的正樣本圖片以及869張負樣本圖片進行訓練。先對圖像進行Gabor變換[8],這樣得到的圖像更平滑,有利于人眼的識別。由于眉毛經常被誤檢為眼睛,為了提升SVM的檢測率,本文將人眼的檢測區(qū)域放大至包含眉毛的區(qū)域。為了使子窗口能覆蓋眉毛區(qū)域,設定其寬度為65,高度為75,正負樣本的尺寸與子窗口保持一致。對樣本使用RBF核函數(shù)和交叉驗證的方法進行訓練,找出最佳的懲罰參數(shù)c和核參數(shù)g。訓練之后,得到一個SVM分類器進行測試,把分類錯誤的圖片加到訓練集,得到第二次的分類器。如此進行幾次,得到了一個性能很好的分類器。實驗發(fā)現(xiàn),此分類器可以很好地對圖像的候選區(qū)域進行分類,準確率達到97.8%。結果如圖7所示,圖中去除了不包含人眼的子窗口。
圖7 瞳孔區(qū)域標記
雖然亮瞳效應是一個非常好的可以利用的特征,可是在有的一些圖像中,由于人眼的位置并不是正對著主動光源而是有些偏離角度,這時候會在鞏膜附近出現(xiàn)一個明亮區(qū)域;另一方面,因為主動光源的存在,戴眼鏡時將會產生不同程度的反光,經常會產生比較大的亮斑干擾;此外由于角度關系,人眼可能只吸收沒有反射紅外光即沒有亮瞳效應;還有一種情況,當人眼處于半閉合或閉合狀態(tài),圖像中會沒有瞳孔。此時,若再用上述方法,差值圖像里很難出現(xiàn)瞳孔區(qū)域。
廣義的對稱變換[9]可以在不使用任何先驗知識的情況下檢測到圖像里感興趣的區(qū)域,但是計算量很大且比較耗時。本文所采用的是快速輻射對稱變換法[10]。利用快速輻射對稱變換首先是計算原始圖像的梯度圖像,然后根據(jù)圖像尺寸在1個或多個尺度上尋找原始圖像中輻射對稱性較強的點。根據(jù)梯度圖像,設像素點為p,則p的正影響像素為沿著p的梯度方向與p相距n的像素,與梯度方向相反的像素則為p的負影響像素。定義如圖8所示。其中n=2。
設像素坐標為p,梯度為g(p),定義正影響像素
圖8 正負影響像素坐標
負影響像素
式中:round()指的是取整。在每一個尺度n上,引入兩個中間變量,分別為正負方向映射矩陣On和梯度映射矩陣Mn。On和Mn中坐標p+ve(p)所對應的值分別加1和, 坐 標 p-ve(p)所 對 應 的 值 分 別 減 1 和。即
將Fn和An卷積后,得到圖像在n上的對稱變換結果
其中
An是二維高斯函數(shù)。高斯函數(shù)的標準差σ=0.28n。參數(shù)α用來調節(jié)候選點的個數(shù)。經過實驗比較,選取α=1。最后將對稱變換結果相加得
圖9 對稱映射
實驗選取n=1、3和5,結果如圖9所示。對于亮的徑向對稱區(qū)域S中的值為正數(shù);相反,對于暗的徑向區(qū)域,S中的值為負數(shù)。瞳孔較周圍像素值低,呈輻射對稱,所以S中瞳孔中心附近的值為負數(shù)。設min為S中最小值。對S進行二值化,圖像較為復雜,實驗表明可把閾值設定為0.39*min,S中小于閾值的置為255,其余設置為0。所得結果如圖10所示。最后也是根據(jù)SVM分類器找到包含人眼的子窗口。
圖10 二值化的對稱映射
在本文中,經過開運算后得到的圖像如圖3所示,可以看出瞳孔較其周圍比較暗,因此瞳孔邊界點的梯度方向向外指,而沿著這些邊界點的梯度方向直線一定會交于瞳孔中心[11]。根據(jù)這一性質,假設瞳孔區(qū)域的圓心坐標為c,xi為其邊界點坐標,di為單位位移向量,gi為單位梯度向量,c為圓心坐標,如圖11所示。
圖11 示例
當c是圓心時,di與gi同向。由點積的性質知 (digTi)2在同向時取得最大值。于是瞳孔的圓心位置c*可以由下面的表達式求出
其中
歸一化得:
由于圖像中可能還存一些小的連通區(qū)域,它們與背景的差別也比較大,這樣目標函數(shù)并不能準確地定位到瞳孔中心。為了精確定位到瞳孔中心,可以先對圖像進行高斯平滑,此方法可以對灰度矩陣的每個像素點做一定范圍鄰域內的加權平均,可有效消除高斯噪聲。本文設定的方差Sigma=1,Knersize=3用來確定核矩陣的維數(shù)。設得到平滑后的圖像矩陣為I*。由于圓心處的灰度值比較小,于是可以對式 (10)加一個權值w,其中w=255-I*(x,y),這樣在圓心處的權重就會比較大。最終的目標函數(shù)如下
該算法需要四重循環(huán),下面是對此算法做出的一些設定。有上面步驟得到的子窗口中包含眉毛,對瞳孔定位會產生一定的影響,因此在定位之前先縮小子窗口的尺寸,這樣不僅排除一些噪聲點的干擾還減少了運算時間。由于瞳孔比較暗且所占面積較小,可設定閾值pixelThresh,pixelThresh為所檢測區(qū)域像素和的平均值,這樣當xi=[x,y],有I*(x,y)<0.6*pixelThresh。本文的梯度圖像用Sobel算子求得,瞳孔邊界處的梯度比較大,可忽略梯度值小于最大梯度20%的點,令這些點的gx=0,gy=0。最后一點,由點積的性質可知:如果兩個向量方向相反,那么它們的點積為負。根據(jù)圖6,gi的方向背離圓心向外指,假若c為圓心,則得到的di與gi會具有相同的方向。因此若算出的digTi<0,可設置digTi=0,這樣很大程度上減小了計算量。
本文采集了320張近紅外圖片,其中包括了98張戴眼鏡的圖片。部分實驗結果如圖12所示。
圖12 部分實驗效果
實驗去除人眼完全閉合的圖片,在不戴眼鏡的圖片里,算法定位率達到了98.6%;而在戴眼鏡的圖片里,算法定位率下降到了89.7%.本文采取了式 (17)來衡量眼睛定位的準確性
式中:dleft,dright——算法定位到的左右兩眼中心與手工標定的人眼中心的距離,w表示手工標定的左右兩眼中心之間的距離。如果e<0.25,則認為檢測結果是正確的,否則錯誤。本文測試了e在不同值的情況下,算法定位的準確率,如圖13所示。當e∈ {0.05,0.10,0.15.0.20,0.25},最上面曲線表示測試的圖片有較明顯的亮瞳孔,最下面曲線表示測試的圖片中亮瞳孔不明顯或有鏡面反射等情況,中間曲線表示平均的定位準確率。
圖13 定量分析
本文算法分別與文獻 [2,3]的算法做了對比。文獻[2]先用積分投影方法分割出人臉區(qū)域,但此方法沒有考慮到具有復雜背景的圖像,采用Robert邊緣檢測求梯度最大值的方法很難精確定位到瞳孔中心。文獻 [3]用SVM分類器直接檢測雙眼,很容易受到眉毛、深色鏡框的干擾,而且沒有考慮鏡面反射、是否有亮瞳等情況。3種算法定位結果見表1。
表1 實驗結果定位率比較 (%)
本文介紹了一種基于近紅外圖像的快速人眼定位算法,首先,根據(jù)亮瞳效應獲取瞳孔的候選區(qū)域,然后通過SVM算法檢測到瞳孔區(qū)域,最后用此區(qū)域的梯度信息和瞳孔幾何特征定位到瞳孔中心。由于在某些角度,瞳孔沒有反射紅外光以及配戴眼鏡會產生嚴重的反光,對算法的定位率影響很大。為了提高實驗的精確性和魯棒性,加入了對稱變換來獲取瞳孔的候選區(qū)域。本文算法很難定位完全閉合的人眼;對于鏡框顏色深且眼睛閉合程度大、鏡面有很大亮斑的情況,瞳孔中心的定位率比較低。如何解決這些問題是本文后續(xù)研究的重點。
[1]Stan Z Li.Illumination invariant face recognition using near-infrared Images [J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2007:627-639.
[2]XIE Xiuzhen,TANG Jin,CHEN Shouming,et al.Method for eyes localization in infrared image [J].Computer Engineering and Applications,2011,47 (5):202-205 (in Chinese).[謝秀珍,唐琎,陳守明,等.一種在紅外圖像中定位人眼的方法 [J].計算機工程與應用,2011,47 (5):202-205.]
[3]JI Qiang,ZHU Zhiwei,Kikuo Fujimura.Real-time nonintrusive monitoring and prediction driver fatigue [J].IEEE Trans on Vehicular Technology,2004,53 (4):1052-1068.
[4]TIAN E,MO Yimin,LIAO Zhanghua.Inafared-based realtime eye detection for driver observation [J].Computer Engineering,2007,33 (7):225-257 (in Chinese). [田娥,莫易敏,廖張華.基于紅外光源的駕駛員眼睛實時監(jiān)測 [J].計算機工程,2007,33 (7):225-257.]
[5]Roberto Valenti,Theo Gevers.Accurate eye center location through invariant isocentric patterns [J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2012,34 (9):1785-1798.
[6]YANG Youlin,WANG Yuanqing,F(xiàn)AN Kefeng.Real-time
detection of eye position for stereoscopic display [J].Modern Electronics Technique,2012,35 (18):125-127 (in Chinese).[楊友林,王元慶,范科峰.用于立體顯示的人眼位置快速檢測 [J].現(xiàn)代電子技術,2012,35 (18):125-127.][7]LI Lei.A fast face detection method based on PCA [J].Journal of
Qingdao University of Science and Technology,2010,31 (5):528-532 (in Chinese).[李磊.基于PCA降維的SVM 人臉快速檢測方法 [J].青島科技大學學報,2010,31 (5):528-532.][8]LIU Peng,JIANG Chaohui,XIONG Jin.Algorithm of eye localization and eye state recognition in driving fatigue detection[J].Computer Engineering and Applications,2010,46 (24):185-188 (in Chinese). [劉鵬,江朝輝,熊進.用于駕駛疲勞檢測的人眼定位及狀態(tài)判別算法 [J].計算機工程與應用,2010,46 (24):185-188.]
[9]Bai Li,Shen Linlin,Wang Yan.A novel eye location algorithm based on radial symmetry transform [C]//International Conference on Pattern Recognition,2006:511-514.
[10]Gareth Loy,Alexander Zelinsky.A fast radial symmetry transform for detecting points of interst [J].Pattern Analysis and Machine Intelligence,2003,25 (8):959-973.
[11]Fabian Timm,Erhardt Barth.Accurate eye center location by means of gradients [C]//Proceedings of the Int Conference on Imaging Theory and Applications,2011:81-86.