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.

illumpca

Estimar el iluminante utilizando el análisis de componentes principales (PCA)

Descripción

ejemplo

illuminant = illumpca(A) estima la iluminación de la escena en la imagen RGB a partir de grandes diferencias de color utilizando el análisis de componentes principales (PCA).A

illuminant = illumpca(A,percentage) estima la iluminación utilizando el porcentaje especificado de píxeles más oscuros y brillantes.

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

Ejemplos

contraer todo

Abra una imagen y muésela. 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 análisis de componentes principales supone que los valores RGB son lineales. Sin embargo, el formato de archivo JPEG guarda las imágenes en el espacio de color sRGB corregido por gamma. Deshacer la corrección gamma mediante la función.rgb2lin

A_lin = rgb2lin(A);

Estimar la iluminación de la escena desde el 3,5% más oscuro y brigaddez de píxeles (el porcentaje predeterminado). Dado que la imagen de entrada es lineal, la función devuelve el iluminante en el espacio de color RGB lineal,illumpca

illuminant = illumpca(A_lin)
illuminant = 1×3

    0.4075    0.5547    0.7254

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

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

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

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

B = lin2rgb(B_lin);

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

figure imshow(B,'InitialMagnification',25) title('White-Balanced Image using Principal Component Analysis')

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

Porcentaje de píxeles que se conservarán para la estimación iluminante, especificado como un escalar numérico en el rango (0, 50].

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

Máscara de imagen, especificada como el par separado por comas que consta de una matriz -por- lógica o numérica.'Mask'mn La máscara indica qué píxeles de la imagen de entrada se utilizarán al estimar el 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 de la estimación.A

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

Argumentos de salida

contraer todo

Estimación de la iluminación de 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 asume la iluminación uniforme y los valores RGB lineales. Si está trabajando con imágenes sRGB no lineales o Adobe RGB, utilice la función para deshacer la corrección gamma antes de utilizar .rgb2linillumpca Además, asegúrese de volver a convertir la imagen adaptada cromáticamente a sRGB o Adobe RGB mediante la función.lin2rgb

Algoritmos

Los colores de píxeles se representan como vectores en el espacio de color RGB. El algoritmo ordena los colores según el brillo, o norma, de su proyección en el color promedio de la imagen. El algoritmo conserva sólo los colores más oscuros y brillantes, de acuerdo con este orden. A continuación, el análisis de componentes principales (PCA) se realiza en el subconjunto de colores. El primer componente de PCA indica la estimación iluminante.

Referencias

[1] Cheng, Dongliang, Dilip K. Prasad, and Michael S. Brown. "Illuminant Estimation for Color Constancy: Why spatial-domain methods work and the role of the color distribution." Journal of the Optical Society of America A. Vol. 31, Number 5, 2014, pp. 1049–1058.

Consulte también

| | | |

Introducido en R2017b