Improvement of Cloud and Shadow detection!?


First, can someone tell me, is there going to be some better cloud mask and shadow detection provided by ESA. I heard that They will use new algorithm for cloud and shadow detection using multi-temporal data (now is just on one image).

Second, is there someone use some other programs and can suggest some for clod and shadow detection. I was found sam FMask algorithm provided by ENVI I think, but I couldn’t set to work.

Suggestions, help?


Hi Milutinke,


As far as I know, the only multi-temporal method for detecting clouds and shadows applicable to Sentinel-2 is included within MACCS ( I am in charge of MACCS methods :wink: ). You’ll find here some comparisons with sen2cor cloud masks. Without being perfect, I think it brings some improvement.

Now about MACCS status : MACCS has been developped by CNES and CESBIO, and CNES made the choice to distribute products rather than the processor. Starting from end of September, the THEIA land data center within CNES will distribute Sentinel2 L2A data over France on . More regions will be added later on when the last bugs we have are corrected. Here is the map of the regions which will be processed. These regions where chosen after a call for proposal to French user community.

It is however likely your ROI is not included in the above map, as the regions processed by Theia cover less than 5% of the world land surfaces, even if it is already a lot to process. If it is the case, please note that MACCS will be integrated into the Sentinel-2 for Agriculture system (Sen2Agri), which will be released next May. You will then be able to process the data, but the system will only run on a RedHat7/centOS7 linux system . However it should be possible to mange with a virtual machine.

ESA and EU intend to distribute L2A products all over the globe and not only L1C. They are going to start shortly the process of selecting which method to implement. This study will already take a year. Then they will have to integrate the selected one to their environment and validate and start producing. I guess it will take some time.


Finally, FMask is a method developed by Zhu and Woodcock for LANDSAT 8 which provides good results. The same authors adapted it to Sentinel-2 recently. However, Sentinel-2 lacks thermal infrared bands, and as a result Fmask results for Sentinel-2 are not as good as for LANDSAT8. Here is a link to a python implementation of Fmask.

Best regards,


Hi Oliveier,

Thanks for reply.

First, I already read some of Your paper (A multi-temporal method for cloud detection, applied to FORMOSAT-2, VENµS, LANDSAT and SENTINEL-2 images) for multi-temporal cloud detection. You are using some reference image (without cloud), and then on condition of blue band and infrared band You extract clouds.
I implemented your condition in my script to create binary mask, and added shadow detection (on my own, looked for some conditions).
I couldn’t implement iterative method for finding first reference image, so I cheated. Because I need just for couple of tiles, I found on my own some image without the clouds.

For detection of clouds, Your conditions are not bad, but I have a problem with shadows.
I tried with some of my conditions (and it works solid), but can you tell me, where I can read, or how to do, shadow detection based on clouds.
To calculate shadow position if I know satelite position and position of cloudy pixel.

Also before I asked this question, I found out FMask, but I couldn’t create mask image, I always get some error :confused:

Thank you very much. I am also using your python sentinel api download (with a little modifications).

Cool to see what I write is useful, thanks !

It is true that in that paper, i did not much detail the shadow detection method.
I gave more details there, but you’ll probably be lacking the formulas to compute from the viewing angles.

I’ll try to write another paper post soon about that.