Geospatial Technology Associates · Digital Whitepaper

ISOFIT Atmospheric Correction — Mongolia

Author: William Basener Published: May 2026 Scenes: 2 Companion: Atmospheric Gas Spectra DB

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.

$$ L(\lambda) = L_a(\lambda) + \frac{T_\downarrow(\lambda)\,T_\uparrow(\lambda)\,\rho(\lambda)\,F_0(\lambda)\cos\theta_s}{\pi\bigl(1 - s(\lambda)\,\rho(\lambda)\bigr)} $$

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.

Methods note · water-band masking

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)\):

$$ \mathbf{f}(\mathbf{x}_s, \mathbf{x}_a) = \mathbf{R}\!\left[L_a + \frac{T_\downarrow T_\uparrow\,\rho(\mathbf{x}_s)\,F_0\cos\theta_s/\pi}{1 - s\,\rho(\mathbf{x}_s)}\right] $$

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:

$$ \chi^2(\mathbf{x}) = \bigl(\mathbf{y} - \mathbf{f}(\mathbf{x})\bigr)^\top \mathbf{S}_\epsilon^{-1} \bigl(\mathbf{y} - \mathbf{f}(\mathbf{x})\bigr) + (\mathbf{x} - \mathbf{x}_a)^\top \mathbf{S}_a^{-1} (\mathbf{x} - \mathbf{x}_a) $$

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

Mongolia 1 — 11 Feb 2025 RGB
Figure 1. True-color render (R=660, G=560, B=470 nm; 2–98% stretch). Open circles mark the six PC-pure pixel locations whose spectra appear in Figure 2; pixels are at identical (row, col) on both panels.
Mongolia 1 — 11 Feb 2025 spectra
Figure 2. Mean (black) and six PC-pure pixel spectra. Light-gray fill = 1–99% envelope across all valid pixels. Shaded vertical bands at 1250–1500 nm and 1750–2000 nm mark the masked water regions (lines break to NaN). Y-axis is bounded to the mean and selected spectra.
Mongolia 1 — 11 Feb 2025 PCA
Figure 3. PCA composites — six rows of (R,G,B) = (PCₖ, PCₖ₊₁, PCₖ₊₂) for k = 1,4,7,10,13,16. Left = standard L2A; right = local ISOFIT.
Mongolia 1 — 11 Feb 2025 eigenvalues
Figure 4. Eigenvalue spectrum in log scale.
Mineral spectral indices for Mongolia 1 — 11 Feb 2025 (15 maps)

FEAI — Ferric iron alteration

FEAI emit20250211t064505
FEAI = R(2.165)/R(0.82) + R(0.56)/R(0.66) [µm]

FEI_simple — Ferrous iron

FEI_simple emit20250211t064505
FEI_simple = R(2.165)/R(1.65) [µm]

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAY_TM emit20250211t064505
CLAY_TM = R(1.65)/R(2.205) [µm]

CLAI — Argillic alteration (alunite/kaolinite)

CLAI emit20250211t064505
CLAI = (R(1.65)+R(2.205))/R(2.165) [µm]

ALI — Alunite (Ninomiya)

ALI emit20250211t064505
ALI = R(2.260)²/(R(2.165)·R(2.330)) [µm]

KAI1 — Kaolinite slope

KAI1 emit20250211t064505
KAI1 = R(2.260)/R(2.165) [µm]

KLI — Kaolinite doublet

KLI emit20250211t064505
KLI = (R(1.65)/R(2.165))·(R(2.330)/R(2.205)) [µm]

KAI3 — Kaolinite (alt 3-band)

KAI3 emit20250211t064505
KAI3 = (R(1.65)+R(2.260))/R(2.205) [µm]

OHI — OH-bearing minerals

OHI emit20250211t064505
OHI = (R(2.260)/R(2.205))·(R(1.65)/R(2.205)) [µm]

OHI3 — OH near 2.17 µm

OHI3 emit20250211t064505
OHI3 = (R(1.65)·R(2.260))/R(2.165)² [µm]

CLI — Calcite

CLI emit20250211t064505
CLI = (R(2.205)/R(2.330))·(R(2.395)/R(2.330)) [µm]

DOLI — Dolomite

DOLI emit20250211t064505
DOLI = (R(2.205)+R(2.330))/R(2.260) [µm]

MGAI — Mg-OH/chlorite/epidote

MGAI emit20250211t064505
MGAI = (R(2.395)+R(2.205))/R(2.330) [µm]

MONI — Montmorillonite

MONI emit20250211t064505
MONI = (R(1.65)+R(2.205))/R(2.260) [µm]

PRAI — Propylitic alteration

PRAI emit20250211t064505
PRAI = (R(2.260)+R(2.395))/R(2.330) [µm]

Mongolia 2 — 03 Aug 2025

Mongolia 2 — 03 Aug 2025 RGB
Figure 5. True-color render (R=660, G=560, B=470 nm; 2–98% stretch). Open circles mark the six PC-pure pixel locations whose spectra appear in Figure 6; pixels are at identical (row, col) on both panels.
Mongolia 2 — 03 Aug 2025 spectra
Figure 6. Mean (black) and six PC-pure pixel spectra. Light-gray fill = 1–99% envelope across all valid pixels. Shaded vertical bands at 1250–1500 nm and 1750–2000 nm mark the masked water regions (lines break to NaN). Y-axis is bounded to the mean and selected spectra.
Mongolia 2 — 03 Aug 2025 PCA
Figure 7. PCA composites — six rows of (R,G,B) = (PCₖ, PCₖ₊₁, PCₖ₊₂) for k = 1,4,7,10,13,16. Left = standard L2A; right = local ISOFIT.
Mongolia 2 — 03 Aug 2025 eigenvalues
Figure 8. Eigenvalue spectrum in log scale.
Mineral spectral indices for Mongolia 2 — 03 Aug 2025 (15 maps)

FEAI — Ferric iron alteration

FEAI emit20250803t045310
FEAI = R(2.165)/R(0.82) + R(0.56)/R(0.66) [µm]

FEI_simple — Ferrous iron

FEI_simple emit20250803t045310
FEI_simple = R(2.165)/R(1.65) [µm]

CLAY_TM — Generic clay (TM5/TM7 analog)

CLAY_TM emit20250803t045310
CLAY_TM = R(1.65)/R(2.205) [µm]

CLAI — Argillic alteration (alunite/kaolinite)

CLAI emit20250803t045310
CLAI = (R(1.65)+R(2.205))/R(2.165) [µm]

ALI — Alunite (Ninomiya)

ALI emit20250803t045310
ALI = R(2.260)²/(R(2.165)·R(2.330)) [µm]

KAI1 — Kaolinite slope

KAI1 emit20250803t045310
KAI1 = R(2.260)/R(2.165) [µm]

KLI — Kaolinite doublet

KLI emit20250803t045310
KLI = (R(1.65)/R(2.165))·(R(2.330)/R(2.205)) [µm]

KAI3 — Kaolinite (alt 3-band)

KAI3 emit20250803t045310
KAI3 = (R(1.65)+R(2.260))/R(2.205) [µm]

OHI — OH-bearing minerals

OHI emit20250803t045310
OHI = (R(2.260)/R(2.205))·(R(1.65)/R(2.205)) [µm]

OHI3 — OH near 2.17 µm

OHI3 emit20250803t045310
OHI3 = (R(1.65)·R(2.260))/R(2.165)² [µm]

CLI — Calcite

CLI emit20250803t045310
CLI = (R(2.205)/R(2.330))·(R(2.395)/R(2.330)) [µm]

DOLI — Dolomite

DOLI emit20250803t045310
DOLI = (R(2.205)+R(2.330))/R(2.260) [µm]

MGAI — Mg-OH/chlorite/epidote

MGAI emit20250803t045310
MGAI = (R(2.395)+R(2.205))/R(2.330) [µm]

MONI — Montmorillonite

MONI emit20250803t045310
MONI = (R(1.65)+R(2.205))/R(2.260) [µm]

PRAI — Propylitic alteration

PRAI emit20250803t045310
PRAI = (R(2.260)+R(2.395))/R(2.330) [µm]

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.

What this whitepaper does not claim

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.