Skip to content

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

License

Notifications You must be signed in to change notification settings

brentwilder/HyperQuest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

# get wavelengths
wavelengths = hyperquest.read_center_wavelengths(envi_img_path)

# compute using HRDSDC method
snr = hyperquest.hrdsdc(envi_img_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:

  • 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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published