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

Estimación de los elementos luminosos mediante análisis de componentes principales (PCA)

Sintaxis

illuminant = illumpca(A)
illuminant = illumpca(A,percentage)
illuminant = illumpca(___,Name,Value)

Descripción

ejemplo

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

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

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 análisis de componentes principales supone 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);

Calcule la iluminación de la escena del más oscuro y brighest 3,5% de pixeles (el porcentaje por defecto). Dado que la imagen de entrada es lineal, la función illumpca devuelve el elemento luminoso en el espacio de color lineal RGB,

illuminant = illumpca(A_lin)
illuminant = 1×3

    0.4075    0.5547    0.7254

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 Principal Component Analysis')

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

Porcentaje de píxeles que se retienen para la estimación de la bombilla, especificada como 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 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 = illumpca(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

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 asume una iluminación uniforme y valores RGB lineales. 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 illumpca. Además, asegúrese de convertir la imagen adaptada cromáticamente de nuevo a sRGB o Adobe RGB mediante la función lin2rgb .

Algoritmos

Los colores de píxel se representan como vectores en el espacio de color RGB. El algoritmo ordena los colores según el brillo, o la norma, de su proyección en el color medio de la imagen. El algoritmo conserva solamente los colores más oscuros y más brillantes, según este ordenar. El análisis de componentes principales (PCA) se realiza a continuación en el subconjunto de colores. El primer componente de la PCA indica la estimación de la bombilla.

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