Práctica

Práctica

La práctica se divide en cuatro fases. En cada una de ellas hay una serie de tareas que el alumno debe realizar.

Las especificaciones de cada una de las cuatro fases de la práctica se detallan a continuación:

Práctica: Primera parte

  • En la primera parte de la práctica el alumno debe acceder, compilar y ejecutar el programa localizado en ../OpenNI/Samples/NiSimpleViewer.
Este programa será la base sobre la que se realizará el resto de la práctica, así que es importante que se entienda adecuadamente. La mejor opción es seguir la guía dada por la propia documentación de OpenNi, que puede accederse aquí.
  • Una vez se ha entendido el programa, el alumno creará una copia de la carpeta ../OpenNI/Samples/NiSimpleViewer en ../OpenNI/Samples/NiSimpleViewer_OCW, y modificará el fichero Makefile de la nueva carpeta para que al compilar se cree un ejecutable con nombre Sample_NiSimpleViewer_OCW en la carpeta ../OpenNI/Samples/Bin. Durante toda la práctica, sólo se modificará el contenido de ../OpenNI/Samples/NiSimpleViewer_OCW.
Solución: Fichero Makefile modificado.

Sobre GLUT

¿Qué es eso de GLUT?

Histogramas

¿Qué significa 'usar los valores de profundidad para construir un histograma acumulativo?

Práctica: Segunda parte

  • En esta segunda parte de la práctica el alumno debe modificar el programa (NiSimpleViewer_OCW) para capturar un único mapa de profundidad y almacenar los valores de distancia en un fichero.

En el fichero, los valores de distancia han de estar almacenados en milímetros, y como una matriz. Por ejemplo, si el mapa de profundidad fuese de 5x3 píxeles, en el fichero debería almacenarse lo siguiente:

430 234 300 1000 1101

234 567 1120 1210 1220

345 0 1234 123 1234

Práctica: Tercera parte

  • Se deben marcar en rojo los píxeles del mapa de profundidad que se correspondan a distancias menores a un metro, teniendo en cuenta que los valores de profundidad de OpenNI están en milímetros.
La imagen mostrada tras realizar esta tercera parte de la práctica debe tener el siguiente aspecto:
En este apartado de la práctica es importante tener en cuenta que los colores que finalmente se pintarán en pantalla se guardan en pTex como componentes RGB, por tanto se tiene pTex->nRed, pTex->nGreen y pTex->nBlue.
Solución: Fichero NiSimpleViewer.cpp modificado.

Práctica: Cuarta parte

Juego 'Recolector'

  • Objetivo del juego: El jugador debe recoger tantos cuadrados naranjas como sea posible en un minuto.
  • Normas del juego: El jugador se situará a un metro y medio de la Kinect. Al arrancar el juego, el jugador verá en la pantalla del PC el mapa de profundidad de la Kinect.. Sobre dicho mapa, aparecerán cuadrados naranjas. El jugador debe 'cogerlos' acercando una mano, la cabeza, o un objeto al lugar donde ha aparecido el cuadrado naranja. El cuadrado se considera 'recolectado' si, en su punto central, la distancia registrada en el mapa de profundidad es de menos de un metro.
Cuando un cuadrado es recolectado, desaparece, el jugador se suma un punto, y aparece un nuevo cuadrado naranja en otro punto (aleatorio) de la imagen.
  • Duración del juego: Un minuto.
  • Variantes opcionales:
  • Pueden aparecer cuadrados de otro color que no deben ser recolectados.
  • Puede aparecer más de un cuadrado naranja a la vez.
  • El tiempo restante puede aumentar cada vez que se recolecta un cuadrado naranja, o disminuir si se recolecta, por error, un cuadrado de otro color.
  • Sustituir los cuadradros naranjas por imágenes más complejas, o incluso por modelos 3D (para lo que se requieren ciertos conocimientos sobre OpenGL y GLUT).

Solución: Fichero NiSimpleViewer.cpp modificado.

Cuadrados naranjas

¿Y cómo pinto un cuadrado naranja en el mapa de profundidad?

Obra publicada con Licencia Creative Commons Reconocimiento 3.0