En el tema anterior vimos que una imagen digital puede representarse como una matriz de números. Cuando la imagen es en color, esos números ya no describen solo intensidad, sino también información cromática. Para entender cómo trabaja una computadora con color necesitamos distinguir dos conceptos clave: canales de color y espacios de color.
Los canales indican cómo se separa la información visual en componentes. Los espacios de color indican cómo se organiza matemáticamente esa información para representar tonos, intensidad, saturación, luminancia u otras propiedades visuales.
Esta distinción es muy importante en visión por computadora porque la elección del espacio de color puede facilitar o dificultar una tarea. A veces conviene trabajar en RGB, otras veces en HSV, en LAB o incluso en una sola componente de luminancia.
Un canal es una capa numérica que almacena una parte de la información visual de cada píxel. En una imagen en color, cada píxel no tiene un solo valor, sino varios, y cada uno pertenece a un canal distinto.
Por ejemplo, en una imagen RGB hay tres canales:
Cada canal puede pensarse como una imagen en escala de grises que indica cuánta presencia tiene ese componente en cada píxel. Cuando combinamos esos tres canales, obtenemos la imagen a color.
Aunque hablemos de canal rojo, verde o azul, no hay que imaginar que cada canal siempre se ve como un color. Desde el punto de vista numérico, cada canal es una matriz de intensidades. Lo que cambia es cómo se interpreta esa matriz al combinarla con las otras.
Por ejemplo, si un píxel tiene valor alto en el canal rojo y bajos valores en los otros dos, el resultado visual tenderá al rojo. Pero el canal rojo en sí mismo puede visualizarse como una imagen de grises donde los valores altos aparecen claros y los bajos oscuros.
Un espacio de color es un modelo matemático que define cómo representar colores mediante coordenadas numéricas. Distintos espacios de color describen el color de maneras diferentes según el objetivo.
Algunos espacios separan componentes aditivas, otros separan tono e intensidad, y otros buscan aproximarse mejor a la percepción humana.
En visión por computadora esto es útil porque no siempre el espacio más intuitivo para visualizar es el más conveniente para procesar. Un problema de segmentación por color, por ejemplo, puede resolverse mejor en HSV que en RGB.
RGB es uno de los espacios de color más conocidos. Su nombre proviene de Red, Green, Blue, es decir, rojo, verde y azul. Cada píxel se representa con tres valores que indican la intensidad de esos tres componentes.
En imágenes estándar de 8 bits por canal, cada valor suele ir de 0 a 255. Por ejemplo:
(255, 0, 0): rojo puro.(0, 255, 0): verde puro.(0, 0, 255): azul puro.(255, 255, 0): amarillo.(255, 255, 255): blanco.(0, 0, 0): negro.RGB es muy natural para pantallas y visualización, porque muchas pantallas generan color justamente combinando luz roja, verde y azul.
RGB funciona con un modelo de mezcla aditiva. Esto significa que el color final se obtiene sumando intensidades de luz. A mayor presencia combinada de rojo, verde y azul, más clara será la percepción. Cuando los tres están al máximo, obtenemos blanco.
Este modelo es adecuado para dispositivos emisores de luz, como monitores, televisores y pantallas de teléfonos.
Aunque RGB es el orden más conocido, en visión por computadora aparece muy seguido otro orden: BGR. Este detalle es especialmente importante porque bibliotecas como OpenCV suelen cargar imágenes en BGR por defecto.
Eso significa que un píxel almacenado como:
(255, 0, 0)
en OpenCV no representa rojo, sino azul, si lo interpretamos como BGR.
Este punto genera muchísimos errores al empezar, especialmente cuando se mezclan OpenCV y bibliotecas que esperan RGB, como Matplotlib o algunos frameworks de Deep Learning.
La escala de grises puede verse como una representación donde ya no hay varios canales cromáticos, sino una sola componente de intensidad. En ese caso, cada píxel se describe con un único valor.
Aunque parezca una pérdida de información, muchas tareas funcionan muy bien en grises porque:
Esto es muy común en detección de bordes, umbralización, análisis de textura y ciertos preprocesamientos.
Uno de los espacios de color más útiles en visión por computadora es HSV, cuyas componentes suelen interpretarse como:
La gran ventaja de HSV es que separa mejor el color "puro" de la intensidad luminosa. Esto puede ser muy útil cuando queremos segmentar objetos por color aunque cambie un poco la iluminación.
Por ejemplo, si queremos detectar un objeto rojo, puede resultar más sencillo definir un rango sobre el tono en HSV que trabajar directamente con combinaciones de R, G y B.
Podemos entender HSV de la siguiente manera:
Esto lo hace más cercano a la forma en que muchas veces describimos colores cotidianamente. Por eso es tan útil para segmentación basada en color, seguimiento de objetos coloreados y análisis visual bajo iluminación moderadamente variable.
Aunque HSV es muy práctico, no es perfecto. Su principal ventaja es la interpretabilidad, pero también tiene limitaciones:
Por eso conviene usarlo cuando aporta claridad al problema, pero sin asumir que resuelve automáticamente todos los desafíos cromáticos.
Otro espacio relacionado es HSL, que organiza el color mediante:
Se parece a HSV, pero la forma en que representa el componente de claridad es distinta. En diseño gráfico y edición visual es bastante conocido, aunque en visión por computadora práctica suele usarse menos que HSV.
LAB es un espacio de color muy importante porque intenta aproximarse mejor a la percepción humana. Sus componentes suelen interpretarse así:
Una de sus grandes ventajas es que separa de forma explícita la información de luminancia de la información cromática. Esto puede ser muy útil en tareas donde queremos analizar color sin mezclarlo tanto con brillo.
LAB también es útil cuando buscamos trabajar en un espacio más alineado con diferencias perceptuales humanas.
El espacio LAB puede resultar conveniente en aplicaciones como:
En algunos casos, aplicar algoritmos sobre la componente L o sobre los canales cromáticos por separado ofrece mejores resultados que operar directamente sobre RGB.
Otro espacio bastante usado es YCrCb. Aquí se separa la luminancia de la crominancia:
Este tipo de separación es útil en compresión de video, procesamiento televisivo y algunas tareas de detección de piel o análisis facial. La idea general es parecida a la de otros espacios que intentan desacoplar brillo y color.
Existen varios espacios porque no hay una única forma óptima de representar el color para todos los problemas. Cada espacio enfatiza ciertas propiedades y simplifica ciertos tipos de procesamiento.
Por ejemplo:
Elegir bien el espacio de color puede simplificar notablemente una tarea visual.
En la práctica, es muy frecuente convertir imágenes de un espacio a otro. Por ejemplo:
Estas conversiones no cambian la escena capturada, pero sí reorganizan la información numérica de modo que ciertas operaciones resulten más convenientes.
Supongamos que queremos detectar una pelota naranja en una imagen. Si trabajamos en RGB, tendríamos que definir condiciones sobre tres canales simultáneamente. Eso puede ser incómodo si cambian la iluminación o el brillo.
En cambio, si convertimos la imagen a HSV:
Este ejemplo muestra por qué elegir el espacio adecuado simplifica el problema.
Una operación muy común es separar una imagen en sus canales individuales. Esto permite analizar cada componente por separado o procesarla con estrategias distintas.
Por ejemplo, podríamos:
La separación de canales es particularmente útil en análisis exploratorio y en etapas iniciales de un pipeline de segmentación.
Aunque el color es una fuente valiosa de información, no siempre es necesario usarlo. En muchos problemas, trabajar en escala de grises basta o incluso resulta preferible.
Esto ocurre cuando:
Por eso conviene pensar el color como una herramienta útil, no como una obligación permanente.
Los datos cromáticos introducen potencia, pero también complejidad. Algunos problemas comunes son:
Estos factores explican por qué una segmentación por color que funciona bien en laboratorio puede fallar en producción si cambian las condiciones de captura.
En modelos de Deep Learning, las imágenes en color suelen alimentarse como tensores con varios canales. Una red convolucional puede aprender patrones que combinan información cromática y espacial simultáneamente.
Sin embargo, eso no significa que siempre convenga dejar los datos tal como vienen. En muchos casos se aplican:
Entender los canales y los espacios de color ayuda también a interpretar mejor qué información recibe el modelo.
| Espacio | Componentes | Ventaja principal |
|---|---|---|
| RGB | Rojo, verde, azul | Natural para visualización y captura. |
| BGR | Azul, verde, rojo | Orden práctico usado por OpenCV. |
| HSV | Tono, saturación, valor | Muy útil para segmentación basada en color. |
| LAB | L, a, b | Buena separación perceptual de luminancia y color. |
| YCrCb | Luminancia y crominancia | Útil en video y análisis donde se separa brillo de color. |
| Grises | Intensidad | Reduce complejidad y resalta estructura. |
Trabajar con color en visión por computadora implica mucho más que ver una imagen "bonita". Significa decidir cómo representar numéricamente la información cromática para que un algoritmo pueda procesarla con eficacia.
Los canales de color nos muestran cómo se descompone la imagen. Los espacios de color nos permiten reorganizar esa información según la tarea. Esta elección puede marcar la diferencia entre una solución simple y una innecesariamente difícil.
En el próximo tema empezaremos a trabajar de manera más práctica con la carga y manipulación de imágenes en Python, llevando estos conceptos al terreno del código.