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 de gamma a valores RGB lineales

Sintaxis

B = lin2rgb(A)
B = lin2rgb(A,Name,Value)

Descripción

ejemplo

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

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);

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

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

Trazar las curvas gamma-corregidas.

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 iluminan más rápidamente que el espacio lineal de color, 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 RAW después de corregir el nivel de negro y escalar a 16 bits por píxel. Interpola 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');

Mostrar la imagen. Para reducir la imagen de modo que aparezca completamente en la pantalla, configure el aumento inicial opcional en un valor menor que 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. Aplicar 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 y ajuste el aumento opcional.

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

La imagen corregida por la gamma se ve más brillante que la imagen lineal, como se esperaba.

Argumentos de entrada

contraer todo

Imagen lineal RGB, especificada como una matriz real, no Sparse, m-por-n-por-3.

Tipos de datos: single | double | uint8 | uint16

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos Name,Value . Name es el nombre del argumento y Value es el valor correspondiente. Name debe aparecer dentro de comillas simples (' '). Puede especificar varios argumentos de par de nombre y valor en cualquier orden como Name1,Value1,...,NameN,ValueN.

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

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

Tipos de datos: char | string

Tipo de datos de los valores RGB de salida, especificados como pares separados por comas que consisten en 'OutputType' y 'double', 'single', 'uint8'o 'uint16'. De forma predeterminada, el tipo de datos de salida es el mismo que el tipo de datos de A.

Tipos de datos: char | string

Argumentos de salida

contraer todo

Imagen RGB corregida por gamma, devuelta como una matriz real, no Sparse, m-por-n-por-3.

Algoritmos

contraer todo

Corrección gamma mediante el estándar sRGB

La corrección gamma para transformar los valores de triestímulo RGB lineal 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 u representa un valor de color con estos parámetros:

    a = 1,055

    b = – 0,055

    c = 12,92

    d = 0,0031308

    ɣ = 1/2.4

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

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