Skip to main content

A package for calculating image-wide SNR and noise from hyperspectral images.

Project description

HyperQuest

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

# get wavelengths
wavelengths = hyperquest.read_center_wavelengths(envi_img_path)

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

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

SNR Plot

TODO:

  • include more methods
  • including other segmentation methods. Currently is all built around SLIC (via scikitlearn).
  • perhaps allowing removing edges like in Cogliati et al. (2021)
  • tutorial working with that EMIT et al. 2024 paper

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.0.tar.gz (8.2 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.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hyperquest-0.1.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.1

File hashes

Hashes for hyperquest-0.1.0.tar.gz
Algorithm Hash digest
SHA256 82f4c2246cdeff842e8f8a2a6b99a04d7df2c65f47bde2cf2a0826db436b51ae
MD5 8f9d13b5eec18adf899f25dcba0fdc63
BLAKE2b-256 b44daa72dd99abb2a94b50ef144a9489155e61d75a5b915a3568d1acb13e8ff9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hyperquest-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.1

File hashes

Hashes for hyperquest-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 06c820cbc7b0aefe45eeac9169538a2be32241c9522b438ec363b34fab1c8d68
MD5 ff691917be382de387de0c0b6958c722
BLAKE2b-256 4a0b65ddda1cd7b0a9f960960dfaf94a5da90c1a0ec94522f94ad42da23cec47

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