梁 瓊,趙慧民,葛任賢,熊建斌★,楊盛雄,蘇冠元
(1.廣東技術(shù)師范大學 計算機科學學院;2.廣東技術(shù)師范大學 自動化學院,廣東 廣州 510665)
根據(jù)2018年末中國殘聯(lián)公布的數(shù)據(jù),我國肢體殘疾人數(shù)已經(jīng)超過8500萬人[1],無法享受先進科技(電腦、手機、平板等)所帶來的便利和娛樂.近年來,視線追蹤技術(shù)是研究的熱門話題,它廣泛應(yīng)用于虛擬現(xiàn)實增強、人機交互、眼睛疾病診斷、人類行為等方面的研究[2].
到目前為止,已經(jīng)有大量算法、新理論、新方法用于計算人眼視線監(jiān)測[2].最早的時候,視線追蹤裝置需要與使用者有身體上的接觸,例如直接放一個反射白點在眼睛上[3]或者在眼睛周圍放許多電極[4].其中一個典型方法叫做電流記錄法.因為角膜和視網(wǎng)膜之間存在電位差,利用眼睛周圍的電極,記錄眼球運動過程中電位的變化從而判斷視線的方向,該方法的精度達到1.5°~2.0°[4].隨著科學技術(shù)、通信技術(shù)、視頻攝像技術(shù)的發(fā)展,數(shù)字視頻分析技術(shù)在視線追蹤技術(shù)上得到廣泛的應(yīng)用.由于不需要接觸使用者,非接觸式的視線追蹤裝置成為未來的發(fā)展方向[5-14].1901年,Cline和Dodge首次成功提出角膜反光法跟蹤眼動,該方法先采用平行光照射在人的眼球上,再利用攝影機記錄下由角膜反射出來的光點的運動軌跡,稱為眼動軌跡[4].普金野圖像方法是由眼睛的若干光學界面反射所形成的圖像.Generation—V眼睛跟蹤器[8],利用雙普金野圖像法跟蹤視線.雙普金野圖像方法采用紅外光照射形成第一和第四普金爾野反射,采集兩個反射的相對位置圖像數(shù)據(jù),深入分析采集的圖像數(shù)據(jù),挖掘、計算出眼睛的位置.1988年末,美國弗吉尼亞大學推出的商用Erica系統(tǒng)是一種基于圖像處理方法和紅外電視的應(yīng)用系統(tǒng).該系統(tǒng)處理速度快、實用性強,可以實現(xiàn)對控制眼睛肌肉的重度殘廢人進行通信、控制、娛樂等,得到廣大殘疾人的歡迎[15].2010年11月11日TobiiTX300眼動儀以300Hz頻率收集注視數(shù)據(jù),并允許較大的頭動范圍.該系統(tǒng)專為有更高采樣頻率要求的研究如眼球運動而設(shè)計,如掃視、校正掃視、凝視、瞳孔大小變化和眨眼[16].2013年熊建斌等人提出一種基于Hough轉(zhuǎn)換的算法,實現(xiàn)對人眼能夠識別眨眼動作,但是,準確度不高.2016年熊建斌提出一種改進Hough變換算法提高人眼眨眼識別的準確度10%左右,同時把裝置完善了,但是,眨眼識別時間太長.
為了解決上述問題,本文設(shè)計了基于橢圓擬合的改進Hough變換算法在眼控系統(tǒng)中的應(yīng)用,能夠識別眨眼動作且準確通過瞳孔跟蹤實現(xiàn)眼睛控制鍵盤,有效地提高了瞳孔檢測的精度.幫助肢體殘疾人群使用眼睛操控手機、電腦、平板等,換言之就是讓人們使用眼睛替代手按鍵、操作手機、電腦、平板等.
目前,瞳孔定位算法和眼球檢測有Canny算法、對稱變換法、Hough變換法、橢圓擬合法、改進的Hough變換法、基于橢圓擬合的改進Hough變換算法[7],本文介紹Hough變換法、基于橢圓擬合的改進Hough變換算法.
Hough變換法是最常見瞳孔定位的方法,該方法先把鍵盤圖片的邊緣點映射到參數(shù)空間中,然后,把映射在參數(shù)空間中所有坐標點元素對應(yīng)累加值進行累加統(tǒng)計,最后,依據(jù)累加值計算出瞳孔圓的半徑和瞳孔圓心坐標位置.該方法可以從基礎(chǔ)特性中提取綜合描述參數(shù),具有良好的抗干擾性能,具有較高的容錯度和魯棒性[8-9],其基本原理如下:
圖像上每一個非零像素點都有可能是一個潛在的圓上的一點,平面上的點對應(yīng)著三維的圓心x,y以及半徑r的三個參數(shù),在笛卡爾坐標系中的圓方程為:
其中(a,b)是圓心,r是半徑,將二維平面x-y上的圓轉(zhuǎn)換到三維立體面x-y-r參數(shù)空間,則圖像空間中過(x,y)點圓對應(yīng)參數(shù)空間中,高度r變化下的一個三維錐面,即在三維坐標系中,一個點可以確定一個圓,見圖1所示.
圖1 三維錐面
對于x-y平面的一個點(x0,y0),則對應(yīng)的由a、b、r組成三維空間的空間曲面.對于a-b-r平面的一個點,則對應(yīng)的在x-y平面它是一個圓.由于圖像空間中經(jīng)過任意一點的圓對應(yīng)于參數(shù)空間中的一個三維錐面.因此,經(jīng)過圖像空間上同一圓上的點,對應(yīng)的參數(shù)空間中的三維錐面,在r高度必然相交于一點(a,b,r).這樣通過檢測這一點可以得到圓的參數(shù),相應(yīng)的圓也可求得了.對于在x-y平面上的三個點(x0,y0),(x1,y1),(x2,y2),在a-b-r三維空間是對應(yīng)的三個空間曲面(此時a,b,r相當于常量),圖像平面需要確定(a,b,r)三個參數(shù)的值.換言之,若知圓上的三個點,就能通過計算以下公式確認這三個參數(shù)的值.
通過公式(1)和(2),Hough變換算法就能將圖像域轉(zhuǎn)成參數(shù)域.將邊緣點集代入到公式(2)中,得到對應(yīng)的參數(shù)集.采用投票機制獲得一個最優(yōu)解的參數(shù)集.由此得到的圓心稱之為Hough圓心.轉(zhuǎn)化為參數(shù)平面,見圖2所示.
Hough變換算法雖然擁有出色的容錯度和魯棒性,但對非標準圓的檢測效果不佳.由于受到相機和眼睫毛的影響,瞳孔圖像中的瞳孔通常都不是標準圓形.因此,Hough變換算法進行瞳孔檢測時經(jīng)常會出錯.為此,提出了一種基于橢圓擬合的改進型Hough變換算法以增強該算法的性能.
橢圓擬合的改進Hough變換法由瞳孔粗定位算法、圖像截取算法、圖像過濾算法、Canny邊緣檢測算法和Hough變換算法構(gòu)成.核心在于將瞳孔粗定位算法和Hough變換算法相結(jié)合.具體的實現(xiàn)如下:
(1)圖像過濾算法
由于人眼圖像大多數(shù)噪聲均屬于高斯噪聲,本文采用文獻[12]的高斯濾波算法,消除高斯噪聲.操作步驟如下:將普通的人眼模板(卷積或掩模)掃描人眼圖像中的每一個像素,采用普通人眼模板確定的鄰域內(nèi)像素加權(quán)平均灰度值代替普通人眼模板中心像素點的值.此算法在人眼處理圖像中的隨機噪聲有很好的性能并且對后續(xù)的邊緣檢測很有幫助.
(2)Canny邊緣檢測算法
基于Canny邊緣檢測算法首先利用人眼梯度模板對邊緣進行精化,求得局部最大值,然后采用高斯一階微分進一步計算人眼圖像的梯度[13-14].文獻[14]中采用雙閾值法對大量的人眼圖像檢測并計算,獲得人眼圖像強邊緣、弱邊緣,只有當弱邊緣、強邊緣連接成輪廓邊緣時才能輸出.算法實現(xiàn)步驟如下:
①采用高斯濾波對獲取的人眼圖像去噪、平滑;
②尋找人眼圖像的強度梯度;
③消除人眼圖像邊緣誤檢.針對人眼圖像邊緣誤檢(本來不是但檢測出來是),采用非最大抑制技術(shù)實現(xiàn)人眼圖像消除邊緣誤檢;
④采用雙閾值方法確定可能邊界;
⑤利用滯后技術(shù)來跟蹤邊界.
(3)普爾欽斑檢測算法
本文采用光斑檢測也就是對普爾欽斑中心的定位[15],是瞳孔角膜反射法的重要組成部分之一.在眼部灰度圖像中,普爾欽斑為瞳孔內(nèi)面積很小、灰度值非常高的圓形范圍,受攝像頭和紅外光源角度影響,普爾欽斑多呈橢圓形.與瞳孔中心定位不同,由于普爾欽斑形成的橢圓形狀完整,且周圍干擾圖像極少(相似灰度值圖像少或距離較遠),所以在此不采用Hough變換檢測圓形的方法,而采用橢圓擬合的方法.
(4)眨眼檢測算法
眨眼是人眼運動跟蹤、眼球識別的最重要的動作,合理獲取眨眼,有效地彌補眼球移動功能性的不足.常用的眨眼檢測算法采用模板匹配算法,利用樣本庫中的閉眼模板和睜眼模板對眼部圖像進行匹配.此算法的優(yōu)點在于準確度非常高,適應(yīng)性好,適合在人臉圖像中檢測眨眼[16].缺點是太復雜,運算速度慢,對硬件要求高,不適合本系統(tǒng)使用.由于本系統(tǒng)只需處理眼部圖像且眼部圖像清晰,因此本文提出一種簡單有效的眨眼檢測算法.
圖3 普通Hough變換算法的處理效果
本文采用的眨眼檢測算法的核心就是判斷瞳孔和普爾欽斑是否存在.瞳孔粗定位算法和光斑識別算法中分別存在一個標志.當瞳孔或光斑從圖像之中消失時,相應(yīng)的標志就會表示成消失狀態(tài),如果兩者的標志同時表示成消失狀態(tài),就會被眨眼檢測算法判斷成眨眼.
針對光斑識別算法或瞳孔粗定位算法在實時測試中會受到外界的干擾,人眼瞳孔或光斑誤判斷,導致光斑消失的問題,本文設(shè)置兩個標志.另外,針對人眨眼過程中閉眼時間過長而產(chǎn)生多次眨眼誤判的問題,采用眨眼檢測算法需使兩個標志都從消失狀態(tài)恢復到存在狀態(tài)時,確認為眨眼,并啟動相應(yīng)功能,普通Hough變換算法的處理效果與橢圓擬合的改進Hough變換法的處理效果見圖3、圖4所示,圖4的效果明顯比圖3好,可以獲取整個眼球.
實驗室自主研發(fā)一套眼控鍵盤系統(tǒng),該系統(tǒng)硬件由顯示模塊、照明模塊和攝像模塊三部分組成.顯示模塊采用了頭戴式顯示器,照明模塊采用可調(diào)亮度的紅外發(fā)射二極管,攝像模塊采用微距紅外攝像頭.殘疾人戴上頭戴式眼控裝置,通過微距攝像頭,系統(tǒng)可以獲得清晰的瞳孔圖像,利用紅外光源照明不會對人眼造成刺激,同時去除攝像頭中的紅外濾鏡,就能使虹膜圖像消失,獲得清晰的瞳孔圖像,裝置的整體實物圖如圖5所示.研發(fā)環(huán)境:聯(lián)想筆記本電腦,軟件為VS2017、OPENCV2.4.9,瞳孔中心識別的準確率可以達到95%,檢測瞳孔中心識別的界面如圖6所示.本控制系統(tǒng)包括看視頻、聽音樂、記事、玩游戲、計算器、發(fā)信息、聊QQ、聊微信、打電話等15個鍵,每個鍵代表一個功能,眼睛可以選擇任意鍵,眨眼可以確定選擇其中的一個功能(鍵).圖6 (d)是操作人員使用眼睛點擊圖6 (a)中的“Music”鍵后得到二級界面,操作人員可以自由使用眼控系統(tǒng)操作、控制播放音樂界面.
圖5 頭戴式眼睛控制裝置整體實物圖
圖6 用戶操作主界面與二級界面
首先,通過預處理模塊從攝像頭中獲得原始眼部圖像并進行灰度化和二值化處理;
其次,使用改進型Hough變換算法通過以下步驟從二值眼部圖像中獲得瞳孔中心坐標:
(1)對預處理后的圖像進行粗定位[17].用最小二乘法的橢圓擬合算法檢測二值化圖,通過限制橢圓的大小與焦點范圍,確定瞳孔粗定位中心(Xc,Yc).粗定位效果圖如圖7所示.
圖7 粗定位效果圖
(2)根據(jù)瞳孔粗定位中心(Xc,Yc)得到瞳孔區(qū)域的四個角點坐標(Xc-120,Yc-120),(Xc+120,Yc-120),(Xc-120,Yc+120),(Xc+120,Yc+120),并利用該區(qū)域從經(jīng)過灰度化后的眼部完整圖像中截取出240*240(pixel)的瞳孔區(qū)域圖像(圖8(a)).
(3)對瞳孔區(qū)域圖像依次進行二值化處理、高斯平滑濾波[18]和Canny邊緣化處理(如圖8(a)-(d)所示).
圖8 采用文獻[18]的算法依次對瞳孔區(qū)域圖像進行圖像處理:(a)截取瞳孔區(qū)域圖像,(b)對圖像進行二值化,(c)對圖像進行高斯平滑濾波,(d)對圖像進行Canny邊緣化
(4)使用普通的Hough變換算法[19]對得到的邊緣點集合進行處理,得到的圓心稱之為Hough圓心(Xh,Yh).
圖9 檢測到的普爾欽斑
(5)采用明可夫斯基距離計算方法,確定(Xc,Yc)粗定位中心和(Xh,Yh)Hough圓心的距離.若它們的距離在一定的區(qū)間時,就把粗定位中心代替瞳孔定位的最終中心(Xf,Yf);否則,求得兩者坐標之間的中心點,就把計算獲得中心點代替瞳孔定位的最終中心(Xf,Yf),檢測到的普爾欽斑如圖9所示.計算公式如下:
然后,利用改進型Hough變換算法中截取出來的瞳孔局部圖像,可以通過普爾欽斑檢測算法來確定普爾欽斑的圓心(Xp,Yp).
但是,此時的光標還不能正常的工作.所以,在用戶正常使用打字功能前,要先啟動校正程序,如果用戶不移動頭戴式設(shè)備,校正程序只需啟動一次.校正之后,光標才能正常追蹤視線.為了能夠?qū)崟r檢測視線,系統(tǒng)在完成上述流程后會馬上從預處理模開始重新處理新的圖像,所以本程序會無限循環(huán)直到用戶選擇退出.
當用戶盯著一個按鍵并眨眼時,該按鍵的邊框就會變成藍色.如果此時開啟了眨眼輸入功能,程序就會實現(xiàn)按鍵對應(yīng)的功能,例如輸出一個數(shù)字或刪除一個字符等,否則不做任何工作.
(1)基于橢圓擬合的改進Hough變換算法實驗與結(jié)果分析
觀察及分析同一測試者多次測試的測試結(jié)果,盯著鍵盤上一固定點時,鍵盤光標的偏離范圍基本在一個邊長為140像素的正方形區(qū)域內(nèi).該固定點越接近鍵盤中央時,鍵盤光標的偏離范圍越小,最小時能達到邊長為100像素的正方形區(qū)域內(nèi).由于本系統(tǒng)自主研發(fā)的頭戴式眼睛控制裝置的顯示屏分辨率為800*600(像素),所以此精度符合本系統(tǒng)用戶界面中鍵盤15格(橫向5格,縱向3格)的設(shè)計.而15格鍵盤足以實現(xiàn)完整的輸入功能.鍵盤界面如圖6所示,由于10個功能鍵、一個“小數(shù)點”鍵、一個空格鍵、一個刪除鍵、一個鍵盤轉(zhuǎn)換鍵和一個空白鍵.
表1 三種瞳孔中心定位方法比較
本文分別對三種不同類型的算法進行了三組識別瞳孔中心的實驗,每組的樣本為30個位置(可以有重復,每個格子代表不同的位置,一共15個位置),實驗結(jié)果表明,瞳孔中心識別的準確率可以達到96%以上,檢測瞳孔中心識別的界面如圖6 (c)所示,每個空格用1-15個功能鍵表示.實驗結(jié)果的數(shù)據(jù)記錄如表1所示.
實驗結(jié)果表明,經(jīng)過橢圓擬合改進的算法,瞳孔中心定位的準確率得到了很明顯的提高.本文算法主要從定位瞳孔粗定位的方法入手,前人是在一定的區(qū)域(ROI感興趣區(qū)域)內(nèi)進行掃描,尋找出黑色像素點分布最符合圓形的矩形區(qū)域,確定為瞳孔的粗定位區(qū)域,而本文算法則不同,主要是一定的區(qū)域內(nèi),二值化后用邊緣檢測算法檢測邊緣,再使用最小二乘法橢圓擬合,將符合大小的橢圓認定為瞳孔的粗定位區(qū)域.從表格2所得,采用本文的方法提高了瞳孔中心定位的準確率.
表2 三種不同算法掃描不同數(shù)量圖片所需時間(ms)
實驗數(shù)據(jù)表明,橢圓擬合改進型算法所需時間更短,所以,本文算法(橢圓擬合改進型算法)檢測瞳孔中心的時間會更短.
(2)打開外部程序結(jié)果和分析
定位校驗過后,用戶進入操控打開電腦應(yīng)用程序的界面,用戶注視符號“×”,其變?yōu)椤啊獭焙?,用戶瞳孔的輸入信息可以被讀取,比如,注視記事本時,眨眼,就可以打開記事本,并進入記事本的功能菜單,其菜單的主要功能有最大化、最小化、關(guān)閉應(yīng)用程序等.
本文設(shè)計的眼控系統(tǒng)能夠打開PC機上的任何程序,由于眼睛控制鍵盤,應(yīng)用程序打開后,受到眼睛功能的限制,通過應(yīng)用程序的快捷鍵對打開的應(yīng)用程序進行操作,有些程序沒有快捷鍵,或者快捷鍵的種類很少,因此打開、關(guān)閉二級界面時,不方便用組合快捷鍵.由表1、2可知,采用本文的算法,測試者打開PC機的應(yīng)用程序的速度快(眼控系統(tǒng)鍵盤輸入速度受PC機性能以及攝像頭分辨率的影響,本算法采用同一臺PC機進行實驗)、準確輸入率達到93%以上,平均準確輸入率達到95%.
(1)眼睛控制系統(tǒng)控制電腦應(yīng)用的局限性:起初只能使用絕對地址與進程PID打開和關(guān)閉對應(yīng)的應(yīng)用,以及通過窗口句柄控制電腦應(yīng)用的最大化和最小化,無法完成應(yīng)用的其他操作,比如無法控制音樂播放器播放、暫停、切換歌曲等操作.
解決方法:使用keybd event()函數(shù)模擬某些電腦按鍵的按下與釋放,從而使用對應(yīng)應(yīng)用的快捷鍵,實現(xiàn)應(yīng)用的其他操作.
(2)普爾欽斑誤檢測的處理:本系統(tǒng)同時采用普爾欽斑檢測算法來實現(xiàn)瞳孔粗定位和檢測光斑的位置,但是,其常常會將光斑誤檢測為瞳孔,而且因為眼睫毛的影響,造成瞳孔粗定位不準確.
解決方法:通過限制生成橢圓的大小與中心的位置,減少了眼睫毛帶來的誤差和區(qū)分瞳孔與光斑生成的橢圓.
本文主要研究以橢圓擬合的改進型霍夫變換算法為核心的眼控系統(tǒng),該系統(tǒng)選用頭戴式投影儀裝置與瞳孔攝像頭,通過模擬輸入快捷鍵的方法實現(xiàn)對電腦第三方應(yīng)用的控制.實驗過程中,該系統(tǒng)可以通過15格鍵盤使用電腦第三方應(yīng)用的功能,可以達到95%的準確率.但是本系統(tǒng)依然存在一些缺陷:①改進控制第三方軟件的算法,增加可以控制第三方軟件的數(shù)量與控制方式;② 本控制算法是通過絕對地址的方式尋找并控制第三方軟件,第三方軟件的安裝位置不同,需要人工修改絕對地址,使用時不方便.以后要改進為自動尋找與修改第三方軟件絕對地址,使系統(tǒng)使用更方便;③提高定位精度,使得眼睛可以準確控制鼠標,使操作更加豐富.這是本實驗室需要進一步深入研究的工作.