陳加徐,陸永華,趙采儀,梁立鵬
南京航空航天大學(xué) 機(jī)電學(xué)院,江蘇 南京 210016
在開發(fā)一套基于眼球驅(qū)動(dòng)與控制的電動(dòng)病床位姿調(diào)節(jié)系統(tǒng)中,最重要的是將眼球的圖像轉(zhuǎn)化為可讀的信息,即利用圖像處理的方法實(shí)現(xiàn)對眼動(dòng)數(shù)據(jù)的精確測量[1-5]。
近年來,隨著深度學(xué)習(xí)在圖像處理領(lǐng)域得到了廣泛的應(yīng)用,一些新的算法不斷涌現(xiàn)。但是就眼動(dòng)測量、注視點(diǎn)估計(jì)領(lǐng)域而言,精度與傳統(tǒng)方法差距較大,目前還不具有實(shí)際應(yīng)用價(jià)值[6-8],未來將在這方面開展進(jìn)一步的研究。
國外眼動(dòng)測量設(shè)備采用的方法主要是“瞳孔中心-角膜反射法”(pupil center corneal reflection,PCCR)[9]。該方法利用近紅外光源照射人眼,結(jié)合亮暗瞳孔效應(yīng),進(jìn)一步獲取瞳孔區(qū)域并確定瞳孔中心位置。在對眼球狀態(tài)的量化過程中,一般需要一個(gè)動(dòng)點(diǎn)(隨視線變化的點(diǎn))和一個(gè)靜點(diǎn)(在視線改變過程中保持不變的點(diǎn))。PCCR 法的動(dòng)點(diǎn)為瞳孔中心,靜點(diǎn)為光源在角膜反射的光斑。
這種方法對硬件要求高,設(shè)備昂貴,并且通常需要一個(gè)安裝有近紅外光源的專用頭盔。而本文需要開發(fā)一套針對癱瘓病人及老年人方便使用的系統(tǒng)。
本文采用優(yōu)化的“虹膜中心-眼角點(diǎn)向量法”實(shí)現(xiàn)對眼動(dòng)數(shù)據(jù)的測量。動(dòng)點(diǎn)選取為虹膜中心點(diǎn),靜點(diǎn)選取內(nèi)眼角點(diǎn),由于系統(tǒng)面向的對象是四肢癱瘓病人,所以靜點(diǎn)選取為內(nèi)眼角點(diǎn)是合理且可行的。由于四肢癱瘓病人的特殊性,他們在眼球運(yùn)動(dòng)過程中,眼角點(diǎn)相對于臉部是一個(gè)絕對靜止的點(diǎn)。該方法在系統(tǒng)的復(fù)雜度上要遠(yuǎn)遠(yuǎn)低于PCCR 法,僅需要一臺帶電荷耦合器件(charge coupled device,CCD)相機(jī)的筆記本即可實(shí)現(xiàn)自然光源下對眼動(dòng)的測量。
圖1 為癱瘓病人在注視屏幕不同目標(biāo)點(diǎn)時(shí),眼睛相應(yīng)的狀態(tài)。紅色圓點(diǎn)表示虹膜中心在眼眶中的位置,黃色圓點(diǎn)表示內(nèi)眼角點(diǎn)在眼眶中的位置,箭頭表示“虹膜中心-眼角點(diǎn)”向量??梢钥吹皆撗蹌?dòng)向量充分反映了癱瘓病人看向不同位置時(shí)的眼球狀態(tài)。實(shí)現(xiàn)對該向量的測量將有助于反映病人內(nèi)心的真實(shí)想法。圖2 為眼動(dòng)向量示意圖。
圖1 病人看向不同目標(biāo)時(shí)眼球狀態(tài)示意
圖2 虹膜中心-內(nèi)眼角向量示意
對眼動(dòng)數(shù)據(jù)的測量關(guān)鍵是找到虹膜中心和眼角點(diǎn)的位置,計(jì)算公式為
式中:Xe、Ye為某種眼球狀態(tài)下眼動(dòng)向量的橫、縱坐標(biāo),Xiris、Yiris為算法定位出的虹膜中心在原圖坐標(biāo)系中的橫、縱坐標(biāo),Xcorner、Ycorner為算法定位出的內(nèi)眼角點(diǎn)在原圖所標(biāo)系中的橫、縱坐標(biāo)。
基于上述分析,本文從人臉定位、人眼定位、虹膜中心定位和內(nèi)眼角點(diǎn)定位等4 個(gè)方面,分析了經(jīng)典的算法存在的問題和缺陷。在此基礎(chǔ)上,提出了一種優(yōu)化的自然光源下的眼動(dòng)視覺測量方法。從筆記本CCD 相機(jī)獲取的低分辨率圖像,結(jié)合圖像處理的方法,實(shí)現(xiàn)眼動(dòng)測量的流程如圖3 所示。
圖3 眼動(dòng)向量測量流程
目前主要的人臉檢測方法采用的是基于Haarlike 特征的Adaboost 算法。
Haar-like 特征可以分為4 種:邊緣特征、線性特征、圓心環(huán)繞特征和特定方向的特征。
對于一張人臉圖像,可以用多個(gè)不同類型的Haar-like 特征來表示,每個(gè)Haar-like 特征值為
式中:fv(x)為第x個(gè)Haar-like 特征的特征值,wwhite為白色像素點(diǎn)的權(quán)重,wblack為黑色像素點(diǎn)的權(quán)重,p∈Rwhite為落在Haar-like 特征中白色區(qū)域的圖像像素點(diǎn),p∈Rblack為落在Haar-like 特征中黑色區(qū)域的圖像像素點(diǎn)。
經(jīng)過實(shí)驗(yàn),發(fā)現(xiàn)基于Haar 特征的Adaboost 算法在檢測人臉時(shí),會(huì)將一些非人臉目標(biāo)識別為人臉,部分樣本如圖4 所示。因此本文對該算法進(jìn)行優(yōu)化,采用基于膚色和Haar 特征的Adaboost 算法來進(jìn)行人臉檢測,以降低誤檢率。圖5 是該算法流程圖。
圖4 人臉檢測錯(cuò)誤結(jié)果
圖5 優(yōu)化的人臉定位算法流程
由于Adaboost 算法檢測出的人臉感興趣區(qū)域(region of interest,ROI)是RGB 三通道圖像,為了進(jìn)行膚色檢測,需要將其轉(zhuǎn)化為YUV(YCrCb)顏色空間,轉(zhuǎn)換公式如下:
根據(jù)前人經(jīng)驗(yàn)統(tǒng)計(jì)模型,膚色YCrCb 顏色空間中的Cr、Cb分量滿足橢圓模型,利用opencv 繪制出該橢圓模型,如圖6 所示。
圖6 膚色橢圓模型
在將人臉ROI 轉(zhuǎn)化為YCrCb 顏色空間后,只需要判斷像素點(diǎn)的Cr、Cb分量對應(yīng)的坐標(biāo)是否在橢圓內(nèi)部,即可判斷該點(diǎn)是否是膚色,即
式中:Δ=1表示像素點(diǎn)是膚色點(diǎn);Δ=0表示像素點(diǎn)不是膚色點(diǎn);η(Cr,Cb)表示橢圓模型中(Cr,Cb)坐標(biāo)處的灰度值,0 表示黑色,255 表示白色。
經(jīng)過對大量的樣本進(jìn)行分析發(fā)現(xiàn),正確的人臉ROI 中,膚色點(diǎn)占的比例一般大于0.6,圖7 是部分樣本中膚色點(diǎn)占人臉ROI 像素點(diǎn)的比例圖。
圖7 膚色點(diǎn)占人臉ROI 比例
采用該算法進(jìn)行人臉定位的效果如圖8 所示。
圖8 優(yōu)化算法定位效果
在得到原始圖像后,即可進(jìn)一步劃分人眼ROI。主流的人眼檢測算法采用的也是基于Haarlike 特征的Adaboost 方法,這種方法依然會(huì)存在將非人眼目標(biāo)誤檢為人眼的情況。因此,本文采用先驗(yàn)知識法進(jìn)行人眼定位。前人根據(jù)人臉面部器官比例關(guān)系,總結(jié)出“三庭五眼”的比例關(guān)系。
本文在此先驗(yàn)知識的基礎(chǔ)上,結(jié)合自己的人眼與人臉外接矩形的比例關(guān)系,分割出人眼ROI如下:
式中:xI、yI分別為人臉ROI 在原圖中的橫、縱坐標(biāo),wI、hI分別為人臉ROI 的寬、高,xL、yL分別為左眼ROI 在人臉ROI 中的橫、縱坐標(biāo),xR、yR分別為右眼ROI 相對于人眼ROI 的橫、縱坐標(biāo),wE、hE分別為人眼ROI 的寬、高。
圖9 是采用先驗(yàn)知識法實(shí)現(xiàn)人眼定位的效果圖。
圖9 優(yōu)化的先驗(yàn)知識法定位人眼效果
目前,虹膜中心定位的算法主要有霍夫變換法[10]、積分投影法[11]和等照度線曲率法[12]等。例如積分投影法,過分依賴于閾值化方法的選取和閾值的設(shè)置,對實(shí)現(xiàn)穩(wěn)定的虹膜中心定位不夠理想。因此,本文設(shè)計(jì)了一種優(yōu)化的梯度中心法來定位虹膜重心,該算法的流程如圖10 所示。
圖10 優(yōu)化的梯度重心法定位虹膜中心流程
從數(shù)學(xué)角度來看,設(shè)函數(shù)f(x,y)在平面區(qū)域D內(nèi)有一階連續(xù)偏導(dǎo)數(shù),則對于每一個(gè)點(diǎn) (x,y)∈D,都可以得到該點(diǎn)處的梯度:
對于圖像而言,圖像灰度關(guān)于坐標(biāo)(x,y)的函數(shù)不是連續(xù)的,對圖像灰度計(jì)算X、Y方向上的偏導(dǎo)數(shù)需要采用差分方法,本文中采用中心差分方法。
以圖像灰度對X求偏導(dǎo)數(shù)為例:
式中:g(x,y)為圖像坐標(biāo)(x,y)處的灰度值;c為圖像的列數(shù)。對于圖像的左、右邊界,分別采用向前差分和向后差分方法計(jì)算。
一是各工程項(xiàng)目部領(lǐng)用工程材料時(shí),均以工程管理部填列的大料單為依據(jù),在特別情況發(fā)生時(shí),存在超出限額部分未及時(shí)辦理審批手續(xù)的情況;二是工程管理部的大料單以設(shè)計(jì)管理部的設(shè)計(jì)圖紙為依據(jù)編制,領(lǐng)料單一出,就將材料悉數(shù)領(lǐng)出,存在未用材料存于企業(yè)倉庫或散于工地現(xiàn)場的情況,不利于施工企業(yè)采購資金的安排和材料存放安全;三是單個(gè)工程完工后辦理退料時(shí),工程項(xiàng)目部往往將尚未用完的的散件直接退回,未能按照節(jié)約原則在下一個(gè)工程中進(jìn)行充分利用,存在不愿領(lǐng)用可改造使用的散件而領(lǐng)用整件再分割使用的情況.
得到X方向和Y方向偏導(dǎo)數(shù)后,合成梯度大小為
式中g(shù)g(x,y)為圖像坐標(biāo)(x,y)處的梯度大小。
計(jì)算動(dòng)態(tài)閾值需要計(jì)算圖像梯度的均值和標(biāo)準(zhǔn)差,均值 μ反應(yīng)了圖像的亮度,標(biāo)準(zhǔn)差 δ反映了圖像像素值與均值的離散程度:
X方向梯度歸一化的方法如下:
式中:gX為圖像X方向的梯度,ξ為計(jì)算動(dòng)態(tài)閾值得到的梯度閾值。Y方向梯度歸一化方法同理。
圖11 為梯度重心法定位虹膜中心的原理示意圖。圖中灰色圓形表示虹膜圓,矩形框表示人眼ROI 矩形框。
圖11 優(yōu)化算法定位虹膜中心示意
對于圖中虹膜邊界上的一個(gè)點(diǎn),其梯度方向是水平向右的,對于人眼ROI 中的每一個(gè)像素點(diǎn),都可以畫出一條指向該點(diǎn)的矢量線,線的數(shù)量為
可以看到,只有經(jīng)過虹膜中心的線與梯度方向一致。數(shù)學(xué)上,對于矢量a和矢量b的點(diǎn)積有如下定義:
那么,對上述所有的像素點(diǎn)矢量線,計(jì)算其與梯度的點(diǎn)積,在矢量線長度一致的情況下,經(jīng)過虹膜圓中心的矢量線顯然會(huì)得到更大的結(jié)果。
得到圖像梯度矢量域后,為了避免將非虹膜目標(biāo)檢測為虹膜中心的情況,同時(shí)考慮到虹膜區(qū)域是人眼ROI 中最黑的區(qū)域,灰度值相對其他部分更低,根據(jù)灰度值對圖像梯度矢量域取權(quán)重:
式中wweight為權(quán)重值,越黑的區(qū)域權(quán)重值越大。
對人眼ROI 梯度矢量域找到最大值,就是虹膜中心所在的位置:
本文采用的優(yōu)化梯度重心法定位虹膜中心的效果如圖12 所示。
圖12 優(yōu)化的梯度重心法定位效果
眼角點(diǎn)可視為角點(diǎn),角點(diǎn)的檢測算法有Harris角點(diǎn)法、KLT 角點(diǎn)法和Susan 角點(diǎn)法[12-13],其中,根據(jù)文獻(xiàn)[13],Susan 角點(diǎn)法在眼角點(diǎn)的定位上應(yīng)用廣泛。
在實(shí)驗(yàn)中,我們發(fā)現(xiàn)Susan 角點(diǎn)法定位眼角點(diǎn)時(shí),過分依賴于相似度閾值和非極大值抑制閾值的選取,即在不同光照條件、對比度情況下,需要設(shè)置不同的參數(shù)。該方法不能穩(wěn)定地檢測眼角點(diǎn)。因此在內(nèi)眼角點(diǎn)的定位算法上,設(shè)計(jì)了一種優(yōu)化的基于Dlib 特征點(diǎn)定位的方法。
Dlib 法一般用于人臉對齊等領(lǐng)域[14],本文中對該算法進(jìn)行優(yōu)化,應(yīng)用到眼角點(diǎn)定位中。傳統(tǒng)的Dlib 特征點(diǎn)定位算法流程如圖13 所示,其人臉檢測采用的是Dlib 庫中自帶的人臉檢測器。在實(shí)驗(yàn)過程中發(fā)現(xiàn),該人臉檢測器與特征點(diǎn)預(yù)測模型的加載十分耗時(shí),無法實(shí)現(xiàn)實(shí)時(shí)的眼角點(diǎn)定位。
圖13 傳統(tǒng)Dlib 人臉特征點(diǎn)定位算法流程
因此,本文將前述基于Haar-like 特征的Adaboost算法應(yīng)用到Dlib 特征點(diǎn)定位算法中,并對Adaboost算法檢測出的人臉ROI 進(jìn)行灰度化處理,輸入特征點(diǎn)預(yù)測模型。傳統(tǒng)的Dlib 算法通常需要定位68 個(gè)特征點(diǎn),本文將特征點(diǎn)的數(shù)量降低為5 個(gè),大大提高了算法的運(yùn)行效率。
采用傳統(tǒng)Dlib 算法與本文優(yōu)化算法實(shí)現(xiàn)眼角點(diǎn)定位的效果圖對比如圖14 所示。
圖14 不同算法眼角點(diǎn)定位效果對比
本文實(shí)驗(yàn)將VS 2017 作為開發(fā)平臺,結(jié)合opencv和Dlib 庫函數(shù),實(shí)現(xiàn)本文提出的優(yōu)化算法,并與傳統(tǒng)算法進(jìn)行比較。運(yùn)行環(huán)境配置為Dell Inspiron 15-3537,采集人臉圖像的攝像頭為筆記本自帶的高清網(wǎng)絡(luò)攝像頭,編譯環(huán)境均選擇Release x64。
人臉定位算法評價(jià)指標(biāo)上,采用誤檢率進(jìn)行評價(jià):
式中:Rface為算法的誤檢率;Nface為誤判為人臉的矩形框數(shù);Tface為檢測出的所有人臉框數(shù)。
經(jīng)過對光照條件、人臉數(shù)量、膚色等不一致的樣本進(jìn)行統(tǒng)計(jì)分析,得到Adaboost 算法的人臉平均誤檢率為15.8%;本文優(yōu)化算法的人臉平均誤檢率為7.8%。本文基于膚色檢測和Haar-like特征的Adaboost 優(yōu)化算法與傳統(tǒng)算法相比,誤檢率降低了8%左右。
人眼定位算法采用人眼檢測正確率進(jìn)行評價(jià):
式中:Reye為人眼檢測正確率,Neye為正確檢測的人眼框數(shù),Teye為圖像中所有的人眼數(shù)。
人眼定位算法比較試驗(yàn)依然是在上一步人臉檢測基礎(chǔ)上進(jìn)行的。本文基于先驗(yàn)知識的優(yōu)化人眼定位算法,只要人臉定位算法足夠準(zhǔn)確,便可以穩(wěn)定、快速地定位人眼ROI 位置,得到Adaboost算法的人眼檢測正確率為77.86%;本文優(yōu)化算法的人眼檢測正確率為98.46%。本文優(yōu)化算法比傳統(tǒng)算法的人眼檢測正確率提高了21%左右。
虹膜中心定位算法比較的樣本集選取BioID FaceDataBase V1.2 中的樣本,該數(shù)據(jù)庫的樣本分辨率為384 px×286 px,樣本格式為.pgm,并且提供了手動(dòng)標(biāo)記的左右眼中心坐標(biāo),方便我們進(jìn)行算法的比較分析。
在虹膜中心定位算法中,由于不同樣本中人臉距離攝像頭的位置不一樣,帶來了雙眼瞳距的不一致,對算法定位出的虹膜中心點(diǎn)與真實(shí)中心點(diǎn)的距離進(jìn)行歸一化處理:
式中:Riris為算法的準(zhǔn)確度,Cr,x、Cr,y分別為手動(dòng)標(biāo)記虹膜中心在原圖中的橫、縱坐標(biāo),Ce,x、Ce,y分別為算法定位的虹膜中心在原圖中的橫、縱坐標(biāo),diris為手動(dòng)標(biāo)記的左、右眼虹膜中心歐氏距離。
傳統(tǒng)的積分投影算法與本文的優(yōu)化算法虹膜中心定位的平均誤差如表1 所示。盡管積分投影法的誤差要低于本文優(yōu)化算法,但由于經(jīng)典算法的定位效果依賴于閾值的設(shè)置,不能實(shí)現(xiàn)穩(wěn)定的定位效果。虹膜中心定位算法仍然推薦本文優(yōu)化算法,兩者誤差僅為0.1 左右。
表1 傳統(tǒng)算法與本文優(yōu)化算法平均誤差對比
由于內(nèi)眼角點(diǎn)在人臉中并不是一個(gè)很明確的點(diǎn),在醫(yī)學(xué)上也沒有標(biāo)準(zhǔn)的定義。內(nèi)眼角點(diǎn)定位的準(zhǔn)確性只能通過觀察來判斷,因此對于內(nèi)眼角定位算法的比較,我們以算法的運(yùn)行效率作為評價(jià)指標(biāo)。
對于采集的原始人臉圖像,對不同算法第一次編譯運(yùn)行正確定位出眼角點(diǎn)的運(yùn)行時(shí)間進(jìn)行統(tǒng)計(jì),并取平均值,如表2 所示。
表2 單張圖像第一次編譯算法運(yùn)行時(shí)間對比 ms
由于程序編譯的特殊性,對單張圖片的處理需要加載人臉檢測器、特征點(diǎn)預(yù)測模型等文件,經(jīng)過試驗(yàn)統(tǒng)計(jì),本文優(yōu)化算法對相關(guān)資源文件的平均加載時(shí)間約為957 ms。當(dāng)將算法應(yīng)用到視頻流時(shí),預(yù)加載好資源文件,傳統(tǒng)Dlib 法視頻幀處理算法平均用時(shí)203.3 ms,本文優(yōu)化算法視頻幀處理算法平均用時(shí)145 ms,每幀的運(yùn)行時(shí)間提高了55 ms 左右。
實(shí)現(xiàn)自然光源下對眼動(dòng)向量的精確測量,是開發(fā)一套基于眼球驅(qū)動(dòng)與控制的病床位姿調(diào)節(jié)系統(tǒng)的第一步。本文分析了經(jīng)典的PCCR 法應(yīng)用到癱瘓病人眼動(dòng)測量時(shí)的缺點(diǎn),并基于“虹膜中心-內(nèi)眼角”向量法,提出了一種面向癱瘓病人的優(yōu)化且低成本的眼動(dòng)測量方法。
1)根據(jù)眼動(dòng)視覺測量方法的實(shí)現(xiàn)步驟,分別從人臉定位、人眼定位、虹膜中心定位和內(nèi)眼角點(diǎn)定位幾個(gè)方面,分析了經(jīng)典的算法存在的問題,提出了本文的優(yōu)化算法,并與傳統(tǒng)算法進(jìn)行比較。
2)實(shí)驗(yàn)表明,與傳統(tǒng)算法相比,本文優(yōu)化算法在人臉定位上將誤檢率降低了8%左右,人眼檢測的準(zhǔn)確率提高了21%左右,虹膜中心上提高了定位穩(wěn)定性的同時(shí),誤差僅相差0.1 左右;同時(shí),視頻幀眼角定位時(shí)間上縮短了55 ms 左右,為實(shí)現(xiàn)一套實(shí)時(shí)準(zhǔn)確的眼球驅(qū)動(dòng)控制系統(tǒng)奠定了基礎(chǔ)。