Leap Motion 的原理是什麼?
這種超精準的手勢追蹤技術以後的發展會怎樣?
從 API 的角度大概說一下。
Leap Motion 傳感器的結構:
大體上,Leap 傳感器根據內置的兩個攝像頭從不同角度捕捉的畫面,重建出手掌在真實世界三維空間的運動信息。檢測的範圍大體在傳感器上方 25 毫米到 600 毫米之間,檢測的空間大體是一個倒四棱錐體。
首先,Leap Motion 傳感器會建立一個直角座標系,座標的原點是傳感器的中心,座標的 X 軸平行於傳感器,指向屏幕右方。Y 軸指向上方。Z 軸指向背離屏幕的方向。單位爲真實世界的毫米。如圖:
在使用過程中, Leap Motion 傳感器會定期的發送關於手的運動信息,每份這樣的信息稱爲「幀」( frame )。每一個這樣的幀包含檢測到的:- 所有手掌的列表及信息;
- 所有手指的列表及信息;
- 手持工具(細的、筆直的、比手指長的東西,例如一枝筆)的列表及信息;
- 所有可指向對象(Pointable Object),即所有手指和工具的列表及信息;
Leap 傳感器會給所有這些分配一個唯一標識(ID),在手掌、手指、工具保持在視野範圍內時,是不會改變的。根據這些 ID,可以通過 Frame::hand( ) , Frame::finger( ) 等函數來查詢每個運動對象的信息。
Leap 可以根據每幀和前幀檢測到的數據,生成運動信息。例如,若檢測到兩隻手,並且兩隻手都超一個方向移動,就認爲是平移;若是像握著球一樣轉動,則記爲旋轉。若兩隻手靠近或分開,則記爲縮放。所生成的數據包含:
- 旋轉的軸向向量;
- 旋轉的角度(順時針爲正);
- 描述旋轉的矩陣;
- 縮放因子;
- 平移向量;
對於每隻手,可以檢測到如下信息:
- 手掌中心的位置(三維向量,相對於傳感器座標原點,毫米爲單位);
- 手掌移動的速度(毫米每秒);
- 手掌的法向量(垂直於手掌平面,從手心指向外);
- 手掌朝向的方向;
- 根據手掌彎曲的弧度確定的虛擬球體的中心;
- 根據手掌彎曲的弧度確定的虛擬球體的半徑;
其中,手掌的法向量和方向如下圖所示:
「手掌球」的圓心和半徑:對於手指和工具,會統一地稱爲可指向對象(Pointable Object,抱歉不太會翻譯),每個 Pointable Object 包含了這些信息:
- 長度;
- 寬度;
- 方向;
- 指尖位置;
- 指尖速度;
方向和指尖位置如下圖:
根據全局的信息、運動變換,手掌、手指和工具的信息和變換,開發者就可以靠這些來製作遊戲、程序了。
大概就是這樣了~
參考:Leap Motion 的開發者文檔 Leap Motion | Developers這個問題在Quora上有過討論,也算是我本行接觸很多的技術。基本上,leap motion的主要原理是使用紅外LED+灰階camera的方式才採集數據,並生成3D數據。
這樣的技術並不算新鮮,但Leap的優勢是在軟體方面,當然由於使用了紅外LED+灰階camera,成本也會更便宜一些。由於只處理手部的3D,不像現在Kinect需要生成全身skeleton, 複雜的depth信息,Leap的運行效率自然也會高很多,對處理圖形的DSP要求也不會特別高。
Kinect的技術是用激光+camera的方式實現3D建模。其實兩者的實現的總的方式是差不多的,無非是技術使用以及演算法上面的區別。如果Leap的技術做遠距離的,性能就不會有現在的那麼好了。
其實,現在有比Leap更好的技術,成本上比他們還要便宜,就是E-field。具體技術細節我就不羅嗦了,想學習的可以Google去。E-field在3D建模的性能上,XYZ坐標的識別速度上都很好,而且關鍵的是,這種技術對PCB沒有過多的空間需求,成本也更便宜。相比Leap,我更看好E-filed。
附上在Quora上的一些討論:
Hans Gerwitz, underperforming consumer
10 votes by David Lojudice Sobrinho, Mattias Petter Johansson, Waldir Pimenta, (more)Engadget"s hands-on review included this:
We asked both Holz, and Buckwald about the underlying technology that enables such high-fidelity controls, and were told that it"s an optical system that tracks your fingers with infrared LEDs and cameras in a way unlike any other motion control tech.http://www.engadget.com/2012/05/...This is pretty consistent with the form factor of the prototypes and pre-production models that have been shown. Also, Holz (the CTO who has developed the magic math that reportedly enables the Leap) previously worked on a NASA project that used camera data to determine atmospheric composition. Determining the difference between air and finger seems pretty trivial compared to finding methane in CO2.新消息:
- Holz and his co-founder, Michael Buckwald, have built a device about the size of a cigarette lighter that contains three tiny cameras inside.
3個攝像頭,看來最重要的部分來自嵌入式軟體。
- Leap Motion"s patented software, the heart of the Leap, represents four years of research and a series of major mathematical breakthroughs by co-founder and CTO David Holz.
商業周刊里的Leap motion公司信息:
http://investing.businessweek.com/research/stocks/private/snapshot.asp?privcapId=134190245半年多前在剛看到leap motion的的時候, 因為誤會是一個類似kinect做大範圍3d掃描的設備,因此對它的精度和準確性有很大疑問, 在知乎上問了個問題 最近非常火很多人關注的 leap motion 是不是一家騙子公司?應當不是騙子公司,但可能有點誇大精度。 事實證明我錯了。
現在有了足夠的信息,可以猜測leap motion的原理了, 我之前思維的盲區是把leap motion 當成一個做3d 掃描的設備。 事實上它不是。 leap motion 只能給出特定的一些目標, 如手指尖端, 特定手掌的位置和朝向信息等等。 從這些可以判斷, leap motion 利用了物體對紅外照射反射特性不同而形成的光場,進行基於光場並在其中檢測特定特徵的計算。 演算法可以比較準確的檢測反射光場中的極點(如手指和物體尖端)和特定形狀的大範圍反射面(手掌)。 這種計算會受到一些干擾,比如環境光強變化(如背景光太亮,導致光場反差小), 多手指併攏交叉等互相干涉(奇異點不突出)都會有較大影響。 leap motion 的創始人之一是學數學的博士,能達到標稱的精度,在演算法方面應當有一定的突破。 但不超出流場中特定形狀檢測的範疇。剛好隨手看到了Leap Motion控制器工作原理詳解_click研發組用人話說就是用倆攝像頭直接「看」,然後經過複雜演算法得到具體的手勢數據(也就是和kinect類似?)因為用的是攝像頭,所以成本比較低(對比什麼用超聲波反射的、用紅外線掃描中斷的)
我沒有leap 3d的硬體,我只是猜測下。
它的硬體是雙目立體視覺,它的開發者說速度快是因為數學模型,我估計就是簡單的圖像四則運算,紅外線照射估計功率低,近距離的物體才有反光,所以得到的雙目圖像都是近距離的。它得到的圖像是一個近距離物體的紅外灰度圖或者二值圖吧。它的功能主要就是集中在深度距離探測、指尖以及它的方向獲取、目標跟蹤。
對於距離的探測的演算法可能:
1.灰度的差值表示距離的遠近;2.左右攝像頭兩幅圖像是近似的,但是目標物體坐標不一樣,所以可能是以左眼圖像為基準,對右眼所有圖像進行平移,再相減,負數求絕對值,那麼求像素總和,當得到最小值時就是左右眼視差的值,以此判斷距離。圖像的矩陣元素的平移和矩陣的相減DSP算的很快的,就幾個時鐘周期對於指尖的獲取,可能是用數學形態學獲取圖像骨架,就是運算元和圖像矩陣乘加,用DSP算很快的。得到骨架,就自然能得到端點和指向
對於跟蹤,也許是用了類似mean-shift之類的演算法,也是一個核函數運算元和圖像矩陣乘加,運算速度超快半年多前在剛看到leap motion的的時候, 因為誤會是一個類似kinect做大範圍3d掃描的設備,因此對它的精度和準確性有很大疑問, 在知乎上問了個問題 最近非常火很多人關注的 leap motion 是不是一家騙子公司?應當不是騙子公司,但可能有點誇大精度。 事實證明我錯了。
現在有了足夠的信息,可以猜測leap motion的原理了, 我之前思維的盲區是把leap motion 當成一個做3d 掃描的設備。 事實上它不是。 leap motion 只能給出特定的一些目標, 如手指尖端, 特定手掌的位置和朝向信息等等。 從這些可以判斷, leap motion 利用了物體對紅外照射反射特性不同而形成的光場,進行基於光場並在其中檢測特定特徵的計算。 演算法可以比較準確的檢測反射光場中的極點(如手指和物體尖端)和特定形狀的大範圍反射面(手掌)。 這種計算會受到一些干擾,比如環境光強變化(如背景光太亮,導致光場反差小), 多手指併攏交叉等互相干涉(奇異點不突出)都會有較大影響。 leap motion 的創始人之一是學數學的博士,能達到標稱的精度,在演算法方面應當有一定的突破。 但不超出流場中特定形狀檢測的範疇。從硬體的示意圖來看,leap motion使用的是人眼3d原理,將兩個獨立的2d畫面轉換為空間3d感應,這個應該對生物的模擬科技,感覺從成本和效果來說,非常的優秀,從這個推測,未來的人機交互系統將有相當一部分會建立在姿態識別上,會取代一部分的觸摸設備,前景非常的廣闊
推薦閱讀:
※如何評價雜誌《少年電腦世界》?
※未來,在家工作在什麼時候可以普及?
※為何網路如此發達,網路本身卻停滯不前?
TAG:交互設計 | 信息技術IT | 科技 | LeapMotion |