王 震,吳 方,路良剛,陳敏英,陳娜佳
(北京理工大學珠海學院,廣東 珠海 519085)
基于視線控制模擬小車系統(tǒng)研究
王 震,吳 方,路良剛,陳敏英,陳娜佳
(北京理工大學珠海學院,廣東 珠海 519085)
視線控制技術是通過捕捉并分析眼睛瞳孔的移動,從而達到控制交互界面的技術。該技術可以幫助殘疾人士遠程控制智能設備,如智能機器小車等,以擴展人們的行動和控制能力。通過對眼球追蹤與控制技術的理論和技術的系統(tǒng)研究,設計了一個基于實現控制的模擬小車系統(tǒng)。該系統(tǒng)能夠通過攝像頭捕捉進行人臉識別并進一步捕捉到眼球運動行為,并對眼球的運動進行分析和數字化,從而控制模擬小車的前后左右運動。該系統(tǒng)主要包括人臉檢測模塊、眼睛檢測模塊、瞳孔定位模塊、眼眶定位模塊、位置計算模塊和小車控制模塊等幾個模塊。實驗結果表明,該系統(tǒng)經過訓練能夠準確識別目標人臉的眼球運動軌跡和運動情況,并根據眼球運動能夠精確控制模擬小車的運動。
眼睛檢測;瞳孔定位;視線控制;MFC;OpenCV
全球近五分之一的人口有殘疾,殘疾人存在信息通信等障礙。而人們獲取外界信息的80%~90%來源于眼睛,同時視線所在方向和人類意識相關,即視線能準確代表人類的想法,且視覺自然、直接、雙向的特性使得視線追蹤技術在人機交互的研究中具有重要意義。通過使用視線追蹤技術的輔助設備可以大大提高殘疾人的生活[1]。因此有關視線控制的研究、開發(fā)和應用具有極大的發(fā)展前景。
視線追蹤技術已經相對成熟,在各個領域都開始嶄露頭角。2012年丹麥The EyeTribe公司推出了一款低成本的視線追蹤軟件,使用低成本攝像頭和紅外LED就可以使用眼睛控制電腦;2011年Tobbi Technology公司展示了與聯想共同開發(fā)的載有眼部追蹤控制的電腦[2]。美國達特茅斯學院研究的眼菜單,主要目的是為了讓殘疾人無障礙地使用手機。由此看出,視線控制技術的發(fā)展應用將會越來越普及,給人們(特別是殘疾人)帶來更多便利。
文中系統(tǒng)主要研究圖像處理中的臉眼檢測、眼球移動定位、眼球控制小車計算等三部分,判斷出眼球的移動方向,控制模擬小車的移動。
硬件環(huán)境包括普通的CMOS攝像頭和電腦,軟件環(huán)境為VS2008、OpenCV[3]。系統(tǒng)主要分為圖像采集、視線追蹤和小車運動控制。其中圖像采集是最根本的組成,通過攝像頭對受試者臉部進行圖像采集,視線追蹤部分完成人臉檢測、眼睛檢測、瞳孔定位、眼眶定位功能,目的是找到瞳孔和眼眶的相對位置。最后是控制小車部分,根據眼球相對位移來顯示小車的位置變化。為此,將該系統(tǒng)分為五大模塊,分別為圖像采集模塊、檢測模塊、定位模塊、控制模塊和圖像顯示模塊。
1.1圖像采集及檢測
程序從攝像頭獲取圖像。考慮實時性,每隔150 ms獲取并處理圖像一次。在150 ms中完成圖像檢測、定位、運動軌跡計算。然后從攝像頭獲取下一張圖片。如在150 ms中檢測不到,程序會自動跳過檢測下一張圖片。
在眼睛檢測中,通常的做法是盡可能找出具體的感興趣區(qū)域(ROI),原始圖片是先檢測出人臉,然后在人臉區(qū)域中檢測眼睛。相關檢測算法包括模板匹配算法[4]、ANN算法[5]、SVM算法[6]、AdaBoost算法等。其中AdaBoost算法的綜合性能最高[7],因此該課題選用AdaBoost算法。AdaBoost是Boosting的算法之一,Boosting算法是將弱學習算法通過大量數據的集成提升為強學習算法的算法。AdaBoost是級聯分類器,若干個弱分類器級聯成一個強分類器,每個強分類器能夠快速檢測到負樣本,當檢測到一個負樣本后就不再進行下一個強分類器的檢測了,所以使用AdaBoost算法可以快速地檢測到正樣本特征。其實現是使用輸入圖像的矩形特征,也叫Haar特征。檢測人臉或眼睛等每一種特征時,檢測器得有特定算法選定的合適的矩形特征組合成強分類器[8-10]。
1.2定位模塊
眼睛定位利用人臉特征區(qū)域的灰度信息的基于灰度積分圖方法、基于邊緣提取及Hough變換等[11-13]。根據眼睛灰度對比強烈的邊緣特征區(qū)分出眼睛的瞳孔和眼眶輪廓。眼睛的視線是跟著瞳孔走的,相對于瞳孔來說,眼眶是靜止不動的,以眼眶為參照物,可以判斷出瞳孔的移動方向,從而判斷出眼睛視線的移動方向。實驗中通過輪廓檢測得到眼睛圖中的瞳孔和眼眶輪廓,擬合瞳孔圓得到瞳孔位置,擬合眼眶矩形得到眼眶位置。
1.3控制模塊
由定位模塊可以得到瞳孔的圓心和眼眶的起始位置,眼睛向右移動控制程序界面中的小車向右運動,眼睛向左、上、下移動,小車也相應向左、上、下運動。當程序運行過程中有未檢測到新的眼球移動方向的話,小車則一直按最后一次保留的方向運動,直到小車運動到了區(qū)域邊上為止。
1.4圖像顯示
當攝像頭捕獲圖像經過處理后,在界面中顯示出來,能實時反映檢測到人臉和眼睛位置。如圖像處理時未檢測到人臉,則顯示原圖,并保存顯示的圖片。
2.1眼睛檢測
眼睛檢測中,目的是為了將包含眼睛部分的圖片截取下來以供定位使用。該課題使用AdaBoost中Haar特征的檢測算法來完成人臉檢測和眼睛檢測。檢測開始時,通過人臉/眼睛檢測器,檢測出人臉,將檢測到并截取下來的人臉通過人臉/眼睛檢測器檢測出眼睛,并區(qū)分眼睛的左右。其流程如圖1所示。
圖1 眼睛檢測流程圖
(1)圖像預處理。
Haar特征分類器檢測算法檢測的是灰度圖像,所以檢測時要將圖像進行灰度處理,檢測圖片的大小會影響檢測的速度和精度,因此原圖要縮小一定程度。然后經過直方圖均衡化處理,以突出圖像中人臉或眼睛的特征細節(jié)[14-15]。
(2)人臉/眼睛檢測器。
人臉及眼睛檢測器的功能是根據要求快速且精確檢測到人臉/眼睛的結果。為了快速檢測到目標,使用了約束時間檢測方法,以約束檢測最長時間;為了精確檢測到目標,使用了從小圖片到大圖片的檢測方法,以約束最大的圖片縮小倍數。
采用Haar特征分類器檢測算法,其檢測時間與精度和圖像的大小、窗口大小、圖片質量等因素相關。為提高檢測速度,盡可能縮小原圖大小。但圖片不能過小,否則導致不能檢測到人臉或眼睛特征。
測試時,攝像頭拍攝的圖片為640×480,所拍攝到的圖片中人臉占整張圖片的比例不盡相同,人臉眼睛檢測的速度和精度與受試者與攝像頭的距離相關。實驗時測試距離為40 cm左右,所拍攝到的原圖的人臉(230×230)占據整張圖片的比例為20%左右。實驗中使用減小圖像規(guī)模大小的方法,在100 ms內可以檢測出人臉,即將原圖縮小4倍可以檢測到人臉。
眼睛占圖片比例更小,檢測時原圖縮小倍數參考表1。
表1 眼睛檢測中的圖片規(guī)模、測試時間和結果
根據表1,選擇眼睛檢測原圖縮小倍數從3.5開始,使用循環(huán)減小圖像規(guī)模大小的方法。每進行一次人臉或眼睛檢測時,縮小圖像大小倍數減小0.1,直到檢測到一個人臉個數或兩個眼睛個數為止。為了防止檢測時間過長,從而影響攝像頭下一幀采集處理,將人臉最長檢測時間規(guī)定在100 ms,眼睛最長的檢測時間為50 ms。如果超過規(guī)定的檢測時間,則讀取下一張拍攝到的圖片再次檢測。
2.2眼睛定位
為了追蹤視線,檢測到左右眼后,還要計算眼睛的移動方向和位置。該課題采用計算瞳孔相對于眼眶的相對移動方向來判斷眼睛視線的移動方向。這里稱為眼睛定位,包括瞳孔定位及眼眶定位。經過眼睛檢測器得到左、右眼睛的圖像,通過預處理、輪廓檢測、輪廓點集分析得到瞳孔圓和眼眶矩形作為判斷的原數據,其流程圖如圖2所示。
圖2 眼睛定位流程圖
(1)圖像預處理。
輪廓檢測時檢測的是二值圖像,由于輸入圖像是在攝像頭獲取的原圖中截取的眼睛的原圖,是彩色圖片,所以二值化處理之前要將圖片灰度化。這里設置二值化閾值為30,這個閾值在眼睛圖中相對穩(wěn)定,只要能區(qū)分黑色的瞳孔和眼白即可。
(2)輪廓檢測。
輪廓是按照區(qū)域的上下左右的順序來判斷并跟蹤檢測二值圖像中的邊緣點。為了在圖像中檢測到閉合邊界的輪廓,首先從上到下,從左到右搜索,找到的第一個黑點即是左上方的邊界點,記為A點,然后以A點開始在其右下方區(qū)域從右-右下-下-左下-左-左上的方向順序找下一個邊界點,然后又以剛找到的邊界點為起始點按照相同的順序找到下一個邊界點,如果找到的邊界點是A點,則表明輪廓找到了[16]。
(3)輪廓分析。
對輪廓檢測到的圖片進行分析,輪廓可以分為三種:一是圖片的外圍邊框,開始點總是從(1,1)開始的;二是小圓點,一般由4~8個點組成,半徑不超過4像素,這些小圓點可以組合成眼眶的矩形;三是大圓,在這里即可認為是瞳孔,一般由10個以上的點組成,直徑超過8像素。輪廓分析時,使用X方向和Y方向的最大最小值的差值來判斷其是點還是瞳孔。輪廓坐標集如圖3所示。
圖3 包含眼白的瞳孔輪廓分析
通過這種輪廓點集,分析X方向計算出的直徑和Y方向計算的直徑的差值,可以判斷出這個瞳孔輪廓點集不只包含了瞳孔的輪廓。由于眼睛的特性,在Y方向計算出的直徑就是瞳孔的直徑,所以將Y方向的最大最小的差值作為瞳孔的直徑。
OpenCV庫中提供了一個擬合橢圓函數fitEllipse,根據輪廓的特點擬合成橢圓,橢圓的中心可以判斷成瞳孔的圓心。橢圓的中心接近于瞳孔圓心。
2.3視線控制
根據瞳孔和眼眶的位置,可以計算出瞳孔相對于眼眶的位置,相對于眼球來說,眼眶是不動的,可以用來做參考物。瞳孔和眼眶的位置會有偏差,可經過多次實驗統(tǒng)計出彌補參數。
眼睛向右移動,是想控制界面上的小車向右移動,然而圖片上眼睛的向左向右與所看到的相反,只要將眼睛移動的左右方向作為圖片上的左右方向即可。判斷眼睛的移動方向是通過計算出本次和上次左眼和右眼相對于眼眶的x和y的位移差得到的。
//以靠鼻子邊的眼瞼作為標準
lx=l.x-l.xpre//正數為左移,負數為右移
ly=l.y-l.ypre//正數為向下,負數為向上
rx=r.x-r.xpre;//正數為左移,負數為右移
ry=r.y- r.ypre;//正數為向下,負數為向上
3.1眼睛檢測功能測試
眼睛檢測的目的是將眼睛圖片從原圖中截取下來以供眼睛定位使用。當攝像頭獲取的圖像質量好,得到臉個數為1,眼個數為2時,表示檢測通過。
3.2眼睛定位功能測試
眼睛定位的目的是擬合瞳孔圓和眼眶矩形,從而得知瞳孔和眼眶的位置。程序測試結果如圖4所示。
圖4 右眼和左眼的定位結果
從圖4可以看出,擬合的瞳孔圓以及眼眶矩形的位置與所拍攝到的圖片的實際位置吻合。通過多次實驗測試的結果得知,圖片質量決定定位的精確性。
3.3眼睛移動方向計算及控制的功能測試
眼睛移動方向計算是將上次定位的瞳孔和眼眶的位置和本次檢測到的位置進行對比計算,從而得到眼球的移動方向,圖5為上一次和本次的兩次檢測結果。
①②為上一次右眼、左眼圖;③④為本次右眼、左眼圖
由圖5很容易看出,眼睛的移動方向以④的位移方向為準,程序將判斷眼睛的移動方向為向右移動。
3.4模擬小車控制測試
該課題設計的目的是為了通過視線控制模擬小車實時移動,通過計算到的瞳孔移動方向控制模擬小車移動,結果從用戶界面的小車移動方向指示器看到,指示器指向右,說明小車向右移動,結果如圖6所示。
圖6 模擬小車向右移動(左圖)和模擬
綜上可知,眼睛向右移動,用戶界面上的模擬小車向右移動,模擬小車移動方向指示器指向右,達到了系統(tǒng)預計結果。如此類推,程序檢測到眼睛向其他方向的移動同理。
該課題的定位技術中眼眶定位較為準確,但是瞳孔的定位不夠精確(瞳孔較大幅度移動才可以檢測到),主要原因是整個圖像分辨率低,瞳孔部分像素點低。檢測到的瞳孔輪廓會受周圍眼白和眼眶的影響,不考慮處理速度在高分辨率情況下可以準確定位。最后在程序的控制運動上,瞳孔定位成為主要影響因素。眼球方向變化實現了小車控制,通過多次實驗測試得到的結果基本符合當初的設計。
[1] Zheng Y,Liu F,Hsieh H P.U-Air:when urban air quality inference meets big data[C]//ACM SIGKDD international conference on knowledge discovery and data mining.New York,USA:ACM,2013:1436-1444.
[2] 李 棟.視線追蹤控制技術,更優(yōu)人機互動方式的新可能[EB/OL].2011.http://www.ifanr.com/44738.
[3] Hu S,Fang Z,Tang J,et al.Research of driver eye features detection algorithm based on OpenCV[C]//Proceedings of the 2010 second WRI global congress on intelligent systems.Washington DC,USA:IEEE,2010:348-351.
[4] 劉 源.基于模板匹配算法的人眼定位方法[J].火力與指揮控制,2014,39(5):124-126.
[5] 李 兵,戴爾晗.基于人工神經網絡的視線跟蹤系統(tǒng)[J].計算機技術與發(fā)展,2015,25(4):98-101.
[6] Shankar S.Assessment of the effect of variations in eye blinks on a face recognition algorithm[C]//Advance computing conference.[s.l.]:[s.n.],2015:78-85.
[7] Wu B,Ai H,Huang C,et al.Fast rotation invariant multi-view face detection based on real Adaboost[C]//IEEE international conference on automatic face and gesture recognition.Seoul,Korea:IEEE,2004:79-84.
[8] 李登輝,徐亞寧,王巖紅.人臉識別中圖像預處理方法的研究[J].大眾科技,2011(4):65-66.
[9] 鐘 威,劉智明,周激流.人臉檢測中眼睛精確定位的研究[J].計算機工程與應用,2004,40(36):73-76.
[10] 劉慧英,王小波.基于OpenCV的車輛輪廓檢測[J].科學技術與工程,2010,10(12):2987-2991.
[11] 楊 永.基于視線的眼動跟蹤人機交互系統(tǒng)研究[J].信息技術,2009(5):12-14.
[12] 姚運萍,吳慶娟,高東波.一種低成本基于眼動跟蹤人機交互系統(tǒng)的研發(fā)[J].新技術新工藝,2008(12):86-88.
[13] 王文成,常發(fā)亮.一種基于區(qū)域投影的人眼精確定位方法[J].光電子·激光,2011,22(4):618-622.
[14] 李紅匣.基于OpenCV的人眼瞳孔定位算法[J].電子質量,2012(11):14-17.
[15] 張 超,盧韶芳,周付根.眼部特征自動檢測定位方法[J].吉林大學學報:工學版,2015,45(5):1717-1723.
[16] 費俊琳,俞王新,王志中.一種改進的基于模板匹配眼睛特征點定位算法[J].計算機工程與應用,2007,43(32):207-209.
Research on Car Simulation System Based on Sight Control
WANG Zhen,WU Fang,LU Liang-gang,CHEN Min-ying,CHEN Na-jia
(Zhuhai Campus,Beijing Institute of Technology,Zhuhai 519085,China)
The sight control technology is to capture and analyze the movement of the eye pupil,so as to achieve the purpose of controlling the interaction interface.It can help people with disabilities to remotely control intelligent devices,such as smart cars and other devices,to expand people’s ability to operate and control.A simulation control system is designed based on the research of the theory and technology of eye tracking and controlling technology.It can conduct the face recognition by the camera and capture the eye movement,and with analysis and digitalization of the movement of the eyeball,can control the movement of the smart car.The system consists of several modules,such as face detection module,eye detection module,pupil positioning module,orbital positioning module,position calculation module and car control module.The experimental results show that it can accurately identify the eye movement trajectory and movement of the target,and precisely control the movement of the simulated car according to the eye movement.
eye detection;pupil location;eye control;MFC;OpenCV
2016-04-15
:2016-08-17 < class="emphasis_bold">網絡出版時間
時間:2017-07-11
廣東省教育科研2014年重點平臺躍升計劃及重大項目與成果培育計劃特色創(chuàng)新項目(自然科學類)(2014KTSCX208)
王 震(1980-),男,博士,講師,CCF會員(E200013418M),研究方向為物聯網與智能交通。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170711.1451.002.html
TP368
:A
:1673-629X(2017)09-0116-04
10.3969/j.issn.1673-629X.2017.09.025