The cloud shadows are dark and, of course, they are due the presence of a nearby cloud.

Apart from these facts, there is not much information to detect clouds, and for this reason, the cloud shadows are even more difficult to detect than the clouds themselves.

The shadows are not the only dark objects, and cloud shadows can be confused with plots of bare soil, with water bodies or with shadows cast by the terrain. Again, using multi-temporal methods can reduce the risk of confusion : here the algorithm must detect a sudden darkening of a pixel. However, the effect of plowing, rainfall or irrigation on a bare soil may be similar to the effect of a cloud shadow.

To be sure that the pixels that suddenly darkened are true cloud shadows, it is useful to check that the shadow matches the cloud that casted it.

In our processor, we do as follows :

1. Cloud detection2. Compute the difference between the processed image and a previous image (using the red spectral band)3. For an altitude between 500m and 10000m :

  • compute the cloud shadow projection for this altitude.
  • compute the average darkening for this altitude from the diference image obtained at step 2.

4. Find the altitude for which the darkening is maximal5. Compute the shadow mask from the cloud mask, for the altitude obtained at step 4.

However, one has to pay attention that some clouds, outside the image may cast shadows within the image. As the clouds may reach 5 to 10 km altitude, and the solar elevation may be low in winter, some shadows  in a large par of the image near the borders mays be missed. With this regard, the larger the image the better. This will be the case with sentinel 2.


2 thoughts on “The detection of cloud shadows : how it works.

  1. Dear Olivier,
    Thank you so much for this nicely written information about cloud shadow. I am using Worldviewdata and I have created my cloud mask and generated shadow pixels by using spectral indices. But tehre are so many other vegetation shadows also included in this shadow class. I tried to eliminate them by using area or othe image processing method but they are not completely going or decreasing the accuracy of my cloud shadow clusters. So I really would like to implement this method. Do you have this cod available in your github or other sites? I would appeciate a lot if you could kindly share the code for cloud shadow detection for Sentinel, then I can convert it for WV3.. Kind Regards,

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.