Skip to main content

Hyperspectral image analysis with scikit-learn.

Project description

HSKL: Hyperspectral-scikit-learn

Hyperspectral image analysis using scikit-learn

Installation

The package can be installed from pip:

pip install hskl

Usage

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:

Training

Test image and ground truth labels:

Testing Ground Truth

Test image and predicted labels:

Testing Prediction

Notes:

  1. Shape of train and test arrays are (DimX, DimY, SpectralChannels).
  2. Shape of label and prediction arrays are (DimX, DimY).
  3. Labeling convention for classifiers: (a) Datatype: label.dtype == np.uint8. (b) Labeled classes start from integer 1. Pixels with label == 0 are ignored (masked out).
  4. Dimension(s) of train and label must be consistent: train.shape[0] == label.shape[0] and train.shape[1] == label.shape[1].
  5. Inputs: train, test, and label can also be lists of np.ndarrays with each element satisfying the preceeding requirements.

Planned Features

In the near-term:

  • Test scripts and data
  • Grid search cross validation

In the long-term, support for:

  • Pipelines
  • Patch-based featurizer
  • Dask-enabled parallelism
  • Deep learning (PyTorch) models

References

Karantzalos, Konstantinos, Karakizi, Christina, Kandylakis, Zacharias, & Antoniou, Georgia. (2018). HyRANK Hyperspectral Satellite Dataset I (Version v001). Zenodo. http://doi.org/10.5281/zenodo.1222202

Some functionalities in this package are provided by Spectral Python (SPy): https://github.com/spectralpython/spectral

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hskl-0.0.2.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hskl-0.0.2-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file hskl-0.0.2.tar.gz.

File metadata

  • Download URL: hskl-0.0.2.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.1.post20201107 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for hskl-0.0.2.tar.gz
Algorithm Hash digest
SHA256 725e32cfe2e3f9d23b3036333941fe4a63bc5eea5794a28e9434f8ae5166fdb6
MD5 0a468c2b6ad2ec27c069d1a1176eac28
BLAKE2b-256 034c3b97e237bf83a3e5efbe1ffb433eaba9253d0d699b48e468410769184746

See more details on using hashes here.

File details

Details for the file hskl-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: hskl-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.1.post20201107 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for hskl-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a7468af1d69dd2a6282d84914af9e8b2b5a030929108b91831ffd84a6d87fd66
MD5 3aab58bc9d32d13fc5020e55894ca770
BLAKE2b-256 80f8ce7113c2d266e267148efffddec22553454c41f9d83fffbf4c96fc5be8ea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page