Skip to main content

A Python package for Hyperspectral Quality Estimation and computing image-wide noise in hyperspectral imaging (imaging spectroscopy)

Project description

HyperQuest

Build Status PyPI PyPI - Python Version Downloads

hyperquest: A Python package for estimating image-wide noise across wavelengths in hyperspectral imaging (imaging spectroscopy) with an emphasis on repeatability and speed. Computations are sped up and scale with number of cpus.

Plenty of methods for denoising imagery already exist, however, sometimes there are applications where knowing/comparing SNR from image conditions is of interest. It is also important to point out this is not instrument noise, which is measured in laboratory. These methods here provide an estimate of "actual noise in real conditions" (Curran & Dungan, 1989; Cogliati et al., 2021).

It's my hope hyperquest may be a useful tool and/or learning resource for computing SNR from imaging spectroscopy data. Comments and suggestions are welcome!

Installation Instructions

The latest release can be installed via pip:

pip install hyperquest

Methods currently available

  • (HRDSDC) Homogeneous regions division and spectral de-correlation (Gao et al., 2008)

  • (SSDC) Spectral and spatial de-correlation (Roger & Arnold, 1996)

  • (RLSD) Residual-scaled local standard deviation (Gao et al., 2007)

Usage example

import hyperquest
import matplotlib.pyplot as plt


# Define path to envi image header file
envi_hdr_path = '/path/my_spectral_image.hdr'

# get wavelengths
wavelengths = hyperquest.read_center_wavelengths(envi_hdr_path)

# compute using HRDSDC method
snr = hyperquest.hrdsdc(envi_hdr_path, n_segments=10000, 
                        compactness=0.1, n_pca=3, ncpus=3)

plt.scatter(wavelengths, snr, color='black', s=100, alpha=0.7)

SNR Plot

TODO:

  • brainstorm: other quality metrics outside of SNR in this package?

  • including other segmentation methods? Currently is all built around SLIC (via scikitlearn).

  • provide Cogliati et al. (2021) method: extract edges and also include neighbor pixel.

References:

  • Cogliati, S., Sarti, F., Chiarantini, L., Cosi, M., Lorusso, R., Lopinto, E., ... & Colombo, R. (2021). The PRISMA imaging spectroscopy mission: overview and first performance analysis. Remote sensing of environment, 262, 112499.

  • Curran, P. J., & Dungan, J. L. (1989). Estimation of signal-to-noise: a new procedure applied to AVIRIS data. IEEE Transactions on Geoscience and Remote sensing, 27(5), 620-628.

  • Gao, L., Wen, J., & Ran, Q. (2007, November). Residual-scaled local standard deviations method for estimating noise in hyperspectral images. In Mippr 2007: Multispectral Image Processing (Vol. 6787, pp. 290-298). SPIE.

  • Gao, L. R., Zhang, B., Zhang, X., Zhang, W. J., & Tong, Q. X. (2008). A new operational method for estimating noise in hyperspectral images. IEEE Geoscience and remote sensing letters, 5(1), 83-87.

  • Roger, R. E., & Arnold, J. F. (1996). Reliably estimating the noise in AVIRIS hyperspectral images. International Journal of Remote Sensing, 17(10), 1951-1962.

  • Tian, W., Zhao, Q., Kan, Z., Long, X., Liu, H., & Cheng, J. (2022). A new method for estimating signal-to-noise ratio in UAV hyperspectral images based on pure pixel extraction. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, 16, 399-408.

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

hyperquest-0.1.1.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

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

hyperquest-0.1.1-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file hyperquest-0.1.1.tar.gz.

File metadata

  • Download URL: hyperquest-0.1.1.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.10

File hashes

Hashes for hyperquest-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ad95c25ba1a16d564bd2d19be0e89be548b74a3e88816e8c8bd3ec90ce7664c7
MD5 8b449ef79488aae3b8370d2cedafb582
BLAKE2b-256 a98eb78d17dc95fd9d30852cee070a1778c2375381f9d4b571c274bd342aab63

See more details on using hashes here.

File details

Details for the file hyperquest-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hyperquest-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.10

File hashes

Hashes for hyperquest-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a2f148d226e714fe4267059476138f67d9453b72f6d4203ef0d521bc144f2dc4
MD5 079c69b92d19ebac1aba1b0f456bd62e
BLAKE2b-256 498619dc3aa7884808a467f6130fcfa2baac30c5293806fb6a1a588c97e97a7f

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