Atmospheric and Glint Correction of Sentinel-2 Imagery for Marine and Coastal Machine Learning

Rachel Keay
UK Hydrographic Office
6 min readNov 4, 2020
Photo by Kushagra Kevat on Unsplash

The UK Hydrographic Office Data Science team research and develop machine learning for coastal and marine habitat mapping from satellite imagery. We mostly work with European Space Agency Sentinel-2 Level-1C satellite data, which is downloaded as radiometrically and geometrically corrected top-of-atmosphere (TOA) imagery.

TOA imagery has some issues:

  • a certain ‘haziness’ is mostly caused by molecular and aerosol scattering in the atmosphere, meaning that TOA imagery contains a lot of Remote Sensing Reflectances (Rrs) values incorporating the atmosphere rather than solely land or water surface Rrs.
  • the ‘adjacency effect’: when high radiance values from one pixel are incorporated into another, resulting in reduced contrast making it difficult to discriminate between surface pixels. This effect is common in nearshore waters [1, 5].
  • and pixels of water surfaces experience an effect called sun glint: when light is directly reflected toward a satellite sensor, resulting in bright white pixels. Sun glint intensity is a function of image resolution, wave size and orientation, solar elevation and image obliquity.

Atmospheric correction (AC) refers to the process of removing contributions of atmospheric scattering and sun glint [2]. We need to perform AC for retrieval of correct representations of land and water Rrs to input into training and testing our marine and coastal habitat machine learning models. Therefore, my aim is to explore and compare the suitability of popular AC/sun glint algorithms using unsupervised k-means clustering. Clustering is a common exploratory data analysis technique used to visualise and gain intuition about the structure of the data. It is expected that if there is still noise from the atmosphere and sun glint in corrected imagery, I will be able to visualise and assess the extent of it from the clustering output.

I have selected three AC algorithms:

  1. European Space Agency (ESA) Sen2Cor (version 2.8) [3]: an algorithm designed specifically for Sentinel-2 imagery that uses scene classification data and LibRadtran radiance transfer model look-up tables for AC. Sen2Cor uses land pixels to derive parameters for corrections, and therefore may not always be suitable for water-based applications [1] but is tested because it is ESA’s default atmospheric correction.
  2. Chavez’s Dark Object Subtraction (DOS) [4]: a simple correction that assumes that within an image some pixels should have a value of zero. DOS is performed by subtracting the relative minimum pixel value in each band.
  3. The Royal Belgian Institute of Natural Sciences (RBINS) ACOLITE (version 20190326.0) [5]: a processor designed for Landsat and Sentinel-2 imagery for coastal and inland water applications. ACOLITE is served up as a python package that works using a GUI or CLI. ACOLITE performs Rayleigh scattering correction using the 6S radiative transfer model and the dynamic dark spectrum filtering (DSF) method for aerosol correction. DSF is known to largely avoid amplification of glint and adjacency effects in the AC [7].

And two sun glint correction algorithms:

  1. Hedley et al 2005 [6]: a popular glint removal algorithm that assumes brightness over water surfaces in the near-infrared (NIR) band is sun glint and that sun glint in the visible light bands are linearly related; the NIR brightness is used to ascertain how much to reduce the values in each visible band, which will remove sun glint from the image.
  2. ACOLITE glint correction [7]: Glint correction assumes a zero water-leaving reflectance in either the short-wave infrared band (SWIR) or the NIR band and is computed for other bands using the Fresnel reflectance at the water surface look-up-tables [7].

The atmospheric/glint corrections are performed on an area of interest over east Tortola, British Virgin Islands, Caribbean. The Sentinel-2 Level-1C image is atmospherically/glint corrected, clipped to the limits over east Tortola and land/cloud masking performed using a simple thresholding technique. Finally, a 5-class unsupervised k-means clustering is performed on each AC/glint corrected image.

Image by ESA Sentinel-2 imagery and UK Hydrographic Office © Crown copyright 2020 UK Hydrographic Office

Performing AC aims to reduce haziness in the image and provide greater contrast of surface and water Rrs. Observations of the AC images and histograms above are as follows:

  • the DOS and ACOLITE DSF AC images appear darker and RGB histograms have lower values compared to the original image.
  • the Sen2Cor image, RGB histogram and k-means output is very similar to the original image.
  • the DOS and ACOLITE DSF k-means images show an increase in the dark blue class (representing dark pixels), while the salt and pepper effect of the green class (representing light pixels) reduces.

DOS and ACOLITE DSF AC results in better removal of haziness as shown by the decrease in the lighter pixels. This improves the distinction of light pixels near-shore and dark pixels in deep-water locations, which can be interpreted as the successfully correction of scattering in the atmosphere.

Image provided by UK Hydrographic Office © Crown copyright 2020 UK Hydrographic Office

Hedley et al sun glint correction is performed on the DOS and Sen2Cor images and requires pixels over deep water to calibrate the AC. To perform ACOLITE AC with glint correction the user setting glint_correction is set as True, glint_force_band is set to 1600 (short-wave infrared) and I experimented with the glint_mask_rhos_threshold (default 0.05). Observations of the glint corrected images and histograms above are as follows:

  • The DOS and Sen2Cor with Hedley glint correction removes some but not all sun glint as shown by the turquoise class in the deep-water locations.
  • The ACOLITE DSF with glint removal does a good job of removing glint over water, although some pixels appear so dark they are classed as the land class. There also appears better defined near-shore class clusters as shown by the turquoise and green class.
  • The ACOLITE DSF glint correction with a threshold of 0.05 (default) identified some cirrus cloud (shown in the north-west of the image that was missed from masking) and some bright shallow water areas as glint, as shown by the dark brown class.
  • The ACOLITE DSF glint correction with a threshold of 0.07 removed more glint in the deeper water and did not identify as much cirrus cloud nor shallow water as glint compared to threshold of 0.05.

The ACOLITE DSF glint correction with threshold 0.07 appears to outperform the other glint corrections. The ACOLITE DSF glint correction when set at a lower threshold (0.05) mistakenly identified some cirrus cloud for glint which had been missed from masking, which is useful information to improve the masking algorithm.

By assessing the impact of AC and glint correction algorithms on the structure of the image data this study can inform algorithmic decision-making for marine and coastal habitat mapping. Machine learning is data driven and the final model will only be as good or bad as the data that goes into is. Improvements to this work include comparison to other high regarded AC algorithms (e.g. C2RCC, Polymer) and statistical analysis. A robust statistical analysis of how effective AC would require ground truth Rrs values, collected using a hand-held or shipborne spectrometer, to compare and evaluate AC and glint corrected pixels to.

For any future ACOLITE users out there, I found a lot of useful information about ACOLITE in the forum: https://odnature.naturalsciences.be/remsem/acolite-forum/ and User Manual https://odnature.naturalsciences.be/downloads/remsem/acolite/acolite_manual_20190326.0.pdf

And a big thank you to Scottkaczor for contributing to this work!

References

[1] Warren, M., Simis, S., Martinez-Vicente, V., et al. (2019). Assessment of atmospheric correction algorithms for the Sentinel-2A MultiSpectral Imager over coastal and inland waters. Remote Sens. Environ. 225, 267–289.

[2] Mobley, C. (2020). The Atmospheric Correction Problem. https://oceanopticsbook.info/view/remote-sensing/the-atmospheric-correction-problem

[3] ESA. (2019). Sen2cor Configuration and User Manual. http://step.esa.int/thirdparties/sen2cor/2.8.0/docs/S2-PDGS-MPC-L2A-SUM-V2.8.pdf

[4] Chavez, P. S. (1988). An Improved Dark-Object Subtraction Technique for Atmospheric Scattering Correction of Multispectral Data. Remote Sensing of Environment, vol. 24, pp. 450–479.

[5] Royal Belgian Institute of Natural Sciences. (2020). OD Nature Remote Sensing and Ecosystem Modelling team. https://odnature.naturalsciences.be/remsem/software-and-data/acolite

[6] Hedley, J. D., Harborne, A. R., Mumby, P. J. (2005). Simple and robust removal of sun glint for mapping shallow-water benthos. Int. J. Remote Sens., 26 (10), pp. 2107–2112.

[7] Vanhellemont, Q. (2019). Adaptation of the dark spectrum fitting atmospheric correction for aquatic applications of the Landsat and Sentinel-2 archives. Remote Sensing of Environment 225, 175–192.

--

--