40 votes

Précision de la caméra de profondeur kinect

Quelle est la précision de la caméra de profondeur dans le Kinect ?

  • gamme ?
  • résolution ?
  • du bruit ?

J'aimerais surtout savoir :

  • Y a-t-il des spécifications officielles à son sujet de la part de Microsoft ?
  • Existe-t-il des documents scientifiques sur le sujet ?
  • Enquêtes des TechBlogs ?
  • Des expériences personnelles faciles à reproduire ?

Je collecte des données depuis environ un jour maintenant, mais la plupart des auteurs ne nomment pas leurs sources et les valeurs semblent assez différentes...

1 votes

Le PO devrait préciser quelles données il souhaite obtenir. Les différents angles FOV ci-dessous sont dus a) aux différents capteurs et données dans un Kinect (RVB vs. Profondeur) et b) au pré- ou post-alignement, etc.

0 votes

Il y a plusieurs versions avec des paramètres de profondeur très différents, par exemple la mienne utilise des valeurs de données brutes de 16 bits et non 11/12/13 bits ! !! ce qui n'est mentionné nulle part (le format des données brutes est différent) (mon modèle est le 1414 pour la réduction XBOX360+PC...vraiment vieux) il a une portée de profondeur minimale ~0.95m ! !!. sur les modèles plus récents vous pouvez vous approcher jusqu'à ~0.4m. Le pilote pour les modèles plus récents semble fonctionner correctement avec les modèles plus anciens. aussi si vous voulez utiliser des accéléromètres vous devez savoir que l'accès n'est pas rapide ~10ms et leur précision est aussi pauvre ~1%.

0 votes

Après quelques mesures plus précises de ma kinect, je détermine qu'elle a une résolution en profondeur de ~0.121 mm et que les données brutes sont linéaires jusqu'à 2.0 m, après quoi je n'ai pas vérifié.

29voto

mankoff Points 712
  • Portée : ~ 50 cm à 5 m. Peut se rapprocher (~ 40 cm) par endroits, mais la vue complète ne peut être < 50 cm.
  • Résolution horizontale : 640 x 480, FOV vertical de 45 degrés et FOV horizontal de 58 degrés. La géométrie simple montre que c'est environ ~ 0,75 mm par pixel x par y à 50 cm, et ~ 3 mm par pixel x par y à 2 m.
  • Résolution en profondeur : ~ 1,5 mm à 50 cm. Environ 5 cm à 5 m.
  • Le bruit : Environ +-1 DN à toutes les profondeurs, mais le rapport entre le DN et la profondeur n'est pas linéaire. Cela signifie +-1 mm près, et +- 5 cm loin.

Les spécifications officielles proviennent du développeur du capteur, pas de Microsoft. Aucun article scientifique à ma connaissance. Beaucoup d'enquêtes et d'expériences (voir Google). Le site OpenKinect a beaucoup plus de discussion sur ces choses que ce site pour le moment.

0 votes

Mankoff : Avez-vous une référence pour ces spécifications ou sont-elles basées sur vos propres expériences ?

0 votes

Mes propres expériences pour tout sauf FOV qui vient des spécifications du capteur.

12voto

Guilherme Points 71

Le Kinect for Windows SDK fournit quelques constantes que j'ai utilisées et qui semblent être cohérentes. Pour gamme y résolution ces valeurs sont :

En mode par défaut :

  • Portée minimale : 80 cm
  • Portée maximale : 400 cm

En mode proche :

  • Gamme minimale : 40 cm
  • Portée maximale : 300 cm

Pour la caméra couleur, vous pouvez avoir l'une des résolutions suivantes :

  • 80x60
  • 320x240
  • 640x480
  • 1280x960

Pour la caméra de profondeur, vous pouvez avoir l'une des résolutions suivantes :

  • 80x60
  • 320x240
  • 640x480

Confronter les informations de Avada Kedavra (et de la plupart des sources, d'ailleurs), les valeurs pour les champ de vision données par l'API sont les suivantes :

Pour la caméra couleur :

  • FOV horizontal : 62,0°.
  • FOV vertical : 48,6°

Pour la caméra de profondeur :

  • FOV horizontal : 58,5°.
  • FOV vertical : 45,6°

Source : http://msdn.microsoft.com/en-us/library/hh855368

7voto

TimZaman Points 232

La véritable question portait sur la résolution et la précision. Je tiens à intervenir ici car je trouve que la résolution et la précision ne sont pas aussi bonnes qu'on le dit. La sortie maximale de la résolution de profondeur est effectivement de 640x480, cependant, ce n'est pas la résolution effective, et ce n'est pas exactement la précision.

La méthode de fonctionnement de la kinect est basée sur la projection de lumière structurée. Un motif de lumière est émis et projeté sur la surface, qu'une caméra voit, puis triangule chaque rayon depuis l'origine, rebondissant sur l'objet, jusqu'à la caméra.

Le fait est que ce modèle est composé de seulement 34.749 points lumineux qui peuvent être triangulés. ( http://azttm.wordpress.com/2011/04/03/kinect-pattern-uncovered/ ). Si nous rapportons cela à une résolution de 640x480=307.200 points de données, nous constatons une grande différence. Demandez-vous si la quantité de données 10 fois supérieure à la quantité de points de données source peut être considérée comme valide, et échantillonnée efficacement. J'en doute. Si vous me demandez quelle est la résolution effective de la Kinect, je dirais qu'elle est d'environ 240x180 de données honnêtes et plutôt bonnes.

0 votes

Notez que le nouveau Kinect n'utilise pas la lumière structurée (PrimeSense), mais le mécanisme de temps de vol (Canesta).

5voto

Avada Kedavra Points 3127

Según Les spécifications techniques de Kinect enfin révélées les spécifications pour le champ de profondeur sont (ces correspondances sont également confirmées dans le guide de programmation officiel comme posté par Mannimarco) :

* Horizontal field of view: 57 degrees
* Vertical field of view: 43 degrees
* Physical tilt range: ± 27 degrees
* Depth sensor range: 1.2m - 3.5m
* Resolution depth stream: 320x240 pixels
* Resolution color stream: 640x480 pixels

Mais d'après ma propre expérience, la gamme de capteurs de profondeur est plutôt de l'ordre de 0.8m-4.0m Au moins, j'obtiens de bonnes lectures dans cette gamme. Cette gamme correspond à la fiche technique de Primesense postée par mankoff dans les commentaires ci-dessous.

Il est également important de se rappeler que la résolution en profondeur est beaucoup plus élevée près du capteur que plus loin. À 3-4 mètres, la résolution est loin d'être aussi bonne qu'à 1,5 mètre. Cela devient important si vous voulez, par exemple, calculer les normales de la surface. Le résultat sera meilleur près du capteur que plus loin.

Il n'est pas difficile de tester la gamme vous-même. Le SDK officiel (actuellement en version bêta) vous donnera une profondeur de zéro (0) lorsque vous êtes hors de portée. Donc, vous pouvez tester cela avec une simple règle, et tester à quelle distance vous obtenez / n'obtenez pas de lecture supérieure à zéro. Je ne sais pas comment le SDK OpenKinect gère les lectures hors de portée.

Un commentaire sur le bruit : je dirais qu'il y a pas mal de bruit dans le flux de profondeur, ce qui le rend plus difficile à travailler. Par exemple, si vous calculez les normales de la surface, vous pouvez vous attendre à ce qu'elles soient un peu "sautillantes", ce qui aura bien sûr un impact négatif sur les faux éclairages, etc. En outre, vous avez un problème de parallaxe dans le flux de profondeur en raison de la distance entre l'émetteur IR et le récepteur. Cela peut également être difficile à gérer car cela laisse une grande "ombre" dans les données de profondeur. Cette vidéo youtube démontre le problème et discute d'un moyen de résoudre le problème en utilisant des shaders. C'est une vidéo qui vaut la peine d'être regardée.

2 votes

Il y a sont Spécifications officielles. Voir les fiches techniques ici : openkinect.org/wiki/Hardware_info

0 votes

@mankoff : Merci de partager cela. C'est un lien intéressant. Les fiches techniques du matériel référencées le sont cependant, muy Je ne trouve rien sur la page vers laquelle vous vous dirigez qui réponde aux questions de l'OP (et aux miennes) concernant la portée du capteur de profondeur, la résolution de la profondeur, etc. Et aussi, utiliser openkinect.org comme source de spécifications officielles ? Ce sont peut-être les dieux de Kinect, mais ils ne sont pas officiels :)

0 votes

Désolé, mauvais lien. Essayez ce PDF db.tt/N1SxqFvp Je ne fais pas de lien vers OpenKinect comme étant officiel, juste vers des liens sur leurs pages.

1voto

Coeffect Points 3542

Si vous recherchez quelque chose publié par Microsoft, consultez la page 11 de la page Guide de programmation Kinect . Il dit à peu près la même chose que tout le monde ici a déjà mentionné.

  • Gamme : 1,2 à 3,5 mètres
  • Angle de vue : 43° vertical par 57° horizontal
  • Plage d'inclinaison mécanisée : ±28°.
  • Fréquence d'images : 30 images par seconde
  • Résolution, flux de profondeur : 320 x 240 (peut aller plus haut que cela)
  • Résolution, flux de couleurs : 640 x 480 (encore une fois, cela peut aller plus haut)

Je ne vois rien qui mentionne le bruit, mais je peux dire qu'il est assez minime, sauf le long des bords de la surface où il peut devenir plus perceptible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X