ISOFIT Atmospheric Correction — Mongolia
Abstract: The Imaging Spectrometer Optimal FITting (ISOFIT) framework solves the coupled surface–atmosphere inverse problem from at-sensor radiance, retrieving per-pixel surface reflectance simultaneously with atmospheric water vapor and aerosol optical thickness via Accelerated Optimal Estimation. We summarize the algorithm and present a side-by-side comparison of the JPL operational EMIT L2A V001 product against a local ISOFIT + sRTMnet retrieval on 2 EMIT scenes covering Mongolia. For each scene we provide a true-color RGB pair with PC-pure pixel markers, mean and selected spectra, the first eighteen principal-component composites, the eigenvalue spectrum, and a nested mineral-spectral-index accordion.
1. Why Atmospheric Correction Matters
An imaging spectrometer measures at-sensor radiance \(L(\lambda)\) — a tangled superposition of light scattered by atmospheric molecules and aerosols, light reflected from the surface that transits the atmosphere twice, and the spherical-albedo coupling between the two. Recovering surface reflectance \(\rho(\lambda)\) requires inverting that radiative transfer chain pixel-by-pixel.
The algorithms here apply to a family of NASA imaging spectrometers — AVIRIS-Classic, AVIRIS-NG, AVIRIS-3, and EMIT — that share a common forward-model architecture in ISOFIT. The 2 scenes presented here come from EMIT.
Two atmospheric water-vapor absorption regions, 1250–1500 nm and
1750–2000 nm, are explicitly excluded from PCA fitting, the
eigenvalue spectrum, the ASTER-band synthesis used for the mineral indices,
and the spectra plots (where the lines visibly break across those windows).
The masks are applied in addition to the per-pixel band-quality flags
(bbl) embedded in each retrieval. This isolates the comparison from
the wavelengths most contaminated by atmospheric residuals — keeping the
principal-component structure dominated by surface variance rather than
unconverged H₂O absorption.
2. The ISOFIT Algorithm
2.1 The Forward Model
ISOFIT writes the at-sensor radiance as the composition of a surface model \(\rho(\mathbf{x}_s; \lambda)\) and an atmosphere model \(\mathcal{A}(\mathbf{x}_a; \lambda)\):
where \(\mathbf{R}\) applies the spectral response of the instrument and \(\mathbf{x}_s\), \(\mathbf{x}_a\) are the surface- and atmospheric-state vectors. The state \(\mathbf{x}_a\) is kept low-dimensional (column water vapor, AOT at 550 nm) because well-mixed gases can be held at climatology with negligible error in retrieved \(\rho\).
2.2 Accelerated Optimal Estimation
OE inverts the forward model under a Gaussian prior and Gaussian instrument noise. The cost is:
The Accelerated formulation collapses the >280-dimensional Levenberg–Marquardt iteration into a closed-form surface inversion wrapped in a small two-dimensional outer search over the atmospheric state, so retrievals are orders of magnitude faster while still reporting a full posterior covariance.
2.3 Radiative Transfer Engines and sRTMnet
The forward model needs \(\{L_a, T_\downarrow T_\uparrow, s\}\) at every wavelength for every plausible atmospheric state. ISOFIT supports MODTRAN 6 (operational JPL reference), LibRadTran (open-source), 6S (open-source, fast), and sRTMnet, a deep neural emulator trained on millions of 6S calls. We use sRTMnet for both EMIT and AVIRIS pipelines.
2.4 The Multicomponent Surface Prior
Without a prior, OE on a 285-channel reflectance spectrum is ill-posed. The multicomponent surface model partitions a global reflectance training set (vegetation, soils, water, mineral surfaces, snow) by k-means and assigns a Gaussian prior to each cluster; per pixel, ISOFIT picks the most likely component from a radiance-domain pre-classification, then uses that component's prior in the OE inversion.
3. The "Standard" Reflectance We Compare Against
We compare to the official EMIT L2A surface reflectance product as distributed by NASA's LP DAAC. Each scene's NetCDF header records its provenance:
title: EMIT L2A Estimated Surface Reflectance 60 m V001
sensor: EMIT (Earth Surface Mineral Dust Source Investigation)
platform: ISS
institution: NASA Jet Propulsion Laboratory / California Institute of Technology
software_build_version: 010621/010627
product_version: V001
The "standard" is the JPL operational ISOFIT pipeline (MODTRAN-based) running inside the EMIT Science Data System. Our local retrieval uses the open-source ISOFIT 3.7.x release with the sRTMnet neural emulator and a default multicomponent surface configuration:
description = L2A Analytical per-pixel surface retrieval
(segmentation_size=40, engine=sRTMnet, isofit_version=3.7.x)
samples = 1242, lines = 1280, bands = 285
interleave = bil, no data value = -9999
Both retrievals operate on the same EMIT L1B radiance cube. Differences come from the radiative-transfer engine (full MODTRAN vs. sRTMnet emulator), the surface library configuration, and the segmentation size used to amortize OE across spatially coherent blocks.
4. Scene Comparisons
Each scene below presents four primary diagnostics — RGB, mean+PC-pure spectra, 18-PC composite grid, and eigenvalue spectrum — followed by a collapsible accordion of fifteen mineral spectral indices.
Mongolia 1 — 11 Feb 2025




Mineral spectral indices for Mongolia 1 — 11 Feb 2025 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

Mongolia 2 — 03 Aug 2025




Mineral spectral indices for Mongolia 2 — 03 Aug 2025 (15 maps)
FEAI — Ferric iron alteration

FEI_simple — Ferrous iron

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAI — Argillic alteration (alunite/kaolinite)

ALI — Alunite (Ninomiya)

KAI1 — Kaolinite slope

KLI — Kaolinite doublet

KAI3 — Kaolinite (alt 3-band)

OHI — OH-bearing minerals

OHI3 — OH near 2.17 µm

CLI — Calcite

DOLI — Dolomite

MGAI — Mg-OH/chlorite/epidote

MONI — Montmorillonite

PRAI — Propylitic alteration

5. Discussion
Across all scenes the true-color renders are visually indistinguishable: both retrievals flatten the atmospheric path radiance and recover surface color contrast. The PC-pure spectra agree closely on broad continuum shape but show systematic differences at the edges of the masked water regions — exactly the wavelengths where MODTRAN and the sRTMnet emulator differ most. The eigenvalue spectra are nearly parallel in their leading components but diverge in the tail, where atmospheric residuals live.
That divergence is informative. A perfect atmospheric correction would push residual covariance toward isotropic noise — a flat tail in log-eigenvalue space. Curvature in the tail indicates structured residuals that PCA can latch onto. We use that curvature, together with the higher-order PC composites, as a quick visual diagnostic of atmospheric-correction quality without ever needing ground truth.
Neither retrieval is "ground truth" — both are model-driven inversions of the same radiance with different RT engines and surface configurations. Their agreement is evidence the open-source path is operationally viable; it is not a validation against in-scene spectroradiometer measurements.
6. Reproducibility
All figures here are generated by a single self-contained Python script
(digital_whitepaper/build_whitepaper.py) that loads the standard L2A
from the LP DAAC NetCDF, the local ISOFIT cube via the spectral ENVI reader,
applies the water-band mask, fits PCA on a 80,000-pixel subsample, picks PC-pure pixels,
and renders all comparison figures. The local ISOFIT runs are produced by:
# EMIT scene → ISOFIT 3.7.x + sRTMnet
from isofit.utils.apply_oe import apply_oe
apply_oe(
input_radiance = "<flight>_rdn",
input_loc = "<flight>_loc",
input_obs = "<flight>_obs",
sensor = "emit",
surface_path = "data/surface/emit_surface.mat",
emulator_base = ".../sRTMnet_v100.h5",
segmentation_size = 40,
presolve = True,
analytical_line = True,
)
References
[1] Brodrick, P. G., Thompson, D. R., Garay, M. J., Giuliano, J., Green, R. O., et al. (2025). Improved Atmospheric Correction for Remote Imaging Spectroscopy Missions with Accelerated Optimal Estimation. Jet Propulsion Laboratory.
[2] Thompson, D. R., Natraj, V., Green, R. O., Helmlinger, M. C., Gao, B.-C., & Eastwood, M. L. (2018). Optimal Estimation for Imaging Spectrometer Atmospheric Correction. Remote Sensing of Environment, 216, 355–373.
[3] Connelly, D. S., Thompson, D. R., Mahowald, N. M., et al. (2021). The EMIT Mission Information Yield for Mineral Dust Radiative Forcing. Remote Sensing of Environment, 258, 112380.
[4] Berk, A., et al. (1998). MODTRAN cloud and multiple scattering upgrades with application to AVIRIS. Remote Sensing of Environment, 65(3), 367–375.
[5] Vermote, E. F., Tanré, D., Deuzé, J. L., Herman, M., & Morcrette, J. J. (1997). 6S: An Overview. IEEE Trans. Geosci. Remote Sens., 35(3), 675–686.
[6] Brodrick, P. G., Thompson, D. R., & Green, R. O. (2021). sRTMnet: Neural-network emulation of 6S for hyperspectral atmospheric correction. Remote Sensing of Environment.
[7] Adler-Golden, S. M., Berk, A., Bernstein, L. S., et al. (1999). FLAASH. Proc. AVIRIS Workshop.
[8] Basener, W. (2023). Gaussian Process and Deep Learning Atmospheric Correction. Remote Sensing 15(3), 649. mdpi.com/2072-4292/15/3/649
[9] Ninomiya, Y. (2003). A stabilized vegetation index and several mineralogic indices defined for ASTER VNIR and SWIR data. IGARSS 2003.
[10] Rowan, L. C., & Mars, J. C. (2003). Lithologic mapping in the Mountain Pass, California area using ASTER data. Remote Sensing of Environment 84(3), 350–366.
[11] Green, R. O., et al. (2020). The Earth Surface Mineral Dust Source Investigation. IEEE Aerospace Conference.
[12] EMIT L2A Algorithm Theoretical Basis Document, NASA JPL, V001.