深度:Leap Motion手势识别大揭秘
2013年,初創(chuàng)公司Leap發(fā)布了面向PC及蘋果電腦MAC的體感控制器Leap Motion。但是當(dāng)時Leap Motion的體驗效果并不好,又缺乏使用場景,與二維計算機(jī)及終端有著難以調(diào)和的矛盾。
而VR的出現(xiàn),仿佛為Leap Motion新開了一扇天窗,Leap Motion倡導(dǎo)的三維空間交互與VR可謂完美結(jié)合,因此Orion應(yīng)運而生。Orion是原有的Leap Motion軟件的一個升級版本,硬件不變。在VR系統(tǒng)中,Orion提供了一種手勢的輸入方式,它可以將手部的活動信息實時反饋到處理器,最后顯示在VR頭顯中。
簡單來說,Leap Motion是基于雙目視覺的手勢識別設(shè)備。那什么是基于雙目視覺的手勢識別呢?
基于雙目視覺的手勢識別
顧名思義,雙目視覺就是有兩個攝像頭,利用雙目立體視覺成像原理,通過兩個攝像機(jī)來提取包括三維位置在內(nèi)的信息進(jìn)行手勢的綜合分析判斷,建立的是手部的立體模型。這種方法對于用戶手勢的輸入限制較小,可以實現(xiàn)更加自然的人機(jī)交互,但由于需要進(jìn)行立體匹配,且由于立體模型的復(fù)雜性,需要處理大量的數(shù)據(jù),計算相對來說較復(fù)雜。
要實現(xiàn)雙目手勢識別首先需要對雙目攝像頭做標(biāo)定,即是計算空間中左右兩臺攝像機(jī)位置的幾何關(guān)系。首先是對單攝像機(jī)的標(biāo)定,其主要任務(wù)是計算攝像機(jī)的內(nèi)部參數(shù)(包含攝像機(jī)的投影變換矩陣和透鏡畸變參數(shù))和外部參數(shù)(包含相對于某個世界坐標(biāo)系的旋轉(zhuǎn)矩陣和平移向量),形象點說,攝像機(jī)本身存在畸變,如果不經(jīng)過標(biāo)定過程,攝像機(jī)所拍攝出的影響是存在畸變的,即可能將原本的矩形顯示成不規(guī)則的圓角四邊形。然后是標(biāo)定,即計算空兩臺攝像機(jī)在空間中的相對的幾何位置關(guān)系(包含旋轉(zhuǎn)矩陣和平移向量),通俗講就是使得兩臺攝像機(jī)所成的影像顯示在同一水平線上。
接下來就是具體的手勢識別過程了。
首先從雙目攝像頭采集操作者手勢動作的左右視覺圖像,通過立體視覺算法生成深度圖像。具體過程:經(jīng)過立體標(biāo)定后獲取經(jīng)過校準(zhǔn)的立體圖像對后,進(jìn)行立體匹配,獲得視差圖像,再利用攝像機(jī)的內(nèi)參數(shù)及外參數(shù)進(jìn)行三角計算獲取深度圖像。
然后對左(或右)視覺圖像使用手勢分割算法處理,分割出的人手所在的初始位置信息,并將該位置作為手勢跟蹤算法的起始位置。
再使用手勢跟蹤算法對人手運動進(jìn)行跟蹤。
再根據(jù)跟蹤得到的結(jié)果進(jìn)行手勢的識別。需要說明的是,如果跟蹤目標(biāo)消失,則重新進(jìn)行手勢分割,再重復(fù)上述步驟。
雙目手勢識別流程圖如下:
Orion采用的即是雙目手勢識別方法,其實現(xiàn)流程與上文所描述的雙目手勢識別實現(xiàn)流程基本一致,但是通過各種基于Orion的實驗,我在這里對Orion的細(xì)節(jié)算法做一個猜想,僅供讀者參考。
Orion相比于上文所述的雙目手勢識別基本方法不同之處在于,Orion在獲取深度圖像的步驟,并未對整個手型上的所有點做立體匹配,而是只選擇了13個左右的特征點(圖中藍(lán)色點)做匹配,獲得這13個左右特征點的信息后再利用IK算法推算出整個手部模型。
基于一些實驗,我猜想Orion選擇的特征點是13個左右,如下圖中藍(lán)色點:
基于這13個左右的藍(lán)色點即可利用IK算法推算出圖中紅色點的數(shù)據(jù),并最終獲得整個手部模型。這里我說一下為什么猜想是匹配特征點而不是匹配所有點:
Orion的處理時間為8ms,即從讀到手的圖片到做完所有計算的時間只有8ms。這個時間是非常短暫的,要基于這樣的時長來做整個手型上所有點的立體匹配是不可能的,只能選擇一些特征點來做匹配,再根據(jù)特征點數(shù)據(jù)去推算(或者說估計)其他點的點云數(shù)據(jù)。
我所畫出的這13個點均是較易匹配的點,而基于這些點即可利用IK算法構(gòu)建整只手的模型。例如某根手指,基于指尖和指根兩個點,即可根據(jù)手指長度等信息利用IK算法推算出手指其他關(guān)節(jié)點的數(shù)據(jù)。
此外,如果是匹配所有點,則Orion識別手指個數(shù)應(yīng)該更加準(zhǔn)確一些,但是目前基于我的實驗顯示,Orion手指個數(shù)識別存在較大問題,具體實例可以參考下文場景描述。
Leap Motion——Orion的優(yōu)劣勢
首先我們看看Orion的優(yōu)勢。為了能夠應(yīng)用在VR行業(yè)中很好的發(fā)揮效用,Orion相比于前面的產(chǎn)品有了很大改進(jìn):
目前的刷新率為120HZ,延遲為4ms。一般情況下我們認(rèn)為,VR領(lǐng)域需要將影像設(shè)備的延遲做到20ms以下,否則會損害沉浸體驗,并且導(dǎo)致眩暈。VR頭顯屏幕本身就存在一定延遲,交互設(shè)備就必須不能有過大延遲。雖然目前實際的延遲比4ms還是要大一些,不過能做到10ms以下,基本也不影響目前的應(yīng)用。此外,實際視場角達(dá)到150度,適配目前的VR頭顯還是非常有優(yōu)勢的。
初始化:在初始化方面,Orion有非常大的改進(jìn)。所謂初始化即手部首次進(jìn)攝像頭拍攝范圍內(nèi)的手勢,以前Orion對于首個手勢識別非常有限,僅能識別五個手指張開的手勢。而新的產(chǎn)品則在該方面做了很大改進(jìn),目前,以一些常規(guī)的不復(fù)雜的手勢進(jìn)入都沒有問題,例如五個手指張開、一個手指張開其他握緊等。(這里所說的復(fù)雜的手勢是指Orion本身無法識別或者識別錯誤率較高的手勢,例如兩根手指疊加在一起的手勢等。)
翻轉(zhuǎn): 同樣,Orion在手部翻轉(zhuǎn)方面有很大改進(jìn),準(zhǔn)確率有很大提高。
以上是Orion目前應(yīng)用于VR行業(yè)的優(yōu)勢,也是其可以應(yīng)用于VR行業(yè)的基礎(chǔ)。至于劣勢,我根據(jù)自己實際體驗的結(jié)果,給大家說幾個Orion目前體驗效果不夠好的場景,讀者也可以拿出自己的Leap Motion設(shè)備測試一下看看事實是不是如此。
手指檢測不夠準(zhǔn)確:Orion在手指檢測方面做得依然不夠好,如下圖手勢:
即當(dāng)我們的中指處于微張開狀態(tài)下,Orion多數(shù)情況下會識別成完全張開或者完全收起,當(dāng)我們慢慢的張開中指的過程中,Orion識別的手勢也會有一個突變,及很容易從完全收起的狀態(tài)突然變?yōu)閺堥_狀態(tài),而失去了張開過程中的手勢跟蹤。
這里只是說明其中一個例子,其實還有很多其他這樣的手指檢測不夠準(zhǔn)確的狀況。
手指個數(shù)檢測不夠準(zhǔn)確:Orion手指個數(shù)檢測存在很大問題,這里我簡單介紹兩種情況:
上圖展示的是將兩個手指認(rèn)成三根手指,即當(dāng)使用者兩個手指分開過大時,Orion很容易在兩個手指中間再添加一個手指。這個問題出現(xiàn)的原因依我猜想可能是Orion在手勢檢測中對于兩個手指的張開距離有一個閾值,如果大于這個閾值就認(rèn)定中間還有一根手指,而之所以沒檢測到這根手指的指尖特征點可能是由于遮擋。
上圖展示的是一個較復(fù)雜的手勢,識別出現(xiàn)錯誤。因為Leap Motion的攝像頭在使用者頭頂上,以攝像頭視角看中指與食指重疊,無法拍到中指指尖。因此算法判定只有一根手指張開,即出現(xiàn)上圖所示識別狀態(tài)。
側(cè)面手指信息過少,估計不準(zhǔn)確:Orion對處于側(cè)面的手勢識別很差,這也是當(dāng)時作者猜測其使用13個特征點匹配的一個小原因。當(dāng)手處于側(cè)面面對攝像頭時,特征點大部分均被遮擋,造成手部準(zhǔn)確信息非常少,所謂的估計就基本上是胡亂猜測了,因此無法準(zhǔn)確判斷側(cè)面的手勢中手指的狀態(tài)。如下圖即是手部側(cè)面對著使用者佩戴的Leap Motion,將兩根手指識別成三根手指:
其他的手勢識別產(chǎn)品
目前國際上比較具有代表性的還有RealSense的手勢識別,該產(chǎn)品應(yīng)用的是深度攝像頭,可以直接獲取深度圖像。得到深度數(shù)據(jù)后,后面的具體算法步驟就與雙目識別的一樣了。這種直接獲取深度圖像的算法,因為本身具有手部所有點的深度信息,不需要估計,因此準(zhǔn)確度更高。國內(nèi)采用深度攝像頭的有我們G-Wearables團(tuán)隊獨立研發(fā)的StepVR產(chǎn)品中的手勢識別方法。
基于深度攝像頭的手勢識別方法無需購買昂貴的設(shè)備,僅需要深度攝像頭、PC機(jī)即可,手勢識別準(zhǔn)確率高,并且在操作時更加自然、方便,符合以人為本和自由性的要求,是手勢識別未來發(fā)展的趨勢。對基于深度攝像頭的手勢識別感興趣的讀者可以關(guān)注我后續(xù)的文章。
總結(jié)
以上是生活随笔為你收集整理的深度:Leap Motion手势识别大揭秘的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 球30家厂商角逐自动驾驶汽车 四年后10
- 下一篇: 未来科技 HoloLens演示3D地理信