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 Square
  • ISRA
    Image Space Reconstruction Algorithm
  • MDMDNMF
    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()