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 estiramiento de descorrelación a la imagen multicanal

Descripción

S = decorrstretch(A) aplica un estiramiento de decorrelación a una imagen RGB o multiespectral y devuelve el resultado en .AS La media y la varianza en cada banda de son las mismas que en .SA

El propósito principal del estiramiento de descorrelación es la mejora visual. El estiramiento de la descorrelación es una manera de mejorar las diferencias de color en una imagen.

ejemplo

S = decorrstretch(A,Name,Value) utiliza pares nombre-valor para controlar aspectos del estiramiento de descorrelación, como la media de destino y la desviación estándar de cada banda.

Ejemplos

contraer todo

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

Lea una imagen en el espacio de trabajo.

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

Aplique el estiramiento de la descorrelación utilizando .decorrstretch

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

Muestre 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 a mejorar, especificada como una imagen RGB o imagen multiespectral de tamaño -por- -por- .mnnBands Para una imagen RGB, n.o 3.nBands

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

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

Método de descorrelación, especificado como el par separado por comas que consta de y de los siguientes valores.'Mode'

  • — Utiliza la descomposición eigen de la matriz de correlación banda a banda.'correlation'

  • — Utiliza la descomposición eigen de la matriz de covarianza de banda a banda.'covariance'

Tipos de datos: char | string

Valores medios de destino de las bandas de salida, especificados como el par separado por comas que consta de un escalar o vector de longitud real.'TargetMean'nBands De forma predeterminada, es un vector de 1 por- que contiene la media de la muestra de cada banda, que conserva los medios de banda antes y después del estiramiento de la decorrelación.TargetMeannBands

debe ser de clase , pero utiliza los mismos valores que los píxeles de la imagen de entrada.TargetMeandouble Por ejemplo, si es clase , entonces sería un valor razonable.Auint8127.5 Si es necesario sujetar los valores al rango estándar de la clase de imagen de entrada/salida, puede afectar a los resultados.

Tipos de datos: double

Valores de desviación estándar de destino de las bandas de salida, especificados como el par separado por comas que consta de un escalar o vector de longitud positivo.'TargetSigma'nBands De forma predeterminada, es un vector de 1 por banda que contiene la desviación estándar de la muestra de cada banda, que conserva la varianza de banda antes y después del estiramiento de decorrelación.TargetSigmanBands La desviación estándar de destino se omite para las bandas uniformes (varianza cero).

debe ser class , pero utiliza los mismos valores que los píxeles de la imagen de entrada.TargetSigmadouble Por ejemplo, si es de clase , entonces sería un valor razonable.Auint850.0

Tipos de datos: double

El contraste lineal se extiende después de la extensión de decorrelación, especificado como el par separado por comas que consta de un vector numérico escalar o numérico de 2 elementos de la clase .'Tol'double Especificar un valor de invalida el valor de o .TolTargetMeanTargetSigma Si no especifica , entonces de forma predeterminada no realiza el estiramiento de contraste lineal.Toldecorrstretch

tiene el mismo significado que en , donde especifica la fracción de la imagen para saturar a intensidades bajas y altas.TolstretchlimTol = [LOW_FRACT HIGH_FRACT] Si especifica como valor escalar, entonces y , saturando fracciones iguales a intensidades bajas y altas.TolLOW_FRACT = TolHIGH_FRACT = 1 - Tol

Los pequeños ajustes pueden afectar fuertemente a la apariencia visual de la salida.Tol

Tipos de datos: double

Subconjunto de usado para calcular las medias de banda, la covarianza y la correlación, especificada como una matriz de celdas que contiene dos matrices de subíndices de píxeles. y son vectores o matrices de tamaño coincidente que contienen subíndices de fila y columna, respectivamente.A{rowsubs, colsubs}rowsubscolsubs

Utilice esta opción para reducir la cantidad de cálculo, para evitar que los píxeles no válidos o no representativos afecten a la transformación o a ambos. Por ejemplo, puede usar y excluir áreas de la cubierta de nubes.rowsubscolsubs Si no se especifica, utiliza todos los píxeles de .decorrstretchA

Tipos de datos: double

Argumentos de salida

contraer todo

Descorrelación imagen estirada, devuelta como una matriz numérica del mismo tamaño y clase que la imagen de entrada, .A

Sugerencias

  • Los resultados de una descorrelación recta (sin la opción de estiramiento de contraste) pueden incluir valores que están fuera del rango numérico admitido por la clase o (valores negativos, o valores superiores a o , respectivamente).uint8uint1625565535 En estos casos, sujeta su salida al rango soportado.decorrstretch

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

  • Los parámetros opcionales no interactúan, excepto que un estiramiento lineal normalmente altera tanto los medios de banda como las desviaciones estándar de banda. Por lo tanto, mientras que se puede especificar y junto con , sus efectos se modificarán.TargetMeanTargetSigmaTol

Algoritmos

Un estiramiento de descorrelación es una operación lineal en píxeles en la que los parámetros específicos dependen de los valores de las estadísticas de imagen reales y deseadas (destino). El vector que contiene el valor de un píxel dado en cada banda de la imagen de entrada se transforma en el píxel correspondiente en la imagen de salida de la siguiente manera:aAbB

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

y son vectores -by-1, es una matriz -by-, y son -por-1 vectores tales queabnBandsTnBandsnBandsmm_targetnBands

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

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

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

  • La covarianza de muestra de banda a banda de la imagen, o de un subconjunto de la imagen que especifique (el mismo subconjunto utilizado para ), representado por matrizmCov

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

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

, , y son -by- , como se definen a continuación las matrices , , y , .CovSIGMASIGMA_targetnBandsnBandsCorrLAMBDAV

El primer paso en la computación es realizar una descomposición eigen de la matriz de covarianza o la matriz de correlaciónTCov

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

  • En el método basado en correlación, se descompone: .CorrCorr = V LAMBDA V'

  • En el método basado en covarianzas, se descompone: .CovCov = V LAMBDA V'

es una matriz diagonal de valores propios y es la matriz ortogonal que transforma o a .LAMBDAVCorrCovLAMBDA

El siguiente paso es calcular un factor de estiramiento para cada banda, que es la raíz cuadrada inversa del valor propio. Es conveniente definir una matriz diagonal que contenga los factores de estiramiento, de tal manera que:S

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

Por último, la matriz se calcula a partir de cualquiera de losT

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

O

(método basado en covarianzas).T = SIGMA_target V S V'

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

Sustituir en la expresión por:Tb

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

O

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

y leyendo de derecha a izquierda, se puede ver que la descorrelación se extiende:

  1. Elimina una media de cada banda

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

  3. Gira las bandas en el espacio propio de oCorrCov

  4. Aplica un estiramiento en el espacio propio, dejando la imagen decorrelacionada y normalizada en el espacio propioS

  5. Gira de nuevo al espacio de banda original, donde las bandas permanecen decorrelacionadas y normalizadas

  6. Redimensiona cada banda de acuerdo conSIGMA_target

  7. Restaura una media en cada banda.

Consulte también

|

Introducido antes de R2006a