Este documento presenta una introducción al uso de Kinect con C# y Visual Studio 2010 para crear interfaces de usuario naturales. Explica cómo instalar y usar el sensor Kinect, preparar el entorno de desarrollo, y trabajar con los fundamentos de la cámara, datos de profundidad, seguimiento de esqueletos y audio. El documento también incluye una agenda detallada y enlaces a demos para explorar más conceptos.
Desarrollo de interfaces humanas con Xbox Kinect y Visual Studio 2010
1. Interfaces de usuario naturales con
Kinect, C# y Visual Studio 2010
Edgar Sánchez
Logic Studio
2. Introducción
Diseñada para darte el empujón inicial
Se asume que tienes alguna experiencia en
programación
API administrada – Los conceptos funcionan en
VB/C# (y también en F# ;-)
3. Agenda
Instalación y uso del sensor Kinect
Preparación del ambiente de desarrollo
Fundamentos de la cámara
Trabajando con datos de profundidad
Fundamentos de seguimiento de esqueletos
Fundamentos de audio
10. Agenda
Instalación y uso del sensor Kinect
Preparación del ambiente de desarrollo
Fundamentos de la cámara
Trabajando con datos de profundidad
Fundamentos de seguimiento de esqueletos
Fundamentos de audio
11. Requisitos de los ejemplos
Ejemplos con DirectX
– Microsoft DirectX® SDK - June 2010 o posterior
– Runtime actual de Microsoft DirectX® 9
Ejemplos con voz
– Microsoft Speech Platform Runtime, version 10.2 (edición x86)
– Microsoft Kinect Speech Platform (versión US-English)
– Microsoft Speech Platform - Software Development Kit, version
10.2 (edición x86)
14. Agenda
Instalación y uso del sensor Kinect
Preparación del ambiente de desarrollo
Fundamentos de la cámara
Trabajando con datos de profundidad
Fundamentos de seguimiento de esqueletos
Fundamentos de audio
19. Agenda
Instalación y uso del sensor Kinect
Preparación del ambiente de desarrollo
Fundamentos de la cámara
Trabajando con datos de profundidad
Fundamentos de seguimiento de esqueletos
Fundamentos de audio
21. Buffer de bytes de
profundidad
ImageFrame.Image.Bits
Arreglo de bytes public byte[] Bits;
Arreglo
– Empieza arriba/izquierda de la imagen
– Se mueve de izquierda a derecha, y de arriba a abajo
– Representa la distancia para cada pixel
22. Calculo de la distancia
2 bytes por pixel (16 bits)
Profundidad – Distancia por pixel
– Bitshift second byte by 8
– Distance (0,0) = (int)(Bits[0] | Bits[1] << 8);
Índice DepthAndPlayer – Incluye el índice del
jugador
– Desplaz. de bits 3 primer byte (índice de jugador), 5
segundo byte
– Distancia (0,0) =(int)(Bits[0] >> 3 | Bits[1] << 5);
23. Referencia de profundidad
Rango de distancia: 850 mm a 4000 mm
Profundidad de 0 significa desconocido
– Sombras, baja/alta reflectividad entre otras
razones
Índice de jugador
– 0 – Sin jugador
– 1 – Esqueleto 0
– 2 – Esqueleto 1
26. Agenda
Instalación y uso del sensor Kinect
Preparación del ambiente de desarrollo
Fundamentos de la cámara
Trabajando con datos de profundidad
Fundamentos de seguimiento de esqueletos
Fundamentos de audio
29. Junturas
Máximo dos jugadores detectados a la vez
– Propuestas para seis jugadores
Cada jugador con un conjunto de junturas <x, y, z> en metros
Cada juntura tiene un estado asociado
– Tracked, Not tracked, o Inferred
Inferred – Junturas ocultas, recortadas o de baja confianza
Not Tracked – Inusual, pero el código debe controlar este estado