A library for hyperspectral image analysis using scikit-learn.
BSD-3-CLAUSE License
Hyperspectral image analysis using scikit-learn
The package can be installed using pip
:
pip install hskl
Or install HSKL directly from the repository:
Verify that git is installed:
git --version
Install HSKL:
pip install git+https://github.com/qiancao/hskl.git
Training a pixel-level classifier for segmentation:
import os
from hskl.demo import dl_hyrank, load_hyrank
import hskl.classification as classification
import hskl.utils as utils
# Download, unpack, and load HyRANK dataset from current directory.
path = os.getcwd()
if not os.path.exists("HyRANK_satellite"):
dl_hyrank(path)
images, labels, _ = load_hyrank(path)
# Dimensional reduction using PCA, retain 99.9% image variance
pca = utils.pca_fit(images[0])
train, _ = utils.pca_apply(images[0], pca, 0.999)
test, _ = utils.pca_apply(images[1], pca, 0.999)
label = labels[0]
test_mask = labels[1]>0
# Train a classifier and predict test image labels
cl = classification.HyperspectralClassifier(
method_name="LinearDiscriminantAnalysis")
cl.fit(train, label)
prediction = cl.predict(test)
# Visualization of training data, test prediction, and test ground truth
fig_objs_train = utils.overlay(train,label)
utils.save_overlay(fig_objs_train, "hyrank_train.png")
fig_objs_predict = utils.overlay(test,prediction*test_mask)
utils.save_overlay(fig_objs_predict, "hyrank_predict.png")
fig_objs_test = utils.overlay(test,labels[1])
utils.save_overlay(fig_objs_test, "hyrank_test.png")
Output:
Training image and ground truth labels:
Test image and ground truth labels:
Test image and predicted labels:
Notes:
train
and test
arrays are (DimX, DimY, SpectralChannels).label
and prediction
arrays are (DimX, DimY).label.dtype == np.uint8
.label == 0
are ignored (masked out).train
and label
must be consistent: train.shape[0] == label.shape[0]
and train.shape[1] == label.shape[1]
.train
, test
, and label
can also be lists of np.ndarray
s with each element satisfying the preceeding requirements.In the near-term:
In the long-term, support for:
Qian Cao, Deependra Mishra, John Wang, Steven Wang, Helena Hurbon and Mikhail Berezin. HSKL: A Machine Learning Framework For Hyperspectral Image Analysis. Proc. IEEE WHISPERS. IEEE, 2021.
Karantzalos, Konstantinos, Karakizi, Christina, Kandylakis, Zacharias, & Antoniou, Georgia. (2018). HyRANK Hyperspectral Satellite Dataset I (Version v001). Zenodo. http://doi.org/10.5281/zenodo.1222202
Spectral Python (SPy): https://github.com/spectralpython/spectral