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

Aplicar corrección gamma a valores RGB lineales

Descripción

ejemplo

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

ejemplo

B = lin2rgb(A,Name,Value) aplica la corrección 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 gamma a los valores lineales en función del estándar sRGB. A continuación, aplique la corrección gamma a los valores lineales en función del estándar Adobe RGB (1998).

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

Trazar las curvas corregidas por 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, trace las barras de color que 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 corregidos por gamma se vuelven más brillantes 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 la función.demosaic El patrón de matriz de filtro de color es RGGB.

A_demosaiced = demosaic(A,'rggb');

Muestre la imagen. Para reducir la imagen para 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 se encuentra en el espacio de color RGB lineal. Aplique la corrección gamma a la imagen de acuerdo con el estándar sRGB, almacenando los valores en doble precisión.

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

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

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

La imagen corregida por 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.

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

  • -by- -by-3 imagenmn

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

Tipos de datos: single | double | uint8 | uint16

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.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 gamma a una imagen, de acuerdo con 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, especificado 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 gamma utilizando el estándar sRGB

La corrección gamma para transformar valores de triesticulos RGB lineales en valores de triesticulo 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 gamma con Adobe RGB (1998) Estándar

La corrección gamma para transformar valores de triesticulo RGB lineales en valores de triesticulo 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