Espacios de color YCbCr

YCbCr, Y’CbCr , o Y Pb / Cb Pr / Cr , también escrito como YC B C R o Y’C B C R , es una familia de espacios de color utilizados como parte de la canalización de imágenes en color en video y fotografía digital sistemas. Y ‘es el componente de luma y CB y CR son los componentes de croma de diferencia azul y diferencia de rojo. Y ‘(con primo) se distingue de Y, que es luminancia, lo que significa que la intensidad de la luz no está codificada linealmente en base a los primarios RGB con corrección gamma.

Los espacios de color Y’CbCr se definen mediante una transformación de coordenadas matemáticas a partir de un espacio de color RGB asociado. Si el espacio de color RGB subyacente es absoluto, el espacio de color Y’CbCr también es un espacio de color absoluto; por el contrario, si el espacio RGB está mal definido, también lo es Y’CbCr.

Razón fundamental
Las pantallas de tubo de rayos catódicos son impulsadas por señales de voltaje rojo, verde y azul, pero estas señales RGB no son eficaces como una representación para el almacenamiento y la transmisión, ya que tienen mucha redundancia.

YCbCr e Y’CbCr son una aproximación práctica al procesamiento del color y la uniformidad perceptiva, donde los colores primarios que corresponden aproximadamente a rojo, verde y azul se procesan en información perceptivamente significativa. Al hacer esto, el procesamiento, la transmisión y el almacenamiento posterior de imágenes / video pueden realizar operaciones e introducir errores en formas perceptualmente significativas. Y’CbCr se usa para separar una señal luminosa (Y ‘) que puede almacenarse con alta resolución o transmitida a un ancho de banda alto, y dos componentes croma (CB y CR) que pueden ser de ancho de banda reducido, submuestreados, comprimidos o no tratado por separado para una mejor eficiencia del sistema.

Un ejemplo práctico sería disminuir el ancho de banda o la resolución asignada al «color» en comparación con «blanco y negro», ya que los humanos son más sensibles a la información en blanco y negro (vea el ejemplo de la imagen a la derecha). Esto se llama submuestreo de croma.

YCbCr
YCbCr a veces se abrevia a YCC. Y’CbCr a menudo se llama YPbPr cuando se usa para video de componentes análogos, aunque el término Y’CbCr se usa comúnmente para ambos sistemas, con o sin prima.

Y’CbCr a menudo se confunde con el espacio de color YUV, y típicamente los términos YCbCr y YUV se usan indistintamente, lo que genera cierta confusión. La principal diferencia es que YUV es analógico y YCbCr es digital.

Las señales Y’CbCr (antes del escalado y las desviaciones para colocar las señales en forma digital) se denominan YPbPr, y se crean a partir de la correspondiente fuente RGB ajustada gamma (rojo, verde y azul) utilizando tres constantes definidas KR, KG y KB como sigue:


donde K R , K G y K B se derivan normalmente de la definición del espacio RGB correspondiente, y se requieren para satisfacer  . (La manipulación de matriz equivalente a menudo se denomina «matriz de color»).

Aquí, los símbolos primos significan que se está utilizando la corrección gamma; por lo tanto, R ‘, G’ y B ‘varían de 0 a 1, donde 0 representa la intensidad mínima (por ejemplo, para mostrar el color negro) y 1 el máximo (por ejemplo, para mostrar el color blanco). El valor de luma (Y) resultante tendrá entonces un rango nominal de 0 a 1, y los valores de croma (PB y PR) tendrán un rango nominal de -0.5 a +0.5. El proceso de conversión inversa puede derivarse fácilmente invirtiendo las ecuaciones anteriores.

Cuando se representan las señales en forma digital, los resultados se escalan y se redondean, y normalmente se agregan compensaciones. Por ejemplo, la escala y el desplazamiento aplicados al componente Y ‘por especificación (por ejemplo, MPEG-2) da como resultado el valor de 16 para negro y el valor de 235 para blanco cuando se usa una representación de 8 bits. El estándar tiene versiones digitalizadas de 8 bits de CB y CR escaladas a un rango diferente de 16 a 240. Consecuentemente, el reescalado por la fracción (235-16) / (240-16) = 219/224 a veces se requiere al hacer matrices de colores o el procesamiento en el espacio YCbCr, lo que produce distorsiones de cuantificación cuando el procesamiento posterior no se realiza con profundidades de bits mayores.

La escala que da como resultado el uso de un rango menor de valores digitales que lo que podría parecer deseable para la representación del rango nominal de los datos de entrada permite un cierto «sobreimpulso» y «subimpulso» durante el procesamiento sin necesidad de recorte no deseable. Esta «sala principal» y «sala de los dedos» también se puede utilizar para la extensión de la gama de colores nominales, tal como lo especifica xvYCC.

El valor 235 acomoda un rebasamiento máximo de blanco a blanco de 255 – 235 = 20, o 20 / (235 – 16) = 9.1%, que es ligeramente mayor que el sobreimpulso máximo teórico (Fenómeno de Gibbs) de aproximadamente 8.9% de el paso máximo. La habitación del dedo del pie es más pequeña, permitiendo solo un sobreimpulso de 16/219 = 7.3%, que es menor que el sobreimpulso máximo teórico del 8.9%.

Dado que las ecuaciones que definen YCbCr están formadas de forma que giran todo el cubo de color RGB nominal y se ajustan a un cubo de color YCbCr (más grande), hay algunos puntos dentro del cubo de color YCbCr que no se pueden representar en el dominio RGB correspondiente (al menos no dentro del rango nominal RGB). Esto causa cierta dificultad para determinar cómo interpretar y mostrar correctamente algunas señales de YCbCr. Estos valores fuera de rango YCbCr son utilizados por xvYCC para codificar colores fuera de la gama BT.709.

Conversión de RGB a YCbCr

Conversión de ITU-R BT.601
La forma de Y’CbCr que se definió para el uso de televisión de definición estándar en la norma ITU-R BT.601 (anteriormente CCIR 601) para uso con video componente digital se deriva del espacio RGB correspondiente de la siguiente manera:


A partir de las constantes y fórmulas anteriores, se puede derivar lo siguiente para ITU-R BT.601.

El YPbPr analógico del análogo R’G’B ‘se deriva de la siguiente manera:


El Y’CbCr digital (8 bits por muestra) se deriva del análogo R’G’B ‘de la siguiente manera:


o simplemente componente


Las señales resultantes oscilan entre 16 y 235 para Y ‘(rango de Cb y Cr de 16 a 240); los valores de 0 a 15 se llaman footroom, mientras que los valores de 236 a 255 se llaman headroom.

Alternativamente, el Y’CbCr digital puede derivarse de R’dG’dB’d digital (8 bits por muestra, cada uno usando el rango completo con cero representando negro y 255 representando blanco) de acuerdo con las siguientes ecuaciones:


En la fórmula anterior, los factores de escala se multiplican por  . Esto permite el valor de 256 en el denominador, que se puede calcular con un solo cambio de bits.

Si la fuente digital R’d G’d B’d incluye espacio para pies y altura libre, primero se debe restar el desplazamiento de pie 16 de cada señal, y un factor de escala de  necesita ser incluido en las ecuaciones.

La transformación inversa es:


La transformación inversa sin redondeos (utilizando valores provenientes directamente de la recomendación ITU-R BT.601) es:


Esta forma de Y’CbCr se usa principalmente para sistemas de televisión de definición estándar más antiguos, ya que utiliza un modelo RGB que se ajusta a las características de emisión de fósforo de los CRT más antiguos.

Conversión de ITU-R BT.709
Una forma diferente de Y’CbCr se especifica en el estándar ITU-R BT.709, principalmente para el uso de HDTV. La forma más nueva también se usa en algunas aplicaciones orientadas a la visualización de computadoras. En este caso, los valores de Kb y Kr difieren, pero las fórmulas para usarlos son los mismos. Para ITU-R BT.709, las constantes son:


Esta forma de Y’CbCr se basa en un modelo RGB que se ajusta más a las características de emisión de fósforo de los CRT más nuevos y otros equipos de visualización modernos.

Las definiciones de las señales R ‘, G’ y B ‘también difieren entre BT.709 y BT.601, y difieren dentro de BT.601 según el tipo de sistema de TV en uso (625 líneas como en PAL y SECAM o 525 líneas como en NTSC), y difieren más en otras especificaciones. En diferentes diseños hay diferencias en las definiciones de las coordenadas de cromaticidad R, G y B, el punto blanco de referencia, el rango de gama soportado, las funciones exactas de precompensación gamma para derivar R ‘, G’ y B ‘de R, G, y B, y en la escala y los desplazamientos que se aplicarán durante la conversión de R’G’B ‘a Y’CbCr. Entonces, la conversión adecuada de Y’CbCr de una forma a otra no es solo una cuestión de invertir una matriz y aplicar la otra. De hecho, cuando se diseña idealmente Y’CbCr, los valores de KB y KR se derivan de la especificación precisa de las señales primarias de color RGB, de modo que la señal de luma (Y ‘) se corresponde lo más posible con una medición ajustada de gamma de luminancia (típicamente basado en las mediciones CIE 1931 de la respuesta del sistema visual humano a los estímulos de color).

Conversión de ITU-R BT.2020
El estándar ITU-R BT.2020 define tanto el Y’CbCr corregido con rayos gamma como una versión con codificación lineal de YCbCr llamada YcCbcCrc. YcCbcCrc se puede usar cuando la prioridad principal es la retención más precisa de la información de luminancia. Para YcCbcCrc, los coeficientes son:


Conversión JPEG
El uso JFIF de JPEG admite Y’CbCr donde Y ‘, CB y CR tienen el rango completo de 8 bits de [0 … 255]. A continuación se muestran las ecuaciones de conversión expresadas en seis dígitos decimales de precisión. (Para las ecuaciones ideales, ver ITU-T T.871.) Tenga en cuenta que para las siguientes fórmulas, el rango de cada entrada (R, G, B) también es el rango completo de 8 bits de [0 … 255].


Y atras:

Plano CbCr en Y = 0.5

Y = 0.5

Nota: cuando Y = 0, R, G y B deben ser todos cero, por lo tanto, Cb y Cr solo pueden ser cero. Del mismo modo, cuando Y = 1, R, G y B deben ser todos 1, por lo tanto, Cb y Cr solo pueden ser cero.

A diferencia de R, G y B, los valores Y, Cb y Cr no son independientes; elegir los valores de YCbCr arbitrariamente puede conducir a uno o más de los valores RGB que están fuera de gama, es decir, mayor que 1.0 o menor que 0.0.