Detección de color
Detección de color
Para realizar detección de color para interactuar con un usuario mediante un sistema visual hay que realizar los siguiente pasos:
- Selección del color a detectar. Como se ha comentado, el color seleccionado suele ser un color saturado, lo más puro posible, y que no esté en el entorno donde se está ejecutando la aplicación, para que su detección sea fácil y no haya errores o sean lo menor posible. Un detalle a tener en cuenta es que, si bien se puede establecer a priori el color a detectar y un patrón físico con dicho color, es conveniente que se capture en el momento de ejecutar la aplicación pues los colores, a pesar de estar preestablecidos, dependiendo de la luz pueden cambiar y puede hacer que la aplicación no funcione bajo ciertas condiciones.
- Segmentación de la imagen. En este paso hay que buscar en la imagen capturada los píxeles que "son parecidos" al color del marcador seleccionado. Para ello, en primer lugar hay que tener en cuenta que se trabaje en un espacio de color adecuado para la detección de colores. Así por ejemplo, el espacio de color RGB es un espacio de color bastante intuitivo para las personas, pues estamos acostumbrados a usarlo desde pequeños cuando coloreamos, sin embargo, no es adecuado para comparar si dos colores son iguales. Así pues, lo primero que habría que hacer si se quiere detectar un color concreto, cambiar el espacio de color de RGB (el espacio por defecto de las imágenes) a HSV (u otro espacio de color similar como el HSL por ejemplo), que permite una detección rápida y eficaz de los colores. Tras utilizar un espacio de color adecuado, habría que marcar los píxeles que se corresponden con el color buscado (están en un rango determinado) y los que no, obteniendo una imagen segmentada, que será una máscara de la imagen original (como se puede ver en la imagen). Como resultado de este paso, se obtendrá una imagen con ceros y unos que indicarán los píxeles que pueden formar parte de un objeto y los que no.
- Detección de objetos. Una vez se tiene la máscara de la imagen original con los píxeles que son de interés, es el momento de averiguar cuales de esos píxeles forman una región uniforme que pueda pertenecer a un objeto y cuales no (siendo seguramente ruido). Para eso lo más común es aplicar un algoritmo de detección de contornos, que permiten detectar si los píxeles pertenecen a un mismo grupo o no. Como resultado de este paso, se pasará de una imagen con ceros y unos a objetos definidos por un contorno, del cual puede buscar el centroide u otra información (como el área) fácilmente.

