Haze removal for S2 by Sen2Cor?

Hi, everyone,
Nowadays, I am trying to utilize the Sentinel-2 imagery in equatorial regions. The product information normally shows 100% cloud cover, which actually is the existence of the slight haze.
I read the information about atmosphere correction of Sentinel-2 by Sen2Cor (https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-2-msi/level-2a/algorithm). It mentioned “haze removal” is optional choice.

So, my wonder is whether haze removal is processed during the transformation from L1C TOA to L2A BOA data?

It not, could somebody give me some advices? I notice some papers about haze removal were conducted on DN values before atmosphere correction (Makarau, Aliaksei, et al. “Haze detection and removal in remotely sensed multispectral imagery.” IEEE Transactions on Geoscience and Remote Sensing 52.9 (2014): 5895-5905.).
So I am confused how should I do once I get the Sentinel-2 L1C or L2A images.

Thanks for any help

1 Like

Four years later, this question appears to still be relevant. sen2cor 2.9 reports during processing: Haze removal: no. However, there is no mention on how to enable it on the sen2cor manuals mentioned on the product page.

So, @xiuchengyang, it appears to be inactive by default. But how to enable it?

This guide Level-2A Algorithm - Sentinel-2 MSI Technical Guide - Sentinel Online - Sentinel Online

cites the following paper for atmospheric correction / haze removal

in which the authors mention "the calculated haze/cloud/water map is a useful optional output of ATCOR. It is enabled by setting the parameter ihcw = 1

Googling “ihcw sen2cor” leads to this config file:

where line 117 reads self._ihaze = 0

1 Like

Thank you @gbrelstaff. I have set _ihaze to 1, and re-ran sen2cor on two tiles. However, the logs still read Haze removal: no and the image appears to be unchanged from the run without _ihaze = 1.

No effect on sea tile T31UEU, that is not completely unexpected.

I also tried S2A_MSIL1C_20211118T104331_N0301_R008_T31UFT_20211118T124453.SAFE.


Obviously a nice one for the atmospheric correction and would be perfect haze removal (especially in the top of the image).
T31UFT_20211118T104331_PVI

So we are close, but not there yet. I will dive into it later, maybe the setting is overwritten somewhere?

A quick test with Sen2Cor 2.10 learns that haze removal is no longer mentioned in the logs. The _ihaze setting is still there, but ineffective, like in my last experiment with Sen2Cor 2.9.

Guess the feature was silently removed from Sen2Cor?

The NDVi of cultivation until January 14/2022 has a logical sequence after the update of sen2cor v10, the ndvi obtained with the image of Jan 29 and Feb 3 are low.

This discussion requires urgent clarification and I apologize that I see this discussion only today.
Haze removal is an option available in ATCOR and in its version migrated to Python - PACO. It was never implemented in Sen2Cor. It think it was mentioned in the Sen2Cor ATBD from 2012 due to the heritage of Sen2Cor to ATCOR. This Sen2Cor ATBD was written on basis of ATCOR manual. We removed this misleading section on Haze removal in the current Sen2Cor ATBD.

1 Like