周永修,張 蓮,高梓翔,陳大孝
(重慶理工大學 電子學院,重慶 400054)
一種由粗略到精確的瞳孔定位算法
周永修,張 蓮,高梓翔,陳大孝
(重慶理工大學 電子學院,重慶 400054)
針對現階段實現瞳孔精確定位算法過于繁瑣的問題,提出一種由粗略到精確的瞳孔精確定位算法。首先用灰度積分算法粗略找出人眼部位在人臉上的大概位置,然后用Hough變換定位出人眼瞳孔中心的精確位置,接著用Harris角點檢測算法對眼角點進行定位,最后通過瞳孔與眼角點的相互坐標定位出人眼瞳孔的精確位置。通過matlab對所提算法進行檢驗,證明了該算法是一種實現簡單、定位精確的算法。
瞳孔精確定位;灰度積分投影;Hough變換;Harris角點檢測
對眼睛及其運動的研究是了解人類視覺機制、理解人的情感和行為以及基于眼動的人機交互等問題的關鍵。人眼檢測與跟蹤是人臉識別、表情識別、眼動分析、虹膜識別等技術的必要步驟,涉及圖像處理、計算機視覺、模式識別等多個學科。
近年來眼睛定位算法很多,其中比較典型的有基于人體測量學標準的方法[1],基于膚色模型的檢測方法[2],基于訓練數據的統計學習方法[3]。其中基于統計學習的算法又是現階段人眼檢測算法的熱點,因為這類方法適用性較強,在人工智能及模式識別領域都有較為深入的研究。將基于統計學習的算法應用于人眼檢測主要有Adaboost算法[4]和Deep learning算法[5],這兩種算法在人眼測量領域都有不錯的效果。
但上述算法基本都是對于瞳孔位于人眼正中的人臉圖像進行定位,不能精確檢測瞳孔轉動時的精確位置。為了瞳孔精確定位及跟蹤的要求,本文提出了一種由粗略到精確的瞳孔精確定位算法,該算法主要思想是由粗略到精確一步一步地對瞳孔進行精確定位,每一步都選擇最合適的算法進行瞳孔精確定位。
文中所做的人眼檢測是基于已經提取得到的人臉圖像,文中采用Adaboost算法提取人臉圖像[6]。
現階段的人眼粗略檢測方法大致可以分為基于統計的方法和基于圖像處理的方法。基于統計的方法也可稱為基于學習的模式識別處理方法,主要算法有Adaboost算法和Deep learning神經網絡算法。這類方法的特點是算法智能化,對所處理的圖片質量要求較低,對各種姿勢的人眼檢測都具有較好的效果;但是基于學習的方法都有需要大量的訓練樣本,以及訓練過程和分類器構成復雜的缺點。在人眼粗略檢測的過程中,檢測精度要求并不高,但是對檢測速度具有很高的要求,所以本文采用基于圖像的處理方法。
1.1 垂直方向上的人臉灰度梯度積分投影
由于眼睛是人臉垂直方向上灰度積分變化最大的區域,所以用灰度積分投影可以很方便地找出眼睛在人臉垂直方向上的位置。垂直方向上人臉灰度積分投影表達式為:

式I(x,y)中表示圖像第x行、第y列的灰度值,W表示圖像的寬度,Py(x)表示圖像第x行的灰度積分值,其曲線如圖1(a)所示。
可以看到,根據普通的灰度積分投影并不能準確找到垂直方向上人眼的位置,因為普通灰度積分只能對每一行的灰度值進行簡單累加,并不能反應每一行的灰度值變化情況。于是本文對圖像每一行進行梯度值計算,并計算灰度梯度積分投影。圖像的梯度值通過用所求像素的后幾個像素的平均值減去前幾個像素的平均值得到,具體算法用構造尺度不變的梯度算子與圖像卷積實現:
1)計算尺度不變梯度算子L的長度l:

式中round算子表示取整函數。
2)構造尺度不變梯度算子L,式中n表示算子的序列號:

3)用梯度算子與原圖像I進行卷積后得到圖像的梯度圖I′:

4)計算垂直方向上的人臉灰度梯度積分投影P′y(x):

最終得到的灰度梯度積分投影曲線如圖1(b)所示。可以看出眼睛位置的灰度梯度積分投影明顯大于其他位置的梯度積分值,找到曲線的最大值即可定位眼睛在人臉垂直方向上的位置。

圖1 垂直方向灰度積分投影與灰度積分投影對比圖
1.2 水平方向上的人臉灰度積分投影
計算水平方向上的人臉灰度積分投影時,先對圖像作提取邊緣值處理。提取邊緣值的算法很多,現階段大致有Sobel算法、Prewitt算法、Laplacian of Gaussian Roberts算法、Zero-Cross算法和Canny算法。各類算法的基本思想都是采用構成的算子與圖像作卷積,然后重新計算圖像的灰度值,最后選取合適的閥值判斷圖像的邊緣點;不同之處在于不同的算法選取了不同的卷積算子。論文采用Sobel算法實現邊緣提取的功能。Sobel算子為:

首先用Sx和Sy分別與原圖像作卷積得到原圖像每一像素的橫向及縱向梯度值Gx和Gy:

然后計算每一像素的新的灰度值:

最后選取合適的閾值判斷該點是否為邊緣點。所得的二值化圖像如圖2所示。由于圖像人臉邊界處存在灰度值的像素點遠高于其他地方,所以可以得到圖2所示的積分投影曲線,通過曲線的左右兩個峰值位置確定人臉的兩個左右邊界。

圖2 人臉水平方向邊緣點積分投影圖
分別通過垂直方向和水平方向的積分投影確定眼睛在人臉中的位置后,得到人眼粗略位置如圖3所示,以便下一步瞳孔精確定位。

圖3 人眼粗略位置效果圖
檢測瞳孔前先將檢測到的人眼粗略圖像分成左右兩個圖像分別進行檢測,然后對得到的圖像作Sobel算子提取邊緣值處理。得到如圖4所示的結果。

圖4 左右眼邊緣值提取圖
從圖4可以看到,人眼瞳孔邊緣呈一個很規則的圓形,求得瞳孔邊緣的圓心即可得到瞳孔中心所在的位置。本文采用Hough變換求取瞳孔中心位置。Hough變換求圓心的基本原理:根據圓的數學表達式:

可以知道,確定圓心坐標(a,b)及圓的半徑r后,可以求得圓周上所有點(x,y)的坐標。反過來,知道了圓周上一點(x,y),可以求出過這點的所有圓的方程,并用(a,b,r)表示。找到對應圖片上點(x,y)最多的圓的方程(a,b,r),即可求出圖片上瞳孔所在圓形的圓心坐標。具體實現方式如下:
1)建立一個三維數組(A,B,R)用以統計每個圓方程所對應的圖片上的點(x,y)的個數。其中A,B分別取圖片的高度和寬度,R取A/2和B/2的較小值。
2)遍歷圖像(x,y),將每個點(x,y),可能所在圓的方程(a,b,r)存入數組(A,B,R)中。
3)找出數組(A,B,R)中的最大值(a,b,r)即為瞳孔所對應的圓方程,(a,b)坐標即為瞳孔中心所對應的坐標。
最終求得的瞳孔中心如圖5所示。

圖5 瞳孔中心位置定位圖
求得瞳孔中心位置的坐標后需要找到合適的坐標軸,將瞳孔所在位置以坐標的形式表示出來。由于坐標軸的建立標準需要與瞳孔的位置相對不變,文中選擇以左右兩個內眼角點連線中點作為坐標原點,以眼角點連線作為x軸建立坐標系,以瞳孔半徑為單位1,將瞳孔位置映射到新的坐標系中。
現有的角點檢測方法有Harris角點檢測算法[7-8]、Susan算法和CSS算法,本文采用Harris算法檢測眼角點的位置。根據Harris算法的基本原理,可以將圖像上的點分為3類:位于平坦區域的點,這類點的灰度值在水平方向和垂直方向上的變化率都不大;位于邊緣區域的點,這類點的灰度值僅在水平方向或垂直方向上的變化率較大;位于角點位置的點,這類點的灰度值在水平方向上和垂直方向上的變化率都很大。根據這種方法,可以區別出圖片上的角點。具體實現方法如下:
1)選擇合適的區域I作為眼角點的待檢測區域。
2)分別構造水平方向的梯度算子Hx和垂直方向上的梯度算子Hy。其中梯度算子的構成可以選擇普通Harris角點提取算子(式9)和改進的Harris角點提取算子(式10):

3)用構造的水平方向的梯度算子Hx和垂直方向上的梯度算子Hy分別對圖像I進行卷積得到圖像的水平梯度矩陣Ix和垂直梯度矩陣Iy:

4)用高斯平滑算子對圖像再次進行卷積得到M矩 陣:

5)根據矩陣M計算角點函數R:

其中k為經驗值,通常取0.04~0.06,det(M)表示對矩陣M求行列式,ktr2(M)表示求矩陣M的跡。
6)找到滿足條件的點作為角點:R值大于某一設定的閥值;R值是某一區域的極大值。
7)通常情況下求得的角點不止一個,由于眼角位置的灰度值是區域中較小的地方,因此選擇所求得角點位置灰度值最小的坐標作為眼角點的坐標。
最終得到的眼角點位置如圖6所示。

圖6 眼角點定位圖
將檢測到的眼角點坐標與瞳孔坐標進行坐標變換,最終得到瞳孔精確坐標的位置如圖7所示。對比原圖片可以看到,雖然照相機位置相對于人臉不是水平放置,但是通過坐標變換,可以將瞳孔中心位置變換到同一水平方向。

圖7 瞳孔精確位置坐標圖
本實驗將所用算法在matlab上進行編程驗證,圖片采用普通攝像頭獲取的圖像,并選擇不同瞳孔姿勢的人臉進行測試,最終實驗結果如圖8所示。

圖8 不同瞳孔位置及眼角點定位圖
本文提出了一種由粗略到精確的人眼瞳孔定位算法。依次利用灰度積分算法,Hough變換,Harris角點檢測算法對瞳孔進行精確定位。通過在matlab上的算法驗證,證明了該算法是一種實現簡單、定位精確的算法。本文的后續研究將研究瞳孔精確跟蹤算法,利用本文得到的瞳孔精確位置也將作為瞳孔精確跟蹤的基礎。
但在實驗過程中同時發現,由于眼瞼部位對瞳孔的遮擋,可能存在Hough變換檢測瞳孔中心時定位不準的情況,這是在以后的研究中需要優化解決的問題。
[1]Wu J,Zhou Z H.Efficient face candidates selector for face detection[J].Pattern Recognition,2003,36(5):1175-1186.
[2]Yuseok Ban,Sang-Ki Kim,Sooyeon Kim,et al.Face detection based on skin color likelihood[J].Pattern Recognition,2014,47(4):1573-1585.
[3]MahirFaikKaraaba,Lambert Schomaker,Marco Wiering.Machine learning for multi-view eye-pair detection[J].EngineeringApplicationsofArtificialIntelligence,2014,33:69-79.
[4]龍伶敏.基于Adaboost的人臉檢測方法及眼睛定位算法研究[D].成都:電子科技大學,2008.
[5]林妙真.基于深度學習的人臉識別研究[D].大連:大連理工大學,2013.
[6]DU Cui-huan,ZHU Hong,LUO Li-ming,et al.Face detection in video based on AdaBoost algorithm and skin model [J].The Journal of China Universities of Posts and Telecommunications,2013,20(1):6-9.
[7]郭姝言,劉橋,盧進.一種改進的醫學圖像深度信息恢復算法[J].電子科技,2016(1):48-50.
[8]王小平,靜大海.基于二維局域波和角點匹配的多模態圖像配準[J].電子設計工程,2013(4):142-145.
A pupil precise localization algorithm from rough to precise
ZHOU Yong-xiu,ZHANG Lian,GAO Zi-xiang,CHEN Da-xiao
(School of Electronic Information and Automation,Chongqing University of Technology,Chongqing 400054,China)
Aiming at pupil precise localization algorithm is too complicated in present stage,put forward a pupil precise localization algorithm from rough to precise.First,according to grayscale integral projection of the face,the general location of the eyes can be determined quickly.Then use the Hough transform to locate the exact position of eye pupil center.Next,use Harris corner detection algorithm find the corner of the eye.Finally,determine the exact position of the pupil through the coordinate location of the pupil and eye corner.The proposed algorithm tested with the MATLAB,it is proved to be a simple,accurate positioning algorithm.
pupil location;grayscale integral projection;Hough transform;Harris corner detection
TN06
A
1674-6236(2016)15-0181-03
2015-09-02 稿件編號:201509019
重慶高校優秀成果轉化資助項目(KJZH14213);重慶市科技人才培養計劃(新產品研發團隊)(CSJC2013KJRC-TDJS40012)
周永修(1990—),男,重慶人,碩士研究生。研究方向:模式識別,圖像處理,計算機視覺。