miércoles, 15 de mayo de 2013

Proyecto-Detección placas de Autos

Propósito de proyecto


El propósito de mi proyecto como su nombre lo dice es el poder detectar las placas de los autos a partir de una imagen, esta es una tecnología que se utiliza en varios países y en las fronteras para mantener un control de los autos que cruzan la frontera o bien en otros países se utiliza como control vehicular, me pareció interesante trabajar en esto ya que si bien la tecnología ya existe al menos en nuestro país no se emplea y pudiera servir como control vehicular en las ciudades.

Diseño

Diagrama del diseño, funcionamiento y procedimiento que sigue el programa para arrojar los resultados.

Librerías y lenguaje Utilizado

El lenguaje de programación con el que se trabajo fue:

Python Versión 2.7.3: Todo el programa esta escrito en python y requiere de las siguientes librerías:

  • PIL
  • Numpy
  • Librerias del sistema: random,math,time
Para obtener los comando de instalación de las librerías revisar el archivo readme y install que se encuentran en el repositorio del proyecto.

Técnicas de Visión Utilizadas

Para mi proyecto utilice la mayoría de las técnicas vistas durante el curso dejo las ligas a cada entrada del blog donde se explico detalladamente la técnica:


Descripción de funcionamiento

Lo primero que se hace una ves que se ejecuta el programa es el cargar la imagen, la imagen puede ser de cualquier formato, el único requisito es que se encuentre en la mismo directorio que se encuentra el código.


Una ves que se selecciona la imagen se empiezan a aplicar los filtros necesarios para la detección, explicare paso a paso cada uno de ellos con la siguiente imagen:

Lo primero que se hace es transformar la imagen a escala de grises para ver como realizar cada uno de los filtros; arriba donde coloque las técnicas utilizadas deje las ligas para cada una de ellas.


Después la imagen de escala de grises pasa a un filtro medio lo cual nos genera otra imagen.


Después del filtro medio aplicamos lo que es diferencia, lo cual consiste en restar la imagen generada de filtro medio con la de escala de grises esto nos arrojara una imagen nueva.



La imagen de diferencia la pasamos ahora por lo que es convolucion para remarcar un poco las partes importantes como lo es la placa.


Para eliminar lo mas que se pueda lo que no nos sirve de la imagen aplicamos umbrales.

Después para marcar aun mas los pixeles para los próximos filtros que usaremos aplicamos binarizacion, esto nos ayudara a marcar los pixeles que realmente necesitamos y eliminara otros que no nos sirven.

Después aplicamos dilatación para agrupar los pixeles, como se puede ver en la foto anterior la parte donde mas pixeles tenemos es en la placa al agrupar los pixeles con dilatación formaremos algunas manchas o figuras dentro de la imagen.


Como dilatación no se utilizo durante el curso explicare como funciona, lo que se hace es recorrer la imagen si se encuentra un pixel blanco se agregara a una cadena, una ves que ya tenemos las coordenadas de todos los pixeles blancos encontrados dentro de la cadena la recorremos y se revisaran sus vecinos los cuales todos ellos se transformaran en blancos también, con esto se ensanchan los pixeles y se agrupan los que están cercanos a otros formando figuras.

El código que se diseño para esto es el siguiente:

La función posibles reúne todos los pixeles blancos y en la función dilatación se recorren y se cambian los vecinos.


Una ves que agrupamos los pixeles con dilatación aplicamos detección de formas, la forma de mayor dimensión sera la placa y se marcara de un color gris.


Ya que tenemos detectado el lugar de la placa simplemente hay que enmarcar con un rectángulo sobre la imagen original y procedemos también a recortar la parte importante.



Evaluación de desempeño

En cuanto al desempeño en términos de tiempo influye en gran medida el tamaño de la imagen para la imagen anterior es una imagen de 575x371 pixeles el tiempo de procesamiento de todos los pasos descritos anteriormente fue el siguiente.


En cuanto a la posibilidad de fallo del sistema depende mucho de la imagen si contiene mucho ruido la imagen es mas difícil la detección entre las técnicas usadas se intenta eliminar lo mas posible el ruido pero no se garantiza que se elimine del todo.

Trabajo a futuro

En cuanto a trabajo a futuro con el mismo proyecto me gustaría mejorar la forma de detección,  ademas de agregar lo que serian detección de caracteres para poder almacenar en una base de datos la informacion de la placa, otra cosa seria ya en si hacer un sistema con videocámara que obtenga las fotos de los carros y realice todo lo anterior. Un sistema parecido a la imagen siguiente:


Vídeo Demo



Repositorio

Aquí se encuentra lo que es el readme y el install ademas de todo el codigo también dejo el repositorio de la clase de Visión donde están todos los códigos de las técnicas.

Repositorio de Proyecto


Repositorio Clase



Presentación



Referencias
















2 comentarios:

  1. Checa bien la ortografía y limpia un poco el repositorio para que no tenga versiones no relevantes. Van 9 pts por la presentación.

    ResponderEliminar
  2. El reporte sufre de mala ortografía y está algo breve en los temas iniciales. 8 pts por ello.

    El repo está bastante bien. Hubiera sido bueno incluir un comentario encima de cada subrutina para explicar su función. 9 pts.

    ResponderEliminar