Plugin colores
Contenido
Integrantes
- Andrés Aldado
- Alejandro Fontes
- Kyria Márquez
Actualmente estamos
Optimizando el reconocimiento de colores a través de la cámara.
Documentación
Introducción
A continuación presentamos el proyecto Plugin para detección de Colores. Aquí se busca permitir al usuario interactuar con la cámara de sensor de colores de manera ágil, amigable e interactiva. Dando la posibilidad a usuarios utilizar estructuras de control y decidir acciones en base a resultados obtenidos.
Motivación
Objetivos
- Reconocer el color predominante en un escenario mediante la cámara web de un PC de manera eficiente utilizando libreria pygame.
- Lograr un conjunto de funcionalidades que permita a los usuarios de manera ágil y amigable utilizar la cámara como sensor de color comparando el resultado obtenido con la paleta de colores nativa. Permitiendo tomar decisiones si el resultado obtenido es el esperado e interactuando con el resto de las funcionalidades de la paleta.
Desarrollo del problema
- Configuración del entorno: A continuación se detallan los requisitos, dependencias y pasos para utilizar las funcionalidades del plugin para detección de colores a través de la cámara.
- Dependencias: gcc, git, gettext, libusb-devel, sugar-emulator -
- Re elevamiento de funcionalidades y algoritmos existentes
Se probaron diferentes plugins que actualmente existen en la plataforma butia, entre ellos observamos el comportamiento del plugin followme y reconocimiento de marcas. De estos dos plugins decidimos basarnos en followme para lograr concretar la funcionalidad deseada.
Dentro de los algoritmos existentes en la web encontramos muchos desarrollos en lenguaje C o matlab. Algunos de estos son Euclester o Mahalanobis. Según algunas comparaciones de los resultados el algoritmo de Mahalanobis es mas efectivo que Euclester.
- Implementación de nuevas funcionalidades
Este desarrollo agrega la posibilidad de utilizar en una estructura de control un condicional, que compara el color que la cámara detecta con un color de la paleta nativa.
- Herramientas utilizadas para resolver el problema
Pygame: es un conjunto de librerías de phyton que generalmente se utiliza para creación de video juegos en 2D. De aquí utilizamos la función average_color la cual nos devuelve el promedio de color en un cuadrado que fue seteado en la cámara.
Librería numpy: Es una extensión de phyton agrega soporte para vectores y matrices. La utilizamos básicamente para convertir un arrays en vectores.
- Diagrama de flujo: A continuación se presenta el diagrama de flujo para realizar la funcionalidad comparación de color.
Libreria math: Provee funciones para hacer cálculos matemáticos. Los cálculos que utilizamos fueron raíz, cuadrado.
Para resolver la implementación deseada, una vez obtenidos los colores hallamos la distancia euclidiana entre los mismos, estas nos indica que porcentaje del color de la camara se asemeja con el color elegido en la paleta. Luego de obtenida la distancia euclidiana, se compara con una tolerancia elegida en base a pruebas realizadas. Si la distancia es menor a la tolerancia el color esta dentro de los valores esperados, en caso de ser mayor el color no es el esperado.