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 bombillas con algoritmo de Gray World

Sintaxis

illuminant = illumgray(A)
illuminant = illumgray(A,percentile)
illuminant = illumgray(___,Name,Value)

Descripción

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

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 utilizando pares nombre-valor para controlar opciones adicionales.

Ejemplos

contraer todo

Abrir una imagen y mostrarla. Especifique un aumento 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 imágenes en el espacio de color sRGB corregido por gamma. Deshacer la corrección de gamma mediante la función rgb2lin .

A_lin = rgb2lin(A);

Estime la iluminación de la escena, excluyendo la parte superior e inferior del 10% de los píxeles. Dado que la imagen de entrada se ha alineado, illumgray devuelve el elemento luminoso en el espacio de color lineal RGB.

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

    0.2206    0.2985    0.5219

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

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

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

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

B = lin2rgb(B_lin);

Visualice la imagen corregida y ajuste el aumento opcional.

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

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

Percentil de los píxeles que se excluyen de la estimación de la bombilla, especificada como un vector numérico de escalar o de 2 elementos. La exclusión de píxeles ayuda a evitar que los píxeles sobreexpuestos y subexpuestos desvíen la estimación.

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

  • Si percentile es un vector de 2 elementos, el primer elemento es el percentil inferior y el segundo elemento es el percentil superior. 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 la bombilla. La selección es separada 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 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: illuminant = illumgray(I,'Mask',m) estima el iluminador de escena utilizando un subconjunto de píxeles en la imagen I, seleccionado según una máscara binaria, m.

Máscara de imagen, especificada como el par separado por comas consistente en 'Mask' y un array lógico o numérico m-por-n . La máscara indica qué píxeles de la imagen de entrada A utilizar cuando se estima el elemento luminoso. El cálculo excluye los píxeles de A que corresponden a un valor de máscara de 0. De forma predeterminada, la máscara tiene todos los 1s y todos los píxeles de A se incluyen en la estimación.

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 consistente en 'Norm' y un escalar numérico positivo. La p-Norm afecta el cálculo del valor RGB promedio en la imagen de entrada A. La p-Norm 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érica de 3 elementos. Los tres elementos corresponden a los valores rojo, verde y azul de la bombilla.

Tipos de datos: double

Sugerencias

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

  • Cuando especifique 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