CFMask derives from the Function of Mask (FMask), an algorithm written in MATLAB at Boston University and translated to C at USGS EROS to facilitate its implementation in a production environment.
CFMask is a multi-pass algorithm that uses decision trees to prospectively label pixels in the scene; it then validates or discards those labels according to scene-wide statistics. It also creates a cloud shadow mask by iteratively estimating cloud heights and projecting them onto the ground.
Users should be aware that, like other cloud algorithms, CFMask may have difficulties over bright targets such as building tops, beaches, snow/ice, sand dunes, and salt lakes. Optically thin clouds will always be challenging to identify and have a higher probability of being omitted by the algorithm. In addition, the algorithm performance has only been validated for cloud detection, and to a lesser extent for cloud shadows. No rigorous evaluation of the snow/ice detection has been performed. More details can be found in the CFMask Algorithm Description Document.
While the CFMask algorithm is designed by default to be run with thermal data, it is possible to employ it without a thermal input. This may be necessary at times, such as when thermal data from Landsat 8 Thermal Infrared Sensor (TIRS) is not immediately available. Currently, non-thermal CFMask is run by removing all thermal threshold tests from the algorithm. Users should be aware that this change does alter the results of the cloud, cloud confidence, cloud shadow, and snow/ice detection routines.
This paper, published in 2017, describes the comparison of the various cloud detection algorithms used for Landsat data products, and provides important information about CFMask: Foga, S., Scaramuzza, P.L., Guo, S., Zhu, Z., Dilley, R.D., Beckmann, T., Schmidt, G.L., Dwyer, J.L., Hughes, M.J., Laue, B. (2017). Cloud detection algorithm comparison and validation for operational Landsat data products. Remote Sensing of Environment, 194, 379-390. http://doi.org/10.1016/j.rse.2017.03.026.
Landsat cloud cover assessment (CCA) validation data can be accessed from the Landsat Cloud Cover Assessment Validation Datasets webpage.