Endmembers Extraction Algorithms (EEA)¶
This module Supports following endmembers extraction algorithms:
- Automatic Target Generation Process (ATGP)
- Fast Iterative Pixel Purity Index (FIPPI)
- N-FINDR
- Pixel Purity Index (PPI)
See also
See the file test_eea.py
for an example.
Note
Regarding the normalize parameter, if you have data that are out of bound in your HSI cube, the use of normalize is not recommended. You must clean up the data before using this parameter.
Automatic Target Generation Process (ATGP)¶
Function¶
-
pysptools.eea.eea.
ATGP
(data, q)[source]¶ Automatic Target Generation Process endmembers induction algorithm
Parameters: - data – numpy array 2d matrix of HSI data ((m x n) x p)
- q – int Number of endmembers to be induced (positive integer > 0)
- Returns: tuple: numpy array, numpy array
- Set of induced endmembers (N x p).
- Induced endmembers indexes vector.
References
A. Plaza, C.-I. Chang, “Impact of Initialization on Design of Endmember Extraction Algorithms”, Geoscience and Remote Sensing, IEEE Transactions on, vol. 44, no. 11, pgs. 3397-3407, 2006.
Class¶
-
class
pysptools.eea.
ATGP
[source]¶ Automatic target generation process endmembers induction algorithm.
-
display
(axes=None, suffix=None)¶ Display the endmembers to a IPython Notebook.
Parameters: - axes –
dictionary [default None] * axes[‘wavelength’] : a wavelengths list (1D python list).
If None or not specified the list is automaticaly numbered starting at 1.- axes[‘x’] : the x axis label, ‘Wavelength’ if None or not specified. axes[‘x’] is copied verbatim.
- axes[‘y’] : the y axis label, ‘Brightness’ if None or not specified. axes[‘y’] is copied verbatim.
- suffix – string [default None] Suffix to add to the title.
- axes –
-
extract
(M, q, normalize=False, mask=None)¶ Extract the endmembers.
Parameters: - M – numpy array A HSI cube (m x n x p).
- q – int Number of endmembers to be induced (positive integer > 0).
- normalize – boolean [default False] Normalize M before unmixing.
- mask – numpy array [default None] A binary mask, if True the corresponding signal is part of the endmembers search.
- Returns: numpy array
- Set of induced endmembers (N x p).
References
A. Plaza y C.-I. Chang, “Impact of Initialization on Design of Endmember Extraction Algorithms”, Geoscience and Remote Sensing, IEEE Transactions on, vol. 44, no. 11, pgs. 3397-3407, 2006.
-
get_idx
()[source]¶ - Returns: numpy array
- Array of indices into the HSI cube corresponding to the induced endmembers
-
plot
(path, axes=None, suffix=None)¶ Plot the endmembers.
Parameters: - path – string The path where to put the plot.
- axes –
dictionary [default None] * axes[‘wavelength’] : a wavelengths list (1D python list).
If None or not specified the list is automaticaly numbered starting at 1.- axes[‘x’] : the x axis label, ‘Wavelength’ if None or not specified. axes[‘x’] is copied verbatim.
- axes[‘y’] : the y axis label, ‘Brightness’ if None or not specified. axes[‘y’] is copied verbatim.
- suffix – string [default None] Suffix to add to the file name.
-
Fast Iterative Pixel Purity Index (FIPPI)¶
Function¶
-
pysptools.eea.eea.
FIPPI
(M, q=None, far=None, maxit=None)[source]¶ Fast Iterative Pixel Purity Index (FIPPI) endmqbers induction algorithm.
Parameters: - M – numpy array 2d matrix of HSI data ((m x n) x p)
- q – int [default None] Number of endmembers to be induced, if None use HfcVd to determine the number of endmembers to induce.
- far – float [default None] False alarm rate(s), a parameter to HfcVd equal to 10**-5 by default.
- maxit – `int [default None] Maximum number of iterations. Default = 3*p.
- Returns: tuple: numpy array, numpy array
- Set of induced endmembers (N x p).
- Array of indices into the array data corresponding to the induced endmembers.
References
Chang, C.-I., “A fast iterative algorithm for implementation of pixel purity index”, Geoscience and Remote Sensing Letters, IEEE, vol. 3, no. 1, pags. 63-67, 2006.
Class¶
-
class
pysptools.eea.
FIPPI
[source]¶ Fast Iterative Pixel Purity Index (FIPPI) endmembers induction algorithm.
-
display
(axes=None, suffix=None)¶ Display the endmembers to a IPython Notebook.
Parameters: - axes –
dictionary [default None] * axes[‘wavelength’] : a wavelengths list (1D python list).
If None or not specified the list is automaticaly numbered starting at 1.- axes[‘x’] : the x axis label, ‘Wavelength’ if None or not specified. axes[‘x’] is copied verbatim.
- axes[‘y’] : the y axis label, ‘Brightness’ if None or not specified. axes[‘y’] is copied verbatim.
- suffix – string [default None] Suffix to add to the title.
- axes –
-
extract
(M, q=None, maxit=None, normalize=False, mask=None)¶ Extract the endmembers.
Parameters: - M – numpy array A HSI cube (m x n x p).
- q – int [default None] Number of endmembers to be induced, if None use HfcVd to determine the number of endmembers to induce.
- maxit – int [default None] Maximum number of iterations. Default = 3*q.
- normalize – boolean [default False] Normalize M before unmixing.
- mask – numpy array [default None] A binary mask, when True the corresponding signal is part of the endmembers search.
- Returns: numpy array
- Set of induced endmembers (N x p).
References
Chang, C.-I., “A fast iterative algorithm for implementation of pixel purity index”, Geoscience and Remote Sensing Letters, IEEE, vol. 3, no. 1, pags. 63-67, 2006.
-
get_idx
()[source]¶ - Returns: numpy array
- Array of indices into the HSI cube corresponding to the induced endmembers.
-
plot
(path, axes=None, suffix=None)¶ Plot the endmembers.
Parameters: - path – string The path where to put the plot.
- axes –
dictionary [default None] * axes[‘wavelength’] : a wavelengths list (1D python list).
If None or not specified the list is automaticaly numbered starting at 1.- axes[‘x’] : the x axis label, ‘Wavelength’ if None or not specified. axes[‘x’] is copied verbatim.
- axes[‘y’] : the y axis label, ‘Brightness’ if None or not specified. axes[‘y’] is copied verbatim.
- suffix – string [default None] Suffix to add to the file name.
-
N-FINDR¶
Class¶
-
class
pysptools.eea.
NFINDR
[source]¶ N-FINDR endmembers induction algorithm.
-
display
(axes=None, suffix=None)¶ Display the endmembers to a IPython Notebook.
Parameters: - axes –
dictionary [default None] * axes[‘wavelength’] : a wavelengths list (1D python list).
If None or not specified the list is automaticaly numbered starting at 1.- axes[‘x’] : the x axis label, ‘Wavelength’ if None or not specified. axes[‘x’] is copied verbatim.
- axes[‘y’] : the y axis label, ‘Brightness’ if None or not specified. axes[‘y’] is copied verbatim.
- suffix – string [default None] Suffix to add to the title.
- axes –
-
extract
(M, q, transform=None, maxit=None, normalize=False, ATGP_init=False, mask=None)¶ Extract the endmembers.
Parameters: - M – numpy array A HSI cube (m x n x p).
- q – int The number of endmembers to be induced.
- transform – numpy array [default None] The transformed ‘M’ cube by MNF (m x n x components). In this case the number of components must == q-1. If None, the built-in call to PCA is used to transform M in q-1 components.
- maxit – int [default None] The maximum number of iterations. Default is 3*p.
- normalize – boolean [default False] If True, M is normalized before doing the endmembers induction.
- ATGP_init – boolean [default False] Use ATGP to generate the first endmembers set instead of a random selection.
- mask – numpy array [default None] A binary mask, when True the corresponding signal is part of the endmembers search.
- Returns: numpy array
- Set of induced endmembers (N x p).
References
Winter, M. E., “N-FINDR: an algorithm for fast autonomous spectral end-member determination in hyperspectral data”, presented at the Imaging Spectrometry V, Denver, CO, USA, 1999, vol. 3753, pgs. 266-275.
Note
The division by (factorial(p-1)) is an invariant for this algorithm, for this reason it is skipped.
-
get_idx
()[source]¶ - Returns : numpy array
- Array of indices into the HSI cube corresponding to the induced endmembers
-
plot
(path, axes=None, suffix=None)¶ Plot the endmembers.
Parameters: - path – string The path where to put the plot.
- axes –
dictionary [default None] * axes[‘wavelength’] : a wavelengths list (1D python list).
If None or not specified the list is automaticaly numbered starting at 1.- axes[‘x’] : the x axis label, ‘Wavelength’ if None or not specified. axes[‘x’] is copied verbatim.
- axes[‘y’] : the y axis label, ‘Brightness’ if None or not specified. axes[‘y’] is copied verbatim.
- suffix – string [default None] Suffix to add to the file name.
-
Pixel Purity Index (PPI)¶
Function¶
-
pysptools.eea.eea.
PPI
(M, q, numSkewers, ini_skewers=None)[source]¶ Performs the pixel purity index algorithm for endmember finding.
Parameters: - M – numpy array 2d matrix of HSI data ((m x n) x p).
- q – int Number of endmembers to find.
- numSkewers – int Number of “skewer” vectors to project data onto.
- ini_skewers – numpy array [default None] You can generate skewers from another source.
- Returns: numpy array
- Recovered endmembers (N x p).
Class¶
-
class
pysptools.eea.
PPI
[source]¶ Performs the pixel purity index algorithm for endmembers finding.
-
display
(axes=None, suffix=None)¶ Display the endmembers to a IPython Notebook.
Parameters: - axes –
dictionary [default None] * axes[‘wavelength’] : a wavelengths list (1D python list).
If None or not specified the list is automaticaly numbered starting at 1.- axes[‘x’] : the x axis label, ‘Wavelength’ if None or not specified. axes[‘x’] is copied verbatim.
- axes[‘y’] : the y axis label, ‘Brightness’ if None or not specified. axes[‘y’] is copied verbatim.
- suffix – string [default None] Suffix to add to the title.
- axes –
-
extract
(M, q, numSkewers=10000, normalize=False, mask=None)¶ Extract the endmembers.
Parameters: - M – numpy array A HSI cube (m x n x p).
- q – int Number of endmembers to find.
- numSkewers – int [default 10000] Number of “skewer” vectors to project data onto. In general, recommendation from the literature is 10000 skewers.
- mask – numpy array [default None] A binary mask, when True the corresponding signal is part of the endmembers search.
- Returns: numpy array
- Recovered endmembers (N x p).
-
get_idx
()[source]¶ - Returns: numpy array
- Array of indices into the HSI cube corresponding to the induced endmembers
-
plot
(path, axes=None, suffix=None)¶ Plot the endmembers.
Parameters: - path – string The path where to put the plot.
- axes –
dictionary [default None] * axes[‘wavelength’] : a wavelengths list (1D python list).
If None or not specified the list is automaticaly numbered starting at 1.- axes[‘x’] : the x axis label, ‘Wavelength’ if None or not specified. axes[‘x’] is copied verbatim.
- axes[‘y’] : the y axis label, ‘Brightness’ if None or not specified. axes[‘y’] is copied verbatim.
- suffix – string [default None] Suffix to add to the file name.
-