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
Consulte también
hypercube
| spectralMatch
| ndvi