Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

lin2rgb

Aplique la corrección gamma a los valores RGB lineales

Descripción

ejemplo

B = lin2rgb(A) aplica una corrección de gamma a los valores RGB lineales de la imagen para que esté en el espacio de color sRGB, que es adecuado para la visualización.UnB

ejemplo

B = lin2rgb(A,Name,Value) aplica la corrección de gamma utilizando pares nombre-valor para controlar opciones adicionales.

Ejemplos

contraer todo

Defina un rango de valores lineales. Este vector define 257 puntos igualmente espaciados entre 0 y 1.

lin = linspace(0,1,257);

Aplique la corrección de gamma a los valores lineales basados en el estándar sRGB. A continuación, aplique la corrección de gamma a los valores lineales basados en el estándar Adobe RGB (1998).

sRGB = lin2rgb(lin); adobeRGB = lin2rgb(lin,'ColorSpace','adobe-rgb-1998');

Trace las curvas con corrección gamma.

figure plot(lin,sRGB,'b',lin,adobeRGB,'r') title('Gamma-Corrected vs. Linear Values') legend('sRGB','Adobe RGB (1998)','Location','southeast')

Para una visualización alternativa, las barras de color de trazado representan cada espacio de color.

cb_lin = ones(30,257) .* lin; cb_sRGB = ones(30,257) .* sRGB; cb_adobeRGB = ones(30,257) .* adobeRGB;  figure subplot(3,1,1); imshow(cb_lin); title('Linear RGB') subplot(3,1,2); imshow(cb_sRGB); title('sRGB'); subplot(3,1,3); imshow(cb_adobeRGB); title('Adobe RGB (1998)');

Los espacios de color con corrección gamma se iluminan más rápidamente que el espacio de color lineal, como se esperaba.

Abra un archivo de imagen que contenga intensidades RGB lineales mínimamente procesadas.

A = imread('foosballraw.tiff');

Los datos de imagen son los datos del sensor sin procesar después de corregir el nivel de negro y escalar a 16 bits por píxel. Interpolar las intensidades para reconstruir el color mediante el uso de la función.demosaic El patrón de matriz de filtro de color es RGGB.

A_demosaiced = demosaic(A,'rggb');

Visualice la imagen. Para reducir la imagen de forma que aparezca completamente en la pantalla, establezca la ampliación inicial opcional en un valor inferior a 100.

figure imshow(A_demosaiced,'InitialMagnification',25) title('Sensor Data Without sRGB Gamma Correction')

La imagen aparece oscura porque está en el espacio de color RGB lineal. Aplique la corrección de gamma a la imagen según el estándar sRGB, almacenando los valores en doble precisión.

A_sRGB = lin2rgb(A_demosaiced,'OutputType','double');

Visualice la imagen corregida por gamma, estableciendo la ampliación opcional.

figure imshow(A_sRGB,'InitialMagnification',25) title('Sensor Data With sRGB Gamma Correction');

La imagen con corrección gamma se ve más brillante que la imagen lineal, como se esperaba.

Argumentos de entrada

contraer todo

Valores de color RGB lineales, especificados como una matriz numérica en uno de los siguientes formatos.

  • -por-3 mapa de colores.c Cada fila especifica un valor de color RGB.

  • -por-3 imagenmn

  • -por-3-por-pila de imágenesmnp

Tipos de datos: single | double | uint8 | uint16

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: aplica la corrección de gamma a una imagen, según el estándar Adobe RGB (1998).B = lin2rgb(I,'ColorSpace','adobe-rgb-1998')I

Espacio de color de la imagen de salida, especificado como el par separado por comas que consta de y o.'ColorSpace''srgb''adobe-rgb-1998'

Tipos de datos: char | string

Tipo de datos de los valores RGB de salida, especificados como el par separado por comas que consta de y,,, o.'OutputType''double''single''uint8''uint16' De forma predeterminada, el tipo de datos de salida es el mismo que el tipo de datos de.Un

Tipos de datos: char | string

Argumentos de salida

contraer todo

Imagen RGB corregida por gamma, devuelta como una matriz numérica del mismo tamaño que la entrada.Un

Algoritmos

contraer todo

Corrección de gamma mediante el estándar sRGB

La corrección de gamma para transformar los valores de triestímulo RGB lineales en valores de triestímulo sRGB se define mediante la siguiente curva paramétrica:

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

    f(u) = c ⋅ u,             0 ≤ u < d

    f(u) = a ⋅ uɣ + b,      u ≥ d,

donde representa un valor de color con estos parámetros:u

    = 1,055a

    = – 0,055b

    = 12,92c

    = 0,0031308d

    = 1/2.4ɣ

Corrección de gamma mediante el estándar Adobe RGB (1998)

La corrección de gamma para transformar los valores de triestímulo RGB lineales en valores triestímulos de Adobe RGB (1998) utiliza una función de potencia simple:

    v = uɣ,           u ≥ 0

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

Con

    = 1/2.19921875ɣ

Referencias

[1] Ebner, Marc. "Gamma Correction." Color Constancy. Chichester, West Sussex: John Wiley & Sons, 2007.

[2] Adobe Systems Incorporated. "Inverting the color component transfer function." Adobe RGB (1998) Color Image Encoding. Section 4.3.5.2, May 2005, p.12.

Consulte también

Introducido en R2017b