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.

decorrstretch

Aplicar la descorrelación de estiramiento a la imagen multicanal

Sintaxis

S = decorrstretch(A)
S = decorrstretch(A,name,value...)

Descripción

S = decorrstretch(A) aplica un estiramiento de descorrelación a una imagen de m-por-n-por-nBands A y devuelve el resultado en S. S tiene el mismo tamaño y clase que A, y la media y la varianza en cada banda son las mismas que en A. A puede ser una imagen RGB (nBands = 3) o puede tener cualquier número de bandas espectrales.

El propósito primario del estiramiento de la descorrelación es realce visual. El estiramiento de descorrelación es una forma de mejorar las diferencias de color en una imagen.

ejemplo

S = decorrstretch(A,name,value...) aplica un estiramiento de descorrelación a la imagen A, sujeto a parámetros de control opcionales.

Ejemplos

contraer todo

En este ejemplo se muestra cómo utilizar el estiramiento de descorrelación para resaltar elementos de una imagen forestal exagerando las diferencias de color.

Lee una imagen en el espacio de trabajo.

[X, map] = imread('forest.tif');

Aplicar el estiramiento de la descorrelación usando decorrstretch.

S = decorrstretch(ind2rgb(X,map),'tol',0.01);

Muestra la imagen original y la imagen mejorada.

figure imshow(X,map) title('Original Image')

figure imshow(S) title('Enhanced Image')

Argumentos de entrada

contraer todo

Imagen que se estirará, especificada como una matriz no Sparse, real, N-D. La imagen A es una imagen multicanal, por ejemplo, una imagen RGB (nBands = 3) o una imagen con cualquier número de bandas espectrales.

Tipos de datos: single | double | int16 | uint8 | uint16

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: 'Mode','covariance'

Método de descorrelación, especificado como 'correlation' o 'covariance'. 'correlation' utiliza la descomposición Eigen de la matriz de correlación banda-a-banda. 'covariance' utiliza la descomposición Eigen de la matriz de covarianza banda a banda.

Tipos de datos: char | string

Valores que la banda-medio de la imagen de salida debe coincidir, especificada como un real escalar o vector de clase double y de longitud nBands. Si es necesario afianzar los valores en el rango estándar de la clase de imagen de entrada/salida, puede impactar los resultados.

targetmean debe ser de la clase double, pero utiliza los mismos valores que los píxeles de la imagen de entrada. Por ejemplo, si A es la clase uint8, entonces 127.5 sería un valor razonable.

Tipos de datos: double

Valores que deben coincidir las desviaciones estándar de las bandas individuales de la imagen de salida, especificadas como escalares reales, positivos o vectores de clase double y de longitud nBands. Si es necesario afianzar los valores en el rango estándar de la clase de imagen de entrada/salida, puede impactar los resultados. No se ha hecho caso de bandas uniformes (varianza cero).

targetsigma debe ser de clase double, pero utiliza los mismos valores y los píxeles de la imagen de entrada. Por ejemplo, si A es de clase uint8, entonces y 50,0 sería un valor razonable.

Tipos de datos: double

El estiramiento linear del contraste que se aplicará después del estiramiento de la descorrelación, especificado como vector verdadero del uno-o dos-elemento de la clase double. Anula el uso de TargetMean o TargetSigma. TOL tiene el mismo significado que en stretchlim, donde TOL = [LOW_FRACT HIGH_FRACT] especifica la fracción de la imagen para saturar a intensidades bajas y altas. Si especifica TOL como valor escalar, entonces LOW_FRACT = TOL y HIGH_FRACT = 1 - TOL, saturando fracciones iguales a intensidades bajas y altas. Si no especifica un valor para TOL, decorrstretch omite el estiramiento de contraste lineal.

Los pequeños ajustes a TOL pueden afectar fuertemente el aspecto visual de la salida.

Tipos de datos: double

Subconjunto de A utilizado para calcular los medios de banda, la covarianza y la correlación, especificados como una matriz de celdas que contiene dos matrices de subíndices de píxeles {rowsubs, colsubs}. rowsubs y colsubs son vectores o matrices de tamaño coincidente que contienen subíndices de filas y columnas, respectivamente.

Utilice esta opción para reducir la cantidad de cálculos, para evitar que los píxeles inválidos o no representativos afecten a la transformación, o a ambos. Por ejemplo, puede utilizar rowsubs y colsubs para excluir áreas de cubierta de nubes. Si no se especifica, decorrstretch utiliza todos los píxeles de A.

Tipos de datos: double

Argumentos de salida

contraer todo

S tiene el mismo tamaño y clase que A. La media y varianza en cada banda en S son las mismas que en A.

Sugerencias

  • Los resultados de una descorrelación recta (sin la opción de estiramiento de contraste) pueden incluir valores que caen fuera del rango numérico soportado por la clase uint8 o uint16 (valores negativos, o valores que exceden 2^8 - 1 o 2^16 - 1, respectivamente) . En estos casos, decorrstretch sujeta su salida al rango soportado.

  • Para la clase double, decorrstretch sujeta la salida sólo cuando proporciona un valor para TOL, especificando un estiramiento de contraste lineal seguido de la sujeción al intervalo [0 1].

  • Los parámetros opcionales no interactúan, salvo que un estiramiento lineal suele alterar los medios de la banda y las desviaciones estándar de la banda. Así, aunque puede especificar targetmean y targetsigma junto con TOL, sus efectos se modificarán.

Algoritmos

Un estiramiento de la descorrelación es una operación linear, pixel-Wise en la cual los parámetros específicos dependen de los valores de las estadísticas reales y deseadas de la imagen (blanco). El vector a que contiene el valor de un píxel dado en cada banda de la imagen de entrada A se transforma en el píxel correspondiente b en Output Image B como sigue:

b = T * (a - m) + m_target.

a y b son vectores nBands-por-1, T es una matriz nBands-por-nBands , y m y m_target son vectores nBands-por-1 tales que

  • m contiene la media de cada banda en la imagen, o en un subconjunto de píxeles de imagen que especifique

  • m_target contiene la media de salida deseada en cada banda. La opción predeterminada es m_target = m.

La matriz de transformación lineal T depende de lo siguiente:

  • Covarianza de muestra de banda a banda de la imagen, o de un subconjunto de la imagen especificada (el mismo subconjunto que se utiliza para m), representado por Matrix Cov

  • Desviación estándar de salida deseada en cada banda. Esto se representa convenientemente por una matriz diagonal, SIGMA_target. La opción predeterminada es SIGMA_target = SIGMA, donde SIGMA es la matriz diagonal que contiene la desviación estándar de la muestra de cada banda. SIGMA se debe calcular a partir de los mismos píxeles que se utilizaron para m y Cov, lo que significa simplemente que:

    SIGMA(k,k) = sqrt(Cov(k,k), k = 1,..., nBands).

Cov, SIGMAy SIGMA_target son nBands-por-nBands, al igual que las matrices Corr, LAMBDAy V, definidas a continuación.

El primer paso en la informática T es realizar una Eigen-descomposición de la matriz de covarianza Cov o la matriz de correlación

Corr = inv(SIGMA) * Cov * inv(SIGMA).

  • En el método basado en correlación, Corr está descompuesto: Corr = V LAMBDA V'.

  • En el método basado en covarianza, Cov está descompuesto: Cov = V LAMBDA V'.

LAMBDA es una matriz diagonal de valores propios y V es la matriz ortogonal que transforma tanto Corr como Cov a LAMBDA.

El paso siguiente es calcular un factor del estiramiento para cada venda, que es la raíz cuadrada inversa del valor propio correspondiente. Es conveniente definir una matriz diagonal S que contenga los factores elásticos, de forma que:

S(k,k) = 1 / sqrt(LAMBDA(k,k)).

Finalmente, la matriz T se computa de cualquiera

T = SIGMA_target V S V' inv(SIGMA) (método basado en correlación)

o

T = SIGMA_target V S V' (método covarianza-basado).

Los dos métodos obtienen resultados idénticos si las varianzas de la banda son uniformes.

Sustituyendo a T en la expresión para b:

b = m_target + SIGMA_target V S V' inv(SIGMA) * (a - m)

o

b = m_target + SIGMA_target V S V' * (a - m)

y la lectura de derecha a izquierda, se puede ver que el estiramiento de la descorrelación:

  1. Elimina una media de cada banda

  2. Normaliza cada banda por su desviación estándar (sólo método basado en correlación)

  3. Gira las bandas en el propio de Corr o Cov

  4. Aplica un estiramiento S en el propio, dejando la imagen correlacionada y normalizada en el propio

  5. Gira hacia el espacio original de la banda, donde las bandas permanecen correlacionadas y normalizadas

  6. Reescala cada banda según SIGMA_target

  7. Restaura una media en cada banda.

Consulte también

|

Introducido antes de R2006a