Tag Archive for 'tesis'

Más de la detección 3D con una cámara


3D object tracking with one camera from Ariel Molina on Vimeo.

Ahora si me tocó mostrar mi fea cara. Pero todo sea por mostrar más de la detección 3D monocular. La cosa en el video está fácil. Al principio no se detecta nada, pues no se ha tomado la muestra, luego, a los 7 segundos se toma una muestra de la esfera. Entonces comienza el seguimiento y los objetos detectados se pintan en “video inverso” (o sea pues XOR), luego de un par de segundos de incialización se comienzan a detectar las coordenadas.

Durante el seguimiento se reportan las 3 coordenadas del espacio, que es donde se detecta el objeto. Quise poner una representación visual de las coordenadas (x,y,z) que se están detectando, así que hay 3 rayas en la esquina que representan una idea de la posicion 3D, como aún no existen monitores 3D pues puse la coordenada z como una diagonal color cyan.  El seguimiento es muy robusto, y la detección de profundidad es bastante precisa, note cuando la bola se acerca a la cámara y cuando se aleja.

Un ejemplo de aplicación

Seguimiento monocular 3D

Pueden ver una aplicación de este juguete en el post anterior donde lo uso para jugar algunos juegos simples. Pero si alguien me ayuda (hacerlo solo me da weba) puedo hacer de esto una interfaz para TuxRacer, Quake 3 Arena, o algun otro juego.

Y bueno, seguro ya están hartos de que me la pase nomas poniendo estas cosas, pero pss como ya acabe mi tesis no tengo otra cosa que hacer, asi que ¡se aguantan!, jejeje.

Concatenar PDF’s con Latex (PDFLatex)

Hay muchos trucos, pero este tambien sirve si usas Latex.

\documentclass[portrait]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{portada.pdf}
\includepdf[pages=-]{intro.pdf}
\includepdf[pages=-]{documento.pdf}
\end{document}

Y compilas con PDFLatex.

Si usas WinEDT te va a descargar unos paquetes, si usas Linux y lo tienes completo, tal vez no haga falta hacer nada, el documento sale compilado completo.

Seguimiento monocular 3D


3D Tracking with a Single Camera from Ariel Molina on Vimeo.

Funciona bastante bien.
Gracias Probayes, INRIA e INAOE.

¿Quien es el culpable el Thread o cvCam?

Estoy implementando una DLL para el asunto de mi tesis, eso de reconocer los gestos de manera monocular. Para ello necesito que mi programa sea una DLL que va a cargarse en otro programa al cual no tengo ningun acceso (uhm Closed Source, si!, maldicion!). Bueno, ya logré que se cargue, estuve analizando la DLL antigua y logré que mi DLL embonara en lo que el programito me pide.

Basicamente mi DLL debe exportar una única función importante la cual entrega coordenadas 3D. La primera vez que es llamada debe inicializarse sola y comenzar el rastreo. El modo de funcionamiento es el siguiente:

  1. (*) Aplicación pide coordenadas
  2. DLL debe:
    1. Si es primera vez. Responde (0,0,0) y lanza Thread par comenzar rastreo.
    2. Si no es primera vez. Responde con (x,y,z). El thread debería tenerlas ya detectadas.
    3. Avisar al thread cuando debe morirse.
  3. Ir a: (*)

El trabajo del Thread es el siguiente:

  1. Abrir cámara con resolución correcta (o morirse diciendo que no hay cámaras).
  2. Para cada FRAME capturado:
    1. Detectar objeto y obtener sus coordenadas.
    2. Actualizar variable global: coord = (x,y,z).  (global solo en la DLL)
  3. En caso  de aviso de muerte:
    1. Cerrar cámara correctamente
    2. Morirs y liberar recursos

Parece  muy fácil. Aja!, tengo varios dias atorado en la manera de anunciar al Thread que ya debe morirse. No se si sea OpenCV el que no cierra la cámara o el Thread que no se muere. Ya me estoy hartando, y lo malo es que estaba acostumbrado a que en Linux y OSS en general hay forums de IRC donde ayudan, pero busqué en freenet y no encontré nada decente para ambientes de Microsoft. Continue reading ‘¿Quien es el culpable el Thread o cvCam?’

OpenCV y Visual Studio 2005

Para generar un proyecto de Visual Studio 2005 usando Visual C++ se requieren algunos ajustes tanto a Visual Studio como a Windows e incluso al mismo Proyecto.

Sorry por que algunas cosas estan en inglés, es que mi VS05 esta en inglés.
Tracker

El procedimiento para que compile

1. Crear un proyecto (o abrir uno que tengas)
2. En el “Solution Explorer” clic derecho en el proyecto (NO en la “Solución”)
3. Clic en “Properties”
4. Bajo “Configuration Properties”->”C/C++”->”General” Buscar
“Additional Include Directories”, Click ahi.
5. Luego en el botón de la derecha con “…”.
6. Vas a agregar nuevos directorios.
7. Dependiendo de lo que estes haciendo vas a ocupar alguno de estos o mas fácil ponlos todos al cabo no afecta:
“C:\Archivos de Programa\OpenCV\cv\include”
“C:\Archivos de Programa\OpenCV\cvaux\include”
“C:\Archivos de Programa\OpenCV\otherlibs\highgui”
“C:\Archivos de Programa\OpenCV\cvcore\include”

8. Click en “Ok/Aceptar” y ve a “Configuration Properties”->”Linker”->”General”
9. Click en “Additional Library Directories” y de nuevo en el botón con “…”.
10. Additional library directories:
“C:\Program Files\OpenCV\lib”
“C:\Program Files\OpenCV\bin”

11. Click “ok/aceptar” y vas ahora a “Configuration Properties”->”Linker”->”Input”.
12. Click en “Additional Dependencies” y en el botón “…”.
13. Agrega las librerías del proyecto. Las más comunes y básicas son:
cv.lib
cvcam.lib
highgui.lib
cxcore.lib
cvaux.lib
Nota: Si te fijas, todas las dependencias anteriores llevan comillas, pero estas últimas no llevan..
15. Recuerda poner #include “cv.h” y demas cosas en tu código cpp/c.

Ejecutar con OpenCV ya que has compilado

1. Click en el Menú Inicio, Clic derecho en Mi PC.
2. Click en “Propiedades”
3. Click en “Avanzado”
4. Click en “Variables de Entorno”. Modificar o agregar la variable de “PATH” y al principio de todo poner “C:\Program Files\OpenCV\bin;” (Ojo que lleva un punto y coma)
7. Click “Aceptar” y ya.
8. Necesitas cerrar Visual Studio y abrirlo de nuevo para que agarre la variable PATH.
9. Una forma de cerciorarte de que el PATH esta puesto es abrir una ventana de cmd.exe y escribir PATH y Enter, deberías ver entre las lineas la que acabas de meter.

Ahora puedes compilar y ejecutar proyectos que usan OpenCV en Visual Studio 2005.

Si no lo hiciste bien el Visual Studio se va a quejar que no encuentra archivos “.lib” al compilar y si logras compilar pero no agregas el PATH te va a decir que no encuentra las DLL.

Que lata!, pero asi es Windows. Si estas instrucciones no te funcionan, deberás reiniciar Windows 50 veces, instalar Norton, NOD, MCAffee, Kaspersky, Panda y ClamAV, todos juntos. Reinicias Windows otras 50 veces. Luego instalas AdAware y Spybot Seach&Destroy. Reincias 50 veces más. Instalas Firefox. Reinicias otras 50 veces. Instalas alguna otra herramienta nueva que exista y, ya sabes, reinicias otras 50 veces. Si al final de esto no aún funciona, deberás repetir el procedimiento pero antes formateas tu PC, reinstalas windows y, claro, reincias otras 50 veces. Si despues de esto no funciona entonces… no se, preguntale a alguien que sí sepa.

Ahh, por cierto, gracias a Alex por ponerme el procedimiento bien detallado.