Hydro Preprocessing

Aquatic preprocessing with three water-mask methods, three sunglint-correction methods, and three water-column methods, including sensor-aware wavelength/band validation and depth-informed correction options.

Surface ReflectanceNDWI · MNDWI · AWEIHedley · SWIR · O₂-760Lyzenga · Sagawa · KdShallow Water

1. Scope & Processing Contract

Hydro Preprocessing prepares optical Surface Reflectance imagery for shallow-water and aquatic analysis. It separates three different problems that must not be confused: water detection, surface sunglint, and water-column attenuation.

Radiometric + Atmospheric Preprocessing ↓ Surface Reflectance ↓ Water Mask Method NDWI / MNDWI / AWEI ↓ Sunglint Correction Method Hedley / SWIR Harmel-style / Kutser O₂-760 ↓ Water Column Correction Method None / Lyzenga DII / Sagawa BRI / Depth-Kd ↓ Hydro-Corrected Reflectance and/or Water-Column Product
Hydro correction starts after atmospheric correction. Sunglint is a water-surface reflection problem; Lyzenga/Sagawa/Kd address in-water optical attenuation. They are not replacements for atmospheric correction.
3water-mask methods
3sunglint methods
3water-column methods
Sensor-awareband validation

2. Input Data Contract

  • Primary raster: reflectance imagery. If values already look like physical reflectance they are used directly; otherwise the engine can decode a known SR/TOA reflectance product. Raw DN/radiance must first pass through Spectral Preprocessing.
  • Required visible channels: Blue, Green and Red. Band roles are auto-resolved from metadata/profile when possible and can be overridden manually.
  • Optional NIR/SWIR: required by specific mask or sunglint methods.
  • Hyperspectral O₂ bands: Kutser mode needs bands near ~739, ~760 and ~860 nm, automatically resolved when wavelength metadata is present.
  • Depth / Bathymetry Raster: required by Sagawa BRI and Depth/Kd compensation; it is reprojected/resampled to the reflectance grid using bilinear resampling.
A sensor without SWIR cannot run MNDWI, AWEI or the SWIR Harmel-style deglint. A multispectral sensor without suitable O₂ spectral sampling cannot run Kutser O₂-760. The backend validates these requirements rather than silently substituting bands.

3. Water Mask — 3 Methods

MethodEquation in current implementationRequired bandsUse
NDWI(Green − NIR)/(Green + NIR)Green, NIRGeneric open-water separation; suitable when SWIR is unavailable.
MNDWI(Green − SWIR1)/(Green + SWIR1)Green, SWIR1Useful when SWIR helps suppress non-water land/background responses.
AWEIBlue + 2.5·Green − 1.5·(NIR + SWIR1) − 0.25·SWIR2Blue, Green, NIR, SWIR1, SWIR2Shadow-robust multi-band water extraction variant.

Pixels are considered water when water_index > Water Index Threshold. The default threshold is 0.0. If fewer than 50 valid water pixels are found, the operation stops and asks for a new threshold/method.

Auto behavior: the current tool prefers MNDWI when SWIR is available; otherwise it falls back to NDWI.

4. Sunglint Correction — 3 Methods

4.1 Hedley NIR Regression

Hedley-style deglint uses NIR as a proxy for wave-induced specular reflection over water. The current implementation estimates deep-water pixels from the low end of the NIR distribution, then computes a regression slope for each visible band.

R′i(p) = Ri(p) − bi[P(p) − Pref]
bi = Cov(Ri,P) / Var(P)P is the NIR proxy. Pref is a low-percentile proxy value estimated from deep-water pixels.

4.2 SWIR Deglint — Harmel-style

The implementation uses the same operational regression form but replaces the NIR proxy by SWIR1, or by mean(SWIR1, SWIR2) when both are available. This follows the physical advantage of low water-leaving SWIR signal for glint estimation.

PSWIR = SWIR1  or  0.5(SWIR1 + SWIR2)
R′i = Ri − bi(PSWIR − Pref)
Naming precision: iTSensing calls this Harmel-style SWIR Deglint. It is an operational SWIR black-water regression using the Harmel SWIR principle; it is not the complete CAMS/BRDF atmospheric-glint processor described in the original Harmel paper.

4.3 Kutser O₂-760 Hyperspectral Deglint

Kutser et al. proposed using the oxygen absorption feature around 760 nm as a glint indicator where the assumption of negligible NIR water-leaving signal is unsafe. The current implementation computes a local absorption-depth proxy:

DO2 = max[0, 0.5(R739 + R860) − R760]

The depth is normalized by its scene-water maximum, then a visible glint spectrum is estimated from reference pixels with maximum/minimum O₂-depth proxy:

Dnorm = clip(DO2/Dmax,0,1)
gλ = Rλ(bright) − Rλ(dark)
R′λ(p)=Rλ(p)−gλDnorm(p)

This is most appropriate for wavelength-resolved/hyperspectral imagery with actual spectral coverage around the O₂ feature.

5. Water Column Correction — 3 Methods

5.1 Lyzenga Depth-Invariant Index (DII)

Lyzenga reduces depth-related variation by combining log-transformed visible bands. For each pair of Blue/Green/Red bands, iTSensing estimates an attenuation-ratio proxy from scene water statistics.

Xi = ln[max(R′i,ε)]
a = [Var(Xi) − Var(Xj)] / [2 Cov(Xi,Xj)]
ki/kj = a + √(a²+1)
DIIij = Xi − (ki/kj)Xj

With three visible bands the tool outputs three pairwise indices: Blue–Green, Blue–Red and Green–Red.

Output semantics: Lyzenga DII is a depth-invariant feature/index. It is not Surface Reflectance and should not be interpreted as reconstructed bottom reflectance.

5.2 Sagawa Bottom Reflectance Index (BRI)

Sagawa mode requires a depth raster plus effective attenuation coefficients for Blue, Green and Red. Deep-water background reflectance R∞ is estimated from pixels deeper than the selected depth percentile (default 90%).

BRIi = [R′i − R∞,i] · exp(Keff,i z)z is positive water depth after applying the selected sign convention. Keff must be supplied in m⁻¹.

The implementation caps the exponential internally for numerical stability. BRI is a bottom-related corrected index and its physical comparability depends on the validity of depth and effective attenuation coefficients.

5.3 Depth/Kd Exponential Compensation

This mode applies an explicit depth-dependent compensation to each visible band:

Rcomp,i = R′i · exp[f · Kd,i · z]

f is the optical path factor (default 2.0). The exponential factor is capped by Maximum Exponential Compensation Factor (default 20) to prevent extreme amplification at large depth/Kd.

Depth/Kd compensation is only as defensible as the supplied Kd, bathymetry, path-factor assumption and shallow-water optical model. It should not be presented as a universal bottom-reflectance retrieval.

6. Application Parameters

ParameterApplies toDescription
Sensor / Product TypeAllAuto Detect or manual sensor profile.
Water Mask MethodAllAuto, NDWI, MNDWI, AWEI, None.
Sunglint Correction MethodAllAuto, Hedley NIR, Harmel-style SWIR, Kutser O₂-760, None.
Water Column Correction MethodAllNone, Lyzenga DII, Sagawa BRI, Depth/Kd Exponential.
Blue/Green/Red/NIR/SWIR1/SWIR2 BandMethod dependentOptional manual 1-based band override; Auto uses semantic metadata/wavelength profiles.
Water Index ThresholdNDWI/MNDWI/AWEIWater if index > threshold; default 0.
Deep-Water Glint Reference PercentileHedley/Harmel-styleLow NIR/SWIR subset used for regression reference; default 20%.
O₂ shoulder/center bandsKutser~739, ~760, ~860 nm; auto-resolved where wavelengths exist.
Water Column OutputAny water-column methodMethod product only, or corrected RGB + method product.
Depth Raster / band / signSagawa, Depth/KdBathymetry input aligned to the image grid.
Sagawa effective K Blue/Green/RedSagawaPositive finite effective attenuation coefficients (m⁻¹).
Sagawa Deep-Water Depth PercentileSagawaDepth percentile for R∞ estimation; default 90.
Kd Blue/Green/RedDepth/KdDiffuse/effective attenuation coefficients in m⁻¹.
Kd Optical Path FactorDepth/KdDefault 2.0.
Maximum Compensation FactorDepth/KdDefault 20.
Output NodataAllDefault −9999.

7. Auto Selection & Sensor Compatibility

Available spectral informationWater mask AutoSunglint Auto
Visible + NIR onlyNDWIHedley NIR
Visible + NIR + SWIRMNDWIHarmel-style SWIR
Hyperspectral with ~739/760/860 nmDepends on NIR/SWIR availabilityKutser O₂-760 preferred by Auto where required O₂ bands can be resolved.

Water-column correction is not automatically forced; default is None. Lyzenga can run from image statistics alone, while Sagawa and Depth/Kd require bathymetry and explicit attenuation parameters.

8. Output Semantics

ConfigurationOutput bandsSemantics
Water Column = None3 bandsBlue/Green/Red Hydro-Corrected Reflectance (masked if a water mask is enabled).
Lyzenga + Method Only3 bandsPairwise DII indices: Blue–Green, Blue–Red, Green–Red.
Sagawa + Method Only3 bandsBlue/Green/Red Sagawa BRI.
Depth/Kd + Method Only3 bandsBlue/Green/Red exponentially compensated bands.
Corrected + Method6 bandsHydro-corrected RGB followed by the three selected water-column products.

Analysis provenance records detection metadata, reflectance normalization, chosen mask/glint/column methods, thresholds, slopes or O₂ references, attenuation/depth parameters and water-pixel count.

9. Recommended Workflows

Sentinel-2 shallow coast

L2A SR
↓
MNDWI
↓
Harmel-style SWIR
↓
Lyzenga DII
↓
Benthic features

Hyperspectral shallow water

Surface Reflectance
↓
Water mask
↓
Kutser O₂-760
↓
Lyzenga / model
↓
Spectral analysis

Depth-informed correction

Surface Reflectance
+ Bathymetry
+ K / Kd
↓
Sagawa or Depth-Kd
↓
Bottom-related product
Satellite-Derived Bathymetry is a separate analysis problem. Stumpf ratio/SDB should not be hidden inside Water Column Correction; Hydro Preprocessing prepares the optical data and/or depth-invariant/bottom-related features for subsequent bathymetry or benthic analysis.

10. Quality Control

  • Run Radiometric/Atmospheric Spectral Preprocessing first if the source is raw DN, radiance, or uncorrected Level-1.
  • Check mask accuracy before estimating deglint regression; land contamination can bias slopes.
  • Inspect sunglint before/after over water, especially around bright shallow bottom and emergent vegetation.
  • For Hedley/SWIR regression, ensure the proxy has enough variance; the engine rejects near-zero variance.
  • For Kutser, verify real wavelength coverage near the O₂ feature and sufficient dynamic range.
  • For Lyzenga, avoid interpreting DII as physical reflectance; verify covariance stability and sufficient water pixels.
  • For Sagawa/Depth-Kd, inspect depth alignment, sign convention, units and attenuation coefficients.
  • Large exponential factors amplify noise; use the compensation cap and avoid applying deep-water corrections outside the model's validity range.

11. Scientific References

  1. McFeeters, S. K. (1996). The use of the Normalized Difference Water Index (NDWI) in the delineation of open water features. International Journal of Remote Sensing 17(7), 1425–1432. DOI: 10.1080/01431169608948714.
  2. Xu, H. (2006). Modification of normalised difference water index (NDWI) to enhance open water features in remotely sensed imagery. International Journal of Remote Sensing 27(14), 3025–3033. DOI: 10.1080/01431160600589179.
  3. Feyisa, G. L., Meilby, H., Fensholt, R. & Proud, S. R. (2014). Automated Water Extraction Index: a new technique for surface water mapping using Landsat imagery. Remote Sensing of Environment 140, 23–35. DOI.
  4. Hedley, J. D., Harborne, A. R. & Mumby, P. J. (2005). Simple and robust removal of sun glint for mapping shallow-water benthos. International Journal of Remote Sensing 26(10), 2107–2112. DOI.
  5. Harmel, T. et al. (2018). Sunglint correction of the MSI Sentinel-2 imagery over inland and sea waters from SWIR bands. Remote Sensing of Environment 204, 308–321. DOI.
  6. Kutser, T., Vahtmäe, E. & Praks, J. (2009). A sun glint correction method for hyperspectral imagery containing areas with non-negligible water leaving NIR signal. Remote Sensing of Environment 113(10), 2267–2274. DOI.
  7. Lyzenga, D. R. (1978). Passive remote sensing techniques for mapping water depth and bottom features. Applied Optics 17(3), 379–383. DOI.
  8. Sagawa, T. et al. (2010). Using bottom surface reflectance to map coastal marine areas: a new application method for Lyzenga's model. International Journal of Remote Sensing 31(12), 3051–3064. DOI.
Implementation note: where the iTSensing operational algorithm is a documented adaptation (especially Harmel-style SWIR and the scene-based Kutser implementation), this page explicitly distinguishes the software implementation from the full method described in the cited paper.