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.

illumgray

Estimación de iluminante usando el algoritmo de mundo gris

Descripción

illuminant = illumgray(A) estima la iluminación de la escena en la imagen RGB suponiendo que el color medio de la escena es gris.A

ejemplo

illuminant = illumgray(A,percentile) estima la iluminación, excluyendo los percentiles inferior y superior especificados de los valores de píxel.

illuminant = illumgray(___,Name,Value) estima la iluminación mediante pares nombre-valor para controlar opciones adicionales.

Ejemplos

contraer todo

Abra una imagen y mostrarla. Especifique una ampliación opcional para reducir el tamaño de la imagen mostrada.

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

El algoritmo del mundo gris asume que los valores RGB son lineales. Sin embargo, el formato de archivo JPEG guarda las imágenes en el espacio de color sRGB con corrección gamma. Deshacer la corrección de gamma utilizando la función.rgb2lin

A_lin = rgb2lin(A);

Calcule la iluminación de la escena, excluyendo el 10% superior e inferior de los píxeles. Dado que la imagen de entrada se ha linealizado, devuelve la iluminante en el espacio de color RGB lineal.illumgray

percentiles = 10; illuminant = illumgray(A_lin,percentiles)
illuminant = 1×3

    0.2206    0.2985    0.5219

El tercer coeficiente de es el más grande, que es consistente con el tinte azul de la imagen.illuminant

Corrija los colores proporcionando la iluminante estimada a la función.chromadapt

B_lin = chromadapt(A_lin,illuminant,'ColorSpace','linear-rgb');

Para mostrar la imagen de equilibrio blanco correctamente en la pantalla, aplique la corrección de gamma utilizando la función.lin2rgb

B = lin2rgb(B_lin);

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

figure imshow(B,'InitialMagnification',25) title(['White-Balanced Image Using Gray World with percentiles=[' ...     num2str(percentiles) ' ' num2str(percentiles) ']'])

Argumentos de entrada

contraer todo

Entrada de imagen RGB, especificada como una matriz real, no dispersa,-por--por-3.mn

Tipos de datos: single | double | uint8 | uint16

Percentil de píxeles para excluir de la estimación del iluminante, especificado como un vector numérico de 2 elementos o escalar. La exclusión de píxeles ayuda a evitar que los píxeles sobreexpuestos y subexpuestos sesgar la estimación.

  • Si es un escalar, el mismo valor se usa tanto para el percentil inferior como para el percentil superior.percentile En este caso, debe estar en el intervalo [0, 50] para que la suma de los percentiles inferior y superior no exceda de 100.percentile

  • Si es un vector de 2 elementos, el primer elemento es el percentil inferior y el segundo elemento es el percentil superior.percentile Ambos percentiles deben estar en el rango [0, 100) y su suma no puede exceder 100.

La siguiente imagen indica el rango de píxeles que se incluyen en la estimación de iluminante. La selección es independiente para cada canal de color.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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: estima la iluminante de escena utilizando un subconjunto de píxeles en la imagen, seleccionado de acuerdo con una máscara binaria,.illuminant = illumgray(I,'Mask',m)Im

Máscara de imagen, especificada como el par separado por comas que consta de y una matriz numérica o lógica.'Mask'mn La máscara indica qué píxeles de la imagen de entrada se utilizarán al estimar la iluminante.A El cálculo excluye los píxeles que corresponden a un valor de máscara de 0.A De forma predeterminada, la máscara tiene todos los 1s, y todos los píxeles en se incluyen en la estimación.A

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Tipo de norma vectorial (p-Norm), especificada como el par separado por comas que consta de un escalar numérico positivo.'Norm' La norma p afecta al cálculo del valor medio RGB en la imagen de entrada.A La norma p se define como sum(abs(x)p) ^ (1/p).

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Argumentos de salida

contraer todo

Estimación de la iluminación de la escena, devuelta como un vector de fila numérico de 3 elementos. Los tres elementos corresponden a los valores rojo, verde y azul del iluminante.

Tipos de datos: double

Sugerencias

  • El algoritmo del mundo gris asume una iluminación uniforme y valores RGB lineales. Si está trabajando con imágenes no lineales sRGB o Adobe RGB, utilice la función para deshacer la corrección de gamma antes de usarla.rgb2linillumgray Además, asegúrese de convertir la imagen adaptada cromáticamente de nuevo a sRGB mediante la función.lin2rgb

  • Al especificar Mask, el percentil inferior y el percentil superior se aplican a la imagen enmascarada.

  • Puede ajustar el balance de color de la imagen para eliminar la iluminación de la escena utilizando la función.chromadapt

Referencias

[1] Ebner, Marc. "The Gray World Assumption." Color Constancy. Chichester, West Sussex: John Wiley & Sons, 2007.

Consulte también

| | | |

Introducido en R2017b