septiembre 29, 2018 6:00 pm

Jesús

?? Read in English

El color es una de las características intrínsecas de los objetos, superficies y formas que percibimos a diario mediante nuestra corteza visual. En múltiples ocasiones, juega un rol funcional por encima de lo estético. Por ejemplo, es universalmente sabido que la luz roja de un semáforo nos informa que debemos parar, mientras que la verde nos permite avanzar. Asimismo, ciertos conceptos abstractos y, a su vez, universales van típicamente asociados a un rango o espectro de colores determinados. Es por ello que solemos asociar el amor, la pasión y el peligro al color rojo, mientras que el negro caracteriza elegancia, pero también luto.

El color en sí mismo es increíblemente complejo, a tal punto de que hemos necesitado construir una teoría alrededor de él para poder comprender su origen y su maleabilidad. Mediante la física, la química e, incluso, la biología buscamos entender a fondo cómo se produce, se transforma y se manifiesta el color.

Como la mayoría de las cosas en el universo de los computadores, ideamos abstracciones matemáticas y electrónicas para representar conceptos que encontramos comúnmente en nuestra vida diaria. Claramente, el color es uno de ellos. De allí surge la necesidad de contar con un método, un mecanismo matemático para representar un color en un dispositivo electrónico, como una cámara fotográfica, una impresora o una pantalla de un ordenador.

Existen muchas definiciones, algunas más complejas que otras, de lo que es un espacio de color. No obstante, en resumidas cuentas se trata de una forma de representación de colores más complejos a partir de ciertos componentes primarios. Usualmente, dicha representación consiste en una terna o colección de números, acotados a un rango determinado. A más alto nivel, podemos pensar en los espacios de color como en el equivalente digital de la paleta de un pintor, en la que en los extremos de la misma se hallan los colores primarios, los cuales al ser combinados engendran nuevas tonalidades.

Entre los espacios de color más comunes hallamos RGB, CMYK y HSV.

En el caso de RGB, los colores se representan como combinaciones de rojo (Red), verde (Green) y azul (Blue). Así, por ejemplo, el rojo absoluto es (255, 0, 0), el verde absoluto (0, 255, 0) y el azul absoluto (0, 0, 255). Como podemos ver, cada componente varía de 0 a 255. El negro absoluto se representa como (0, 0, 0) y el blanco absoluto como (255, 255, 255).

En el caso de CMYK, la representación de colores es análoga a la de RGB, con la diferencia de que se trata de un espacio tetradimensional. Así, cada color es producto de la combinación de cian (Cyan), magenta, amarillo (Yellow) y negro (BlacK).

Quizás entre los espacios de color más interesantes se halla HSV, donde cada componente viene a representar el matiz (Hue), la saturación (Saturation) y el valor (Value) o brillo. Como podemos ver, en este espacio no se representan los colores como combinación de otros primarios, sino de una manera más abstracta.

Una forma muy útil de entender los espacios de color, así como su poder de representación es visualizar el volúmen o sólido que los caracteriza en un gráfico. Por ello, te recomiendo que veas el siguiente video. No tiene desperdicio:

https://www.youtube.com/watch?v=KKX08oOTMkk

¿Por qué es importante el color en computer vision?

El color puede darnos una cantidad ingente de información cuya utilidad varía dependiendo del objetivo o meta que queramos lograr mediante el uso de técnicas de visión computarizada. Así, por ejemplo, si deseamos identificar rostros en una fotografía, es probable que el color no nos resulte tan útil como otras características más determinantes, como la forma y ubicación de los ojos, la nariz, la boca y otros puntos de interés en una cara humana. Si, por otro lado, nuestro fin es identificar señales de tránsito, el color juega un rol crucial, ya que el rojo es característico de señales de PARE, el amarillo de señales de precaución, y el azul de señales informativas, por mencionar algunos casos.

Es importante entender cómo funcionan los espacios de color. También debemos comprender que no hay un único espacio de color que se ajuste a todas nuestras necesidades. Debemos ser concienzudos al momento de escoger la representación que más información nos provea dentro del contexto de la aplicación o problema que busquemos resolver.

Espacios de color + código

En el siguiente notebook veremos una demostración breve de cómo pasar de un espacio de color a otro en dos de las librerías de manipulación de imágenes más usadas en el medio: OpenCV y scikit-image.

>>> Descarga el código de este post aquí <<<

Sobre el Autor

Jesús Martínez es el creador de DataSmarts, un lugar para los apasionados por computer vision y machine learning. Cuando no se encuentra bloggeando, jugando con algún algoritmo o trabajando en un proyecto (muy) cool, disfruta escuchar a The Beatles, leer o viajar por carretera.