吳 博 王 彬* 翁政魁,2 熊 新 劉 輝
1(昆明理工大學(xué)信息工程與自動化學(xué)院 云南 昆明 650500) 2(上海大學(xué)通信與信息工程學(xué)院 上海 200072)
計算機技術(shù)的迅速發(fā)展使人類與計算機的關(guān)系愈加密切,其中人機交互技術(shù)是高效使用計算機的關(guān)鍵,而鼠標作為重要的人機交互設(shè)備之一,成為計算機使用過程中最為便利的工具。然而對于存在上肢運動障礙的人群來說,由于手指活動受限,難以使用鼠標操控計算機。因此亟需為這類人群提供合適的功能代償類輔具。鑒于人的面部具有直接性、自然性和雙向性等其他信息所無法具備的特點,使用面部特征點進行鼠標的控制是近年來研究的熱點。面部特征點跟蹤屬于一種非侵入式跟蹤方法[1-3],它可以使用普通攝像頭而不需要配備額外的輔助裝置,成本低且方便,用戶可以隨時隨地使用。
目前關(guān)于鼠標控制系統(tǒng)的研究大都集中在基于視線和眼部生理特征的特征點選取和定位跟蹤算法。秦華標等[4]采用若干個紅外光源,利用反射光斑的相對距離對瞳孔角膜反射向量進行標準化,通過精確定位瞳孔位置來達到視線跟蹤的目的。吳廣發(fā)等[5]提取人眼圖像中瞳孔-角膜反射向量作為視線方向計算模型所需的視覺信息,通過搭建紅外光源設(shè)備提取瞳孔-角膜反射向量構(gòu)建基于瞳孔-角膜反射技術(shù)的視線跟蹤系統(tǒng)。徐巖柏等[6]提出了一種改進的Condensation人臉特征點跟蹤算法,利用增量主元分析的方法對特征觀測模型進行分析,更新面部特征點的特征基和樣本均值。金歡等[7]提出一種基于虹膜識別的視線跟蹤方法,通過調(diào)用用戶第一次標定時的眼部數(shù)據(jù)結(jié)合當(dāng)前的眼部偏轉(zhuǎn)角和偏移量得到當(dāng)前標定參數(shù),解決了視線跟蹤過程中需反復(fù)進行標定的問題。梁洋洋等[8]提出了一種基于深度自編碼器網(wǎng)絡(luò)的人臉特征點定位方法,以整張人臉圖像為輸入,通過對人臉輪廓的分析,得到三部分特征點并進行定位預(yù)測。朱麒文、祝寶龍等對基于視線跟蹤技術(shù)的眼部特征點控制鼠標系統(tǒng)進行了具體的設(shè)計和實現(xiàn)[9-10]。
上述視線定位跟蹤算法在理想狀態(tài)下多具有較好的效果,但是在實際應(yīng)用中對環(huán)境的光線照射及角度變化有較高的要求,并且對用戶的眼部生理特征有嚴格的使用要求,例如因佩戴眼鏡等產(chǎn)生的特征點遮擋問題而導(dǎo)致跟蹤效果不好。因此使用此類算法所實現(xiàn)的實際鼠標控制系統(tǒng)在特征點定位的魯棒性、目標跟蹤的準確性和快速性,以及人機交互的便利性和適用性等方面還需更多的改進。
本文針對以上研究現(xiàn)狀及存在的問題,以鼠標控制系統(tǒng)的快速性、抗干擾性和魯棒性的實際應(yīng)用需求為目標,以鼻子作為面部特征點,給出了一種帶預(yù)測機制的改進Viola-Jones框架定位與跟蹤算法。并在此基礎(chǔ)上采用開源計算機視覺庫OpenCV和C++實現(xiàn)了基于機器視覺的鼠標實時控制系統(tǒng)。通過對該鼠標系統(tǒng)的移動精度、響應(yīng)速度、控制連續(xù)性、系統(tǒng)魯棒性和中央處理器CPU占有率等實驗結(jié)果表明,基于改進Viola-Jones框架的面部特征點鼠標指針控制系統(tǒng)移動快速、可控范圍廣,控制平滑準確,系統(tǒng)資源占用率低,對使用環(huán)境要求低,具有良好的實際應(yīng)用價值。
基于特征點定位與跟蹤的鼠標控制系統(tǒng)的重要基礎(chǔ)是面部局部特征點的選擇是否合理,本文選取鼻子作為局部特征點,其依據(jù)如下:
1) 從面部特征點鼠標控制系統(tǒng)的研究現(xiàn)狀來看,采用視線作為局部特征點對于環(huán)境及使用者要求過高,嚴重降低了鼠標使用過程中的實時性和適用性。
2) 鼻尖位于人臉的中間位置,并且相對于眼睛等,鼻子在面部背景中具有唯一性,能夠清晰地代表整個臉部的運動軌跡,可以保證有效的可跟蹤性。
3) 在跟蹤過程中,無論是使用者或姿態(tài)的變換,還是面部產(chǎn)生運動,鼻子作為被跟蹤的局部特征點,其特征變化很小,能夠有效地保證鼠標系統(tǒng)的適用性和魯棒性。
綜上所述可以看出,相對于眼睛等特征點,鼻子具有更好的可跟蹤性和易定位性。因此我們將鼻子作為面部特征點,并根據(jù)鼻尖的實際運動行為和趨勢進行跟蹤,進而控制鼠標的動作。
Viola-Jones是Paul viola 和 Michael J Jones共同提出的一種人臉檢測框架[11],利用積分圖來提取目標特征,級聯(lián)AdaBoost分類器進行特征篩選和監(jiān)測,使得算法在保證準確度的同時減少了檢測時的運算復(fù)雜度。
其算法基本原理如下:
實時采集自然光照下含有人臉的視頻流S=[S1,S2,…,Si]并以幀為單位依次讀入系統(tǒng)。首先進行單幀圖像預(yù)處理,包括灰度化及直方圖均衡化,接著使用Viola-Jones框架遍歷經(jīng)過預(yù)處理的單幀圖像Si,執(zhí)行以下兩個步驟:
1) 使用Harr-like特征表示Si中人臉特征,在大量特征的基礎(chǔ)上使用積分圖加快特征值計算速度。
2) 使用AdaBoost算法對人臉特征進行分類,通過多個弱分類器級聯(lián)得到一個更加準確的強分類器,最初平均分配所有訓(xùn)練樣本的權(quán)值,對于第T次迭代,根據(jù)T-1次迭代中重新分配的權(quán)值來訓(xùn)練分類器hT(S)。根據(jù)這個分類器的分類成功率改變第T+1次迭代中樣本的權(quán)重,從而得到新的分類器hT+1(S)。最后把每次迭代中得到的分類器級聯(lián)起來,如圖1所示,作為最終的決策分類器。
圖1 級聯(lián)分類器結(jié)構(gòu)
式(1)為級聯(lián)分類器的計算公式,式中:S為待檢測樣本;αT為組合系數(shù)。
(1)
盡管傳統(tǒng)Viola-Jones框架能準確檢測出特征點位置,但在檢測過程中需要遍歷整幅圖像,計算量很大,所用時間較長,難以滿足特征點定位的實時性要求。本文引入Kalman濾波器[12-14],用當(dāng)前特征點的定位數(shù)據(jù)作為依據(jù)預(yù)測下一時刻鼻尖可能出現(xiàn)的位置。這樣,在使用Viola-Jones算法檢測特征點時無需再次遍歷整幅圖像,將全局運算優(yōu)化為局部運算,只需要在預(yù)測得到的區(qū)域內(nèi)進行檢測就可以完成特征點的定位,大大縮短了檢測所需的時間。
根據(jù)本文系統(tǒng)特點定義Kalman濾波的狀態(tài)方程和觀測方程分別為:
狀態(tài)方程:
xt=A·xt-1+wt
(2)
觀測方程:
zt=H·xt+vt
(3)
式中:A分別為狀態(tài)轉(zhuǎn)移矩陣和測量矩陣;wt、vt是兩個隨機變量,為互不相關(guān)的零均值白噪聲序列;狀態(tài)向量xt是一個四維向量(px,py,vx,vy),分別對應(yīng)運動模中的目標位置(px,py)和速度(vx,vy)。在研究中我們假設(shè)特征點的運動是勻速的,那么可以定義狀態(tài)轉(zhuǎn)移矩陣A為:
(4)
進一步得到觀測矩陣H:
(5)
跟蹤過程中,設(shè)定(vx,vy)分量的初始值為零。檢測當(dāng)前窗口中心位置(px,py),估計當(dāng)前鼻尖特征點的位置xt,再根據(jù)Kalman濾波算法預(yù)測下一時刻特征點的質(zhì)心位置xt+1,用于預(yù)先確定下一時刻搜索窗口的中心位置。這樣可以減少特征點的定位檢測時間,從而可以在保證鼠標控制系統(tǒng)準確性的同時有效提高系統(tǒng)的實時性,滿足用戶要求。
本文所述系統(tǒng)硬件均基于ThinkPad系列筆記本電腦,其配置為:3 GB DDR3內(nèi)存Intel T6670 2.2 GHz處理器,顯卡顯存為256 MB,使用電腦集成130萬像素攝像頭,單幀圖像分辨率為640×480 DPI。
OpenCV是一個基于C++(開源)發(fā)行的跨平臺計算機視覺庫,可運行在Linux、Windows和MacOS等操作系統(tǒng)上。OpenCV提供了針對各種圖像格式的視頻源文件的標準圖像處理算法,并且高效準確。圖2給出了OpenCV視覺函數(shù)庫與當(dāng)前其他主流視覺庫的性能比較,可以看出OpenCV在算法運算速度上有明顯的優(yōu)越性[15]。因此,本系統(tǒng)使用C++和OpenCV2.4.4在VS2012(Visual Studio 2012,可視化開發(fā)工具包)平臺下進行開發(fā)。
圖2 OpenCV與當(dāng)前其他主流視覺函數(shù)庫的性能比較
基于機器視覺的面部特征點鼠標控制系統(tǒng)必須完整實現(xiàn)傳統(tǒng)鼠標的基本功能,即控制鼠標光標移動以及鼠標的單/雙擊功能。以第1節(jié)所給出的融合Kalman濾波的改進Viola-Jones框架主要實現(xiàn)鼠標指針的定位、跟蹤及移動功能,加入鼠標按鍵動作控制模塊,可以得到以鼻尖特征點實現(xiàn)的面部特征點鼠標控制系統(tǒng),其組成框架如圖3所示。
圖3 鼠標控制系統(tǒng)框架
使用人臉特征點的變化來控制鼠標按鍵動作是研究者普遍采用的方案,雖然人臉有很多明顯的動作特征如眨眼、張嘴等,但這一些人為表情特征存在一定的不可控性和不穩(wěn)定性,使用這些特征容易使系統(tǒng)產(chǎn)生誤操作,從而影響鼠標的用戶體驗。為了保證鼠標控制系統(tǒng)的可靠性,本文采用一種簡潔的鼠標按鍵動作模塊代替人臉特征點控制按鍵動作的常規(guī)做法。該模塊的功能界面如圖4所示,分為左鍵單擊、左鍵雙擊、右鍵單擊、右鍵雙擊四種鼠標動作。因為鼠標控制系統(tǒng)設(shè)定為卡機即進入特征點捕捉模式,因此用戶可以通過鼻尖控制鼠標指針并選擇所需的鼠標按鍵動作,當(dāng)前設(shè)計的系統(tǒng)主要保證完成常規(guī)鼠標的常用簡單功能。
圖4 鼠標按鍵動作控制功能界面
也可以根據(jù)實際應(yīng)用需要添加“中鍵單擊”、“鼠標拖曳”等更多功能。按鍵動作控制流程圖如圖5所示,圖中Key1、Key2、Key3、Key4分別對應(yīng)于“左鍵單擊”、“左鍵雙擊”、“右鍵單擊”、“右鍵雙擊”,Key為最終的判斷結(jié)果,Delay為延時參數(shù)。首先獲取光標的位置,為了避免操作過程的誤動作,設(shè)置一個2 000 ms的延時程序,當(dāng)鼠標指針位于該功能區(qū)域超過2 000 ms時,才選中該按鍵功能。最后將該按鍵值賦給Key,Key值用于對鼠標事件參數(shù)賦值,以保證將光標移動到需要執(zhí)行按鍵動作的區(qū)域后執(zhí)行相應(yīng)動作。
圖5 鼠標按鍵動作判斷控制圖
以第1節(jié)中所述算法為基礎(chǔ),以鼻尖為局部特征點,構(gòu)建以鼻尖面部特征點跟蹤技術(shù)為基礎(chǔ)的鼠標指針控制系統(tǒng)(見圖6)如下:
1) 通過攝像頭采集圖像數(shù)據(jù)并進行預(yù)處理。
2) 使用Viola-Jones框架對經(jīng)過預(yù)處理的第n幀圖像數(shù)據(jù)進行鼻尖特征點的檢測,分為兩種情況:
(1) 如果檢測到鼻尖特征點,則對鼻尖特征點的位置進行定位并記錄第m個鼻尖特征點在整個圖像中的位置(x,y);接著執(zhí)行步驟3)。
(2) 如沒有檢測到鼻尖特征點,則返回步驟1)。
3) 通過采集第n+1幀圖像數(shù)據(jù)并使用Kalman濾波算法對鼻尖特征點在第n+1幀中可能出現(xiàn)的位置進行跟蹤。
4) 以步驟3)中得到的窗口圖像為基礎(chǔ),并利用Viola-Jones框架在該范圍內(nèi)對鼻尖特征點進行檢測:如果檢測到鼻尖特征點,則對鼻尖特征點的位置進行定位并更新第m+1個鼻尖特征點在整個圖像中的位置(x+dx,y+dy);接著執(zhí)行步驟5);如果沒有檢測到鼻尖特征點,則返回步驟1)。
5) 根據(jù)檢測到的第m個鼻尖特征點的位置(x,y)和第m+1個鼻尖特征點的位置(x+dx,y+dy)控制鼠標指針依據(jù)位移矢量進行移動;其中(dx,dy)為前后兩幀中鼻尖特征點的位移量。
圖6 鼠標指針定位、跟蹤及移動功能實現(xiàn)
為了驗證本文算法及以該算法為基礎(chǔ)的鼠標控制系統(tǒng)的實際性能,本文在自然光照下實驗室環(huán)境中分別對該鼠標系統(tǒng)的實際操控性能指標進行了三組仿真對比實驗。實驗環(huán)境與2.1節(jié)所述系統(tǒng)開發(fā)環(huán)境一致。
實驗人員端坐于電腦前,通過選擇鼠標按鍵動作功能即可進一步對鼠標指針進行控制。
1) 對鼻子的定位效果進行分析:以系統(tǒng)能夠檢測到鼻子特征點的位置為目標,鼻尖的移動范圍可以達到260×240個像素,對于1 280×800的屏幕來說,鼠標的移動精度可以達到4.9×3.3 DPI,能夠滿足鼠標的正常使用要求。2) 對于非正常情況下的面部位置變換進行測試:最大限度地觀察該鼠標系統(tǒng)對人臉特征點的跟蹤情況。改進的算法框架繼承了傳統(tǒng)Viola-Jones算法檢測精度高的特點,實驗結(jié)果如圖7所示,在左轉(zhuǎn)、右轉(zhuǎn),以及最大限度的抬頭、低頭等各個姿態(tài)均有良好的跟蹤表現(xiàn)。
分別采用傳統(tǒng)Viola-Jones算法、文獻[16-18]中的Mean-Shift算法和本文算法的實際鼠標跟蹤效果進行對比,實驗結(jié)果如圖8所示。傳統(tǒng)Viola-Jones算法在對特征定位上有良好的效果,但由于算法是單幀檢測,前后沒有相應(yīng)的延續(xù)性,因此在60幀目標有遮擋時無法檢測到特征點位置,這個缺陷會導(dǎo)致幀間特征丟失,從而產(chǎn)生抖動,影響鼠標指針移動的平滑性。在80幀時視頻中人臉進行了前后的移動,因而鼻尖特征點在尺度上有很大變化,而文獻 [16-18]Mean-Shift算法由于核函數(shù)帶寬固定,當(dāng)跟蹤目標變大時,不能很好地描述目標特征。采用融合Klaman濾波的Viola-Jones框架不但能夠保證和延續(xù)了傳統(tǒng)Viola-Jones算法進行單幀檢測時的準確性,又利用Kalman濾波的預(yù)測機制將幀與幀串聯(lián)起來,大大降低了跟蹤的丟幀率,因此可以使鼠標指針的平滑移動,保證了用戶的良好操作體驗。為進一步驗證本文算法的適用性,在計算機屏幕上人為標定十二個目標點,使用基于上述傳統(tǒng)Viola-Jones算法和本文算法的鼠標指針控制系統(tǒng)依次通過目標點并記錄指針軌跡,如圖9所示。傳統(tǒng)Viola-Jones算法因存在較高的丟幀率而導(dǎo)致鼠標指針抖動嚴重,無法準確到達目標所在位置。文獻[16-18]算法軌跡中由于鼠標指針受到跟蹤算法精度的影響,難以準確指向?qū)嶒災(zāi)繕它c。本文算法因嵌入Kalman濾波在保證跟蹤準確的同時降低了丟幀率,得到的鼠標指針軌跡穩(wěn)定、平滑。
圖8 三種算法跟蹤效果對比
圖9 不同算法下的鼠標指針移動軌跡對比
為了對比算法在實際使用過程中的效果,分別對傳統(tǒng)Viola-Jones算法、Mean-Shift算法[16-18]和本文系統(tǒng)采用的算法對鼠標控制系統(tǒng)的效率和能耗進行了對比,結(jié)果如表1所示。
表1 各種算法效率對比 實時處理速度 幀/s
從表1可以看出,在實時處理速度這個方面,本文算法比Mean-Shift算法提高了28%,比傳統(tǒng)Viola-Jones算法提高了69%。這是因為傳統(tǒng)Viola-Jones算法在每一幀檢測時都需遍歷整幅圖像,運算量很大,而本文算法在幀間嵌入Kalman濾波算法,利用預(yù)測機制將全局運算優(yōu)化為局部運算,大大提高了算法的運算效率。
最后,與市面上同類鼠標控制產(chǎn)品[19]在使用時的系統(tǒng)CPU使用率對比,如圖10所示,可以看出本文所開發(fā)的鼠標控制系統(tǒng)CPU使用率明顯低于同類產(chǎn)品,節(jié)約了功耗。
圖10 本文系統(tǒng)與同類產(chǎn)品CPU使用率對比
現(xiàn)有的基于視線和眼部生理特征的機器視覺鼠標系統(tǒng)對于使用環(huán)境和條件具有較高的要求,不利于面部特征點鼠標系統(tǒng)的實際開發(fā)和應(yīng)用要求。本文針對這種現(xiàn)狀選用鼻子作為面部的局部特征點,保證了定位目標的唯一性,因此使系統(tǒng)具有更好的可識別性和可跟蹤性。在幀間檢測的過程中引入基于Kalman濾波的預(yù)測機制,給出了一種改進的Viola-Jones框架,使幀間檢測相關(guān)聯(lián),并利用預(yù)測機制將全局運算優(yōu)化為局部運算,剔除了大部分跟蹤過程中與目標無關(guān)的噪點,從而在保證跟蹤質(zhì)量的同時。在保證特征點跟蹤準確度的同時降低了算法的運算量,大大提高了算法的運算速度,并且增強了系統(tǒng)的魯棒性。在該算法基礎(chǔ)上,采用VS2012和OpenCV實現(xiàn)了面部特征點鼠標指針控制系統(tǒng),實際運行結(jié)果表明,該鼠標控制系統(tǒng)指針移動穩(wěn)定、平滑,系統(tǒng)資源占用率低。為手部動作受限人群使用鼠標提供了良好的解決方案。
盡管本文算法已經(jīng)提高了系統(tǒng)的實時性,達到了良好的用戶體驗,但為了更好地接近傳統(tǒng)鼠標的功能,還有兩個問題值得我們深入研究:(1) 如何進一步提高算法的處理速度從而更好地降低跟蹤的丟幀率;(2) 如何保證在較小區(qū)域內(nèi)光標的連續(xù)運動跟蹤從而更好地實現(xiàn)鼠標的復(fù)雜按鍵動作。
[1] Botero F,Hasmatuchi V,Roth S,et al.Non-intrusive detection of rotating stall in pump-turbines[J].Mechanical Systems & Signal Processing,2014,48(1):162-173.
[2] Ding L,Martinez M.Features versus context:An approach for precise and detailed detection and delineation of faces and facial features[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2010,32(11):2022-2038.
[3] Cerrolaza J,Villanueva A,Cabeza R.Study of Polynomial Mapping Functions in Video-Oculography Eye Trackers[J].ACM Transactions on Computer Human Interaction,2012,19(2):602-615.
[4] 秦華標,嚴偉洪,王信亮,等.一種可克服頭動影響的視線跟蹤系統(tǒng)[J].電子學(xué)報,2013,(12):2403-2408.
[5] 吳廣發(fā),宋鴻陟,黃生輝,等.基于瞳孔-角膜反射技術(shù)的視線跟蹤方法[J].現(xiàn)代計算機(普及版),2014,14(5):67-71.
[6] 徐巖柏.一種改進的Condensation人臉特征點跟蹤算法[J].計算機應(yīng)用與軟件,2015,32(12):154-159,213.
[7] 金歡,姚鵬,周足紅,等.視線跟蹤中基于虹膜識別的一次標定方法[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2013,25(7):1052-1059.
[8] 梁洋洋,陳宇,楊健.基于深度自編碼器網(wǎng)絡(luò)的人臉特征點定位方法[J].計算機應(yīng)用與軟件,2016,33(9):139-142.
[9] 朱麒文,閆隆鑫,張若蘭,等.基于視線追蹤的眼控鼠標設(shè)計[J].電子器件,2016,39(2):235-241.
[10] 祝寶龍.基于視覺跟蹤技術(shù)的眼控鼠標研究[D].哈爾濱工業(yè)大學(xué),2015.
[11] Viola P,Jones M.Robust real-time face detection[J].International Journal of Computer Vision,2004,57(2):137-154.
[12] Zha F,Xu J,Li J,et al.Neural network modeling for FOG temperature drift[J].System engineering and electronic technology (English version),2013(5):838-844.
[13] 王華劍,景占榮,鄭文泉,等.迭代容積卡爾曼粒子濾波算法[J].東南大學(xué)學(xué)報(自然科學(xué)版),2013,43(s1):85-88.
[14] 翁政魁,王彬,王坤,等.一種基于預(yù)測的實時人臉特征點定位跟蹤算法[J].計算機工程與應(yīng)用,2015,51(12):198-202.
[15] Bradski G,Kaehler A.Learning OpenCV:Computer Vision in C++ with the OpenCV Library[M].O’Reilly Media,Inc.2013.
[16] 彭寧嵩,楊杰,劉志,等.Mean-Shift跟蹤算法中核函數(shù)窗寬的自動選取[J].軟件學(xué)報,2005,16(9):1542-1550.
[17] 倪琦,賀明,張國進,等.基于多特征融合的Mean Shift跟蹤算法[J].強激光與粒子束,2014,26(10):101022-1-101022-5.
[18] 楊一帆,田雁,楊帆,等.基于改進Mean-Shift算法的紅外小目標跟蹤[J].紅外與激光工程,2014,43(7):2164-2169.
[19] Control Mouse by Eyes(Enable Via Cam)v1.7.2[DB/OL].(2015)http://www.bkill.com/download/31966.html.