2012-06-29 2 views
2

J'utilise la classe HandsGenerator d'OpenNI, et je veux l'utiliser pour suivre les mouvements des utilisateurs.Gamme OpenNI de coordonnées retournées

J'ai enregistré mon propre rappel pour obtenir la position mise à jour de la main, et tout fonctionne bien, sauf que je ne peux pas trouver des informations sur le système de coordonnées etc. du XnPoint3D retourné. Y at-il une spécification quelque part qui spécifie précisément les plages X, Y, Z, et peut-être des informations de mise à l'échelle (pour que je sache qu'un changement de 100 dans le X de XnPoint3D correspond à un mouvement de 10 centimètres).

Répondre

2

Le HandsGenerator renvoie les coordonnées du monde réel en millimètres à partir du capteur. Cela signifie que les points de profondeur qui sont juste au milieu de la carte de profondeur auront un X et Y de 0.

Un changement de 100 (en X, Y, ou Z) est en effet un changement de 10 centimètres (100mm = 10 cm).

La plage des valeurs X an Y dépend de la valeur Z du point de main. En supposant que vous avez un point de la main en haut à gauche de la carte de profondeur (ou 0,0 en coordonnées projectives) les valeurs possibles de X et Y dépendent de la distance de la main. Plus la main est proche, plus le X et le Y sont petits. Pour obtenir la gamme maximale de vos positions de main, vous devez choisir une valeur max Z arbitraire, puis trouver les valeurs X & Y des coins de la carte de profondeur à cette distance. Ou en d'autres termes - convertir les coordonnées projectives (0,0, maxZ) et (DepthmapWidth, DepthmapHeight, maxZ) en coordonnées du monde réel. Tous les points de main ayant une valeur Z inférieure à maxZ se trouveront entre ces deux coordonnées du monde réel)

Notez que vous pouvez convertir des coordonnées projectives en monde réel en utilisant DepthGenerator :: ConvertProjectiveToRealWorld.

+0

Merci. Donc, en gros, les coordonnées sont en mm. Y a-t-il un endroit où des informations comme celle-ci sont ainsi je n'ai pas à demander à chaque fois? – houbysoft

+0

http://openni.org/Documentation/ –

+1

Je n'ai trouvé aucune information sur l'échelle (c'est-à-dire qu'un changement de 100 en X, Y, Z est un changement de 10 cm) là ... – houbysoft