martes, 14 de mayo de 2013

Reporte de proyecto. Detección de sombras de color para ojos

Propósito

El objetivo de este proyecto como ya anteriormente se había mencionado es  detectar tablillas de sombras de color para ojos y hacer una comparación de colores aplicando técnicas de visión computacional desarrollados durante el semestre.

Esto se realizó mediante la obtención de imágenes por medio de una webcam y con un algoritmo para detección de formas tomando la parte rectangular de las tablillas como base y hacer una diferencia colores.  






Justificación

Este proyecto esta enfocado para llevar un control de la calidad en productos cosméticos(inspección por color y forma) para entregar una mejor producción.


Este proyecto  además tendría enfoque en otras áreas y para  diferentes aplicaciones:
  • Una de las aplicaciones podría ser en el área de calidad de pinturas vinilicas esto podrá servir en que los colores de un producto aprobado anteriormente se  compare con otro de salida al combinando colores y lograr el tono deseado tomando el promedio de todos los colores.  
  • También tendría aplicación en  la detección de defectos puede ser considerada como un caso especial de control de conformidad, donde los objetos no ofrecen formas específicas por ejemplo la inspección de objeto de cerámica en la etapa previa al esmaltado para detectar los defectos en la superficie como rugosidades.


  • En la inspección por color se utiliza ampliamente en la industria farmacéutica para confirmar que la tableta o píldora de color se ha colocado en el embalaje correcto.


Descripción Textual

Mi programa lo que realiza es procesar una imagen tomada desde la webcam antes mencionado mediante la librería OpenCV esto es con el frame para lanzar la cámara, esta imagen posteriormente pasar por el proceso de diferentes técnicas de visión computacional hasta detectar las formas rectangulares que son las tablillas de colores.

Técnicas de visión aplicadas fueron las siguientes

  • Obtenemos la imagen mediante el lanzador de cámara con OpenCV esto incluido en el código



  • Esta misma imagen entra en proceso de escala de grises

  • Después pasa por el proceso de filtrado a la imagen para poder binarizarlo de una manera mas fácil.
     

  • Después se aplica un umbral en el binarizado para convertir los píxeles de un tono de grises a blancos y todo lo demás a negro.

  • Para obtener una forma un poco más definida, se obtienen los contornos de la figura que son sus bordes representativos mediante convolución y máscara de Sobel



  • Pasa por un proceso de normalización para regresar la imagen a estándares originales


  • Para detectar los rectángulos utilice la técnica de formas donde como resultado tenemos las formas rectangulares detectadas


Diseño del Software

Lenguajes de programación y librerías utilizadas

Las librerías y el lenguaje que utilicé para mi proyecto fueron los siguientes:
  • Python
  • OpenCv lanzador de cámara para obtener las imágenes de las tablillas de colores mediante la webcam
  • Numpy
  • PIL

Evaluación de Desempeño

Diagrama de algoritmos implementados


La manera en que funciona es así:
  1. Damos como entrada la imagen mediante la cámara con OpenCV
  2. La procesamos por escala de grises
  3. Aplicamos filtro a la imagen
  4. Aplicamos gradientes  y detección de bordes(en este caso las máscaras de Sobel)
  5. Normalizamos la imagen
  6. Binarizar la imagen para  convertir los píxeles de un tono de grises a blancos y todo lo demás a negro.
  7. Después se detectan las formas, en este caso las formas rectangulares de las tablillas de color.
  8. Aplicar algoritmo para diferenciar los colores en la imagen obtenemos un máximo  y mínimo de los píxeles de r, g y b esto es para diferenciar el color de las sombras, si su tonalidad esta entre este máximo y este mínimo pasa la prueba.

El desempeño del programa depende de la iluminación para la cámara ya que muchas veces al tomar la imagen desde la webcam se puede encontrar algo de brillo en la imagen obtenida para el procesamiento, algunos detalles de la imagen se pierden y es un poco más difícil que se detecten bien los bordes y no se detecta como tal la figura rectangular.

Trabajo a Futuro

Para mejoras y algunas aplicaciones que se puedan presentar en un futuro seria en lo siguiente:
  • Limpiar el ruido que se detecta en la imagen
  • Para trabajo futuro se aplicará en decidir si otro producto cosmético por ejemplo los labiales y delineadores de ojos, cumplen con un conjunto de especificaciones previamente establecidas, definas como estándar de calidad(detección de errores como grietas en cada cosmético o en las mismas tablillas de color.

 
Presentación
 

Mi repositorio 
https://github.com/vane90/visioncomput/tree/master/proyecto

Referencias


Aplicaciones para la visión(JasVisio, S.L. Ultima consulta Mayo 13, 2013)
http://www.jasvisio.com/aplicaciones/aplicaciones-de-la-vision-por-computador.html

Instalación de OpenCV
http://desarrollophpsenior.wordpress.com/2012/09/19/instalar-opencv-2-4-2-en-ubuntu-12-04-lts/

Imágenes(Mary Kay, )
http://www.marykay.com.mx/maquillaje/ojos/default.aspx 


2 comentarios:

  1. Revisa bien los nombres de los archivos en tu repositorio para asegurar que esté todo claro y no ambiguo.

    En el reporte sería bueno tener referencias al final.

    Está exageradamente breve tu presentación de diapositivas (sí la vi en el blog ya que no supiste proyectarla desde tu compu) y terminaste proyectando tu reporte (aún después de que resalté la diferencia entre las dos cosas) :/ La demostración no salió muy entendible. 6 pts.

    ResponderEliminar
  2. Dice "evaluación de desempeño" pero no tiene una en realidad. Hay detalles menores de ortografía, 9 pts por el reporte.

    En el repo también hay errores de ortografía, pero mayores. Los nombres de los archivos no son muy informativos. Partes del código faltan comentarios. El programa en sí es bastante simple. 6 pts por el repo.

    ResponderEliminar