Labels
- Laboratorio Cómputo Ubicuo (14)
- Proyecto Integrador (9)
- Redes de telecomunicaciones (20)
- Teoría de la Información y métodos de codificación (8)
- Visión Computacional (17)
Showing posts with label Proyecto Integrador. Show all posts
Showing posts with label Proyecto Integrador. Show all posts
February 28, 2013
November 12, 2012
Kinect Detecta Mano en Processing
Bueno este es un .pde con el cual utilizando la libreria SImpleOpenNi y utilizando kinect, se detecta la mano y dibuja un pequeño circulo sobre ella, y además imprime la posición en el eje x en la cual se encuentra, bueno mejor dicho en el pixel en x en el cual se encuentra.
November 1, 2012
Voz con Kinect y processing
Link para descargar de la librería
https://www.facebook.com/download/375754579172446/stt.rar
October 10, 2012
September 20, 2012
Dibujando con Kinect y Processing
Como mencionamos en exposiciones pasadas, estamos usando la librería SimpleOpenNI para hacer nuestros programas. A parte de esta librería hay otros elementos que necesitaremos, si tu quieres instalarlos y probarlos por ti mismo, los puedes descargar e instalar todos de una sola vez. Una compania llamada Zigfu los ha empaquetado todos y están disponibles para instalar a un solo click en el siguiente enlace:
El cual está disponibles para Windows y para Mac.
En esta ocasión las cosas esenciales que hace nuestro programa son las siguientes:
- Detectar el punto más cercano.
- Seguir el movimiento de ese punto actualizando la imagen constantemente
- Pintar la trayectoria de dicho movimiento con métodos simples como Stroke y line y dejar de actualizar para que dicha trayectoria no se borre.
Aqui una imagen del programa funcional:
Y el código que será explicado en clase:
September 12, 2012
Punto mas cercano con Kinect y Processing
Este es el segundo de los programas que hemos hecho en Processing, para el Kinect, con el objetivo de rastrear los movimientos corporales y en base a ello controlar la interfaz gráfica de la computadora.
closestValue = 8000;
El siguiente programa logra encontrar el punto más cercano a la pantalla, y lo rastrea mediante un circulo rojo . El programa es sencillo. Obviamos las partes que ya habían sido usadas y explicadas por Jonathan : donde se hace el setup del objeto kinect y el tamaño de la ventana, así como hacer disponible la cámara de profundidad.
Lo importante de este código es lo siguiente:
Explicando línea por línea:
En el rango de los valores de profundidad que pueden tomar los pixeles en la cámara de profundidad del kinect ,podemos ver valores desde 0 hasta 8,000, tomando el valor de 8,000 las partes más lejanas.
Este Valor se toma como el más cercano, para así después compararlo con el valor de otro de los pixeles, el cual, en caso de tener un valor menor a 8,000 (es decir, están más cerca de la cámara) , será el nuevo closestValue. Para así seguir comparando con el resto de pixeles de la imagen.
kinect.update()
Se actualizan los datos que están siendo recibidos por el Kinect.
int[] depthValues = kinect.depthMap();
El método depthMap nos regresa un arreglo de pixeles, los que conforman la imagen recibida por el kinect, los cuales se toman como enteros, por lo que se almacenan en el arreglo de enteros depthValues.
Si te pones a pensar: la imagen está conformada de pixeles distribuidos en ejes X, y Y , es decir, en 2 dimensiones. Entonces, cómo guardar los pixeles en un arreglo unidimensional?
Esto se hace de la siguiente manera:
- Al iniciar, se lee la primer fila, avanzando columna por columna.
- Al terminar el ultimo pixel de la fila 1, pasamos a la fila 2, en el primer pixel.
- Y así sucesivamente hasta leer la imagen completa.
Visto de otra manera:
El kinect toma una imagen de 640 x 480 pixeles (este espacio fue declarado en el código al hacer el setup de la pantalla). Por así decirlo: tenemos 480 filas, y 640 columnas. Al leer los pixeles, comenzamos por la primer fila, y leemos hasta el pixel 639 en el eje X (desde 0 hasta 639). Al comenzar en la segunda fila, estamos tomando el pixel numero 640. El primer pixel de la tercera fila será el 1280. Y así sucesivamente, los pixeles iniciales serán múltiplos de 640. De aquí que en el código verás que las coordenadas se multiplican por 640. Esto se usa para leer cualquier posición del arreglo unidimensional de pixeles.
for(int y=0; y<480; y++){
for (int x =0;x<640;x++){
Se recorren los pixeles de la imagen.
int i = x+y*640;
i será la posición de la coordenada x,y en el arreglo de pixeles.
int currentDepthValue = depthValues[i];
El valor que se esté leyendo actualmente es el valor de profundidad actual.
if(currentDepthValue > 0 && currentDepthValue < closestValue){
Se compara dicho valor de profundidad actual con el valor más cercano (al incio será 8,000).
closestValue = currentDepthValue;
Como mencionamos antes, si el valor actual es menor a 8,000 (si está mas cerca), el pixel actual sera el más cercano.
closestX = x , closestY = y
Guardamos las coordenadas de dicho valor más cercano, para usarlas al pintar el circulo rojo.
image(kinect.depthImage(), 0,0);
Pintamos la imagen a partir de las coordenadas 0,0.
fill(255,0,0);
ellipse(closestX, closestY, 25, 25);
Pintamos el circulo rojo en la pantalla.
Estas son algunas imagenes de lo que resulta al correr este codigo:
September 6, 2012
Avanze de proyecto: 06 Agosto 2012
PROYECTOS SIMILARES
1. Elliot Woods
Co-Director de Kimchi and Chips , empresa conocida por su uso innovador del Kinect para mapeo de proyección (técnica que une gráficos de computadora proyectados con características espaciales de objetos).
Woods es un pionero en ampliar el arte de mapeo de proyección para mover objetos dinámicos. En el siguiente enlace : http://vimeo.com/18713117 se presenta el proyecto que está realizando Elliot Woods, el cual nos ha servido como motivación debido a que esperamos lograr el rastreo del movimiento corporal, de forma que la computadora reaccione con ciertos eventos, como el movimiento de interfaces.
En este caso la imagen que toma el Kinect es regresada directamente mediante el proyector, pero al momento que el Kinect identifica una pared, el proyector reacciona de otras formas, las cuales se pueden apreciar en el video. De esta manera nos podemos dar cuenta que se puede lograr lo que queremos: mover nuestros brazos o nuestro cuerpo de manera que una imagen reaccione a dicho movimiento.
2. Nicolas Burrus
Otro de los proyectos que captó nuestro interés, es el de este autor, el cual es un becario postdoctoral en visión computacional. Trabaja construyendo sistemas de visión computacional que van desde coordinar movimientos de manos robóticas hasta estudiar el uso de cámaras 3D para aviones.
Lo que nos interesa de este proyecto es que puede construir modelos 3D de cualquier objeto, además de que las aplicaciones desarrolladas por este autor son de código abierto. Aquí un video de lo que trata este proyecto: http://www.youtube.com/watch?v=iK_r2Ru3wP4&feature=player_embedded
3. Oliver Kreylos
El trabajo realizado por este científico computacional es el que más ha llamado nuestra atención. El trabajo de Olver Kreylos se enfoca en utilizar realidad virtual para construir mejores interfaces para visualización de información en la investigación científica. Los resultados de la investigación de Kreylos fueron tan asombrosos para la comunidad de Kinect que incluso obtuvo un artículo en New York Times : http://www.nytimes.com/2010/11/22/technology/22hack.html?_r=2
Kreylos fue capaz de crear una reconstrucción del cuarto a color en 3D incluyendo carácteres animados. Actualmente está realizando investigación en cómo usar el Kinect en sistemas de comunicación remota para permitir que múltiples científicos interactuen en un ambiente virtual manipulando simultáneamente la información.
Aquí el video de una de las demostraciones: http://www.youtube.com/watch?v=OSUPAjrBUrk&list=UUj_UmpoD8Ph_EcyN_xEXrUQ&index=3&feature=plcp
1. Elliot Woods
Co-Director de Kimchi and Chips , empresa conocida por su uso innovador del Kinect para mapeo de proyección (técnica que une gráficos de computadora proyectados con características espaciales de objetos).
Woods es un pionero en ampliar el arte de mapeo de proyección para mover objetos dinámicos. En el siguiente enlace : http://vimeo.com/18713117 se presenta el proyecto que está realizando Elliot Woods, el cual nos ha servido como motivación debido a que esperamos lograr el rastreo del movimiento corporal, de forma que la computadora reaccione con ciertos eventos, como el movimiento de interfaces.
En este caso la imagen que toma el Kinect es regresada directamente mediante el proyector, pero al momento que el Kinect identifica una pared, el proyector reacciona de otras formas, las cuales se pueden apreciar en el video. De esta manera nos podemos dar cuenta que se puede lograr lo que queremos: mover nuestros brazos o nuestro cuerpo de manera que una imagen reaccione a dicho movimiento.
2. Nicolas Burrus
Otro de los proyectos que captó nuestro interés, es el de este autor, el cual es un becario postdoctoral en visión computacional. Trabaja construyendo sistemas de visión computacional que van desde coordinar movimientos de manos robóticas hasta estudiar el uso de cámaras 3D para aviones.
Lo que nos interesa de este proyecto es que puede construir modelos 3D de cualquier objeto, además de que las aplicaciones desarrolladas por este autor son de código abierto. Aquí un video de lo que trata este proyecto: http://www.youtube.com/watch?v=iK_r2Ru3wP4&feature=player_embedded
3. Oliver Kreylos
El trabajo realizado por este científico computacional es el que más ha llamado nuestra atención. El trabajo de Olver Kreylos se enfoca en utilizar realidad virtual para construir mejores interfaces para visualización de información en la investigación científica. Los resultados de la investigación de Kreylos fueron tan asombrosos para la comunidad de Kinect que incluso obtuvo un artículo en New York Times : http://www.nytimes.com/2010/11/22/technology/22hack.html?_r=2
Kreylos fue capaz de crear una reconstrucción del cuarto a color en 3D incluyendo carácteres animados. Actualmente está realizando investigación en cómo usar el Kinect en sistemas de comunicación remota para permitir que múltiples científicos interactuen en un ambiente virtual manipulando simultáneamente la información.
Aquí el video de una de las demostraciones: http://www.youtube.com/watch?v=OSUPAjrBUrk&list=UUj_UmpoD8Ph_EcyN_xEXrUQ&index=3&feature=plcp
August 15, 2012
Metodología, calendarización y bitácora del proyecto
Proyecto: Jarvis
Que es?
Este proyecto esta basado en la pantalla de iron man, que controla todo atravez de las manos
esto sera simulado atravez de un kinect de Xbox
Video
/>
Video
/>
Metodología a seguir: Programación Extrema
En que consiste esta metodología?
La programación extrema apuesta que es más sencillo hacer algo simple y tener un poco de trabajo extra para cambiarlo si se requiere, que realizar algo complicado y quizás nunca utilizarlo. Las características más importantes de este método son:
- Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.
- Pruebas unitarias continuas,
- Programación en parejas: se recomienda que las tareas de desarrollo se lleven a cabo por dos personas en un mismo puesto.
- Frecuente integración del equipo de programación con el cliente o usuario. Se recomienda que un representante del cliente trabaje junto al equipo de desarrollo.
- Corrección de todos los errores antes de añadir nueva funcionalidad.
- Entregas frecuentes.
- Reescribir ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento
- Código compartido: promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto.
- Simplicidad en el código: es la mejor manera de que las cosas funcionen. Cuando todo funcione se podrá añadir funcionalidad si es necesario.
Por qué esta metodología?
Escogimos esta metodología ya que nuestro proyecto lo dividimos en módulos o metas a corto plazo, donde cada una se irá mejorando poco a poco por lo tanto a cada módulo se le irá agregando cada vez más código, el cual será trabajado por todos los miembros del equipo. Además queremos que nuestro código sea lo más sencillo posible y que a la vez tenga buena funcionalidad ya que no podemos sobrepasarnos de tiempo.
Herramientas
Official SDK: C++, C#, or Visual Basic by using Microsoft Visual Studio 2010.Oficial SDK: only installs on Windows 7.
OpenKinect: Python, C, C++, C#, Java, Lisp and more! Obviously not requiring Visual Studio.
OpenKinect: runs on Linux, OS X and Windows
Milestones
Estas con las actividades tentativas en las que nos basaremos para saber en que fase del proyecto estamos, cada una de estas actividades tienen más actividades anidadas que realizaremos en cada una de las fases. Les dimos este orden porque fue la secuencia más lógica y poder hacerlo lo más similar al Jarvis original de la película de Iron Man
- Presentación del proyecto
- Reconocimiento de gestos
- Realizar acciones con los gestos
- Proyectar holograma/Realidad Aumentada
- Reconocimiento de voz
- Acciones con voz
- Ligar holograma con las acciones de los gestos
- Diseño de interfaces
- Manipulación de Hologramas con la interfaz
- Inteligencia propia (opcional)
- Pruebas
Calendarización
Esteban Sifuentes
|
Reconocimiento de
Gestos/Pruebas
|
Jonathan Alvarado
|
Revisión De Comentarios/Investigación
Implementación Kinect
|
Obed David
|
Interacción Gestos Interfaz/Graficas/Pruebas
|
Miguel Pozos
|
Reconocimiento de Voz/Graficas/Realidad
Aumentada/Pruebas
|
Bitácora
August 9, 2012
Integrantes
- Jonathan Arturo Alvarado Mata
- Obed David Guevara Ibarra
- Esteban Sifuentes Samaniego
- Miguel Pozos
Subscribe to:
Posts (Atom)



