jueves, 9 de abril de 2015

Proyecto Kinect: Tecnologías aplicadas (SDK Oficial Kinect)

Para la implementación del sistema se requerían diversas tecnologías y entornos de desarrollo. En este post y siguientes, se describen tales tecnologías y su aplicación en el sistema

La última SDK oficial de Kinect lanzada por Microsoft fue publicada el 17 de Septiembre de 2013. Se denomina Kinect for Windows SDK en su versión 1.8. Con anterioridad, Microsoft lanzó otras cuatro versiones comerciales, la primera de ellas lanzada el 1 de Febrero de 2012.

El SDK de Kinect brinda una serie de bibliotecas y herramientas que ayudan a los desarrolladores a utilizar todas las funcionalidades del dispositivo Kinect. Este dispositivo en conjunción con sus bibliotecas interactúa con la aplicación como muestra la siguiente imagen:

Interacción entre software y hardware de Kinect con la aplicación

El SDK de Kinect, por tanto, funciona como una interfaz entre el dispositivo Kinect y la aplicación desarrollada. Cuando es necesario acceder al sensor, la aplicación envía una llamada a la API y ésta a los drivers.

Los drivers instalados para los diferentes sensores que incorpora Kinect se asientan con los componentes de los drivers de los dispositivos del sistema Windows, pudiéndose comunicarse entre sí. Los drivers ayudan a transmitir los datos de video y audio de los sensores y devolverlos a la aplicación. Estos drivers, por ejemplo, ayudan a detectar el conjunto de micrófonos que incluye Kinect como un dispositivo de audio predeterminado y también a ayudarle a interactuar con el motor de reconocimiento de voz de Windows por defecto.

Para entender la funcionalidad de las diferentes APIs y conocer su uso,  es bueno tener una visión clara de la manera en que trabajan. Se pueden clasificar las bibliotecas del SDK de Kinect en las dos categorías siguientes:
  • Aquellas que controlan y acceden a los sensores de visión de Kinect.
  • Aquellas que acceden a los micrófonos y el control del audio.
La primera categoría hace referencia a los sensores de captura del flujo de color, flujo de datos infrarrojos, y flujo de profundidad, también el control de la inicialización del sensor y el seguimiento de los esqueletos humanos. Un conjunto de APIs en esta categoría se comunica directamente con el hardware del sensor, mientras que unas pocas APIs de procesamiento se aplican a los datos que se capturan desde el sensor.

Por otro lado, las APIs de audio controlan el conjunto de micrófonos Kinect y ayudan a capturar el flujo de audio a partir de los sensores, el control del origen del sonido que permite el reconocimiento de voz. En la siguiente imagen se muestra una clasificación de alto nivel basada en el tipo de trabajo que realiza la API:
Clasificación del SDK de Kinect (Imagen: Libro "Kinect for Windows SDK Programming Guide". autor Abhijit Jana)
También se define la API SDK como Natural User Interfaces (NUI), que recupera los datos del sensor de profundidad y cámara a color y captura el flujo de datos de audio. Hay varias APIs que se escriben en la parte superior de las API NUI, tales como, aquellas para la recuperación de la información del sensor, simplemente mediante la lectura de los detalles del sensor y para el seguimiento de esqueletos humanos, siempre basado en el flujo de datos de profundidad devuelto desde el sensor.

La arquitectura que nos ofrece este SDK de Kinect se puede ver en la siguiente imagen:

Arquitectura SDK de Kinect (Imagen: Libro Kinect "Kinect for Windows SDK Programming Guide". autor Abhijit Jana)
Puntos clave detallados:
  1. Hardware: se compone de los componentes hardware, como son el sensor Kinect y el hub USB a través del cual el sensor se conecta al PC.
  2. Drivers: se compone de todos los drivers que necesita Windows para que el sensor funcione correctamente. Son instalados como parte del proceso de instalación del SDK de Kinect.
  3. Componentes de video y audio: permiten el acceso a los recursos del dispositivo. Como son el seguimiento del esqueleto, datos de profundidad e imagen capturada de la cámara.
  4. DirectX Media Object (DMO): para usar con aplicaciones como DirectShow o Media Foundation. Necesario para el funcionamiento del conjunto de micrófonos.
  5. Speech APIs: proveen el acceso al audio, y las APIs necesarias de Windows 8 para el reconocimiento de voz.
En cuanto a las funcionalidades y características del SDK de Kinect  que son de utilidad para el TFG realizado se tienen las siguientes:
  • Captura y procesamiento del flujo de datos de imágenes en color: captura imágenes a través de la cámara a color y permite obtener lo que ocurre en tiempo real.
  • Procesamiento del flujo de datos de la imagen de profundidad: captura imágenes, pero, sin embargo, son realizadas en escala de grises siendo capaz de detectar la profundidad de un cuerpo.
  • Seguimiento del esqueleto humano y los movimientos articulares: es una de las características más importantes del sensor Kinect, ya que es capaz de detectar 20 articulaciones de 2 esqueletos diferentes situados delante del sensor.
  • Activación del reconocimiento de voz: Kinect utiliza la tecnología de reconocimiento de voz a través de su conjunto de micrófonos que lleva consigo y permite localizar el origen del sonido.
  • Ajuste del ángulo del sensor Kinect: el sensor permite ser orientado hacia arriba o hacia abajo a través de la aplicación desarrollada.

Tras este paseo por las características y funcionalidades más importantes del SDK de Kinect, en siguientes posts os adentraré en los algoritmos y funcionalidades que he considerado aplicar en el TFG.


Álvaro Alcolea

No hay comentarios:

Publicar un comentario

Añade un comentario