miércoles, 26 de marzo de 2014

Semana 9

Para esta semana los avances en la tesis fueron:

  • Cambios y correcciones en el resúmen de la tesis.
  • Correcciones en introducción y antecedentes.
  • Progreso en solución propuesta
  • Diseño de experimentos
En cuanto al código, no se hizo nada.

martes, 11 de marzo de 2014

Semana 8

Para esta semana los avances correspondientes a la tesis fueron los siguientes:
  • Correcciones a capítulos 1, 2 y 3 (Introducción, antecedentes y literatura existente).
    • Introducción: Correcciones ortográficas y actualización de contenido.
    • Antecedentes: Correcciones en forma de escribir citas, adición de contenido, correcciones ortográficas.
    • Literatura existente: Correcciones ortográficas, adición de contenido.
  • Avances en el capítulo 4 (solución propuesta)
    • Adición de contenido.
  • Borrador del capítulo de evaluación.
Para el avance de esta semana me dedique a probar librerías para la localización y decodificación de códigos QR. La librería seleccionada fue zbar, por su simplicidad de uso y eficiencia para localizar los códigos QR en una imagen y decodificarla.

El proceso es simple, usando un video de prueba se lee frame por frame el mismo, disminuyendo el tamaño del frame a un tamaño aceptable para evitar tiempos de procesamiento extremadamente lentos (en este caso se utiliza 600 x 400 pixeles).

Imagen original: 1280 x 720

Imagen con tamaño reducido: 600 x 400


Lo siguiente es convertir la imagen a escala de grises, y consiguientemente binarizarla (pasar a blanco y negro), esto facilita la búsqueda de códigos QR, al simplificar la imagen a blancos y negros, colores típicos de los códigos QR.

Imagen en escala de grises:




Imagen binarizada:



Esta imagen binarizada es la que se pasa a la librería zbar para decodificar el código QR, la cual arroja como resultado (si se encuentra un código QR) información como los datos decodificados, la posición en la imagen donde se encontró el código, y el tipo de código que es (código de barra o código QR).

Con esta información podemos momentáneamente para efectos demostrativos marcar el área donde se encontró y mostrar sobre ella la información decodificada. El código usado es el número "1" codificado en QR, he aquí unas capturas de la localización y codificación corriendo en tiempo real.

Código original (obtenido de: http://qrcode.kaywa.com/):


Código decodificado y localizado:



Con esto ya debería ser posible colocar sobre la posición localizada un objeto 3D, y la pose del objeto se determinará usado el algoritmo descrito en la semana 5, lo que será el objetivo de la siguiente entrega.

Como siempre el código se encuentra en el repositorio:

martes, 4 de marzo de 2014

Semana 7

Para esta semana los avances correspondientes a la tesis fueron los siguientes:
  • Correcciones a capítulos 1, 2 y 3 (Introducción, antecedentes y literatura existente).
    • Introducción: Correcciones ortográficas, cambios de formato en objetivos e hipótesis.
    • Antecedentes: Correcciones en forma de escribir citas, adición de contenido
    • Literatura existente: Corrección en forma de escribir citas, adición de comentarios al respecto de la relación de la literatura específica con mi tesis.
  • Avances en el capítulo 4 (solución propuesta)
    • Descripción de estimación de pose, reestructuración de secciones.
  • Borrador de agradecimientos y autobiografía.
En cuanto al avance en código, realicé un progreso en cuanto al posicionamiento 3D, programando diversas funciones para rotar objetos 3D y moverlos en el espacio 3D.

Por ejemplo, he aquí un cubo rotando en X, Y y Z respectivamente:




Con esta rotación sería posible colocar un cubo sobre un marcador detectado, conociendo la pose del marcador con el algoritmo mencionado en el post pasado.

La posición del cubo también es configurable, pero esta solo sera necesario cambiarla en dos ejes, determinando el tercero en base a la profundidad del marcador detectado o su tamaño aproximado.

He aquí un ejemplo del cubo en diferentes posiciones:




De esta forma sería posible lograr algo como lo siguiente:


(Nota: No es una aplicación real de realidad aumentada, es solo un ejemplo del objetivo)

Debido a que pygame permite colocar imágenes como fondo, es posible utilizar las imágenes de un feed de cámara obtenidas de OpenCV para mostrarlas y utilizar las posiciones y orientaciones calculadas para colocar el modelo 3D en la pose adecuada.

Para la siguiente entrega, se tendrá más avance al respecto, con modelos más complejos.

Como siempre el código se encuentra en el repositorio: