HyperspectralUnmixing¶
Estimate abundance maps from an hyperspectral image and a set of endmembers.
Description¶
The application applies a linear unmixing algorithm to an hyperspectral data cube. This method supposes that the mixture between aterials in the scene is macroscopic and simulates a linear mixing model of spectra.
The Linear Mixing Model (LMM) acknowledges that reflectance spectrum associated with each pixel is a linear combination of pure materials in the recovery area, commonly known as endmembers. Endmembers can be estimated using the VertexComponentAnalysis application.
The application allows estimating the abundance maps with several algorithms:
Unconstrained Least Square (ucls)
Image Space Reconstruction Algorithm (isra)
Least Square (ncls)
Minimum Dispersion Constrained Non Negative Matrix Factorization (MDMDNMF).
Parameters¶
Input Image Filename -in image
Mandatory
The hyperspectral data cube input
Output Image -out image [dtype]
Mandatory
The output abundance map. The abundance fraction are stored in a multispectral image where band N corresponds to the fraction of endmembers N in each pixel.
Input endmembers -ie image
Mandatory
The endmembers (estimated pure pixels) to use for unmixing. Must be stored as a multispectral image, where each pixel is interpreted as an endmember.
Unmixing algorithm -ua [ucls|isra|mdmdnmf]
Default value: ucls
The algorithm to use for unmixing
UCLS
Unconstrained Least SquareISRA
Image Space Reconstruction AlgorithmMDMDNMF
Minimum Dispersion Constrained Non Negative Matrix Factorization
Examples¶
From the command-line:
otbcli_HyperspectralUnmixing -in cupriteSubHsi.tif -ie cupriteEndmembers.tif -out HyperspectralUnmixing.tif double -ua ucls
From Python:
import otbApplication
app = otbApplication.Registry.CreateApplication("HyperspectralUnmixing")
app.SetParameterString("in", "cupriteSubHsi.tif")
app.SetParameterString("ie", "cupriteEndmembers.tif")
app.SetParameterString("out", "HyperspectralUnmixing.tif")
app.SetParameterOutputImagePixelType("out", 7)
app.SetParameterString("ua","ucls")
app.ExecuteAndWriteOutput()