深度:Leap Motion手勢識別大揭秘

——回復「yv10」——
獲取YiViAn最新十條資訊

YiViAn 2016年5月2日)2013年,初創公司Leap發布了面向PC及蘋果電腦MAC的體感控制器Leap Motion。但是當時Leap Motion的體驗效果並不好,又缺乏使用場景,與二維計算機及終端有著難以調和的矛盾。

而VR的出現,仿佛為Leap Motion新開了一扇天窗,Leap Motion倡導的三維空間交互與VR可謂完美結合,因此Orion應運而生。Orion是原有的Leap Motion軟體的一個升級版本,硬體不變。在VR系統中,Orion提供了一種手勢的輸入方式,它可以將手部的活動信息實時反饋到處理器,最後顯示在VR頭顯中。

深度:Leap Motion手勢識別大揭秘

簡單來說,Leap Motion是基於雙目視覺的手勢識別設備。那什麼是基於雙目視覺的手勢識別呢?

基於雙目視覺的手勢識別

顧名思義,雙目視覺就是有兩個錄影頭,利用雙目立體視覺成像原理,通過兩個錄影機來提取包括三維位置在內的信息進行手勢的綜合分析判斷,建立的是手部的立體模型。這種方法對於用戶手勢的輸入限制較小,可以做到更加自然的人機交互,但由於需要進行立體匹配,且由於立體模型的複雜性,需要處理大量的數據,計算相對來說較複雜。

要做到雙目手勢識別首先需要對雙目錄影頭做標定,即是計算空間中左右兩台錄影機位置的幾何關係。首先是對單錄影機的標定,其主要任務是計算錄影機的內部參數(包含錄影機的投影變換矩陣和透鏡畸變參數)和外部參數(包含相對於某個世界坐標系的旋轉矩陣和平移向量),形象點說,錄影機本身存在畸變,如果不經過標定過程,錄影機所拍攝出的影響是存在畸變的,即可能將原本的矩形顯示成不規則的圓角四邊形。然後是標定,即計算空兩台錄影機在空間中的相對的幾何位置關係(包含旋轉矩陣和平移向量),通俗講就是使得兩台錄影機所成的影像顯示在同一水平線上。

接下來就是具體的手勢識別過程了。

  • 首先從雙目錄影頭采集操作者手勢動作的左右視覺圖像,通過立體視覺算法生成深度圖像。具體過程:經過立體標定後獲取經過校準的立體圖像對後,進行立體匹配,獲得視差圖像,再利用錄影機的內參數及外參數進行三角計算獲取深度圖像。

深度:Leap Motion手勢識別大揭秘

  • 然後對左(或右)視覺圖像使用手勢分割算法處理,分割出的人手所在的初始位置信息,並將該位置作為手勢跟蹤算法的起始位置。

  • 再使用手勢跟蹤算法對人手運動進行跟蹤。

  • 再根據跟蹤得到的結果進行手勢的識別。需要說明的是,如果跟蹤目標消失,則重新進行手勢分割,再重復上述步驟。 
    雙目手勢識別流程圖如下:

深度:Leap Motion手勢識別大揭秘

本文章來自北京G-Wearables公司項目經理張瑩。
深度:Leap Motion手勢識別大揭秘
G-Wearables公司在研發基於慣性傳感器的動作捕捉系統StepVR。文中觀點不代表YiViAn觀點。

Leap Motion——Orion的做到原理

Orion採用的即是雙目手勢識別方法,其做到流程與上文所描述的雙目手勢識別做到流程基本一致,但是通過各種基於Orion的實驗,我在這裡對Orion的細節算法做一個猜想,僅供讀者參考。

Orion相比於上文所述的雙目手勢識別基本方法不同之處在於,Orion在獲取深度圖像的步驟,並未對整個手型上的所有點做立體匹配,而是只選擇了13個左右的特徵點(圖中藍色點)做匹配,獲得這13個左右特徵點的信息後再利用IK算法推算出整個手部模型。

基於一些實驗,我猜想Orion選擇的特徵點是13個左右,如下圖中藍色點:

基於這13個左右的藍色點即可利用IK算法推算出圖中紅色點的數據,並最終獲得整個手部模型。這裡我說一下為什麼猜想是匹配特徵點而不是匹配所有點:

  • Orion的處理時間為8ms,即從讀到手的圖片到做完所有計算的時間只有8ms。這個時間是非常短暫的,要基於這樣的時長來做整個手型上所有點的立體匹配是不可能的,只能選擇一些特徵點來做匹配,再根據特徵點數據去推算(或者說可能)其他點的點雲數據。

  • 我所畫出的這13個點均是較易匹配的點,而基於這些點即可利用IK算法構建整只手的模型。例如某根手指,基於指尖和指根兩個點,即可根據手指長度等信息利用IK算法推算出手指其他關節點的數據。

  • 此外,如果是匹配所有點,則Orion識別手指個數應該更加準確一些,但是目前基於我的實驗顯示,Orion手指個數識別存在較大問題,具體實例可以參考下文場景描述。

Leap Motion——Orion的優劣勢

首先我們看看Orion的優勢。為了能夠應用在VR行業中很好的發揮效用,Orion相比於前面的產品有了很大改進:

  • 目前的刷新率為120HZ,延遲為4ms。一般情況下我們認為,VR領域需要將影像設備的延遲做到20ms以下,否則會損害沉浸體驗,並且導致眩暈。VR頭顯螢幕本身就存在一定延遲,交互設備就必須不能有過大延遲。雖然目前實際的延遲比4ms還是要大一些,不過能做到10ms以下,基本也不影響目前的應用。此外,實際視場角達到150度,適配目前的VR頭顯還是非常有優勢的。

  • 初始化:在初始化方面,Orion有非常大的改進。所謂初始化即手部首次進錄影頭拍攝範圍內的手勢,以前Orion對於首個手勢識別非常有限,僅能識別五個手指張開的手勢。而新的產品則在該方面做了很大改進,目前,以一些常規的不複雜的手勢進入都沒有問題,例如五個手指張開、一個手指張開其他握緊等。(這裡所說的複雜的手勢是指Orion本身無法識別或者識別錯誤率較高的手勢,例如兩根手指疊加在一起的手勢等。)

  • 翻轉: 同樣,Orion在手部翻轉方面有很大改進,準確率有很大提高。

以上是Orion目前應用於VR行業的優勢,也是其可以應用於VR行業的基礎。至於劣勢,我根據自己實際體驗的結果,給大家說幾個Orion目前體驗效果不夠好的場景,讀者也可以拿出自己的Leap Motion設備測試一下看看事實是不是如此。

  • 手指檢測不夠準確:Orion在手指檢測方面做得依然不夠好,如下圖手勢:

深度:Leap Motion手勢識別大揭秘

即當我們的中指處於微張開狀態下,Orion多數情況下會識別成完全張開或者完全收起,當我們慢慢的張開中指的過程中,Orion識別的手勢也會有一個突變,及很容易從完全收起的狀態突然變為張開狀態,而失去了張開過程中的手勢跟蹤。

這裡只是說明其中一個例子,其實還有很多其他這樣的手指檢測不夠準確的狀況。

  • 手指個數檢測不夠準確:Orion手指個數檢測存在很大問題,這裡我簡單介紹兩種情況:

深度:Leap Motion手勢識別大揭秘

上圖展示的是將兩個手指認成三根手指,即當使用者兩個手指分開過大時,Orion很容易在兩個手指中間再添加一個手指。這個問題出現的原因依我猜想可能是Orion在手勢檢測中對於兩個手指的張開距離有一個閾值,如果大於這個閾值就認定中間還有一根手指,而之所以沒檢測到這根手指的指尖特徵點可能是由於遮擋。

深度:Leap Motion手勢識別大揭秘

上圖展示的是一個較複雜的手勢,識別出現錯誤。因為Leap Motion的錄影頭在使用者頭頂上,以錄影頭視角看中指與食指重疊,無法拍到中指指尖。因此算法判定只有一根手指張開,即出現上圖所示識別狀態。

  • 側面手指信息過少,可能不準確:Orion對處於側面的手勢識別很差,這也是當時作者猜測其使用13個特徵點匹配的一個小原因。當手處於側面面對錄影頭時,特徵點大部分均被遮擋,造成手部準確信息非常少,所謂的可能就基本上是胡亂猜測了,因此無法準確判斷側面的手勢中手指的狀態。如下圖即是手部側面對著使用者佩戴的Leap Motion,將兩根手指識別成三根手指:

深度:Leap Motion手勢識別大揭秘

其他的手勢識別產品

目前國際上比較具有代表性的還有RealSense的手勢識別,該產品應用的是深度錄影頭,可以直接獲取深度圖像。得到深度數據後,後面的具體算法步驟就與雙目識別的一樣了。這種直接獲取深度圖像的算法,因為本身具有手部所有點的深度信息,不需要可能,因此準確度更高。國內採用深度錄影頭的有我們G-Wearables團隊獨立研發的StepVR產品中的手勢識別方法。

基於深度錄影頭的手勢識別方法無需購買昂貴的設備,僅需要深度錄影頭、PC機即可,手勢識別準確率高,並且在操作時更加自然、方便,符合以人為本和自由性的要求,是手勢識別未來發展的趨勢。對基於深度錄影頭的手勢識別感興趣的讀者可以關注我後續的文章。

YiViAn 每日資訊

三星Gear VR每周新內容

360影片被用於募集對抗瘧疾基金

翠貝卡電影節備受歡迎的8個虛擬現實電影

約40%的玩家欲於明年購買虛擬現實頭顯

深度:Leap Motion手勢識別大揭秘

三星Gear 360在韓國上市 售價350美元

合作微信:ovalplus
YIVIAN 讀者群
分享VR知識和VR資料 
申請入群加微信:ovalplus

深度:Leap Motion手勢識別大揭秘

進入官網或回復關鍵字查相應資訊
深度:Leap Motion手勢識別大揭秘

讚賞

人讚賞

閱讀原文


關於作者:
Yivian,始於2014年10月23日,現已發展成為備受全球矚目的虛擬現實(VR)垂直媒體。我們與虛擬現實(VR)一起成長。

微信號:yiviannews

推薦閱讀:

》生不出男孩被婆家逼走,獨自養兩個女兒流落街頭,如今她是身價60億的水餃皇后!

》她是中國史上最強女海盜,讓多少洋人感受過被她支配的恐懼!