Main Content

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.

Mejorar la separación de color mediante el estiramiento de la descorrelación

El estiramiento de la descorrelación mejora la separación de color de una imagen con una correlación significativa banda a banda. Los colores exagerados mejoran la interpretación visual y facilitan la discriminación de características. Se aplica el estiramiento de la descorrelación con la función.decorrstretch Vea cómo agregar un estiramiento de contraste lineal opcional al estiramiento de decorrelación.Estiramiento de contraste lineal

El número de bandas de color, NBANDS, en la imagen suele ser de tres. Pero puede aplicar el estiramiento de la descorrelación independientemente del número de bandas de color.

Los valores de color originales de la imagen se asignan a un nuevo conjunto de valores de color con un rango más amplio. Las intensidades de color de cada píxel se transforman en el espacio de color de la matriz de correlación o correlación NBANDS-by-NBANDS, se estiran para igualar las varianzas de la banda, luego se transforman de nuevo en las bandas de color originales.

Para definir las estadísticas de banda, puede utilizar toda la imagen original o, con la opción, cualquier subconjunto seleccionado de la misma.subset

Estiramiento simple de descorrelación

En este ejemplo se muestra cómo realizar la descorrelación que se extiende a tres bandas de color de una imagen. Una gráfica de dispersión de banda de color de las imágenes muestra cómo se correlacionan e igualan las bandas.

Realizar estiramiento de descorrelación

Lea una imagen de la biblioteca de imágenes disponibles en la carpeta.imdata Este ejemplo utiliza una imagen LANDSAT del río Little Colorado. La imagen tiene siete bandas, pero sólo se lee en los tres colores visibles.

A = multibandread('littlecoriver.lan', [512, 512, 7], ...   'uint8=>uint8', 128, 'bil', 'ieee-le', ...   {'Band','Direct',[3 2 1]});

Realice el estiramiento de decorrelación.

B = decorrstretch(A);

Muestre la imagen original y la imagen procesada. Compare las dos imágenes. El original tiene un fuerte tinte violeta (rojo-azulado), mientras que la imagen transformada tiene un rango de colores algo expandido.

imshow(A) title('Little Colorado River Image')

imshow(B) title('Little Colorado River Image After Decorrelation Stretch')

Crear una gráfica de dispersión de banda de color

Primero separe los tres canales de color de la imagen original.

[rA,gA,bA] = imsplit(A);

Separe los tres canales de color de la imagen después del estiramiento de la descorrelación.

[rB,gB,bB] = imsplit(B);

Muestra la gráfica de dispersión de color de la imagen original. A continuación, muestre la gráfica de dispersión de color de la imagen después del estiramiento de la descorrelación.

figure plot3(rA(:),gA(:),bA(:),'.') grid on xlabel('Red (Band 3)') ylabel('Green (Band 2)') zlabel('Blue (Band 1)') title('Color Scatterplot Before Decorrelation Stretch')

figure plot3(rB(:),gB(:),bB(:),'.') grid on xlabel('Red (Band 3)') ylabel('Green (Band 2)') zlabel('Blue (Band 1)') title('Color Scatterplot After Decorrelation Stretch')

Estiramiento de contraste lineal

La adición de estiramiento de contraste lineal mejora la imagen resultante al ampliar aún más el rango de color. En el ejemplo siguiente se utiliza la opción para saturar fracciones iguales de la imagen a intensidades altas y bajas.Tol Sin la opción, no aplica ningún estiramiento de contraste lineal.Toldecorrstretch

Consulte la página de referencia de la función para obtener más información sobre el cálculo de los límites de saturación.stretchlim

Nota

Puede aplicar un estiramiento de contraste lineal como una operación independiente después de realizar un estiramiento de decorrelación, utilizando y .stretchlimimadjust Esta alternativa, sin embargo, a menudo da resultados inferiores para e imágenes, porque los valores de píxel deben sujetarse a [0 255] (o [0 65535]).uint8uint16 La opción en elude esta limitación.Toldecorrstretch

Estiramiento de descorrelación con estiramiento de contraste lineal

Lea los tres canales de color visibles de la imagen LANDSAT del río Little Colorado.

A = multibandread('littlecoriver.lan', [512, 512, 7], ...   'uint8=>uint8', 128, 'bil', 'ieee-le', ...   {'Band','Direct',[3 2 1]});

Aplique el estiramiento de la descorrelación, especificando el estiramiento de contraste lineal. Al establecer el valor en 0,01, el rango de color transformado dentro de cada banda se muestra a un intervalo normalizado entre 0,01 y 0,99, saturando el 2%.'Tol'

C = decorrstretch(A,'Tol',0.01); imshow(C) title(['Little Colorado River After Decorrelation Stretch and ',...   'Linear Contrast Stretch'])