2012-06-29 60 views
2

我使用的是OpenNI的HandsGenerator類,我想用它來跟蹤用戶的移動。OpenNI返回的座標範圍

我已經註冊了自己的回調函數來獲取手的更新位置,並且一切都正常,除非我找不到有關返回的XnPoint3D的座標系等的信息。是否有一個規範精確地指定了X,Y,Z範圍,以及可能的縮放比例信息(以便我知道在XnPoint3DX中對應於10釐米的移動或某物的變化爲100)。

回答

2

HandsGenerator以毫米爲單位從傳感器返回真實世界座標。這意味着在深度圖的正中間的深度點將具有X和Y的0。

100(在X,Y或Z中)的變化確實是10釐米的變化(100mm = 10釐米)。

X和Y值的範圍取決於手點的Z值。假設你在深度圖的左上方有一個手形點(或者在投影座標中爲0,0),可能的X和Y值取決於手的距離。手越近,X和Y越小。要獲得手部位置的最大範圍,您應該選擇任意的最大Z值,然後在該距離處查找深度圖角點的Y值。換句話說 - 將投影座標(0,0,maxZ)和(DepthmapWidth,DepthmapHeight,maxZ)轉換爲真實世界座標。所有具有小於maxZ的Z值的手點將落在這兩個真實世界座標之間)

請注意,您可以使用DepthGenerator :: ConvertProjectiveToRealWorld將投影座標轉換​​爲真實世界。

+0

謝謝。所以基本上它報告的座標以毫米爲單位。有沒有這樣的信息的地方,所以我不必每次都問問? – houbysoft

+0

http://openni.org/Documentation/ –

+1

我沒有找到任何關於比例尺的信息(即X,Y,Z變化爲100釐米)...... – houbysoft