La précision de la kinect de la profondeur de la caméra
Le degré de précision est la profondeur de la caméra du kinect?
- de gamme?
- résolution?
- bruit?
Surtout, j'aimerais savoir:
- Existe-il des spécifications officielles à ce sujet à partir de Microsoft?
- Existe-il des articles scientifiques sur le sujet?
- Enquêtes de TechBlogs?
- Expériences personnelles qui sont faciles à reproduire?
Je suis à la collecte de données pour environ un jour à l'autre, mais la plupart des écrivains ne pas citer leurs sources et les valeurs semblent tout à fait diffèrent...
- L'OP doit préciser quelles sont les données qu'ils veulent. Différents FOV angles ci-dessous sont dus à un) les différents capteurs et de données dans un Kinect (RVB v. de Profondeur) et b) de pré - ou de post-alignés, etc.
- attention à vérifier tout physiquement avec kinect. il y a plus de versions là-bas avec très différents paramètres de profondeur par exemple de la mine de 16 bits de données brutes valeurs qui ne sont pas 11/12/13 peu !!! ce qui n'est mentionné nulle part (format de données brutes est différent) (modèle de mine est 1414 pour XBOX360+PC de réduction...vraiment vieux) il min profondeur de gamme ~0,95 m !!!. sur les modèles plus récents, vous pouvez obtenir aussi près que ~0,4 m. Pilote pour les nouveaux modèles ne semble fonctionner correctement avec les anciens modèles. aussi, si vous souhaitez utiliser des accéléromètres, vous devriez savoir que l'accès n'est pas rapide ~10ms et leur précision est aussi pauvre ~1%
- après certaines des mesures plus précises de mon kinect-je savoir qu'elle a une profondeur de résolution ~0.121 mm et les données brutes est linéaire sur la gamme jusqu'à 2,0 m après que je n'ai pas vérifié.
- les données brutes a 0.121 mm par valeur, mais le capteur autour de 32x qui par étape donc, la résolution en profondeur est d'environ 3.872 mm
Vous devez vous connecter pour publier un commentaire.
Il y a des spécifications officielles du capteur développeur, pas de Microsoft. Pas d'articles scientifiques que je connais encore. Beaucoup d'enquêtes et d'expérimentations (voir Google). Le OpenKinect a beaucoup plus de discussions sur ces choses que ce site pour l'instant.
Le Kinect pour Windows SDK fournir des constantes qui j'ai été en utilisant et semblent être cohérentes. Pour gamme et résolution, ces valeurs sont:
Dans le mode par défaut:
À proximité de mode:
Pour la couleur de la caméra, vous pouvez avoir l'une des résolutions suivantes:
Pour la profondeur de la caméra, vous pouvez avoir l'une des résolutions suivantes:
Confrontant les informations de Avada Kedavra (et de la plupart des sources, par la voie), les valeurs de la champ de vision donné par l'API sont les suivantes:
Pour la couleur de la caméra:
Pour la profondeur de la caméra:
Source: http://msdn.microsoft.com/en-us/library/hh855368
La vraie question ici est à propos de la résolution et de la précision. J'ai des soins à puce d'ici que je trouve la résolution et de la précision pour être pas aussi bon que a déclaré. La puissance maximale de la résolution en profondeur est en effet 640x480, cependant, ce n'est pas la résolution efficace, et ce n'est pas exactement son degré de précision.
La méthode dans laquelle le kinect est basée sur la projection de lumière structurée. Un modèle de la lumière est émise et de la fonte à la surface, qui voit la caméra, puis calcule chaque rayon à partir de l'origine, a rebondi sur l'objet, à la caméra.
Le truc, c'est que ce modèle se compose de seulement 34.749 taches lumineuses qui peuvent être triangulées (http://azttm.wordpress.com/2011/04/03/kinect-pattern-uncovered/). Si on le rapporte à une résolution de 640 x 480=307.200 points de données, nous remarquons une grande différence. Demandez-vous si la quantité de données 10 fois le montant de la source de données de points peut être considéré comme valide, et échantillonnées de manière efficace. J'en doute. Si vous me demandez ce que la résolution efficace de la kinect, je pense que c'est autour de 240x180 d'honnête et de données assez bonne.
Selon Kinect tech spec enfin révélé les spécifications pour la profondeur de champ sont (ces match est également confirmé dans l'officiel du guide de programmation posté par Mannimarco):
Mais à partir de ma propre expérience, la profondeur de la zone de détection du capteur est plus comme
0.8m-4.0m
, au moins je reçois une bonne lecture de cette gamme. Cette gamme correspond à la Primesense fiche de données posté par mankoff dans les commentaires ci-dessous.Il est également important de se rappeler que la résolution en profondeur est beaucoup plus élevé à proximité du capteur de loin. À 3-4 mètres de la résolution n'est pas aussi bonne qu'à 1,5 m de. Cela devient important, si vous, par exemple, pour calculer les normales de la surface. Le résultat sera meilleur plus près du capteur que plus loin.
Ses pas dur de tester la gamme vous-même. Le SDK Officiel (actuellement en bêta) vous donne un zéro (0) de profondeur lorsque vous êtes hors de portée. Donc, vous pouvez le tester avec une simple règle, et de tester à quelle distance de vous obtenir/ne pas se faire toute lecture supérieure à zéro. Je ne sais pas comment le OpenKinect SDK poignées en dehors de la plage de lecture..
Un commentaire à propos de bruit: je dirais qu'il est tout à fait un peu de bruit dans la profondeur des cours d'eau qui le rend plus difficile à travailler. Par exemple, si vous calculez la surface des normales, vous pouvez vous attendre à être un peu "nerveux", ce qui, bien entendu, aura un impact négatif sur les faux de l'éclairage etc. De plus, vous avez un problème de parallaxe dans la profondeur de flux en raison de la distance entre l'émetteur IR et le récepteur. Cela peut aussi être difficile de travailler avec car il de laisser un grand "ombre" dans les données de profondeur. Cette vidéo sur youtube illustre le problème et de discuter de la façon de résoudre le problème en utilisant les shaders. Son d'une vidéo vaut la peine de regarder.
Je pense qu'il pourrait être utile de mentionner le papier de Khoshelham et Elbernik qui n'proposer théorique erreur aléatoire modèle de la kinects capteur de profondeur en Février '12. Il est appelé "la Précision et la Résolution de Kinect Données de Profondeur pour l'Intérieur des Applications de Cartographie".
Le document peut être trouvé ici.
Si vous cherchez quelque chose de publié par Microsoft, consultez la page 11 de la Kinect Guide De Programmation. Il dit à peu près la même chose que tout le monde ici l'a déjà mentionné.
Je ne vois rien de mentionner le bruit, mais je peux dire que c'est assez minime, sauf le long des bords de surface où il peut devenir de plus en plus perceptibles.
Mon expérience est qu'il n'est pas exact. C'est plutôt OK, mais quand on le compare à ruban à mesurer, il n'est pas de correspondance exacte. J'ai fait un fichier Excel avec les mesures pour chaque 10mm, et il ne tient pas en place, surtout les choses qui sont plus de 2500mm de suite, mais de plus près aussi.
Gardez également à l'esprit que la profondeur réelle des pixels est beaucoup plus faible est alors annoncé. L'électronique à l'intérieur remplit les halètements, c'est pourquoi vous voyez petite zone d'artefacts, et non pas quelque chose comme les données de pixel. En substance, cela signifie que 320x240 a 1/8 de pixels couverts par un "réel" de la mesure, les autres pixels sont calculés. Vous pouvez utiliser 640x480; mais il ne serait CPU/UBS de ressources et ne rendra pas votre application, voir mieux.
C'est juste mes deux cents d'expérience, je suis à la programmation robotique.