Atmospheric correction above water surface

Thanks you all for your quick answers.

I had already tried acolite but the results were fully incomplet. After reading your post and acolite forum, I realized that atmospheric correction has to be processed after sun glint removal. And, tell me if I’m wrong but, in case of Sentinel sun glint should be removed separately for each detector footprint. Then I should extract footprints from gml files.

However, I’ve just discovered on your blog (Ohagolle) the L2 Sentinel products processed by Theia with MAJA processor. Do you know if this processor provide suitable results overs coastal water ? Knowing that my zone of interest goes from coasts to reefs which can be up to 15 or 20 kilometers away.

Hi Selam,
yes, over coastal waters, Sunglint should be removed, using the exact geometric condition for each detector. Sentinel-2 data contain all the necessary information to fin the angle values for each pixel, even if it is a bit complicated.

MAJA processor is a land atmospheric correction processor. It does not correct for sunglint, and regarding the atmosphere, only propagates the aerosol content it finds over land. Although a few users have had decent results on coastal regions and lakes, 15 to 20 kilometres is probably too much.

Best regards,

Dear Oliver and Selam,
Actually the paper on the sunglint correction for Sentinel-2 is under revision.
I just added the poster describing the method here:

All the best,

1 Like


Here is some news.

I finaly applied the sun glint removal technique from this paper The process seems easier but it is also the one used in the sen2coral toolbox of snap with sentinel 2 imagery (However it does not work on my Snap …).

It consist of extracting a sample area displaying range of sun glint in homogeneous water such as deep water. A linear regression is computed between each bands to correct and one NIR band. Lastly a minimum NIR value is extrated from the sample. Correction is then processed as followed :
R’_i = R_i - b_i*(R_nir - Min_R_nir)
with R’_i, the corrected pixel in band i, R_i the pixel to be corrected in band i, b_i the slope of regression between NIR and band i, R_nir the near-infrared signal of the pixel, and Min_R_nir the minimun of the near infrared signal over the extracted sample.

In my case I computed a separated regression for each detector footprint but choose the global Min_R_nir over all samples(one per footprint) in order to obtain same range of intensity.
Results are pretty good regarding the sun glint removal :

However the detectors footprints are still visible:

The difference are slight but big enough to expect statistical difference between the footprint which risk to be problematic for the next parts of my work(involving classifications).

The red component seems to be the more distingish diffenrence between footprints so I took a look on the regressions :

Indeed, regressions of Red band over NIR band shows the lowest coefficients of determination(despite the fact that their wavelength are the closest …).

At the end, I’m asking myself if the specular reflection behaving differently due to the detectors angles is the only cause responsible for detector footprints difference. I imagine that each detectors are undergoing instrumental noise. Is this noise corrected ?

Are you finally applying the sunglint method before or after sen2cor? Have you tried Acolite after the sunglint correction?

Hello Selam,
Regarding the method described in Hedley et al. 2005, you could get better results by applying the regression calculation for a given subset of each detector footprint. The subset should be spatially homogeneous in terms of water-leaving signal but as heterogeneous as possible in terms of sunglint “contamination” (including glint-free pixels).
Another issue comes from the change in viewing geometry from one band to another. To have the full info on angles you can use the code provided by
The difference you observed along the two footprints could be simply due to differences in the viewing geometries implying changes in the measured atmospheric radiance and sky reflection on surface.

So there is no need of Sen2cor apply after C2RCC process?

No, the data is already corrected for atmospheric effects in this case.

Does this processor include sun glint removal? If not, what would you suggest?

I think you should try Sen2Coral Processing module

The paper is now available:


Hi all

I was wondering if there has been any improvement in the availability of a method for Atmospheric/Sun glint Correction of Sentinel 2 products for ocean monitoring applications. I would welcome if Harmel can share how to implement the Algorithm he and his colleagues published recently. So far, researchers who pursue the use of Sentinel 2 for Ocean applications I feel we are a bit stuck with this issue. I have tried Sen2Cor, Polymer and C2CRCC processor, but the radiometric diferences between detectors are still visible, thus limiting the use of classification algorithms over ocean ecosystems. I would welcome advice in this matter.

1 Like

So you wouldn t suggest to use sen2cor with coastal areas? I am interesting in cacluating harmful algaal blooms.

Also in some areas and in bands like B4 you can see having the sane value reflectance over the coastal areas (attaching image). Does that make any sense?

Actually, the image looks like a land-water mask. It does not seem to be a reflectance band.

Actually i corrected using the sen2cor tool and then masked the land. As a result the image is the coastal zone.
You can see that a very big part of the image has the same value in B4 0.0001. Attaching the parameters of sen2cor.

sen2cor.xml (1.1 KB)

Any ideas why is that?

Giannis how did you install the sen2cor. I have been trying for ages now but it seems not to work. am trying to perform some classification using sen-2 but I have been getting errors…in fact it does not work so I want to pre-process to check if it would work. any help would be appreciated

I used tools ->plugins and then installed installed from there sen2cor with snap 6.0.0. Genneraly one other choice is to use the standalone version. Did you manage to install it ? If not where you had a issue?

Hi Tristan,
Thanks for posting a link to your publication and your insights on this post. In your article you discussed the potential for making your sun glint correction algorithm operational - has there been any progress on this? For those of us that don’t have time to implement the algorithm you recently published, would you suggest applying the method of Hedley et al?

Hi Courtney,
We are working now to link an aerosol estimator with the sunglint correction. Once done, we’ll properly consider to make the full algo operational for data distitribution.
In the meanwhile, I can process a few tiles you’re interested in. The algo from Harmel et al, 2018 corrects for atmosphere radiation, sky reflection and sunglint to get the normalized water-leaving radiances (Lwn) or Rrs. I think the Hedley method can produce very nice sunglint removal but needs to be completed with a proper atmospheric correction to get Lwn.

1 Like

Hi Tristan,
Thanks for your reply and I am happy to hear that you are working on an operational tool that corrects for both sun glint and atmospheric radiation - I’m sure there are many who are interested in this. If you could process a couple tiles for me I would greatly appreciate it. Before your tool becomes operational my plan is to implement Hedley’s method for sun glint and then use the iCOR tool for atmospheric correction (as well as adjacency correction). I’m interested to compare how well this works compared with your algorithm. Here is a link to some raw sentinel images over my area of interest. I am interested in the lake that is split between the two tiles, which is affected by sun glint in these images.