significado reconocimiento patrones para one objetos funciona con como caracteristicas kinect depth

para - reconocimiento de patrones kinect



Precisión de la cámara de profundidad kinect (7)

Creo que podría valer la pena mencionar el artículo de Khoshelham y Elbernik que sí propuso un modelo teórico de error aleatorio del sensor de profundidad de los kinects en febrero de 12. Se llama "Precisión y resolución de datos de profundidad de Kinect para aplicaciones de mapeo en interiores". El documento se puede encontrar here .

¿Cuán precisa es la cámara de profundidad en el kinect?

  • ¿distancia?
  • ¿resolución?
  • ¿ruido?

Especialmente me gustaría saber:

  • ¿Hay alguna especificación oficial sobre esto de Microsoft?
  • ¿Hay algún documento científico sobre el tema?
  • Investigaciones de TechBlogs?
  • ¿Experimentos personales que son fáciles de reproducir?

Estoy recolectando datos durante aproximadamente un día, pero la mayoría de los escritores no nombran sus fuentes y los valores parecen ser bastante diferentes ...


Kinect for Windows SDK proporciona algunas constantes que he estado usando y que parecen ser consistentes. Para rango y resolución , estos valores son:

En modo predeterminado:

  • Rango mínimo: 80 cm
  • Alcance máximo: 400 cm

En modo cercano:

  • Rango mínimo: 40 cm
  • Alcance máximo: 300 cm

Para la cámara a color, puede tener cualquiera de las siguientes resoluciones:

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

Para la cámara de profundidad, puede tener cualquiera de las siguientes resoluciones:

  • 80x60
  • 320x240
  • 640x480

Enfrentar la información de Avada Kedavra (y de la mayoría de las fuentes, por cierto), los valores para el campo de vista dados por la API son los siguientes:

Para la cámara a color:

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

Para la cámara de profundidad:

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

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


La verdadera pregunta aquí era sobre resolución y precisión. Me interesa ingresar aquí porque la resolución y la precisión no son tan buenas como las mencioné. La salida máxima de la resolución de profundidad es de hecho 640x480, sin embargo, esta no es la resolución efectiva, y esto no es exactamente lo precisa que es.

El método en el que trabaja el kinect se basa en la proyección de luz estructurada. Se emite y proyecta un patrón de luz en la superficie, que una cámara ve y luego triangula cada rayo desde el origen, rebota en el objeto, hacia la cámara.

El caso es que este patrón consta de solo 34.749 puntos brillantes que se pueden triangular ( http://azttm.wordpress.com/2011/04/03/kinect-pattern-uncovered/ ). Si relacionamos esto con una resolución de 640x480 = 307.200 puntos de datos, notamos una gran diferencia. Pregúntese si la cantidad de datos 10 veces la cantidad de puntos de datos de origen se puede ver como válida y se puede tomar una muestra de manera eficiente. Lo dudo. Si me preguntan cuál es la resolución efectiva del kinect, supongo que es alrededor de 240x180 de datos honestos y bastante buenos.


Mi experiencia es que no es tan exacto. Está bastante bien, pero cuando lo comparas con una cinta métrica Entonces no es exactamente coincidente. Hice un Excel con medidas por cada 10mm que no aguanta, algo especial que está a más de 2500mm de distancia, pero más cerca también. Tenga en cuenta también que los píxeles de profundidad reales son mucho más bajos que los anunciados. La electrónica en el interior llena los jadeos, es por eso que ves pequeños artefactos de área, y no algo así como datos de píxeles. En esencia, esto significa que 320x240 tiene 1/8 píxeles cubiertos por una medición "real", otros píxeles se calculan. Entonces podrías usar 640x480; pero solo sería un recurso de CPU / UBS y no hará que su aplicación se vea mejor.

bueno, eso es solo mis 2 centavos de experiencia, estoy programando robótica.


Según las especificaciones técnicas de Kinect, finalmente se revelaron las especificaciones para el campo de profundidad (estas coincidencias también se confirman en la guía de programación oficial publicada por 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

Pero desde mi propia experiencia, el rango del sensor de profundidad es más como 0.8m-4.0m , al menos obtengo una buena lectura en este rango. Este rango coincide con la hoja de datos Primesense publicada por mankoff en los comentarios a continuación.

También es importante recordar que la resolución de profundidad es mucho más alta cerca del sensor que más lejos. Con 3-4 metros la resolución no es tan buena como a 1.5m. Esto se vuelve importante si, por ejemplo, desea calcular las normales de la superficie. El resultado será mejor cerca del sensor que más lejos.

No es difícil probar el rango usted mismo. El SDK oficial (actualmente beta) le dará una profundidad de cero (0) cuando se encuentre fuera del alcance. Por lo tanto, puede probar esto con una regla simple y probar a qué distancia obtiene / no obtiene ninguna lectura mayor que cero. No sé cómo el SDK de OpenKinect maneja las lecturas fuera de rango.

Un comentario sobre el ruido: Diría que hay bastante ruido en el flujo de profundidad que hace que sea más difícil trabajar con él. Por ejemplo, si calcula las normales de superficie, puede esperar que estén un poco "inquietas", lo que por supuesto tendrá un impacto negativo en la iluminación falsa, etc. Además, tiene un problema de paralaje en el flujo de profundidad debido a la distancia entre el transmisor IR y el receptor. Esto también puede ser difícil de trabajar, ya que deja una gran "sombra" en los datos de profundidad. Este video de youtube demuestra el problema y analiza una forma de resolver el problema utilizando sombreadores. Es un video que vale la pena ver.


Si busca algo publicado por Microsoft, consulte la página 11 de la Guía de programación de Kinect . Dice más o menos lo mismo que todos aquí han mencionado.

  • Rango: 1.2 a 3.5 metros
  • Ángulo de visión: 43 ° vertical por 57 ° horizontal
  • Rango de inclinación mecanizado: ± 28 °
  • Velocidad de fotogramas: 30 fotogramas por segundo
  • Resolución, flujo de profundidad: 320 x 240 (en realidad puede ir más allá de esto)
  • Resolución, flujo de color: 640 x 480 (de nuevo, puede ir más arriba)

No veo nada que mencione el ruido, pero puedo decir que es bastante mínimo, excepto a lo largo de los bordes de la superficie, donde puede ser más notorio.


  • Rango: ~ 50 cm a 5 m. Puede acercarse (~ 40 cm) en partes, pero no puede tener la vista completa de <50 cm.
  • Resolución horizontal: FOV vertical de 640 x 480 y 45 grados y FOV horizontal de 58 grados. La geometría simple muestra aproximadamente ~ 0,75 mm por píxel x por y a 50 cm, y ~ 3 mm por píxel x por y a 2 m.
  • Resolución de profundidad: ~ 1.5 mm a 50 cm. Alrededor de 5 cm a 5 m.
  • Ruido: aproximadamente + -1 DN en todas las profundidades, pero DN a profundidad no es lineal. Esto significa + -1 mm de cerca, y + - 5 cm de distancia.

Existen especificaciones oficiales del desarrollador del sensor, no de Microsoft. No hay artículos científicos que yo sepa todavía. Un montón de investigaciones y experimentos (ver Google). El OpenKinect tiene mucha más discusión sobre estas cosas que este sitio por ahora.