Hyperspectral Spatial Timeseries for Automated high-Resolution multi-Sensor data fusion (STARS) Julia Package
This Julia package, HyperSTARS.jl, is designed for advanced hyperspectral data fusion. It combines data from multiple instruments with varying spatial, spectral, and temporal resolutions into a single, high-resolution, fused product. The core methodology leverages state-space models and advanced statistical filtering and smoothing techniques (specifically, Kalman filtering and smoothing variants), making it robust for integrating diverse remote sensing datasets.
Margaret C. Johnson (she/her)
[email protected]
Principal investigator: lead of data fusion methodological development and Julia code implementations.
NASA Jet Propulsion Laboratory
Gregory H. Halverson (they/them)
[email protected]
Lead developer for data processing pipelines, code organization and management.
NASA Jet Propulsion Laboratory
Nimrod Carmon (he/him)
[email protected]
Technical contributor for data processing, validation/verification, and hyperspectral resampling
NASA Jet Propulsion Laboratory
Jouni I. Susiluoto
[email protected]
Technical contributor for methodology development.
NASA Jet Propulsion Laboratory
Amy Braverman (she/her)
[email protected]
Technical contributor for methodology development.
NASA Jet Propulsion Laboratory
Philip Brodrick (he/him)
[email protected]
Science and applications discussions, EMIT data considerations.
NASA Jet Propulsion Laboratory
Kerry Cawse-Nicholson (she/her)
[email protected]
Science and applications discussions.
NASA Jet Propulsion Laboratory
-
Multi-Sensor Data Fusion: Integrates observations from various instruments with different characteristics (e.g., spatial resolution, spectral bands, temporal coverage).
-
Spatio-Spectral-Temporal Modeling: Accounts for correlations and dependencies across spatial, spectral, and temporal dimensions.
-
Kalman Filtering and Smoothing: Employs an efficient, recursive Bayesian estimation framework to produce optimal (minimum mean squared error) estimates of the underlying unobserved processes.
-
Kronecker Product Structures: Utilizes Kronecker products for efficient handling of high-dimensional spatio-spectral covariance matrices, enhancing computational performance.
-
Adaptive Process Noise: Allows for dynamically adjusting the model's process noise covariance based on the estimated state and its uncertainty, improving adaptability to changing environmental conditions.
-
Parallel Processing: Designed to distribute computations across multiple spatial windows using Julia's
pmapfunctionality, enabling scalable processing of large scenes. -
Uncertainty Quantification: Provides estimates of both the fused product and its associated uncertainty (e.g., standard deviation), crucial for downstream applications and decision-making.
The package is structured into several Julia files, each focusing on specific functionalities:
-
HyperSTARS.jl(Main Module):-
Defines the overall module structure and exports key functions and data types.
-
Implements the main
hyperSTARS_fusion_kr_dict(core fusion algorithm for a single window) andscene_fusion_pmap(orchestrates parallel fusion across a scene) functions. -
Includes definitions for
KSModel(standard Kalman state-space model) andHSModel(Hyperspectral STARS specific model with separated spatio-spectral components). -
Defines
InstrumentDataandInstrumentGeoDatastructs for organizing diverse input data. -
Contains the
woodbury_filter_kr(Kalman filter update using Woodbury identity) andsmooth_series(Kalman smoother) implementations. -
Manages data organization (
organize_data,create_data_dicts) for efficient processing.
-
-
GP_utils.jl:-
Provides various Gaussian Process (GP) related utility functions.
-
Includes implementations of common covariance functions such as
kernel_matrix(Squared Exponential),matern_cor,exp_cor,mat32_cor, andmat52_cor(Matern family kernels). -
Offers versions (
_D) that take precomputed distance matrices for efficiency. -
Implements
state_covfor adaptive process noise covariance calculation. -
Functions for building block-diagonal GP covariance matrices (
build_gpcov).
-
-
resampling_utils.jl:-
Contains functions for handling resampling and creating observation operators.
-
unif_weighted_obs_operator_centroidandgauss_weighted_obs_operatorconstruct observation matrices based on uniform or Gaussian weighting of target cells to sensor observations. -
Includes
rsr_conv_matrixfor converting Relative Spectral Response (RSR) information into spectral convolution matrices, handling both FWHM and discrete RSR curve inputs.
-
-
spatial_utils.jl(andspatial_utils_ll.jl):-
These files provide a suite of utility functions for spatial indexing, coordinate transformations, and grid operations.
-
Functions like
find_nearest_ij,find_all_ij_ext(for centroid containment),find_all_touching_ij_ext(for cell overlap),get_sij_from_ij(index to coordinate conversion), andbbox_from_centroidare crucial for managing spatial data. -
Includes methods for subsampling Basic Area Units (BAUs), notably
sobol_bau_ijfor quasi-random sampling using Sobol sequences. -
Functions for determining raster origins and cell sizes (
get_origin_raster,cell_size). -
Utilities for finding and merging overlapping spatial extents (
find_overlapping_ext,merge_extents).
-