Detecting clouds doesn't seem to be much of a problem, rather the challenge is in selecting cloud-shadow classes that don't also include coastal areas, agriculture, etc. For a project I'm working on, I've been using two methods:

Fmask (https://code.google.com/p/fmask/) is powerful and fully automated, plus it works for TM, ETM+, and OLI/TIRS data. It is great at catching harder to detect haze and the majority of other clouds/shadows. The problem I have with it however is that it tends to miss certain cloud types, namely smaller low altitude clouds and their shadows. I played around with the input parameters and found the best success using default values.

My other method is a semi-automated classification. I create NDSI, NDVI, and NDWI for a particular scene, stack those as RGB, and perform unsupervised classification in ERDAS Imagine 2013 (k-means, 10 iterations, 0.95 convergence threshold, and usually 256 classes). After working on several scenes, I preferred to use the stacked indices over classifying individual bands because it took less time and did a slightly better job at separating clouds/shadows from other classes.

In the end, I had fairly good success with detecting and removing clouds by combining these two methods, but ended up losing good data in my classification of cloud-shadows in particular. Has anyone had success in removing shadow areas that they'd like to share, or perhaps some insight into improving my classification process?

1 Answer 1


Two possible solutions:

  1. try using a smaller cloud probability like 12.5 in Fmask
  2. try using the most recent Tmask algorithm that uses the multi-temporal information.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.