Classification

This module supports following supervised algorithms:

For each of these classifiers, three different plotting methods are availables. For NormXCorr, SAM and SID, the fusions of classification maps use a best score win approach.

See also

See the file test_cls.py for an example and for SVC see test_SVC.py.

Apart from these supervised algorithms, following unsupervised algorithm is also supported:

See also

See the file test_kmeans.py for an example.

Abundance Classification

class pysptools.classification.AbundanceClassification[source]

Classify abundance maps.

classify(M, threshold=0.1)

Use a group of abundance maps generated by UCLS, NNLS or FCLS, to construct a classification map.

Parameters:
  • amapsnumpy array A HSI cube (m x n x p).
  • threshold

    float [default 0.1] or list * If float, threshold is applied on all the spectra. * If a list, individual threshold is applied on each

    spectrum, in this case the list must have the same number of threshold values than the number of spectra.
    • Threshold have values between 0.0 and 1.0.
Returns: numpy array
A class map (m x n x 1).
display(labels=None, mask=None, interpolation='none', colorMap='Accent', suffix=None)

Display the class map to a IPython Notebook.

Parameters:
  • labelslist of string [default None] The legend labels. Can be used only if the input spectral library E have more than 1 pixel.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • suffixstring [default None] Add a suffix to the title.
plot(path, labels=None, mask=None, interpolation='none', colorMap='Accent', suffix=None)

Plot the class map.

Parameters:
  • pathstring The path where to put the plot.
  • labelslist of string [default None] The legend labels. Can be used only if the input spectral library E have more than 1 pixel.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • suffixstring [default None] Add a suffix to the file name.

Normalized Cross Correlation (NormXCorr)

class pysptools.classification.NormXCorr[source]

Classify a HSI cube using the normalized cross correlation algorithm and a spectral library.

classify(M, E, threshold=0.1, mask=None)

Classify the HSI cube M with the spectral library E.

Parameters:
  • Mnumpy array A HSI cube (m x n x p).
  • Enumpy array A spectral library (N x p).
  • threshold

    float [default 0.1] or list * If float, threshold is applied on all the spectra. * If a list, individual threshold is applied on each

    spectrum, in this case the list must have the same number of threshold values than the number of spectra.
    • Threshold have values between 0.0 and 1.0.
  • masknumpy array [default None] A binary mask, when True the selected pixel is classified.
Returns: numpy array
A class map (m x n x 1).
display(labels=None, mask=None, interpolation='none', colorMap='Accent', suffix=None)

Display the class map to a IPython Notebook.

Parameters:
  • labelslist of string [default None] The legend labels. Can be used only if the input spectral library E have more than 1 pixel.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • suffixstring [default None] Add a suffix to the title.
display_single_map(lib_idx, constrained=True, stretch=False, colorMap='spectral', suffix=None)

Display individual classified map to a IPython Notebook. One for each spectrum. Note that each individual map is constrained by the others. This function is usefull to see the individual map that compose the final class map returned by the classify method. It help to define the spectra library. See the constrained parameter below.

Parameters:
  • lib_idxint or string * A number between 1 and the number of spectra in the library. * ‘all’, plot all the individual maps.
  • constrained

    boolean [default True] * If constrained is True, print the individual maps as they compose the

    final class map. Any potential intersection is removed in favor of the lower value level for SAM and SID, or the nearest to 1 for NormXCorr. Use this one to understand the final class map.
    • If constrained is False, print the individual maps without intersection removed, as they are generated. Use this one to have the real match.
  • stretchboolean [default False] Stretch the map between 0 and 1 giving a good distribution of the color map.
  • colorMapstring [default ‘spectral’] A matplotlib color map.
  • suffixstring [default None] Add a suffix to the title.
get_NormXCorr_map()
Returns: numpy array
The NormXCorr array (m x n x spectra number).
get_single_map(lib_idx, constrained=True)

Get individual classified map. See plot_single_map for a description.

Parameters:
  • lib_idxint or string A number between 1 and the number of spectra in the library.
  • constrainedboolean [default True] See plot_single_map for a description.
Returns: numpy array
The individual map (m x n x 1) associated to the lib_idx endmember.
plot(path, labels=None, mask=None, interpolation='none', colorMap='Accent', suffix=None)

Plot the class map.

Parameters:
  • pathstring The path where to put the plot.
  • labelslist of string [default None] The legend labels. Can be used only if the input spectral library E have more than 1 pixel.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • suffixstring [default None] Add a suffix to the file name.
plot_histo(path, suffix=None)

Plot the histogram.

Parameters:
  • pathstring The path where to put the plot.
  • suffixstring [default None] Add a suffix to the file name.
plot_single_map(path, lib_idx, constrained=True, stretch=False, colorMap='spectral', suffix=None)

Plot individual classified map. One for each spectrum. Note that each individual map is constrained by the others. This function is usefull to see the individual map that compose the final class map returned by the classify method. It help to define the spectra library. See the constrained parameter below.

Parameters:
  • pathstring The path where to put the plot.
  • lib_idxint or string * A number between 1 and the number of spectra in the library. * ‘all’, plot all the individual maps.
  • constrained

    boolean [default True] * If constrained is True, print the individual maps as they compose the

    final class map. Any potential intersection is removed in favor of the lower value level for SAM and SID, or the nearest to 1 for NormXCorr. Use this one to understand the final class map.
    • If constrained is False, print the individual maps without intersection removed, as they are generated. Use this one to have the real match.
  • stretchboolean [default False] Stretch the map between 0 and 1 giving a good distribution of the color map.
  • colorMapstring [default ‘spectral’] A matplotlib color map.
  • suffixstring [default None] Add a suffix to the file name.

Spectral Angle Mapper (SAM)

class pysptools.classification.SAM[source]

Classify a HSI cube using the spectral angle mapper algorithm and a spectral library.

classify(M, E, threshold=0.1, mask=None)

Classify the HSI cube M with the spectral library E.

Parameters:
  • Mnumpy array A HSI cube (m x n x p).
  • Enumpy array A spectral library (N x p).
  • threshold

    float [default 0.1] or list * If float, threshold is applied on all the spectra. * If a list, individual threshold is applied on each

    spectrum, in this case the list must have the same number of threshold values than the number of spectra.
    • Threshold have values between 0.0 and 1.0.
  • masknumpy array [default None] A binary mask, when True the selected pixel is classified.
Returns: numpy array
A class map (m x n x 1).
display(labels=None, mask=None, interpolation='none', colorMap='Accent', suffix=None)

Display the class map to a IPython Notebook.

Parameters:
  • labelslist of string [default None] The legend labels. Can be used only if the input spectral library E have more than 1 pixel.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • suffixstring [default None] Add a suffix to the title.
display_single_map(lib_idx, constrained=True, stretch=False, colorMap='spectral', suffix=None)

Display individual classified map to a IPython Notebook. One for each spectrum. Note that each individual map is constrained by the others. This function is usefull to see the individual map that compose the final class map returned by the classify method. It help to define the spectra library. See the constrained parameter below.

Parameters:
  • lib_idxint or string * A number between 1 and the number of spectra in the library. * ‘all’, plot all the individual maps.
  • constrained

    boolean [default True] * If constrained is True, print the individual maps as they compose the

    final class map. Any potential intersection is removed in favor of the lower value level for SAM and SID, or the nearest to 1 for NormXCorr. Use this one to understand the final class map.
    • If constrained is False, print the individual maps without intersection removed, as they are generated. Use this one to have the real match.
  • stretchboolean [default False] Stretch the map between 0 and 1 giving a good distribution of the color map.
  • colorMapstring [default ‘spectral’] A matplotlib color map.
  • suffixstring [default None] Add a suffix to the title.
get_angles_map()
Returns: numpy array
The angles array (m x n x spectra number).
get_angles_stats()
Returns: dic
Angles stats.
get_single_map(lib_idx, constrained=True)

Get individual classified map. See plot_single_map for a description.

Parameters:
  • lib_idxint or string A number between 1 and the number of spectra in the library.
  • constrainedboolean [default True] See plot_single_map for a description.
Returns: numpy array
The individual map (m x n x 1) associated to the lib_idx endmember.
plot(path, labels=None, mask=None, interpolation='none', colorMap='Accent', suffix=None)

Plot the class map.

Parameters:
  • pathstring The path where to put the plot.
  • labelslist of string [default None] The legend labels. Can be used only if the input spectral library E have more than 1 pixel.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • suffixstring [default None] Add a suffix to the file name.
plot_histo(path, suffix=None)

Plot the histogram.

Parameters:
  • pathstring The path where to put the plot.
  • suffixstring [default None] Add a suffix to the file name.
plot_single_map(path, lib_idx, constrained=True, stretch=False, colorMap='spectral', suffix=None)

Plot individual classified map. One for each spectrum. Note that each individual map is constrained by the others. This function is usefull to see the individual map that compose the final class map returned by the classify method. It help to define the spectra library. See the constrained parameter below.

Parameters:
  • pathstring The path where to put the plot.
  • lib_idxint or string * A number between 1 and the number of spectra in the library. * ‘all’, plot all the individual maps.
  • constrained

    boolean [default True] * If constrained is True, print the individual maps as they compose the

    final class map. Any potential intersection is removed in favor of the lower value level for SAM and SID, or the nearest to 1 for NormXCorr. Use this one to understand the final class map.
    • If constrained is False, print the individual maps without intersection removed, as they are generated. Use this one to have the real match.
  • stretchboolean [default False] Stretch the map between 0 and 1 giving a good distribution of the color map.
  • colorMapstring [default ‘spectral’] A matplotlib color map.
  • suffixstring [default None] Add a suffix to the file name.

Spectral Information Divergence (SID)

class pysptools.classification.SID[source]

Classify a HSI cube using the spectral information divergence algorithm and a spectral library.

classify(M, E, threshold=0.1, mask=None)

Classify the HSI cube M with the spectral library E.

Parameters:
  • Mnumpy array A HSI cube (m x n x p).
  • Enumpy array A spectral library (N x p).
  • threshold

    float [default 0.1] or list * If float, threshold is applied on all the spectra. * If a list, individual threshold is applied on each

    spectrum, in this case the list must have the same number of threshold values than the number of spectra.
    • Threshold have values between 0.0 and 1.0.
  • masknumpy array [default None] A binary mask, when True the selected pixel is classified.
Returns: numpy array
A class map (m x n x 1).
display(labels=None, mask=None, interpolation='none', colorMap='Accent', suffix=None)

Display the class map to a IPython Notebook.

Parameters:
  • labelslist of string [default None] The legend labels. Can be used only if the input spectral library E have more than 1 pixel.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • suffixstring [default None] Add a suffix to the title.
display_single_map(lib_idx, constrained=True, stretch=False, colorMap='spectral', suffix=None)

Display individual classified map to a IPython Notebook. One for each spectrum. Note that each individual map is constrained by the others. This function is usefull to see the individual map that compose the final class map returned by the classify method. It help to define the spectra library. See the constrained parameter below.

Parameters:
  • lib_idxint or string * A number between 1 and the number of spectra in the library. * ‘all’, plot all the individual maps.
  • constrained

    boolean [default True] * If constrained is True, print the individual maps as they compose the

    final class map. Any potential intersection is removed in favor of the lower value level for SAM and SID, or the nearest to 1 for NormXCorr. Use this one to understand the final class map.
    • If constrained is False, print the individual maps without intersection removed, as they are generated. Use this one to have the real match.
  • stretchboolean [default False] Stretch the map between 0 and 1 giving a good distribution of the color map.
  • colorMapstring [default ‘spectral’] A matplotlib color map.
  • suffixstring [default None] Add a suffix to the title.
get_SID_map()
Returns: numpy array
The SID array (m x n x spectra number).
get_single_map(lib_idx, constrained=True)

Get individual classified map. See plot_single_map for a description.

Parameters:
  • lib_idxint or string A number between 1 and the number of spectra in the library.
  • constrainedboolean [default True] See plot_single_map for a description.
Returns: numpy array
The individual map (m x n x 1) associated to the lib_idx endmember.
plot(path, labels=None, mask=None, interpolation='none', colorMap='Accent', suffix=None)

Plot the class map.

Parameters:
  • pathstring The path where to put the plot.
  • labelslist of string [default None] The legend labels. Can be used only if the input spectral library E have more than 1 pixel.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • suffixstring [default None] Add a suffix to the file name.
plot_histo(path, suffix=None)

Plot the histogram.

Parameters:
  • pathstring The path where to put the plot.
  • suffixstring [default None] Add a suffix to the file name.
plot_single_map(path, lib_idx, constrained=True, stretch=False, colorMap='spectral', suffix=None)

Plot individual classified map. One for each spectrum. Note that each individual map is constrained by the others. This function is usefull to see the individual map that compose the final class map returned by the classify method. It help to define the spectra library. See the constrained parameter below.

Parameters:
  • pathstring The path where to put the plot.
  • lib_idxint or string * A number between 1 and the number of spectra in the library. * ‘all’, plot all the individual maps.
  • constrained

    boolean [default True] * If constrained is True, print the individual maps as they compose the

    final class map. Any potential intersection is removed in favor of the lower value level for SAM and SID, or the nearest to 1 for NormXCorr. Use this one to understand the final class map.
    • If constrained is False, print the individual maps without intersection removed, as they are generated. Use this one to have the real match.
  • stretchboolean [default False] Stretch the map between 0 and 1 giving a good distribution of the color map.
  • colorMapstring [default ‘spectral’] A matplotlib color map.
  • suffixstring [default None] Add a suffix to the file name.

Output

class pysptools.classification.Output(label)[source]

Add plot and display functionality to the classifiers classes.

display(img, n_classes, labels=None, mask=None, interpolation='none', colorMap='jet', firstBlack=False, suffix='')[source]

Display a classification map using matplotlib.

Parameters:
  • imgnumpy array A classified map, (m x n x 1), the classes start at 0.
  • n_classesint The number of classes found in img.
  • labelslist of string [default None] The legend labels.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • firstBlackbool [default False] Display the first legend element in black if True. If it is the case, the corresponding classification class value is zero and it can be use when the meaning is nothing to classify (example: a background).
  • suffixstring [default None] Add a suffix to the file name.
plot(img, n_classes, path=None, labels=None, mask=None, interpolation='none', colorMap='jet', firstBlack=False, suffix='')[source]

Plot a classification map using matplotlib.

Parameters:
  • imgnumpy array A classified map, (m x n x 1), the classes start at 0.
  • n_classesint The number of classes found in img.
  • pathstring The path where to put the plot.
  • labelslist of string [default None] The legend labels.
  • masknumpy array [default None] A binary mask, when True the corresponding pixel is displayed.
  • interpolationstring [default none] A matplotlib interpolation method.
  • colorMapstring [default ‘Accent’] A color map element of [‘Accent’, ‘Dark2’, ‘Paired’, ‘Pastel1’, ‘Pastel2’, ‘Set1’, ‘Set2’, ‘Set3’], “Accent” is the default and it fall back on “Jet”.
  • firstBlackbool [default False] Display the first legend element in black if True. If it is the case, the corresponding classification class value is zero and it can be use when the meaning is nothing to classify (example: a background).
  • suffixstring [default None] Add a suffix to the file name.