陳加徐,陸永華,趙采儀,梁立鵬
南京航空航天大學 機電學院,江蘇 南京 210016
在開發一套基于眼球驅動與控制的電動病床位姿調節系統中,最重要的是將眼球的圖像轉化為可讀的信息,即利用圖像處理的方法實現對眼動數據的精確測量[1-5]。
近年來,隨著深度學習在圖像處理領域得到了廣泛的應用,一些新的算法不斷涌現。但是就眼動測量、注視點估計領域而言,精度與傳統方法差距較大,目前還不具有實際應用價值[6-8],未來將在這方面開展進一步的研究。
國外眼動測量設備采用的方法主要是“瞳孔中心-角膜反射法”(pupil center corneal reflection,PCCR)[9]。該方法利用近紅外光源照射人眼,結合亮暗瞳孔效應,進一步獲取瞳孔區域并確定瞳孔中心位置。在對眼球狀態的量化過程中,一般需要一個動點(隨視線變化的點)和一個靜點(在視線改變過程中保持不變的點)。PCCR 法的動點為瞳孔中心,靜點為光源在角膜反射的光斑。
這種方法對硬件要求高,設備昂貴,并且通常需要一個安裝有近紅外光源的專用頭盔。而本文需要開發一套針對癱瘓病人及老年人方便使用的系統。
本文采用優化的“虹膜中心-眼角點向量法”實現對眼動數據的測量。動點選取為虹膜中心點,靜點選取內眼角點,由于系統面向的對象是四肢癱瘓病人,所以靜點選取為內眼角點是合理且可行的。由于四肢癱瘓病人的特殊性,他們在眼球運動過程中,眼角點相對于臉部是一個絕對靜止的點。該方法在系統的復雜度上要遠遠低于PCCR 法,僅需要一臺帶電荷耦合器件(charge coupled device,CCD)相機的筆記本即可實現自然光源下對眼動的測量。
圖1 為癱瘓病人在注視屏幕不同目標點時,眼睛相應的狀態。紅色圓點表示虹膜中心在眼眶中的位置,黃色圓點表示內眼角點在眼眶中的位置,箭頭表示“虹膜中心-眼角點”向量??梢钥吹皆撗蹌酉蛄砍浞址从沉税c瘓病人看向不同位置時的眼球狀態。實現對該向量的測量將有助于反映病人內心的真實想法。圖2 為眼動向量示意圖。

圖1 病人看向不同目標時眼球狀態示意

圖2 虹膜中心-內眼角向量示意
對眼動數據的測量關鍵是找到虹膜中心和眼角點的位置,計算公式為

式中:Xe、Ye為某種眼球狀態下眼動向量的橫、縱坐標,Xiris、Yiris為算法定位出的虹膜中心在原圖坐標系中的橫、縱坐標,Xcorner、Ycorner為算法定位出的內眼角點在原圖所標系中的橫、縱坐標。
基于上述分析,本文從人臉定位、人眼定位、虹膜中心定位和內眼角點定位等4 個方面,分析了經典的算法存在的問題和缺陷。在此基礎上,提出了一種優化的自然光源下的眼動視覺測量方法。從筆記本CCD 相機獲取的低分辨率圖像,結合圖像處理的方法,實現眼動測量的流程如圖3 所示。

圖3 眼動向量測量流程
目前主要的人臉檢測方法采用的是基于Haarlike 特征的Adaboost 算法。
Haar-like 特征可以分為4 種:邊緣特征、線性特征、圓心環繞特征和特定方向的特征。
對于一張人臉圖像,可以用多個不同類型的Haar-like 特征來表示,每個Haar-like 特征值為

式中:fv(x)為第x個Haar-like 特征的特征值,wwhite為白色像素點的權重,wblack為黑色像素點的權重,p∈Rwhite為落在Haar-like 特征中白色區域的圖像像素點,p∈Rblack為落在Haar-like 特征中黑色區域的圖像像素點。
經過實驗,發現基于Haar 特征的Adaboost 算法在檢測人臉時,會將一些非人臉目標識別為人臉,部分樣本如圖4 所示。因此本文對該算法進行優化,采用基于膚色和Haar 特征的Adaboost 算法來進行人臉檢測,以降低誤檢率。圖5 是該算法流程圖。

圖4 人臉檢測錯誤結果

圖5 優化的人臉定位算法流程
由于Adaboost 算法檢測出的人臉感興趣區域(region of interest,ROI)是RGB 三通道圖像,為了進行膚色檢測,需要將其轉化為YUV(YCrCb)顏色空間,轉換公式如下:

根據前人經驗統計模型,膚色YCrCb 顏色空間中的Cr、Cb分量滿足橢圓模型,利用opencv 繪制出該橢圓模型,如圖6 所示。

圖6 膚色橢圓模型
在將人臉ROI 轉化為YCrCb 顏色空間后,只需要判斷像素點的Cr、Cb分量對應的坐標是否在橢圓內部,即可判斷該點是否是膚色,即

式中:Δ=1表示像素點是膚色點;Δ=0表示像素點不是膚色點;η(Cr,Cb)表示橢圓模型中(Cr,Cb)坐標處的灰度值,0 表示黑色,255 表示白色。
經過對大量的樣本進行分析發現,正確的人臉ROI 中,膚色點占的比例一般大于0.6,圖7 是部分樣本中膚色點占人臉ROI 像素點的比例圖。

圖7 膚色點占人臉ROI 比例
采用該算法進行人臉定位的效果如圖8 所示。

圖8 優化算法定位效果
在得到原始圖像后,即可進一步劃分人眼ROI。主流的人眼檢測算法采用的也是基于Haarlike 特征的Adaboost 方法,這種方法依然會存在將非人眼目標誤檢為人眼的情況。因此,本文采用先驗知識法進行人眼定位。前人根據人臉面部器官比例關系,總結出“三庭五眼”的比例關系。
本文在此先驗知識的基礎上,結合自己的人眼與人臉外接矩形的比例關系,分割出人眼ROI如下:

式中:xI、yI分別為人臉ROI 在原圖中的橫、縱坐標,wI、hI分別為人臉ROI 的寬、高,xL、yL分別為左眼ROI 在人臉ROI 中的橫、縱坐標,xR、yR分別為右眼ROI 相對于人眼ROI 的橫、縱坐標,wE、hE分別為人眼ROI 的寬、高。
圖9 是采用先驗知識法實現人眼定位的效果圖。

圖9 優化的先驗知識法定位人眼效果
目前,虹膜中心定位的算法主要有霍夫變換法[10]、積分投影法[11]和等照度線曲率法[12]等。例如積分投影法,過分依賴于閾值化方法的選取和閾值的設置,對實現穩定的虹膜中心定位不夠理想。因此,本文設計了一種優化的梯度中心法來定位虹膜重心,該算法的流程如圖10 所示。

圖10 優化的梯度重心法定位虹膜中心流程
從數學角度來看,設函數f(x,y)在平面區域D內有一階連續偏導數,則對于每一個點 (x,y)∈D,都可以得到該點處的梯度:

對于圖像而言,圖像灰度關于坐標(x,y)的函數不是連續的,對圖像灰度計算X、Y方向上的偏導數需要采用差分方法,本文中采用中心差分方法。
以圖像灰度對X求偏導數為例:

式中:g(x,y)為圖像坐標(x,y)處的灰度值;c為圖像的列數。對于圖像的左、右邊界,分別采用向前差分和向后差分方法計算。
一是各工程項目部領用工程材料時,均以工程管理部填列的大料單為依據,在特別情況發生時,存在超出限額部分未及時辦理審批手續的情況;二是工程管理部的大料單以設計管理部的設計圖紙為依據編制,領料單一出,就將材料悉數領出,存在未用材料存于企業倉庫或散于工地現場的情況,不利于施工企業采購資金的安排和材料存放安全;三是單個工程完工后辦理退料時,工程項目部往往將尚未用完的的散件直接退回,未能按照節約原則在下一個工程中進行充分利用,存在不愿領用可改造使用的散件而領用整件再分割使用的情況.
得到X方向和Y方向偏導數后,合成梯度大小為

式中gg(x,y)為圖像坐標(x,y)處的梯度大小。
計算動態閾值需要計算圖像梯度的均值和標準差,均值 μ反應了圖像的亮度,標準差 δ反映了圖像像素值與均值的離散程度:

X方向梯度歸一化的方法如下:

式中:gX為圖像X方向的梯度,ξ為計算動態閾值得到的梯度閾值。Y方向梯度歸一化方法同理。
圖11 為梯度重心法定位虹膜中心的原理示意圖。圖中灰色圓形表示虹膜圓,矩形框表示人眼ROI 矩形框。

圖11 優化算法定位虹膜中心示意
對于圖中虹膜邊界上的一個點,其梯度方向是水平向右的,對于人眼ROI 中的每一個像素點,都可以畫出一條指向該點的矢量線,線的數量為

可以看到,只有經過虹膜中心的線與梯度方向一致。數學上,對于矢量a和矢量b的點積有如下定義:

那么,對上述所有的像素點矢量線,計算其與梯度的點積,在矢量線長度一致的情況下,經過虹膜圓中心的矢量線顯然會得到更大的結果。
得到圖像梯度矢量域后,為了避免將非虹膜目標檢測為虹膜中心的情況,同時考慮到虹膜區域是人眼ROI 中最黑的區域,灰度值相對其他部分更低,根據灰度值對圖像梯度矢量域取權重:

式中wweight為權重值,越黑的區域權重值越大。
對人眼ROI 梯度矢量域找到最大值,就是虹膜中心所在的位置:

本文采用的優化梯度重心法定位虹膜中心的效果如圖12 所示。

圖12 優化的梯度重心法定位效果
眼角點可視為角點,角點的檢測算法有Harris角點法、KLT 角點法和Susan 角點法[12-13],其中,根據文獻[13],Susan 角點法在眼角點的定位上應用廣泛。
在實驗中,我們發現Susan 角點法定位眼角點時,過分依賴于相似度閾值和非極大值抑制閾值的選取,即在不同光照條件、對比度情況下,需要設置不同的參數。該方法不能穩定地檢測眼角點。因此在內眼角點的定位算法上,設計了一種優化的基于Dlib 特征點定位的方法。
Dlib 法一般用于人臉對齊等領域[14],本文中對該算法進行優化,應用到眼角點定位中。傳統的Dlib 特征點定位算法流程如圖13 所示,其人臉檢測采用的是Dlib 庫中自帶的人臉檢測器。在實驗過程中發現,該人臉檢測器與特征點預測模型的加載十分耗時,無法實現實時的眼角點定位。

圖13 傳統Dlib 人臉特征點定位算法流程
因此,本文將前述基于Haar-like 特征的Adaboost算法應用到Dlib 特征點定位算法中,并對Adaboost算法檢測出的人臉ROI 進行灰度化處理,輸入特征點預測模型。傳統的Dlib 算法通常需要定位68 個特征點,本文將特征點的數量降低為5 個,大大提高了算法的運行效率。
采用傳統Dlib 算法與本文優化算法實現眼角點定位的效果圖對比如圖14 所示。

圖14 不同算法眼角點定位效果對比
本文實驗將VS 2017 作為開發平臺,結合opencv和Dlib 庫函數,實現本文提出的優化算法,并與傳統算法進行比較。運行環境配置為Dell Inspiron 15-3537,采集人臉圖像的攝像頭為筆記本自帶的高清網絡攝像頭,編譯環境均選擇Release x64。
人臉定位算法評價指標上,采用誤檢率進行評價:

式中:Rface為算法的誤檢率;Nface為誤判為人臉的矩形框數;Tface為檢測出的所有人臉框數。
經過對光照條件、人臉數量、膚色等不一致的樣本進行統計分析,得到Adaboost 算法的人臉平均誤檢率為15.8%;本文優化算法的人臉平均誤檢率為7.8%。本文基于膚色檢測和Haar-like特征的Adaboost 優化算法與傳統算法相比,誤檢率降低了8%左右。
人眼定位算法采用人眼檢測正確率進行評價:

式中:Reye為人眼檢測正確率,Neye為正確檢測的人眼框數,Teye為圖像中所有的人眼數。
人眼定位算法比較試驗依然是在上一步人臉檢測基礎上進行的。本文基于先驗知識的優化人眼定位算法,只要人臉定位算法足夠準確,便可以穩定、快速地定位人眼ROI 位置,得到Adaboost算法的人眼檢測正確率為77.86%;本文優化算法的人眼檢測正確率為98.46%。本文優化算法比傳統算法的人眼檢測正確率提高了21%左右。
虹膜中心定位算法比較的樣本集選取BioID FaceDataBase V1.2 中的樣本,該數據庫的樣本分辨率為384 px×286 px,樣本格式為.pgm,并且提供了手動標記的左右眼中心坐標,方便我們進行算法的比較分析。
在虹膜中心定位算法中,由于不同樣本中人臉距離攝像頭的位置不一樣,帶來了雙眼瞳距的不一致,對算法定位出的虹膜中心點與真實中心點的距離進行歸一化處理:

式中:Riris為算法的準確度,Cr,x、Cr,y分別為手動標記虹膜中心在原圖中的橫、縱坐標,Ce,x、Ce,y分別為算法定位的虹膜中心在原圖中的橫、縱坐標,diris為手動標記的左、右眼虹膜中心歐氏距離。
傳統的積分投影算法與本文的優化算法虹膜中心定位的平均誤差如表1 所示。盡管積分投影法的誤差要低于本文優化算法,但由于經典算法的定位效果依賴于閾值的設置,不能實現穩定的定位效果。虹膜中心定位算法仍然推薦本文優化算法,兩者誤差僅為0.1 左右。

表1 傳統算法與本文優化算法平均誤差對比
由于內眼角點在人臉中并不是一個很明確的點,在醫學上也沒有標準的定義。內眼角點定位的準確性只能通過觀察來判斷,因此對于內眼角定位算法的比較,我們以算法的運行效率作為評價指標。
對于采集的原始人臉圖像,對不同算法第一次編譯運行正確定位出眼角點的運行時間進行統計,并取平均值,如表2 所示。

表2 單張圖像第一次編譯算法運行時間對比 ms
由于程序編譯的特殊性,對單張圖片的處理需要加載人臉檢測器、特征點預測模型等文件,經過試驗統計,本文優化算法對相關資源文件的平均加載時間約為957 ms。當將算法應用到視頻流時,預加載好資源文件,傳統Dlib 法視頻幀處理算法平均用時203.3 ms,本文優化算法視頻幀處理算法平均用時145 ms,每幀的運行時間提高了55 ms 左右。
實現自然光源下對眼動向量的精確測量,是開發一套基于眼球驅動與控制的病床位姿調節系統的第一步。本文分析了經典的PCCR 法應用到癱瘓病人眼動測量時的缺點,并基于“虹膜中心-內眼角”向量法,提出了一種面向癱瘓病人的優化且低成本的眼動測量方法。
1)根據眼動視覺測量方法的實現步驟,分別從人臉定位、人眼定位、虹膜中心定位和內眼角點定位幾個方面,分析了經典的算法存在的問題,提出了本文的優化算法,并與傳統算法進行比較。
2)實驗表明,與傳統算法相比,本文優化算法在人臉定位上將誤檢率降低了8%左右,人眼檢測的準確率提高了21%左右,虹膜中心上提高了定位穩定性的同時,誤差僅相差0.1 左右;同時,視頻幀眼角定位時間上縮短了55 ms 左右,為實現一套實時準確的眼球驅動控制系統奠定了基礎。