RESUMEN 5: Espacio de color [2]
Saul Rivera Lopéz, Horlando Vargas Vargas
15 de Mayo 2020
1. Introducción
Las imágenes a color tienen una gran importancia en la representación de imágenes en el mundo digital, tales como la
televisión, la fotografı́a o bien la impresión. La percepción del color es un impactante, pero a la vez complicado fenómeno
sobre el cual se han encargado desde hace décadas psicólogos, filósofos, cientı́ficos y artistas. El uso del color en el proce-
samiento de imágenes está motivado por 2 factores: El color es un poderoso descriptor que simplifica la identificación de
objetos y su extracción de una escena. En segundo lugar, los seres humanos podemos discernir entre miles de tonalidades
de color, comparado a cerca de 2 docenas de niveles de gris.
El propósito de un modelo de color (también llamado espacio de color o sistema de color) es facilitar la especificación de
colores de un modo estándar o aceptado en general. Un modelo de color es la especificación de un sistema de coordenadas
y el subespacio dentro de él donde cada color puede ser representado por un solo punto. La mayorı́a de los modelos de
color en uso se orientan ya sea al hardware, o a aplicaciones donde la manipulación de color es el objetivo.
Los modelos orientados a harware más comunes son el RGB (rojo, verde, azul), para monitores a color y cámaras de
video; el CMY (cian, magenta, amarillo) y CMYK para impresión a color; y el HSI (tono, saturación, intensidad), que
se acerca a la manera como el ojo humano describe e interpreta el color. El modelo HSI también tiene la ventaja de que
separa la información del color y de la escala de gris de una imagen, haciéndolo conveniente para muchas técnicas de escala
de gris desarrolladas en este curso.
2. Modelos de color
2.1. Modelo RGB
En el modelo RGB, cada color aparece en sus componentes primarios del espectro de rojo, verde, y azul. El origen de
este modelo se encuentre en la tecnologı́a de la televisión y puede ser considerado como la representación fundamental
del color en las computadoras, cámaras digitales y escáneres, ası́ como en el almacenamiento de imágenes. La mayorı́a de
los programas para el procesamiento de imágenes y de representación grafica utilizan este modelo para la representación
interna del color.
Este modelo se basa en un sistema de coordenadas cartesianas que forma un cubo en el que los valores RGB están en
3 esquinas. Los valores de cian, magenta y amarillo están en las otras 3 esquinas, el negro está en el origen y el blanco
está en el vértice más alejado del origen [3].
1
Figura 1: Cubo unitario, que representa al espacio de color RGB. Los puntos a lo largo de la diagonal principal tienen
valores grises, desde negro en el origen hasta blanco en el punto (1,1,1).
La escala de gris (puntos con valores de RGB iguales) se extiende del negro al blanco en la lı́nea que une los puntos
negro y blanco. Los diferentes colores del modelo son puntos sobre o dentro del cubo, y se definen por medio de vectores
que se extienden desde el origen.
Las imágenes representadas en el modelo RGB consisten en 3 imágenes componentes, cada una de un color primario.
El número de bits utilizado para representar cada pixel en el espacio RGB se llama profundidad de pixel.
Descomposición de una imagen en sus 3 canales (RGB) en Opencv
import cv2
img = cv2.imread(’./images/paisaje.jpg’, cv2.IMREAD COLOR)
g,b,r = cv2.split(img)
gbri mg = cv2.merge((g, b, r))
rbri mg = cv2.merge((r, b, r))
cv2.imshow(0 Original0 , img)
cv2.imshow(0 CanalR0 , r)
cv2.imshow(0 CanalG0 , g)
cv2.imshow(0 CanalB 0 , b)
cv2.waitKey()
2
Resultados
(a) (b)
(c) (d)
Figura 2: a) Imagen original, b) Canal R, c) Canal G, d) Canal B .
3. Modelo HSI
El modelo de color HSI (hue, saturation, intensity: tono, saturación e intensidad) separa el componente de intensidad
de la información de color en una imagen de color. Como resultado, este modelo es una herramienta ideal para desarrollar
algoritmos basados en descripciones de color naturales e intuitivas para los seres humanos. El modelo RGB, después de
todo, es ideal para generación de imágenes a color, pero su uso para la descripción de color es limitado. El espacio de color
HSI se representa con un ángulo alrededor de un eje vertical y tiene un rango de valores entre 0 y 360 grados empezando
por el rojo en 0 grados (Fig. 3).
El tono esta asociado con la longitud de onda dominante en una mezcla de ondas luminosas. Ası́ el tono representa el
color dominante tal y como lo percibimos. La intensidad representa la iluminación percibida. La intensidad da la sensación
de que un objeto refleja mas o menos luz. La saturación se refiere a la cantidad de luz blanca mezclada con el color domi-
nante. La saturación es un atributo que nos diferencia un color intenso de uno pálido. Cada uno de los colores primarios
tienen su mayor valor de saturación antes de ser mezclados con otros.
En este espacio de color, la saturación (S) se extiende desde 0 (en el eje I) radialmente hacia fuera, teniendo un máximo
de 1 en la superficie del cono. Este componente se refiere a la proporción de luz pura de la longitud de onda dominante, e
indica qué tan lejos está un color de un gris de igual brillantez. La intensidad es una medida de la brillantez relativa; su
rango es [0, 1] (Fig. 3).
3
Figura 3: Espacio de color HSI
En la parte superior e inferior del cono (Fig. 3), donde los valores de I son 1 y 0, respectivamente, la saturación y la
tonalidad no tienen sentido y están indefinidas. En cualquier punto a lo largo del eje I, la componente de la saturación es
0 y la tonalidad (H) es indefinida. Esta singularidad ocurre dondequiera que R = G = B.
El modelo de color HSI debe su utilidad a dos factores principales: 1) la componente de intensidad I está desacoplada
de la información de cromaticidad. 2) los componentes de Tonalidad (H) y Saturación (S) están ı́ntimamente relacionados
a la manera en que nosotros los humanos percibimos la cromaticidad.
Existe una lista de opciones disponibles en OpenCV para convertir de un espacio de color a otro. Podemos convertir
prácticamente cualquier espacio de color a cualquier otro espacio de color. Veamos cómo podemos convertir una imagen
en el espacio de color RGB a HSI y de HSI a RGB.
Usamos la función cvtColor para convertir espacios de color. El primer argumento es la imagen de entrada y el segundo
argumento especifica la conversión del espacio de color.
Conversión del espacio de color RGB a HSI.
import cv2
img = cv2.imread(’./images/paisaje.jpg’, cv2.IMREAD COLOR)
img HSI = cv2.cvtColor(img, cv2.COLOR RGB2HLS)
cv2.imshow(’IMAGEN ORIGINAL’, img)
cv2.imshow(’IMAGEN EN ESPACIO DE COLOR HSI’, img HSI)
cv2.waitKey()
4
Resultados
(a) (b)
Figura 4: a) Imagen original, b) Imagen en espacio de color HSI.
Para regresar la imagen del espacio de color HSV al espacio de RGB es necesario utilizar la siguiente funcion.
RGB = cv2.cvtColor(img HSI, cv2.COLOR HLS2RGB)
3.1. Modelo YUV
El modelo YUV define un espacio de color en términos de una componente de luminancia y dos componentes de
crominancia. El modelo YUV es usado en los sistemas PAL y NTSC de difusión de televisión, el cual es el estándar en
la mayorı́a del mundo. Este modelo está más próximo al modelo humano de percepción que el estándar RGB usado en
el hardware de gráficos por ordenador, pero no tan cerca como el espacio de color HSL y espacio de color HSV. En el
espacio de color YUV. Y se refiere a la luminancia o intensidad, y los canales U / V representan información de color. Esto
funciona bien en muchas aplicaciones porque el sistema visual humano percibe la información de intensidad de manera
muy diferente a la información de color. La componente de iluminancia Y es definida a partir de los componentes RGB,
por la ecuación:
Y (x, y) = 0,299R(x, y) + 0,587G(x, y) + 0,114B(x, y) (1)
Los componenetes UV son factores lineales de la diferencia existente entre el valor de la luminancia y los planos de
color Rojo y Azul del modelo RGB estos valores especı́ficamente se definen como:
U (x, y) = 0,492(B(x, y) − Y (x, y)) (2)
Y
V (x, y) = 0,877(R(x, y) − Y (x, y)) (3)
Considerando las ecuaciones definidas tanto para la luminancia Y (x, y) ası́ como para las componentes cromáticas
U (x, y), V (x, y), pueden definirse como la matriz de transformación:
V (x, y) = 0,877(R(x, y) − Y (x, y)) (4)
Y (x, y) 0,299 0,587 0,114 R(x, y)
U (x, y) = −0,147 −0,289 0,436 G(x, y) (5)
V (x, y) 0,615 −0,515 −0,100 B(x, y)
La transformación de YUV a RGB puede obtenerse a través de la inversión de la matriz definida en la Ec.5, quedando:
R(x, y) 1,000 0,000 1,140 Y (x, y)
G(x, y) = 1,000 −0,395 −0,581 U (x, y) (6)
B(x, y) 1,000 2,032 0,000 V (x, y)
5
Conversión del espacio de color RGB a YUV.
import cv2
img = cv2.imread(’./images/paisaje.jpg’, cv2.IMREAD COLOR)
img YUV = cv2.cvtColor(img, cv2.COLOR RGB2YUV)
cv2.imshow(’IMAGEN ORIGINAL’, img)
cv2.imshow(’IMAGEN EN ESPACIO DE COLOR YUV’, img YUV)
cv2.waitKey()
Resultados
(a) (b)
Figura 5: a) Imagen original, b) Imagen en espacio de color YUV.
Para regresar la imagen del espacio de color YUV al espacio de RGB es necesario utilizar la siguiente funcion.
RGB = cv2.cvtColor(img YUV, cv2.COLOR YUV2RGB)
4. Falso color
Es posible utilizar las transformaciones de espacios de color RGB y HSI para lograr el objetivo de la asignacion de
falso color a los objetos en las imagenes digitales. Asignar falso color significa cambiar el color del objeto a cualquier otro
color.El objeto debe estar coloreado con tonalidades armonizadas, en otras palabras, la diferencia entre cada tono debe
ser suave, no muy contrastante para tener un buen resultado. En otro caso la asignacion de falso color puede afectar a
otros objetos o regiones de la imagen digital.
El procedimiento para la asignacion del falso color consta de dos etapas [1]:
Paso 1:
Se elige una subarea del objeto, y por medio de la Ec.7 hallamos el tono mınimo y maximo de esa region. Estos tonos
caracterizan a nuestro objeto, debido a que un gran numero del total de pıxeles del objeto tienen un valor de tonalidad
que estan entre el m ınimo y el maximo.se recomienda tomar subareas que contengan un mayor numero de tonalidades.
" #
1
[(R − G) + (R − B)]
H = cos− 1 p 2 (7)
(R − G)2 (R − B)(G − B)
para 0 H 180.
Paso 2:
Barriendo la imagen pixel por pixel hallamos los valores H, S e I (Ecs.7, 8 y (17)), comparamos el tono del pıxel con el
tono maximo y con el tono m ınimo. Si el valor del tono del pıxel esta entre los valores de los tonos maximo y mınimo, le
asignamos la tonalidad deseada; en otro caso, conservamos el valor original de la tonalidad. Finalmente, dado que el pıxel
esta en el espacio HSI, debemos retornar al espacio RGB para poder visualizar nuestra imagen transformada.
1
I= (R + G + B) (8)
3
3min(R, G, B)
S =1− (9)
R+G+B
6
con opencv es posible realizar la asignacion de falso color de la siguiente forma:
import cv2
import numpy as np
img = cv2.imread(’./images/leon.jpg’, cv2.IMREAD COLOR)
HSIi mg = cv2.cvtColor(img, cv2.COLOR RGB2HLS)
H, S, I = cv2.split(HSI img)
x, y = np.shape(H)
f oriinrange(0, x) :
f orjinrange(0, y) :
if 100 < H[i, j] < 160 :
H[i, j] = 30
hsii mg = cv2.merge((H, S, I))
RGBi mg = cv2.cvtColor(hsii mg, cv2.COLOR HLS2RGB)
cv2.imshow(0 IM AGEN ORIGIN AL0 , img)
cv2.imshow(0 F ALSOCOLOR0 , RGBi mg)
cv2.waitKey()
(a) (b)
Figura 6: a) Imagen original, b) Asignacion de falso color.
Referencias
[1] JJ Báez Rojas and Alonso Pérez. Uso del sistema hsi para asignar falso color a objetos en imágenes digitales. Revista
mexicana de fı́sica E, 54(2):186–192, 2008.
[2] Gabriel Garrido and Prateek Joshi. OpenCV 3. x with Python By Example-: Make the most of OpenCV and Python
to build applications for object recognition and augmented reality. Packt Publishing, 2018.
[3] C Gonzalez Rafael, E Woods Richard, L Eddins Steven, Richard Woods, and Steven Eddins. Digital image processing
using MATLAB. Tata McGraw-Hill, 2010.