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:
Test image and ground truth labels:
Test image and predicted labels:
Notes:
- Shape of
trainandtestarrays are (DimX, DimY, SpectralChannels). - Shape of
labelandpredictionarrays are (DimX, DimY). - Labeling convention for classifiers:
(a) Datatype:
label.dtype == np.uint8. (b) Labeled classes start from integer 1. Pixels withlabel == 0are ignored (masked out). - Dimension(s) of
trainandlabelmust be consistent:train.shape[0] == label.shape[0]andtrain.shape[1] == label.shape[1]. - Inputs:
train,test, andlabelcan also be lists ofnp.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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
725e32cfe2e3f9d23b3036333941fe4a63bc5eea5794a28e9434f8ae5166fdb6
|
|
| MD5 |
0a468c2b6ad2ec27c069d1a1176eac28
|
|
| BLAKE2b-256 |
034c3b97e237bf83a3e5efbe1ffb433eaba9253d0d699b48e468410769184746
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7468af1d69dd2a6282d84914af9e8b2b5a030929108b91831ffd84a6d87fd66
|
|
| MD5 |
3aab58bc9d32d13fc5020e55894ca770
|
|
| BLAKE2b-256 |
80f8ce7113c2d266e267148efffddec22553454c41f9d83fffbf4c96fc5be8ea
|