Main Content

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

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

Descripción

ejemplo

B = chromadapt(A,illuminant) ajusta el balance de color de la imagen sRGB de acuerdo con el iluminador de escena.A El iluminante 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 del uso de pares nombre-valor para controlar opciones adicionales.A

Ejemplos

contraer todo

Lea una imagen con un fuerte fundido de color amarillo. Muestre la imagen especificando una ampliación opcional para reducir el tamaño de la imagen mostrada.

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

Elija un píxel en la imagen que deba verse blanco o gris, como un punto de un pilar. No elija un píxel saturado, 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 una ampliación inicial opcional.

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

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

A = demosaic(A,'rggb');

Muestre la imagen. Dado que la imagen está en un espacio de color RGB lineal, aplique la corrección gamma para que la imagen aparezca correctamente en la pantalla. Para reducir la imagen para que aparezca completamente en la pantalla, establezca el aumento inicial opcional en un valor inferior a 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, elija 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 menor que 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 para especificar que la imagen y el iluminante se expresan en RGB lineal.'ColorSpace'

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

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

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

Confirme que el parche gris se ha equilibrado en el 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 del parche gris con equilibrio de color tienen intensidades similares, como se esperaba.

Argumentos de entrada

contraer todo

Imagen RGB de entrada, especificada como una matriz real, no dispersa, -by- -by-3.mn

Tipos de datos: single | double | uint8 | uint16

Iluminador de escena, especificado como un vector real, no vacío, de 3 elementos. El iluminante 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. 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: ajusta el balance de color de una imagen, en el espacio de color RGB lineal.I2 = chromadapt(I,uint8([22 97 118]),'ColorSpace','linear-rgb')I

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

Tipos de datos: char | string

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

  • —Escala utilizando el modelo de respuesta de cono Bradford'bradford'

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

  • —Escala usando el iluminante'simple'

Tipos de datos: char | string

Argumentos de salida

contraer todo

Imagen RGB con balance de color, devuelta como una matriz -by- -by-3. tiene el mismo tipo de datos que .mnBA

Referencias

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

Introducido en R2017b