EndmemberNumberEstimation¶
Estimate the number of endmembers in a hyperspectral image
Description¶
Estimate the number of endmembers in a hyperspectral image. First, compute statistics on the image and then apply an endmember number estimation algorithm using these statistics. Two algorithms are available:
- Virtual Dimensionality (HFC-VD) [1][2]
- Eigenvalue Likelihood Maximization (ELM) [3][4]
The application then returns the estimated number of endmembers.
[1] C.-I. Chang and Q. Du, Estimation of number of spectrally distinct signal sources in hyperspectral imagery, IEEE Transactions on Geoscience and Remote Sensing, vol. 43, no. 3, mar 2004.
[2] J. Wang and C.-I. Chang, Applications of independent component analysis in endmember extraction and abundance quantification for hyperspectral imagery, IEEE Transactions on Geoscience and Remote Sensing, vol. 44, no. 9, pp. 2601-1616, sep 2006.
[3] Unsupervised Endmember Extraction of Martian Hyperspectral Images, B.Luo, J. Chanussot, S. Dout’e and X. Ceamanos, IEEE Whispers 2009, Grenoble France, 2009
[4] Unsupervised classification of hyperspectral images by using linear unmixing algorithm Luo, B. and Chanussot, J., IEEE Int. Conf. On ImageProcessing(ICIP) 2009, Cairo, Egypte, 2009
Parameters¶
Input Image Filename -in image
Mandatory
The hyperspectral data cube input
Number of endmembers -number int
Mandatory
The output estimated number of endmembers
Unmixing algorithm -algo [elm|vd]
Default value: elm
The algorithm to use for the estimation
- Eigenvalue Likelihood Maximization
Eigenvalue Likelihood Maximization algorithm - Virtual Dimensionality
HFC Virtual Dimensionality algorithm
Virtual Dimensionality options¶
False alarm rate -algo.vd.far float
Default value: 0.001
False alarm rate for the virtual dimensionality algorithm
Available RAM (MB) -ram int
Default value: 256
Available memory for processing (in MB).
Examples¶
From the command-line:
otbcli_EndmemberNumberEstimation -in cupriteSubHsi.tif -algo vd -algo.vd.far 1.0E-3
From Python:
import otbApplication
app = otbApplication.Registry.CreateApplication("EndmemberNumberEstimation")
app.SetParameterString("in", "cupriteSubHsi.tif")
app.SetParameterString("algo","vd")
app.SetParameterFloat("algo.vd.far", 1.0E-3)
app.ExecuteAndWriteOutput()