Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Identificar los espectros de vegetación y no vegetación

Este ejemplo muestra cómo:

  • Utilizar datos espectrales 2D como un hipercubo para las funciones hiperespectrales.

  • Separar los espectros de vegetación y no vegetación utilizando la función ndvi.

Este ejemplo requiere la biblioteca Image Processing Toolbox™ Hyperspectral Imaging Library. Puede instalar Image Processing Toolbox Hyperspectral Imaging Library desde Add-On Explorer. Para obtener más información sobre la instalación de complementos, consulte Obtener y administrar complementos. Image Processing Toolbox Hyperspectral Imaging Library requiere la versión de escritorio de MATLAB®, ya que MATLAB® Online™ y MATLAB® Mobile™ no son compatibles con la biblioteca.

Cargar datos espectrales 2D

Cargue datos espectrales 2D que contengan 20 miembros terminales del conjunto de datos Indian Pines en el espacio de trabajo.

load("indian_pines_endmembers_20.mat")

Cargue los valores de longitud de onda para cada banda del conjunto de datos Indian Pines en el espacio de trabajo.

load("indian_pines_wavelength.mat")

Preparar los datos de prueba para su uso en funciones hiperespectrales

Cambie la forma de los datos datos espectrales 2D a datos de volumen 3D utilizando la función reshape.

[numSpectra,spectralDim] = size(endmembers);
dataCube = reshape(endmembers,[numSpectra 1 spectralDim]);

Cree un objeto hypercube 3D, con una dimensión única, especificando los datos de volumen 3D dataCube y la información de longitud de onda wavelength en la función hypercube.

hCube = hypercube(dataCube,wavelength);

Calcular el NDVI para separar los espectros de vegetación y no vegetación

Calcule el valor del NDVI para cada espectro en el objeto hypercube.

ndviVal = ndvi(hCube);

Los espectros de vegetación suelen tener valores de NDVI mayores que cero y los espectros de no vegetación suelen tener valores de NDVI menores que cero. Utilice umbrales para separar los espectros de vegetación y no vegetación.

index = ndviVal > 0;

Represente los miembros terminales de vegetación y no vegetación.

subplot(2,1,1)
plot(endmembers(index,:)')
title("Vegetation endmembers")
xlabel("Bands")
ylabel("Reflectance Values")
axis tight
subplot(2,1,2)
plot(endmembers(~index,:)')
title("Non-Vegetation endmembers")
xlabel("Bands")
ylabel("Reflectance Values")
axis tight

Figure contains 2 axes objects. Axes object 1 with title Vegetation endmembers, xlabel Bands, ylabel Reflectance Values contains 17 objects of type line. Axes object 2 with title Non-Vegetation endmembers, xlabel Bands, ylabel Reflectance Values contains 3 objects of type line.

Consulte también

| |

Temas relacionados