C7

Computer Vision II
Kinect

———–
Presentación Procesos de trabajo: Daniel Cruz
———–

En esta clase continuamos con el tópico de Computer Vision, pero esta vez la conversación se centró en el sensor Kinect.

Kinect es un sensor que fue desarrollado casi completamente por la empresa Prime Sense de Israel quien provée de estos sensores a Microsoft para su consola de juego Xbox 360. Es de esta forma, que el sensor se hizo conocido para luego ser utilizado para fines distintos a los videojuegos.

A pesar de que a primera vista Kinect pareciera ser una cámara, éste es mucho más que eso. En realidad es un sensor – scanner 3D de luz estructurada

Gracias al interés de los creativos y desarrolladores de Hardware, se liberaron los Drivers (OpenNI) y Middleware (NITE) para poder hackear el sensor. De esta manera y gracias al trabajo de programadores que han creado librerías para Kinect, es ahora accesible por medio de Processing, Pure Data, Max/MSP Jitter entre otros.

Por medio de Kinect, se puede adquirir información de canales de color (RGB), de imagen infraroja (IR) y de profundidad de imagen. A través de esta información es posible luego realizar tracking de objetos en movimiento (Motion Capture), colores y distancias además de ser un sensor de reconocimiento de gestos (gesture recognition) (Seguimiento de esqueleto y de manos).

——————————-
Un comentario histórico acerca del Motion Capture (MoCap)
La captura de movimiento de cuerpos humanos y animales es casi tan antigua como la fotografía misma. Algunos referentes históricos importantes en esta disciplina son Edweard Muybridge, Étienne Jules-Marey y Harold Edgerton.

El estudio y experimentación de estos y otros investigadores posibilitaron, junto con el advenimiento y desarrollo de las tecnologías digitales, crear los sistemas de captura de movimiento como se conocen hoy en día y que son profusamente utilizados, sobre todo, en el cine.

Más info acerca de Motion Capture
——————————–

El sensor Kinect está compuesto entre otras cosas por:

– Una cámara VGA (640px x 480px) de 8 bits (256 niveles de sensibilidad).
– Un proyector de láser IR (junto con la cámara IR conforman el sensor de profundidad).
– Una cámara infrarroja VGA de 11 bits (2048 niveles de sensibilidad) (junto con el proyector láser IR conforman el sensor de profundidad).
– Matriz de micrófonos para localización de fuente acústica y supresión de ruido ambiente.
– Acelerómetro de 3 ejes.
– Un motor servo para controlar su inclinación.

– El rango de distancia de funcionamiento de la Kinect es de entre 1,2mts a 3,5mts.

A través de Processing y las librerías correspondientes podemos acceder a los datos que genera Kinect y utilizarlos ya sea para obtener imagenes RGB, IR; generar un mapa de profundidad o bien para tracking de movimiento.

A continuación los códigos revisados en clases. La mayoría son de los libros ‘Arduino and Kinect Projects de Enrique Ramos y Ciriaco Castro Díez’. Estos códigos sólo funcionan en las versiones de Processing anteriores a la 2.0 Otro libro de referencia es Making Things See de Greg Borenstein quien es el creador de las librerías para copmuter vision: OpenCV y Finger Tracker.

Hay diferentes formas para comuicarse con Kinect. Para poder trabajar con algunos de estos códigos, es necesario bajar las librerías SimpleOpenNI y kinectOrbit además de la librería de OpenGL para renders 3D (esta última ya viene incluida en Processing).
 

Screen Shot 2013-10-15 at 11.47.14 AM

 

Processing-3D-mouseXY-example


 

Cloud-Kinect-example

 

colorCloud-Kinect-example

Kinect está construida como un sensor de profundidad con tecnologías de sensor infrarrojo y RGB. A partir de esto y junto al procesamiento de estos datos es que se puede hacer seguimiento de movimientos de estructuras específicas como por ejemplo de cuerpos y manos humanas.

Para activar el seguimiento de cuerpos humanos, es necesario pararse en frente a la Kinect con los brazos levantados hasta que seas reconocido (aparecerá la estructura de esqueleto en la pantalla).

Para activar el seguimiento de las manos, debes en primera instancia , mover las manos como lo harías cuando saludas a la distancia.

————

Otros ejemplos de Motion Capture:

Portrait of the ghost drummer from odaibe on Vimeo.

unnamed soundsculpture from Daniel Franke on Vimeo.

unnamed soundsculpture (docu) from Daniel Franke on Vimeo.

Aaron Sherwood’s blog