I am trying to map small surface water bodies in a desert. My issue is: water pixels don't cover full extent water bodies (see screenshot attached).
What threshold values would I need so that water bodies are mapped according to their shapes/full contours/full extent? Is it possible to play with thresholds with a slider or using some other method such as a histogram?
The code can be found here.
More about the Gond methodology (taken from Herndon et.al. 2020) here:
Gond and colleagues developed a simple decision tree method using the VEGETATION instrument for identifying water bodies in the Sahel. This method was developed speciﬁcally to address the wide range of water body types and the variation in the surrounding landscape associated with seasonal changes in the region. First, the difference between NDVI and the normalized difference moisture index (NDMI) is calculated and the average is computed using a moving window of 45 pixels-squared. Next, the difference between this average and the original difference is calculated and pixels with a value greater than 0.08 are kept as potential water bodies. Then, a moving average of 45 pixels-squared is calculated for SWIR1 and the difference between the average and the original SWIR1 band is calculated. Pixels with a value of 0.05 or greater are kept as potential water bodies. Finally, the two outputs are combined using an “AND” function, and any pixels that satisfy both are classiﬁed as water. One potential source of error identiﬁed in the original paper is confusion of clouds for water; the authors suggest using a separate cloud mask to address this issue. Additionally, they suggest that this method may not work on water bodies that are large enough to impact the regional average of the moving window average. The Gond simple decision tree does not perform well in areas with dense or moist vegetation because the contrast with water is diminished. This method was developed explicitly for dryland surface water detection.