Main Content

Comprender los espacios de color y la conversión entre ellos

El software Image Processing Toolbox™ suele representar los colores como valores numéricos de rojo, verde y azul (RGB). Sin embargo, existen otros modelos además del RGB para representar colores numéricamente. Los distintos modelos se denominan espacios de color porque la mayoría de ellos pueden asignarse a un sistema de coordenadas 2D, 3D o 4D.

Los diferentes espacios de color existen porque presentan la información sobre el color de formas que facilitan determinados cálculos o permiten identificar los colores de forma más intuitiva. Por ejemplo, el espacio de color RGB define un color como los porcentajes de tonos de rojo, verde y azul mezclados. Otros modelos de color describen los colores por su tono (tonalidad), saturación (cantidad de gris o color puro) y luminancia (intensidad o brillo general).

La toolbox permite convertir datos de color de un espacio de color a otro mediante transformaciones matemáticas.

RGB

El espacio de color RGB representa las imágenes como un arreglo numérico de m por n por 3 en el que los elementos especifican los valores de intensidad de los canales de color rojo, verde y azul. El intervalo de valores numéricos depende del tipo de datos de la imagen.

  • En los arreglos single o double, los valores RGB oscilan entre [0, 1].

  • En los arreglos uint8, los valores RGB oscilan entre [0, 255].

  • En los arreglos uint16, los valores RGB oscilan entre [0, 65535].

La toolbox admite variaciones del espacio de color RGB.

Espacio de color RGBDescripción
RGB linealLos valores RGB lineales son datos en bruto obtenidos del sensor de una cámara. El valor de R, G y B es directamente proporcional a la cantidad de luz que ilumina el sensor. El preprocesamiento de los datos de la imagen en bruto, como el equilibrio de blancos, el equilibrio de color y la compensación de la aberración cromática, se realizan sobre los valores RGB lineales.
sRGB

Los valores sRGB aplican una función no lineal, denominada corrección gamma a los valores RGB lineales. Las imágenes se muestran con frecuencia en el espacio de color sRGB porque aparecen más brillantes y los colores son más fáciles de distinguir. La curva paramétrica utilizada para transformar los valores RGB lineales al espacio de color sRGB es:

f(u) = -f(-u), u < 0

f(u) = cu, 0 ≤ u < d

f(u) = auɣ + b, ud,

donde u representa uno de los valores de color R, G o B con los siguientes parámetros:

a = 1.055

b = –0.055

c = 12.92

d = 0.0031308

ɣ = 1/2.4

Adobe RGB (1998)

Los valores RGB de Adobe RGB (1998) aplican una corrección gamma a los valores RGB utilizando una función de potencia simple:

v = uɣ, u ≥ 0

v = -(-u)ɣ, u < 0,

con

ɣ = 1/2.19921875

HSV

El espacio de color HSV (tono, saturación, valor) se corresponde mejor con la forma en la que las personas experimentan el color que el espacio de color RGB. Por ejemplo, este espacio de color lo utilizan a menudo las personas cuando eligen colores, como el color de la pintura o la tinta de una rueda cromática o paleta de colores.

AtributoDescripción
HTono, que corresponde a la posición del color en una rueda cromática. H está en el intervalo [0, 1]. A medida que H aumenta, los colores pasan del rojo al naranja, amarillo, verde, cian, azul, magenta y, finalmente, de nuevo al rojo. Tanto el 0 como el 1 indican el rojo.
SSaturación, que es la cantidad de tono o desviación del neutro. S está en el intervalo [0, 1]. A medida que S aumenta, los colores varían de insaturados (tonos de gris) a completamente saturados (sin componente blanco).
V

Valor, que es el valor máximo entre los componentes rojo, verde y azul de un color específico. V está en el intervalo [0, 1]. A medida que V aumenta, los colores correspondientes se vuelven cada vez más brillantes.

Ilustración del espacio de color HSV

The HSV color space is an inverted cone, where hue relates to the angle, saturation to the radius, and value to the height from the origin. The color white is at the origin and the color white is the furthest point along the value axis.

Nota

MATLAB® y el software Image Processing Toolbox no son compatibles con el espacio de color HSI (tono, saturación, intensidad). Sin embargo, si desea trabajar con datos de color en términos de tono, saturación e intensidad, el espacio de color HSV es muy similar. Otra opción es utilizar el espacio de color LCH (luminosidad, pureza de color y tono), que es una transformación polar de espacio de color CIE L*a*b*. Consulte Device-Independent Color Spaces.

Utilice las funciones rgb2hsv y hsv2rgb para realizar una conversión entre los espacios de color RGB y HSV.

CIE 1976 XYZ y CIE 1976 L*a*b*

CIE 1976 XYZ y CIE 1976 L*a*b* son espacios de color independientes del dispositivo desarrollados por la Comisión Internacional de Iluminación, conocida por las siglas CIE. Estos espacios de color modelan los colores según la sensibilidad típica de los tres tipos de conos del ojo humano.

El espacio de color XYZ es el modelo original desarrollado por la CIE. El canal Y representa la luminancia de un color. El canal Z se relaciona aproximadamente con la cantidad de azul de una imagen, pero el valor de Z en el espacio de color XYZ no es idéntico al valor de B en el espacio de color RGB. El canal X no tiene una analogía cromática clara. Sin embargo, si considera el espacio de color XYZ como un sistema de coordenadas 3D, los valores X se sitúan a lo largo del eje ortogonal al eje Y (luminancia) y al eje Z.

El espacio de color L*a*b* proporciona un espacio de color que se percibe más uniforme que el modelo XYZ. Los colores del espacio de color L*a*b* pueden existir fuera del espectro RGB (el conjunto válido de colores RGB). Por ejemplo, cuando convierte el valor L*a*b* [100, 100, 100] al espacio de color RGB, el valor devuelto es [1.7682, 0.5746, 0.1940], que no es un color RGB válido. Para obtener más información, consulte Determine If L*a*b* Value Is in RGB Gamut.

AtributoDescripción
L*Luminancia o brillo de la imagen. Los valores están en el rango [0, 100], donde 0 especifica el negro y 100 especifica el blanco. A medida que aumenta L*, los colores se vuelven más brillantes.
a*Cantidad de tonos rojos o verdes en la imagen. Un valor positivo grande de a* se corresponde con el rojo/magenta. Un valor negativo grande de a* se corresponde con el verde. A pesar de que no hay un solo rango para a*, los valores se sitúan habitualmente en el rango [-100, 100] o [-128, 127].
b*Cantidad de tonos amarillos o azules en la imagen. Un valor positivo grande de b* se corresponde con el amarillo. Un valor negativo grande de b* se corresponde con el azul. A pesar de que no hay un solo rango para b*, los valores se sitúan habitualmente en el rango [-100, 100] o [-128, 127].

Los espacios de color independientes del dispositivo incluyen el efecto de la fuente de iluminación, denominado punto blanco de referencia. La fuente de iluminación otorga un tono de color a los datos de la imagen en bruto en función de la temperatura de color del iluminante. Por ejemplo, la luz del sol durante el amanecer y el atardecer otorga un tono amarillo a una imagen, mientras que la luz del sol al mediodía otorga un tono azul.

Utilice las funciones rgb2xyz y xyz2rgb para realizar una conversión entre los espacios de color RGB y XYZ. Utilice las funciones rgb2lab y lab2rgb para realizar una conversión entre los espacios de color RGB y L*a*b*.

La toolbox admite varias especificaciones relacionadas con el espacio de color que son más adecuadas que XYZ para algunos fines. Para más información, consulte Device-Independent Color Spaces.

YCbCr

El espacio de color YCbCr se utiliza ampliamente para el vídeo digital. En este formato, la información de luminancia se almacena como un único componente (Y) y la información de crominancia se almacena como dos componentes de diferencia de color (Cb y Cr). Cb y Cr representan la diferencia entre un valor de referencia y el componente azul o rojo, respectivamente. (YUV, otro espacio de color ampliamente utilizado para el vídeo digital, es muy similar a YCbCr, pero no idéntico).

AtributoDescripción
YLuminancia o brillo de la imagen. Los colores aumentan en brillo como aumentos de Y.
CbValor de crominancia que indica la diferencia entre el componente azul y un valor de referencia.
CrValor de crominancia que indica la diferencia entre el componente rojo y un valor de referencia.

El intervalo de valores numéricos depende del tipo de datos de la imagen. YCbCr no utiliza toda la gama de tipos de datos de imagen para que la transmisión de vídeo pueda incluir información adicional (sin imagen).

  • En los arreglos single o double, Y está en el intervalo [16/255, 235/255] y Cb y Cr están en el intervalo [16/255, 240/255].

  • En los arreglos uint8, Y está en el intervalo [16, 235] y Cb y Cr están en el intervalo [16, 240].

  • En uint16, Y está en el intervalo [4112, 60395] y Cb y Cr están en el intervalo [4112, 61680].

Utilice las funciones rgb2ycbcr e ycbcr2rgb para realizar una conversión entre los espacios de color RGB y YCbCr.

YIQ

El Comité Nacional de Sistema de Televisión (NTSC) define un espacio de color conocido como YIQ. Este espacio de color se utiliza en las televisiones de Estados Unidos. Este espacio de color separa la información en escala de grises de los datos en color para que la misma señal pueda utilizarse tanto en televisores en color como en blanco y negro.

AtributoDescripción
YLuminancia o brillo de la imagen. Los valores están en el rango [0, 1], donde 0 especifica el negro y 1 especifica el blanco. Los colores aumentan en brillo como aumentos de Y.
IEn fase, que es aproximadamente la cantidad de tonos azules o naranjas de la imagen. I en el rango [-0,5959, 0,5959], donde los números negativos indican tonos azules y los números positivos indican tonos naranjas. Conforme aumenta la magnitud de I, también aumenta la saturación del color.
QCuadratura, que es aproximadamente la cantidad de tonos verdes o morados de la imagen. Q en el rango [-0,5229, 0,5229], donde los números negativos indican tonos verdes y los números positivos indican tonos morados. Conforme aumenta la magnitud de Q, también aumenta la saturación del color.

Utilice las funciones rgb2ntsc y ntsc2rgb para realizar una conversión entre los espacios de color RGB y YIQ.

Dado que la luminancia es uno de los componentes del formato NTSC, la conversión de RGB a NTSC es también útil para aislar la información del nivel de grises en una imagen. De hecho, las funciones de toolbox rgb2gray y ind2gray utilizan la función rgb2ntsc para extraer la información de la escala de grises de una imagen a color.

Temas relacionados