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.

chromadapt

Ajustar el balance de color de la imagen RGB con adaptación cromática

Sintaxis

B = chromadapt(A,illuminant)
B = chromadapt(A,illuminant,Name,Value)

Descripción

ejemplo

B = chromadapt(A,illuminant) ajusta el balance de color de la imagen sRGB A según el elemento luminoso de la escena. El elemento luminoso debe estar en el mismo espacio de color que la imagen de entrada.

ejemplo

B = chromadapt(A,illuminant,Name,Value) ajusta el balance de color de A utilizando pares nombre-valor para controlar opciones adicionales.

Ejemplos

contraer todo

Lea una imagen con un molde de color amarillo fuerte. Visualice la imagen, especificando un aumento opcional para reducir el tamaño de la imagen mostrada.

A = imread('hallway.jpg'); figure imshow(A,'InitialMagnification',25) title('Original Image')

Seleccione un píxel en la imagen que debería verse blanco o gris, como un punto de un pilar. No escoja un pixel saturado, tal como un punto en la luz del techo.

x = 2800; y = 1000; gray_val = [A(y,x,1) A(y,x,2) A(y,x,3)];

Utilice el color seleccionado como referencia para la iluminación de la escena y corrija el balance de blancos de la imagen.

B = chromadapt(A,gray_val);

Visualice la imagen corregida, estableciendo un aumento inicial opcional.

figure imshow(B,'InitialMagnification',25) title('White-Balanced Image')

Los pilares son ahora blancos como se esperaba, y el resto de la imagen no tiene tinte amarillo.

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. El patrón de matriz de filtro de color es RGGB.

A = demosaic(A,'rggb');

Mostrar la imagen. Debido a que la imagen se encuentra en un espacio de color RGB lineal, aplique la corrección gamma para que la imagen aparezca correctamente en la pantalla. Para encoger la imagen de modo que aparezca completamente en la pantalla, fije el aumento inicial opcional a un valor menos que 100

A_sRGB = lin2rgb(A); figure imshow(A_sRGB,'InitialMagnification',25) title('Original Image')

La imagen tiene un gráfico ColorChecker en la escena. Para obtener el color de la luz ambiental, seleccione un píxel en uno de los parches neutros del gráfico.

x = 1510; y = 1250; light_color = [A(y,x,1) A(y,x,2) A(y,x,3)]
light_color = 1x3 uint16 row vector

    7361   14968   10258

La intensidad del canal rojo es inferior a la intensidad de los otros dos canales, lo que indica que la luz es de color verde azulado.

Equilibre los canales de color de la imagen. Utilice la opción 'ColorSpace' para especificar que la imagen y el elemento luminoso se expresan en RGB lineal.

B = chromadapt(A,light_color,'ColorSpace','linear-rgb');

Visualice la imagen corregida, aplicando la corrección gamma y ajustando el aumento inicial.

B_sRGB = lin2rgb(B); figure imshow(B_sRGB,'InitialMagnification',25) title('White-Balanced Image')

Confirme que el parche gris ha sido balanceado en color.

patch_color = [B(y,x,1) B(y,x,2) B(y,x,3)]
patch_color = 1x3 uint16 row vector

   13010   13010   13010

Los tres canales de color en el parche gris de color equilibrado tienen intensidades similares, como se esperaba.

Argumentos de entrada

contraer todo

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

Tipos de datos: single | double | uint8 | uint16

Iluminador de escena, especificado como un vector real, no vacío, de 3 elementos. El elemento luminoso debe estar en el mismo espacio de color que la imagen de entrada, A.

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: I2 = chromadapt(I,uint8([22 97 118]),'ColorSpace','linear-rgb') ajusta el balance de color de una imagen, I, en el espacio de color RGB lineal.

Espacio de color de la imagen de entrada y el iluminante, especificado como el par separado por comas consistente en 'ColorSpace' y 'srgb', 'adobe-rgb-1998'o 'linear-rgb'. Utilice la opción 'linear-rgb' para ajustar el balance de color de una imagen RGB cuyas intensidades son lineales.

Tipos de datos: char | string

Método de adaptación cromática utilizado para escalar los valores RGB en A, especificado como el par separado por comas consistente en 'Method' y uno de:

  • 'bradford'— escala usando el modelo de respuesta del cono de Bradford

  • 'vonkries'— escala utilizando el modelo de respuesta de cono von Kries

  • 'simple'— escala usando el iluminador

Tipos de datos: char | string

Argumentos de salida

contraer todo

Imagen RGB balanceada en color, devuelta como un array m-por-n-por-3. B tiene el mismo tipo de datos que A.

Referencias

[1] Lindbloom, Bruce. Chromatic Adaptation. http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html.

Introducido en R2017b