Sen2cor, intensity differences between adjacent tiles of same acquisition

Similar to the question by @geosgoos, I noticed a color difference between Sentinel-2 L2A imagery.

For example, the overlap between S2B_MSIL2A_20210530T104619_N0300_R051_T31UEV_20210530T125536 and S2B_MSIL2A_20210530T104619_N0300_R051_T31UFU_20210530T125536 (both downloaded from SciHub) shown here by their 10m TCI image.


This is not due to a difference in stretching in QGIS, the pixel values are different. The difference is the same in the 20m and 60m versions.

The difference is in the individual bands as well, as can be seen here in band 2. The viridis colorramp is fixed between 0 and 3127 for both images.

The difference is not in the L1C data (S2B_MSIL1C_20210530T104619_N0300_R051_T31UFU_20210530T115735.SAFE and S2B_MSIL1C_20210530T104619_N0300_R051_T31UEV_20210530T115735.SAFE), again viridis fixed to 0-4880 for both images.

So the mismatch/error must be introduced by sen2cor. It is not BDRF, that is disabled in both. It is not the Cirrus correction, as that should only be applied to 20m and 60m resolutions (as far as I know). The aerosol type (LUT) is the same for both images. The PHYSICAL_GAINS values are the same for both images.

Any clue on where this effect is coming from?

1 Like

Your question, I think, contains a typo since the first 2 products cite are identical - and so not ‘overlapping’.
NOW FIXED - Thanks

Thank you for noticing. Indeed, it should be S2B_MSIL2A_20210530T104619_N0300_R051_T31UEV_20210530T125536 and S2B_MSIL2A_20210530T104619_N0300_R051_T31UFU_20210530T125536. I have fixed the opening post.

Take a look at the 4 tiles (TCI) below

Tile T31UEV (top-left) is entirely over sea
Tile T31UFU (bot-right ) covers much land.
The L2A product is calibrated for land use applications - not sea-use.
In particular pre-designated dark objects are used as ground truth - which are not present in the sea.

So expect the T31UFU to be a better representation of the truth than T31UEV

Thank you for this important hint, @gbrelstaff.

Initially I suspected the unavailability of the DEM over marine surfaces. On the terminal, sen2cor reports: Sen2Cor (rugged terrain). Interesting that the Netherlands are rugged terrain, but okay. For the darkser (sea) tiles this message is followed by Quasi-flat terrain (slopes below 6 degrees and max height difference below 300 m). However, a quick experiment showed that the difference remained when reprocessing the tiles without a DEM.

However, as you indicated, the difference is due to the lack of dark pixels. Due to the lack of dark pixels, the visibility (<Visibility>) parameter from the GIPP is not optimized, while it is for the other tiles. Set <VIS_Update_Mode>0</VIS_Update_Mode> to fix the value for all products.

In this case I am trying to get an appealing visualisation. However, this is important to consider the difference between tiles in overlapping areas if one merges tiles to analyze a larger region.

Probably good news, the release notes of Sen2Cor 2.10 mention this issue, and the mitigation measures introduced in 2.10:

Improvement of Atmospheric Correction: In case of missing dark dense vegetation pixels (areas like deserts, snowy or ice landscapes, water only regions) to perform the aerosol estimation retrieval, Sen2Cor can use aerosol estimate from meteorological CAMS auxiliary data (read from L1C AUX_DATA), leading to a more consistent aerosols correction over the complete datastrip.

2 Likes