sRGB

sRGB (estándar Red Green Blue) es un espacio de color RGB que HP y Microsoft crearon de forma cooperativa en 1996 para usar en monitores, impresoras e Internet. Posteriormente fue estandarizado por el IEC como IEC 61966-2-1: 1999. A menudo es el espacio de color «predeterminado» para las imágenes que no contienen información de espacio de color, especialmente si los píxeles de las imágenes se almacenan en enteros de 8 bits por canal de color.

sRGB utiliza los primarios ITU-R BT.709, los mismos que en los monitores de estudio y HDTV, una función de transferencia (curva gamma) típica de CRT y un entorno de visualización diseñado para que coincida con las condiciones típicas de visualización en el hogar y la oficina. Esta especificación permitió que sRGB se mostrara directamente en los monitores CRT típicos de la época, lo que facilitó enormemente su aceptación.

La gama sRGB

Cromaticidad rojo Verde Azul punto blanco
X 0.6400 0.3000 0.1500 0.3127
y 0.3300 0.6000 0.0600 0.3290
Y 0.2126 0.7152 0.0722 1.0000

sRGB define las cromaticidades de las primarias roja, verde y azul, los colores donde uno de los tres canales es distinto de cero y los otros dos son cero. La gama de cromaticidades que se pueden representar en sRGB es el triángulo de color definido por estas primarias. Al igual que con cualquier espacio de color RGB, para valores no negativos de R, G y B no es posible representar colores fuera de este triángulo, que se encuentra dentro del rango de colores visibles para un ser humano con visión tricromática normal.

Algunas veces, los profesionales de la edición impresa de alto nivel evitan sRGB porque su gama de colores no es lo suficientemente grande, especialmente en los colores azul-verde, para incluir todos los colores que se pueden reproducir en la impresión CMYK.

La función de transferencia sRGB («gamma»)

e gama efectiva en cada punto. Por debajo de un valor comprimido de 0.04045 o una intensidad lineal de 0.00313, la curva es lineal, por lo que la gamma es 1. Detrás de la curva roja hay una curva negra discontinua que muestra una ley exacta de potencia gamma = 2.2.

sRGB también define una transformación no lineal entre la intensidad de estos primarios y el número real almacenado. La curva es similar a la respuesta gamma de una pantalla CRT. Esta conversión no lineal significa que sRGB es un uso razonablemente eficiente de los valores en un archivo de imagen basado en enteros para mostrar los niveles de luz discernibles por el ser humano.

A diferencia de la mayoría de los demás espacios de color RGB, el sRGB gamma no se puede expresar como un único valor numérico. La gamma global es aproximadamente 2.2, que consiste en una sección lineal (gamma 1.0) cerca del negro, y una sección no lineal en otra parte que implica un exponente 2.4 y una gamma (pendiente de la salida de registro versus entrada de registro) que cambia de 1.0 a aproximadamente 2.3. El propósito de la sección lineal es que la curva no tenga una pendiente infinita en cero, lo que podría causar problemas numéricos.

Especificación de la transformación
La transformación directa (CIE XYZ a sRGB)
Los valores de CIE XYZ deben escalarse para que la Y de D65 («blanco») sea 1.0 (X, Y, Z = 0.9505, 1.0000, 1.0890). Esto suele ser cierto, pero algunos espacios de color usan 100 u otros valores (como en el artículo de Lab).

El primer paso en el cálculo de sRGB de CIE XYZ es una transformación lineal, que puede llevarse a cabo mediante una multiplicación de matrices. (Los valores numéricos a continuación coinciden con los de la especificación sRGB oficial, que corrigió pequeños errores de redondeo en la publicación original de los creadores de sRGB, y suponen el observador colorimétrico estándar de 2 ° para CIE XYZ)


Es importante tener en cuenta que estos valores RGB lineales no son el resultado final, ya que aún no se han ajustado para la corrección gamma. La siguiente fórmula transforma los valores lineales en sRGB:


donde {\ displaystyle a = 0.055} a = 0.055 y donde {\ displaystyle C} C es {\ displaystyle R} R, {\ displaystyle G} G, o {\ displaystyle B} B.
Estos valores corregidos gamma están en el rango de 0 a 1. Si se requieren valores en el rango de 0 a 255, por ejemplo, para visualización de video o gráficos de 8 bits, la técnica habitual es multiplicar por 255 y redondear a un número entero.

Los valores generalmente se recortan en el rango de 0 a 1. Este recorte se puede hacer antes o después del cálculo gamma, o como parte de la conversión a 8 bits.

La transformación inversa
Nuevamente los valores del componente sRGB  ,  ,  están en el rango de 0 a 1. (Un rango de 0 a 255 simplemente se puede dividir por 255.0).


donde {\ displaystyle a = 0.055} a = 0.055 y donde {\ displaystyle C} C es {\ displaystyle R} R, {\ displaystyle G} G, o {\ displaystyle B} B.
Seguido de una multiplicación matricial de los valores lineales para obtener XYZ:


Teoría de la transformación

A menudo se dice casualmente que la gamma de decodificación para los datos sRGB es 2.2, sin embargo, la transformación anterior muestra un exponente de 2.4. Esto se debe a que el efecto neto de la descomposición por partes es necesariamente un gamma instantáneo cambiante en cada punto del rango: va de gamma = 1 a cero a un gamma de 2.4 a intensidad máxima con un valor mediano cercano a 2.2. La transformación fue diseñada para aproximarse a una gamma de aproximadamente 2.2, pero con una porción lineal cercana a cero para evitar tener una pendiente infinita en K = 0, lo que puede causar problemas numéricos.La condición de continuidad para la curva  , que se define anteriormente como una función por partes de  , es


Resolviendo con  y el valor estándar  produce dos soluciones,  ≈  o  ≈  . El estándar IEC 61966-2-1 usa el valor redondeado  . Sin embargo, si imponemos la condición de que las pendientes coincidan también, entonces debemos tener


Ahora tenemos dos ecuaciones. Si tomamos las dos incógnitas para que sean {\ displaystyle K_ {0}} K_ {0} y {\ displaystyle \ phi} \ phi, entonces podemos resolver para dar


Sustituyendo  y  da  ≈  y  ≈  , con el umbral de dominio lineal correspondiente en  ≈  .Estos valores, redondeados a  ,  y  , a veces describen la conversión sRGB. Publicaciones de creadores de sRGB redondeado a  y  , lo que resulta en una pequeña discontinuidad en la curva. Algunos autores adoptaron estos valores a pesar de la discontinuidad. Para el estándar, el valor redondeado  se mantuvo y el  el valor se volvió a calcular para hacer que la curva resultante sea continua, como se describe anteriormente, lo que da como resultado una discontinuidad de pendiente desde 12.92 debajo de la intersección hasta 12.70 arriba.

Entorno de visualización

Parámetro Valor
Nivel de luminancia de la pantalla 80 cd / m 2
Punto blanco iluminante x = 0.3127, y = 0.3290 (D65)
Reflejo de imagen envolvente 20% (~ gris medio)
Codificación del nivel de iluminancia ambiental 64 lux
Codificando el punto blanco ambiental x = 0.3457, y = 0.3585 (D50)
Codificación de la llamarada de visualización 1.0%
Nivel típico de iluminancia ambiental 200 lux
Punto blanco ambiental típico x = 0.3457, y = 0.3585 (D50)
Llamarada de visión típica 5.0%

La especificación sRGB supone un entorno de codificación (creación) poco iluminado con una temperatura de color correlacionada ambiental (CCT) de 5000 K. Es interesante observar que esto difiere del CCT del iluminante (D65). Usar D50 para ambos habría hecho que el punto blanco de la mayoría del papel fotográfico parezca excesivamente azul. Los otros parámetros, como el nivel de luminancia, son representativos de un monitor CRT típico.

Para obtener resultados óptimos, el ICC recomienda usar el entorno de visualización de codificación (es decir, iluminación difusa y difusa) en lugar del entorno de visualización típico menos estricto.

Uso
Debido a la estandarización de sRGB en Internet, en computadoras y en impresoras, muchas cámaras digitales y escáneres de consumidores de bajo a medio usan sRGB como el espacio de color de trabajo predeterminado (o solo disponible). Como la gama sRGB cumple o supera la gama de una impresora de inyección de tinta de gama baja, una imagen sRGB a menudo se considera satisfactoria para uso doméstico. Sin embargo, los CCD de nivel de consumidor normalmente no están calibrados, lo que significa que, aunque la imagen se etiquete como sRGB, no se puede concluir que la imagen tenga un valor de color sRGB.

Si el espacio de color de una imagen es desconocido y se trata de un formato de imagen de 8 a 16 bits, asumir que está en el espacio de color sRGB es una opción segura. Esto permite que un programa identifique un espacio de color para todas las imágenes, lo que puede ser mucho más fácil y más confiable que intentar rastrear el espacio de color «desconocido». Se puede usar un perfil ICC; el ICC distribuye tres de esos perfiles: dos perfiles que se ajustan a la versión 4 de la especificación ICC, que recomiendan, y un perfil que se ajusta a la versión 2, que todavía se utiliza comúnmente.

Las imágenes destinadas a la impresión profesional a través de un flujo de trabajo completamente a color, por ejemplo, la salida de preimpresión, a veces utilizan otro espacio de color como Adobe RGB (1998), que se adapta a una gama más amplia. Esas imágenes utilizadas en Internet se pueden convertir a sRGB utilizando herramientas de administración del color que generalmente se incluyen con el software que funciona en estos otros espacios de color.

Las dos interfaces de programación dominantes para gráficos 3D, OpenGL y Direct3D, han incorporado soporte para la curva gamma sRGB. OpenGL admite texturas con componentes de color codificados gamma sRGB (primero presentado con extensión EXT_texture_sRGB, agregado al núcleo en OpenGL 2.1) y renderizado en framebuffers con codificación gamma sRGB (introducido por primera vez con la extensión EXT_framebuffer_sRGB, agregado al núcleo en OpenGL 3.0). Direct3D admite texturas de gamma sRGB y renderizado en superficies gamma sRGB comenzando con DirectX 9. El mipmapping e interpolación correctos de texturas gamma sRGB tiene soporte de hardware directo en unidades de texturizado de la mayoría de las GPU modernas (por ejemplo nVidia GeForce 8 realiza la conversión de textura de 8 bits a lineal valores antes de interpolar esos valores), y no tiene ninguna penalización de rendimiento.