Table Of Contents

Supervised classification classes

This module supports HSI cube supervised classifiers. They are NormXCorr, SAM, SID and SVC. For each classifier three differents plotting are availables.

For NormXCorr, SAM and SID, the fusions of classification maps use a best score win approach.

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


NormXCorr

class classification.NormXCorr

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

classify(M, E, threshold=0.01)

Classify the HSI cube M with the spectral library E.

Parameters:
M: numpy array
A HSI cube (m x n x p).
E: numpy 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.
Returns: numpy array
A class map (m x n x 1).
display(colorMap='Accent', suffix=None)

Display the class map to a IPython Notebook.

Parameters:
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the title.
display_single_map(lib_idx, constrained=True, 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_idx: int 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.
suffix: string [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:
path: string
The path where to put the plot.
lib_idx: int or string
A number between 1 and the number of spectra in the library.
constrained: boolean [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, colorMap='Accent', suffix=None)

Plot the class map.

Parameters:
path: string
The path where to put the plot.
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the file name.
plot_histo(path, suffix=None)

Plot the histogram.

Parameters:
path: string
The path where to put the plot.
suffix: string [default None]
Add a suffix to the file name.
plot_single_map(path, lib_idx, constrained=True, 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:
path: string
The path where to put the plot.
lib_idx: int 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.
suffix: string [default None]
Add a suffix to the file name.

SAM

class classification.SAM

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

classify(M, E, threshold=0.1)

Classify the HSI cube M with the spectral library E.

Parameters:
M: numpy array
A HSI cube (m x n x p).
E: numpy 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.
Returns: numpy array
A class map (m x n x 1).
display(colorMap='Accent', suffix=None)

Display the class map to a IPython Notebook.

Parameters:
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the title.
display_single_map(lib_idx, constrained=True, 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_idx: int 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.
suffix: string [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:
path: string
The path where to put the plot.
lib_idx: int or string
A number between 1 and the number of spectra in the library.
constrained: boolean [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, colorMap='Accent', suffix=None)

Plot the class map.

Parameters:
path: string
The path where to put the plot.
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the file name.
plot_histo(path, suffix=None)

Plot the histogram.

Parameters:
path: string
The path where to put the plot.
suffix: string [default None]
Add a suffix to the file name.
plot_single_map(path, lib_idx, constrained=True, 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:
path: string
The path where to put the plot.
lib_idx: int 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.
suffix: string [default None]
Add a suffix to the file name.

SID

class classification.SID

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

classify(M, E, threshold=0.1)

Classify the HSI cube M with the spectral library E.

Parameters:
M: numpy array
A HSI cube (m x n x p).
E: numpy 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.
Returns: numpy array
A class map (m x n x 1).
display(colorMap='Accent', suffix=None)

Display the class map to a IPython Notebook.

Parameters:
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the title.
display_single_map(lib_idx, constrained=True, 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_idx: int 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.
suffix: string [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:
path: string
The path where to put the plot.
lib_idx: int or string
A number between 1 and the number of spectra in the library.
constrained: boolean [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, colorMap='Accent', suffix=None)

Plot the class map.

Parameters:
path: string
The path where to put the plot.
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the file name.
plot_histo(path, suffix=None)

Plot the histogram.

Parameters:
path: string
The path where to put the plot.
suffix: string [default None]
Add a suffix to the file name.
plot_single_map(path, lib_idx, constrained=True, 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:
path: string
The path where to put the plot.
lib_idx: int 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.
suffix: string [default None]
Add a suffix to the file name.

SVC

class classification.SVC

Suppot Vector Supervised Classification (SVC) of a HSI cube with the use of regions of interest (ROIs).

This class is largely a wrapper to the scikit-learn SVC class. The goal is to ease the use of the scikit-learn SVM implementation when applied to hyperspectral cubes.

The ROIs classifiers can be rectangles or polygons. They must be VALID, no check is made upon the validity of these geometric figures.

classify(M)

Classify a hyperspectral cube using the ROIs defined clusters.

Parameters:
M: numpy array
A HSI cube (m x n x p).
Returns: numpy array
A class map (m x n x 1).
display(labels=None, colorMap='Accent', suffix=None)

Display the class map.

Parameters:
labels: string list
A labels list.
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the file name.
display_ROIs(labels=None, colorMap='Accent', suffix=None)

Display the ROIs.

Parameters:
labels: string list
A labels list.
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the file name.
fit(M, ROIs, class_weight=None, cache_size=200, coef0=0.0, degree=3, gamma=0.0, kernel='rbf', max_iter=-1, probability=False, random_state=None, shrinking=True, tol=0.001, verbose=False)

Fit the HS cube M with the use of ROIs. The parameters following ‘M’ and ‘ROIs’ are the one defined by the scikit-learn sklearn.svm.SVC class.

Parameters:
M: numpy array
A HSI cube (m x n x p).
ROIs: ROIs type
Regions of interest instance.
Others parameters: see the sklearn.svm.SVC class parameters
Note: the C parameter is set to 1, the result of this setting is that the class_weight is relative to C and that the first value of class_weight is the background. An example: you wish to fit two classes “1” and “2” with the help of one ROI for each, you declare class_weight like this: class_weight={0:1,1:10,2:10} 0: is always the background and is set to 1, 1: is the first class, 2: is the second. A value of 10 for both classes give good results.
Returns: class
The sklearn.svm.SVC class is returned.
plot(path, labels=None, colorMap='Accent', suffix=None)

Plot the class map.

Parameters:
path: string
The path where to put the plot.
labels: string list
A labels list.
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the file name.
plot_ROIs(path, labels=None, colorMap='Accent', suffix=None)

Plot the ROIs.

Parameters:
path: string
The path where to put the plot.
labels: string list
A labels list.
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the file name.

Output

class classification.Output(label)

Add plot and display capacity to the classifiers classes.

display(cmap, ylabel='spectrum', colorMap='Accent', suffix=None)

Display a classification map using matplotlib.

Parameters:
cmap: numpy array
A classified map, (m x n x 1), the classes start at 0.
ylabel: string [default ‘spectrum’]
y axis label.
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the file name.
plot(path, cmap, ylabel='spectrum', colorMap='Accent', suffix=None)

Plot a classification map using matplotlib.

Parameters:
path: string
The path where to put the plot.
cmap: numpy array
A classified map, (m x n x 1), the classes start at 0.
ylabel: string [default ‘spectrum’]
y axis label.
colorMap: string [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”.
suffix: string [default None]
Add a suffix to the file name.