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í:
- Damos como entrada la imagen mediante la cámara con OpenCV
- La procesamos por escala de grises
- Aplicamos filtro a la imagen
- Aplicamos gradientes y detección de bordes(en este caso las máscaras de Sobel)
- Normalizamos la imagen
- Binarizar la imagen para convertir los píxeles de un tono de grises a blancos y todo lo demás a negro.
- Después se detectan las formas, en este caso las formas rectangulares de las tablillas de color.
- 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.
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
Revisa bien los nombres de los archivos en tu repositorio para asegurar que esté todo claro y no ambiguo.
ResponderEliminarEn 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.
Dice "evaluación de desempeño" pero no tiene una en realidad. Hay detalles menores de ortografía, 9 pts por el reporte.
ResponderEliminarEn 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.