Kinect y Processing: SimpleOpenNI

Ya sea trabajando directamente con la librería SimpleOpenNI y la librería de Processing, o trabajando con la librería de Shiffman (openkinect),  o con el esqueleto, existen tres formas de trabajar con la imagen que recoge la Kinect:

-Imagen de profundidad(Depth images)

-Nube de puntos(Point Cloud)

-Esqueleto

¿Qué es SimpleOpenNi?

OpenNI (Open Natural Interaction) es una organización sin ánimo de lucro enfocada en el desarrollo de tecnologías para la interacción natural con dispositivos.  Uno de sus principales participantes es PrimeSense, una empresa israelí responsable del desarrollo del Kinect y dispositivos similares junto con la firma Asus.

Su framework provee una infraestructura genérica basada en APIs de código abierto para acceder a los dispositivos de interacción natural, sobre él se instala el Sensor que permite acceder específicamente a los servicios provistos por el Kinect.  Adicionalmente esta empresa desarrolla el middleware NITE el cual no es de código abierto y permite acceder a funcionalidades avanzadas como seguimiento del esqueleto en tiempo real y  reconocimiento de gestos entre otras cosas.

En Processing, para todas ellas, hay que realizar unos pasos previos de configuración y visualización. Centrándonos en la librería OpenNI (ya que la de openkinect está basada en esta y es muy similar), los pasos esenciales serian:

-Instalar OpenNI en el pc.

http://code.google.com/p/simple-openni/wiki/Installation

En processing:

-Importar la librería SimpleOpenNI , como es un wrapper -envoltorio- para Processing del Toolkit OpenNI, lo que nos proporciona las capacidades de OpenNI en Processing, dejándonos escribir código que permita recoger las ventajas que proporciona PrimeSense en su Framework. Es por lo cual se debe instalar Nite y OpenNI, cuando se accede desde Processing al código de Kinect, lo realmente complicado lo hace el código de OpenNI.

import SimpleOpenNI.*;

-Declarar un objeto del tipo SimpleOpenNI, el cual usaremos para acceder a los datos de Kinect.

SimpleOpenNI  kinect;

-En la función setup de Processing;:

void setup() {
  size(640,480);

Declarar el tamaño de la pantalla con el tamaño de la imagen de Kinect, (Puede ser mayor, siempre que respetemos que imagen de Kinect siempre será de este tamaño).

-Instanciar el objeto SimpleOpenNI:

kinect = new SimpleOpenNI(this);

-Dependiendo de que se desee hacer en la aplicación se activarán las cámaras de profundidad o de RGB normal.  Esta función devolvería TRUE si está conectada y FALSE si no encontrara la Kinect.

kinect.enableDepth();

y/o

kinect.enableRGB();

-Hasta aquí el Setup. Luego se procede a la función en loop draw() de Processing.

void draw() {
  kinect.update();

Esta función le indica a la librería que recoja los datos actuales de Kinect. Recogerá diferentes datos dependiendo de que cámara se haya activado en el setup.

-Podemos acceder a la imagen recogida, del tipo PImage de Processing.

La imagen de profundidad:

kinect.depthImage();

La imagen en color:

Kinect.rgbImage();

Etiquetas: , , ,

About Miriam Esteve

Ingeniera & creativa. Amiga de mis amigos. Me gustan las cosas bonitas, el diseño, el video y la fotografía, cocinar, reír y disfrutar de la vida! Spain&Germany www.control-art.com

2 responses to “Kinect y Processing: SimpleOpenNI”

  1. Luisa says :

    Una duda ¿se puede usar para el desarrollo de aplicaciones cualquier sensor Kinect?
    Lo que pasa es que pienso comprar un “Kinect para Xbox” y sé que existe un “Kinect para Windows”
    ¿Un Kinect para Xbox se puede utilizar para hacer desarrollos?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: