谷學(xué)靜,王 旭,闞 闊
1.華北理工大學(xué) 電氣工程學(xué)院,河北 唐山 063210
2.華北理工大學(xué) 信息工程學(xué)院,河北 唐山 063210
在虛擬現(xiàn)實(shí)系統(tǒng)中,人手作為人機(jī)交互的重要輸入通道,是虛擬現(xiàn)實(shí)系統(tǒng)的主要交互手段之一[1]。傳統(tǒng)的基于數(shù)據(jù)手套的交互方法通過讓使用者穿戴數(shù)據(jù)手套,通過手套上的傳感器獲取人手的姿態(tài)信息。該方法雖然識別數(shù)據(jù)精準(zhǔn),識別速度很快,但數(shù)據(jù)手套往往會影響使用者的操作體驗(yàn),且設(shè)備價格相對高昂[2]。隨著虛擬現(xiàn)實(shí)技術(shù)的快速發(fā)展,以Leap Motion 和Kinect 為代表的基于機(jī)器視覺的體傳感器通過計算機(jī)圖像處理技術(shù),將設(shè)備中獲取的圖像或視頻經(jīng)過處理,對提取出的人手特征進(jìn)行識別、重建[3]。該方式符合真實(shí)人手交互的方式,貼近現(xiàn)實(shí)生活,是未來人機(jī)交互的重要發(fā)展方向。但這些體傳感器常常受到硬件系統(tǒng)、場景和光線等因素的制約,影響其識別準(zhǔn)確度和用戶的使用效率。
鑒于Leap Motion 硬件系統(tǒng)的限制和圖像處理的局限性,針對識別區(qū)域邊緣和手指遮擋引起的識別不穩(wěn)定的現(xiàn)象,本文提出了一種基于Leap Motion的手勢交互方法。該方法通過實(shí)時對比閾值方式分析Leap Motion的識別錯誤,并采用層次化的校正算法校正人手位置,解決人手交互過程中的識別不穩(wěn)定現(xiàn)象。通過對實(shí)驗(yàn)者進(jìn)行用戶分析,該方法能提高Leap Motion的識別準(zhǔn)確率,提升用戶體驗(yàn)。
Leap Motion 是美國LEAP 公司出品的一款面向PC和Mac系統(tǒng),用于手姿態(tài)捕捉的體感控制器,具有體積小、售價適中、手姿態(tài)識別精度高的優(yōu)點(diǎn)。Leap Motion體傳感器利用雙目立體視覺成像原理進(jìn)行測量,通過兩個高幀攝像頭采集高清圖片對物體進(jìn)行3D位置的定位,并能檢測跟蹤手掌、手指的位置和方向,建立手的立體模型。Guna等[4]對Leap Motion進(jìn)行不同數(shù)量的跟蹤配置的實(shí)驗(yàn)表明,Leap Motion 在靜態(tài)手誤差測量實(shí)驗(yàn)中,平均捕獲的精度0.8 mm;在手誤差測量實(shí)驗(yàn)中,運(yùn)動空間x、y、z方向的精度分別為0.7 mm、0.5 mm和0.3 mm,具有很高的采集效率和采集精度。Leap Motion體傳感器的識別范圍是其上方25 mm到600 mm的一個扇形區(qū)域,能實(shí)時計算出識別范圍內(nèi)的連續(xù)幀人手信息。識別范圍如圖1所示,其中矩形區(qū)域?yàn)樽罴呀换^(qū)域。
圖1 Leap Motion識別區(qū)域圖
由于Leap Motion 在手勢識別中具有出色的采集效率和采集精度,故基于Leap Motion手勢識別的仿真系統(tǒng)得到了廣泛的應(yīng)用。Hu等[5]利用Leap Motion設(shè)計了針對載人航天的地面訓(xùn)練系統(tǒng),研究了虛擬手的構(gòu)建,并在航天員訓(xùn)練應(yīng)用中取得很好的交互結(jié)果。Li等[6]設(shè)計了基于Leap Motion 的小鼠卵巢切割實(shí)驗(yàn)系統(tǒng),應(yīng)用到學(xué)生的實(shí)驗(yàn)培訓(xùn)中,有效地對小鼠卵巢模型切割進(jìn)行模擬實(shí)驗(yàn),再現(xiàn)了現(xiàn)場操作體驗(yàn)。Chuan 等[7]利用Leap Motion傳感器進(jìn)行北美手勢語識別,該系統(tǒng)以支持向量機(jī)技術(shù)為基礎(chǔ),結(jié)合Leap Motion 體感技術(shù),培訓(xùn)聾啞患者手勢交流能力,為他們提供了高效的交流方式。
本文結(jié)合電氣控制臺特點(diǎn)[8]和用戶操作習(xí)慣設(shè)計了交互手勢[9],選取了四種交互手姿態(tài),作為本系統(tǒng)的主要交互手勢,并采用二元組Handle={H,D}的形式描述手勢交互過程。其中,H為手的姿態(tài)集合;D為手運(yùn)動方向集合。四種手姿態(tài)分別為點(diǎn)擊手勢(Click)、夾持手勢(Hold)、握持手勢(Grasp)和選擇菜單手勢(Select)。手姿態(tài)示意圖如圖2所示。H集合為H={Click,Hold,Grasp,Select}。
圖2 手姿態(tài)定義示意圖
集合D表示手運(yùn)動的方向,根據(jù)手操作的實(shí)際運(yùn)動情況,手運(yùn)動的方向?yàn)椋合蛳拢―own)、向上(Up)、向左(Left)、向右(Right)。集合D為D={Down、Up、Left、Right}。系統(tǒng)根據(jù)集合H與集合D,對手勢進(jìn)行定義,如表1所示。
表1 手勢定義
3.2.1 人手結(jié)構(gòu)模型
人手是進(jìn)行人機(jī)交互的重要媒介[10]。在手勢交互系統(tǒng)中,幾乎所有的操作都要通過虛擬手完成[11]。因此手模型結(jié)構(gòu)是人手交互的基礎(chǔ)。人手由手掌關(guān)節(jié)、指關(guān)節(jié)和關(guān)節(jié)間的指骨組成。正常人手共有5根手指,其中每根手指由指尖(Tip)和3個指關(guān)節(jié)組成,根據(jù)指關(guān)節(jié)到手掌的遠(yuǎn)近將指關(guān)節(jié)分為遠(yuǎn)指關(guān)節(jié)(DIP)、近指關(guān)節(jié)(PIP)、指掌關(guān)節(jié)(MCP)(拇指由2 個指關(guān)節(jié)組成,沒有遠(yuǎn)指關(guān)節(jié))。
人手在連續(xù)運(yùn)動過程中,指骨可以看作是一段鋼體,指骨和指關(guān)節(jié)連接部分遵循著鉸鏈運(yùn)動的約束關(guān)系,即兩者可以相對轉(zhuǎn)動但不能移動。指骨可以進(jìn)行以指關(guān)節(jié)為原點(diǎn),有角度限制的轉(zhuǎn)動,轉(zhuǎn)動狀態(tài)決定手指的姿態(tài)。如圖3所示。圖中,θMCP為手掌與近節(jié)指骨在指掌關(guān)節(jié)處所形成夾角的鄰補(bǔ)角;θPIP為近節(jié)指骨和中節(jié)指骨所形成夾角的鄰補(bǔ)角;θDIP為遠(yuǎn)指關(guān)節(jié)處中節(jié)指骨和遠(yuǎn)節(jié)指骨夾角的鄰補(bǔ)角。
每根手指指關(guān)節(jié)之間的關(guān)系如圖4 所示。關(guān)節(jié)之間連接的箭頭表示上下級關(guān)系,箭頭尾部為上級節(jié)點(diǎn),箭頭指向?yàn)橄录壒?jié)點(diǎn)。當(dāng)上級節(jié)點(diǎn)運(yùn)動狀態(tài)發(fā)生改變會傳遞給下級節(jié)點(diǎn),而下級節(jié)點(diǎn)的運(yùn)動狀態(tài)發(fā)生改變對上級節(jié)點(diǎn)的影響較小。這樣的手指運(yùn)動方式遵循層次化的運(yùn)動關(guān)系。
圖3 手指運(yùn)動模型
圖4 指關(guān)節(jié)關(guān)系圖
3.2.2 虛擬手位姿錯誤判斷
Leap Motion體傳感器識別人手的信息與人手結(jié)構(gòu)模型相似[12]。其傳感器的高頻攝像頭能快速捕捉每幀手姿態(tài)數(shù)據(jù),包含手掌信息和手指信息。其中手掌信息包含手掌位置、手掌法線、手掌速度等;手指信息包含手指關(guān)節(jié)位置、指尖位置、手指方向、手指類型(系統(tǒng)把大拇指、食指、中指、無名指和小拇指分別標(biāo)記為0、1、2、3、4),如表2所示[5]。
表2 Leap Motion識別的手?jǐn)?shù)據(jù)
由上可知,通過Leap Motion 可以獲得某一幀某指關(guān)節(jié)在三維世界的坐標(biāo)pi,并同時可以得到同一根手指相鄰兩個關(guān)節(jié)的位置pi-1、pi+1(指掌關(guān)節(jié)的相鄰關(guān)節(jié)為手掌位置和近指關(guān)節(jié)位置,遠(yuǎn)指關(guān)節(jié)的相鄰關(guān)節(jié)為近指關(guān)節(jié)位置和指尖位置)。令近指關(guān)節(jié)為p1,則示意圖如圖5所示。
圖5 指關(guān)節(jié)位置示意圖
此指關(guān)節(jié)此幀夾角θ為:
當(dāng)手勢運(yùn)動到Leap Motion 識別區(qū)域邊緣或手指相互遮擋時,Leap Motion 識別穩(wěn)定度下降。多表現(xiàn)為虛擬手姿態(tài)劇烈變化,即手指關(guān)節(jié)角度的劇烈變化。因此在每一幀手模型繪制前,對比上一幀手指關(guān)節(jié)的角度,得到手指關(guān)節(jié)變化角度θΔ,即:
其中,i表示幀的時序。
3.2.3 虛擬手層次化校正
當(dāng)檢測到Leap Motion 識別信息錯誤后,刪除當(dāng)前Leap Motion 體傳感器的錯誤數(shù)據(jù),并對問題關(guān)節(jié)進(jìn)行位置校正。在手勢交互過程中,除去Leap Motion的識別錯誤,手勢的運(yùn)動過程可以看成是從前一種手姿態(tài)到后一種手姿態(tài)的勻速變化過程,手姿態(tài)運(yùn)動應(yīng)該自然、流暢,指關(guān)節(jié)的角度和方向不會發(fā)生劇烈改變。因此進(jìn)行手姿態(tài)校正時,系統(tǒng)將問題關(guān)節(jié)前一幀變化角度θ,作為問題指關(guān)節(jié)此幀的運(yùn)動角度,據(jù)此進(jìn)行下一幀姿態(tài)校正。即將錯誤姿態(tài)替換為以問題關(guān)節(jié)為中心,下層關(guān)節(jié)旋轉(zhuǎn)角度為θ的校正姿態(tài),從而實(shí)現(xiàn)虛擬手位置校正。
因?yàn)槭种钢g的結(jié)構(gòu)相似,所以本文只討論單個手指的姿態(tài)校正。依據(jù)人手模型遵循的層次化運(yùn)動關(guān)系,將手指關(guān)節(jié)分層為上下層結(jié)構(gòu)。定義手掌位置為世界坐標(biāo)系原點(diǎn),也稱為0 級坐標(biāo)系,指掌關(guān)節(jié)在0 級坐標(biāo)系的位置為;指掌關(guān)節(jié)及其下層關(guān)節(jié)建立1 級坐標(biāo)系,原點(diǎn)為指掌關(guān)節(jié)位置,近指關(guān)節(jié)在1 級坐標(biāo)系的位置為;近指關(guān)節(jié)及其下層關(guān)節(jié)建立2 級坐標(biāo)系,原點(diǎn)為近指關(guān)節(jié)位置,遠(yuǎn)指關(guān)節(jié)在2級坐標(biāo)系的位置為;遠(yuǎn)指關(guān)節(jié)及其下層關(guān)節(jié)建立3 級坐標(biāo)系,原點(diǎn)為近指關(guān)節(jié)位置,指尖在3 級坐標(biāo)系的位置為。手指的分層坐標(biāo)系如圖6所示。
假設(shè)錯誤關(guān)節(jié)δ在i(i≥1) 級坐標(biāo)系的位置為,下層關(guān)節(jié)δ+1 在i+1 級坐標(biāo)系的位置為。錯誤關(guān)節(jié)旋轉(zhuǎn)角度為θ,得出旋轉(zhuǎn)矩陣R(θ),則下層關(guān)節(jié)δ+1 旋轉(zhuǎn)后在i級坐標(biāo)系的位置為:
圖6 手指的分層坐標(biāo)系
因?yàn)樵诶L制虛擬手姿態(tài)時,需要得到指關(guān)節(jié)的世界坐標(biāo),所以需要將問題關(guān)節(jié)旋轉(zhuǎn)后的i(i≥1)級坐標(biāo)轉(zhuǎn)換成世界坐標(biāo)。若錯誤關(guān)節(jié)同時為指掌關(guān)節(jié)、近指關(guān)節(jié)、遠(yuǎn)指關(guān)節(jié),且其旋轉(zhuǎn)角度分別為θmcp、θpip、θdip時,可以得出旋轉(zhuǎn)矩陣。
調(diào)整后指掌關(guān)節(jié)的世界坐標(biāo)為W′mcp,近指關(guān)節(jié)的世界坐標(biāo)為W′pip,遠(yuǎn)指關(guān)節(jié)的世界坐標(biāo)為W′dip,指尖的世界坐標(biāo)為W′tip,則:
通過層次化校正方式計算出手指各個關(guān)節(jié)的世界坐標(biāo)位置,以驅(qū)動計算機(jī)進(jìn)行虛擬手的繪制。
3.2.4 校正誤差分析
在校正關(guān)節(jié)姿態(tài)的同時,系統(tǒng)繼續(xù)計算Leap Motion識別的問題關(guān)節(jié)角度數(shù)據(jù),并將校正角度θ與實(shí)際計算角度θ′相減,得到校正誤差θ′Δ,即:
誤差分析步驟如下:
(1)設(shè)定校正誤差閾值λ′,通過比較校正誤差θ′Δ與校正誤差閾值λ′的大小,來判斷校正是否成功。
(2)如果校正誤差小于校正閾值,則視為Leap Motion識別正確,虛擬手與實(shí)際手位姿同步,停止校正,否則將繼續(xù)校正位姿。
(3)如果1 s后的校正數(shù)據(jù)仍不能與Leap Motion同步,則系統(tǒng)校正失敗,并在界面發(fā)出校正失敗的信息提示。提示用戶操作手離開識別區(qū)域,重新進(jìn)行人手姿態(tài)識別操作。
姿態(tài)校正誤差分析流程圖如圖7所示。
因此,校正誤差閾值影響系統(tǒng)中問題關(guān)節(jié)的校正效果。若閾值過大,虛擬手校正與實(shí)際手相差過大,則無法起到手姿態(tài)校正的效果;若閾值過小,則校正結(jié)果容易失敗,影響用戶的使用體驗(yàn)。
圖7 誤差分析流程圖
本系統(tǒng)分為硬件和軟件部分,兩者共同構(gòu)建用戶和虛擬現(xiàn)實(shí)環(huán)境的紐帶。其中硬件環(huán)境包括一臺雙核3 GHz、內(nèi)存 8 GB 的 PC 機(jī)和一臺 Leap Motion 的體傳感器,軟件環(huán)境包括Unity V5.4.2 開發(fā)環(huán)境與Leap-DeveloperKit V3.2.0 的軟件開發(fā)包。其中Unity 為系統(tǒng)的運(yùn)行平臺。LeapDeveloperKit創(chuàng)建Leap Motion與PC機(jī)的接口,并將Leap Motion體傳感器識別的人手關(guān)鍵點(diǎn)數(shù)據(jù)通過描點(diǎn)的方式渲染到場景中。
本系統(tǒng)參考用戶體驗(yàn),并結(jié)合文獻(xiàn)[13]中指關(guān)節(jié)運(yùn)動5°到10°的調(diào)整范圍,經(jīng)過多次用戶測試。當(dāng)系統(tǒng)固定運(yùn)行60 幀/s時,關(guān)節(jié)運(yùn)動閾值λ角度為每幀0.11°,校正誤差閾值λ′角度為每幀0.18°的實(shí)驗(yàn)結(jié)果最佳。
尋找20名志愿者(志愿者為冶金相關(guān)專業(yè)的在校大學(xué)生及研究生,其中男14人,女6人)作為被試,使用圖2定義的手姿態(tài),在如圖8所示的虛擬場景中進(jìn)行交互。
圖8 中(a)、(b)、(c)、(d)分別展示了理想條件下點(diǎn)擊手勢、夾持手勢、握持手勢和菜單手勢在虛擬場景中操作電氣控制臺的使用效果。
為了驗(yàn)證具有層次化校正的手勢交互方法的有效性,設(shè)計了兩個實(shí)驗(yàn)系統(tǒng),分別為:系統(tǒng)1,使用層次化手勢校正方法的手勢交互系統(tǒng);系統(tǒng)2,運(yùn)行環(huán)境相同,但未使用層次化校正方法的手勢交互系統(tǒng)。
20名被試在未告知系統(tǒng)差別的情況下,單個實(shí)驗(yàn)分別通過兩個系統(tǒng)進(jìn)行兩次。
4.2.1 交互效果評估
實(shí)驗(yàn)1 選取控制電氣控制臺的主要交互手勢[14-15]:點(diǎn)擊、打開旋鈕、關(guān)閉旋鈕、左推操控桿、右推操控桿、打開菜單、關(guān)閉菜單,每位被試通過兩種系統(tǒng)各做5次。
圖8 虛擬操作效果
記錄被試操作準(zhǔn)確率,同時記錄每種手勢5次交互所用時間。操作是否正確的判斷準(zhǔn)則如圖9 所示。由圖9 可知,當(dāng)點(diǎn)擊手勢運(yùn)動到識別邊緣時,識別正確的虛擬手(a2)與實(shí)際手(a1)相差不太,而錯誤的虛擬手(a3)食指會發(fā)生彎曲;識別實(shí)際夾持姿態(tài)(b1)和正確夾持姿態(tài)(b2)相差不太大,而錯誤夾持姿態(tài)(b3)出現(xiàn)了手指交叉錯誤信息;當(dāng)握持手勢出現(xiàn)自遮擋時,正確的虛擬手(c2)繼續(xù)彎曲運(yùn)動,而錯誤的虛擬手(c3)會向外張開運(yùn)動;當(dāng)菜單手勢運(yùn)動到Leap Motion 的識別邊界時,正確的虛擬手(d2)會按原方向運(yùn)動,錯誤的虛擬手(d3)會出現(xiàn)突然翻轉(zhuǎn)。
圖9 判斷準(zhǔn)則
統(tǒng)計實(shí)驗(yàn)1 中調(diào)查問卷1 的問卷結(jié)果為“是”的人數(shù),統(tǒng)計結(jié)果如圖10所示。
圖10 問卷1結(jié)果統(tǒng)計
由圖10 可知,志愿者對系統(tǒng)一的舒適性和有效性具有較高評價,其中有75%以上的人對所設(shè)計的交互方式滿意,并認(rèn)為該交互手勢方法便于培訓(xùn)學(xué)習(xí),符合交互習(xí)慣。
統(tǒng)計調(diào)查問卷2 中志愿者對兩個系統(tǒng)的滿意度對比結(jié)果,統(tǒng)計圖如圖11所示。
圖11 問卷2結(jié)果統(tǒng)計
由圖11 可知,兩種系統(tǒng)相比,用戶對使用系統(tǒng)1 的感覺更加舒適,有80%的用戶認(rèn)為系統(tǒng)1的識別更加精確。
實(shí)驗(yàn)1 結(jié)果證明了層次化手勢校正方法在精確度和有效性上具有明顯的優(yōu)勢,且系統(tǒng)更加舒適,更加利于學(xué)習(xí)者進(jìn)行操作學(xué)習(xí),符合用戶在虛擬場景中對電氣控制臺進(jìn)行交互操作的需求。
4.2.2 主觀感受評估
實(shí)驗(yàn)2 分別用點(diǎn)擊手勢點(diǎn)擊按鈕3次;用旋轉(zhuǎn)手勢控制旋鈕左旋1 次后右旋1 次;用握持手勢向左推控制桿1 次,然后向后拉1 次;最后運(yùn)用菜單手勢退出系統(tǒng)。當(dāng)操作完成后,每人填寫1份使用體驗(yàn)調(diào)查問卷。
實(shí)驗(yàn)2分別在兩個系統(tǒng)進(jìn)行后,每人填寫1 份使用效果對比調(diào)查問卷。
調(diào)查問卷1 主要調(diào)查對當(dāng)前系統(tǒng)的滿意度和交互體驗(yàn)舒適度,如表3所示。
表3 交互體驗(yàn)效果調(diào)查問卷
調(diào)查問卷2主要調(diào)查被試對兩種系統(tǒng)滿意度對比,如表4所示。
表4 交互體驗(yàn)對比調(diào)查問卷
實(shí)驗(yàn)2 中,滿足圖9 判斷準(zhǔn)則的一次操作視為操作準(zhǔn)確。被試5次操作的準(zhǔn)確率如圖12所示。
圖12 操作準(zhǔn)確率
由圖12 可知,在使用控制電氣控制臺的幾種手勢中,系統(tǒng)1 的識別率更高,均超過89%。整個操作過程中,系統(tǒng)1 對虛擬手的繪制十分準(zhǔn)確,虛擬手能準(zhǔn)確與控制臺模型進(jìn)行交互,實(shí)現(xiàn)了對虛擬電氣控制臺的準(zhǔn)確操控。并且系統(tǒng)1能很好地解決Leap Motion在識別區(qū)域邊緣或者手指遮擋時出現(xiàn)的識別問題,為用戶提供了更好的虛擬交互體驗(yàn)。
20 位被試的平均每種手勢5 次交互的時長如圖13所示。由圖可知,系統(tǒng)1 減少了用戶的操作時間,手勢的交互更加高效。
圖13 5次交互時長
由于層次化手勢校正方法根據(jù)設(shè)定關(guān)節(jié)運(yùn)動閾值判斷運(yùn)動關(guān)節(jié)識別的正誤,剔除了捕獲的錯誤手勢識別數(shù)據(jù),從而縮短了交互時長;采用層次化思想,把錯誤手勢識別信息定位為以關(guān)節(jié)為中心,依據(jù)手模型遵循的層次化運(yùn)動關(guān)系和關(guān)節(jié)在運(yùn)動中兩幀之間的參數(shù)變化,逐層校正手勢,提高了手勢識別的精度。
本文分析了Leap Motion 在手勢交互過程中導(dǎo)致虛擬手的運(yùn)動錯誤、手勢識別精度較低的原因,提出了層次化的手姿態(tài)校正方法,解決了遮擋和最佳識別區(qū)域邊緣識別能力差帶來的識別難題。然后從用戶體驗(yàn)、操作準(zhǔn)確率、任務(wù)時長、虛擬手與真實(shí)手姿態(tài)一致性四方面對本文方法進(jìn)行了驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,本文方法有效地提升了用戶基于Leap Motion的手勢使用的交互體驗(yàn)。
但本文方法也存在一些局限性:采用統(tǒng)一的關(guān)節(jié)運(yùn)動閾值θ判斷Leap Motion 的識別錯誤,會影響關(guān)節(jié)校正的準(zhǔn)確性。應(yīng)根據(jù)人手層次化的結(jié)構(gòu)特點(diǎn),得出不同層次的關(guān)節(jié)角度的關(guān)節(jié)運(yùn)動閾值。下一步工作將重點(diǎn)解決以上問題。