Published using Google Docs
VisionComputacionalReporte
Updated automatically every 5 minutes

Proyecto de Visión Computacional

“Detección de libros”

Propósito

El propósito del proyecto es la detección de portadas de libros haciendo uso de técnicas de visión computacional. La detección de portadas de libros se hace analizando una fotografía, y encontrando objetos que lleguen a tener la forma de un rectángulo, y posteriormente analizar si en estos rectángulos detectados es posible extraer algún tipo de texto, para llegar clasificarlo como portada de un libro.

Justificación

En ocasiones nos hemos encontrado con situaciones en las que deseamos obtener desde una fotografía donde se encuentran varios libros sobre una mesa las portadas de los mismos para después poder hacer una búsqueda en Internet de los títulos y autores, con el fin de encontrar reseñas de los mismos o alguna página donde sea posible comprarlo en línea.

Un uso potencial para este proyecto es al hacer un inventario de los libros que hay en casa, o inclusive de aquellas bibliotecas que no cuentan con un sistema muy organizado, ya que este programa puede extraer desde una simple foto toda la información referente a un libro, y esta puede almacenarse para posterior consulta.

Descripción

El programa muestra una interfaz gráfica al usuario donde en la parte superior se encuentra un botón para buscar en nuestros archivos la fotografía en la cuál queremos detectar las portadas de los libros.

Una vez que hemos seleccionado la fotografía que pasará por la detección de libros, se presiona el botón nombrado “Detectar” el cual iniciará con el proceso y que luego mostrará en la parte inferior las portadas detectadas, así como un enlace a la búsqueda en Internet del título o autores encontrados en cada una de las portadas, donde es posible dar clic en estos enlaces y ver la búsqueda desplegada en el navegador predeterminado en nuestro sistema.

Diseño del software

Este proyecto fue desarrollado en el lenguaje de programación Python, usando como sistema operativo Ubuntu 12.04.

El programa se realizó siguiendo el siguiente diagrama de procesos, en el cuál se indican los pasos realizados para obtener al final como resultado la obtención de las portadas de libros recortadas junto con el texto recuperado de ellas.

Librerías utilizadas

Para la realización de este proyecto fue necesario acudir a diferentes librerías que habitualmente no forman parte de las librerías integradas con Python, y que fueron de gran ayuda ya que proveen de herramientas de fácil uso y aplicación.

Entre las librerías usadas se encuentran las siguientes:

Evaluación de desempeño

Se realizó una evaluación de tiempo de ejecución, donde se colocaron diferentes fotografías que contenían libros y se obtuvo el promedio de tiempo.

Para las pruebas se utilizó una computadora Pavilion g4-1385la, con las siguientes especificaciones técnicas:

  1. CPU Intel Core i5-2450M
  2. 4GB de RAM
  3. Tarjeta gráfica Intel Graphics 3000
  4. Sistema operativo Ubuntu 12.04

Tiempo de procesamiento promedio:

1.87 segundos

¿Qué pasa si existe ruido en la fotografía?

Cuando la captura no es lo suficientemente nítida, algunos detalles de la foto se pierden y cosas como los bordes suelen perderse y no se detecta como tal la figura.

Cuando la captura tiene mucho brillo, y todo tiende a blanco, el módulo para detección de texto no funciona adecuadamente, y se tienen que especificar otros filtros para solucionarlo.

Ejemplo

Esta es la interfaz del programa. Lo primero que se pide es seleccionar el archivo de imagen a procesar.

Una vez seleccionada la imagen es posible abrirla y ver una vista previa del mismo en la parte izquierda de la ventana.

Una vez cargada la imagen se procede a dar clic en el botón detectar. Luego muestra las portadas detectadas en la vista previa, y a su lado el recorte de las portadas y su texto detectado que es un enlace a una búsqueda de Google Books del mismo.

Debilidades

En el proyecto podemos encontrar varias debilidades que en un trabajo a futuro es posible corregir. Una de las debilidades que se tienen en este momento es el tiempo que se tardan en aplicar algunos de los filtros necesarios para el procesamiento de la imagen, ya que estoy usando las fotografías originales y no las redimensiono hasta que ya se procesaron.

Por motivos de tiempo la interfaz no tiene un muy buen diseño y solo se creó con el fin de cumplir con los objetivos esenciales propuestos en la presentación de proyecto, pero sin duda es una de las partes que tiene un gran campo de mejora.

Trabajo a futuro

Como es posible notar, la detección de las portadas de los libros sólo es posible cuando la imagen no esta expuesta a mucho ruido, como la luminosidad baja, imagen desenfocada o con baja resolución, por lo que en un futuro es posible mejorar la parte de aplicación de filtros donde sin importar la calidad de imagen que se ingrese, el programa logre detectar sin ningún inconveniente las portadas de los libros.

Como se mencionó en la presentación preliminar de este proyecto, la razón para la creación de este programa es la implementación a futuro de una aplicación para dispositivos móviles, lo cual haría más conveniente el uso del mismo, ya que actualmente cualquier dispositivo móvil moderno cuenta con cámara fotográfica con la que se pueden tomar en tiempo real las fotografías y el análisis de las mismas.

Control de versiones

El proyecto esta guardado en un repositorio en línea el cuál es accesible y descargable desde la siguiente página:

https://github.com/ramonesteban/proyecto-vision

Ahí lograrán encontrar todos los archivos creados y usados para la detección de portadas de libros en fotografías.

Tiene incluido un README donde explica la instalación de las herramientas usadas, así como la explicación de un ejemplo de ejecución desde terminal.

Referencias

Abid Rahman, “Contours 1: Getting Started”, OpenCV Python Tutorials, Junio 2012. [En línea]. [Fecha de consulta: 14 de Mayo, 2013]. Disponible en: http://opencvpython.blogspot.mx/2012/06/hi-this-article-is-tutorial-which-try.html