i want to perform supervised classification to extract flood extents from sentinel 1 imagery. is there a detailed tutorial or manual on how to perform it? i will be thankful if somebody could provide me some guidance as i have never worked with radar images before
Here is an UNSUPERVISED classification using Sentinel-1 for flood mapping :
For the supervised part, you will need to digitize areas to create training sets. Then, you use these training sets to export signatures to use in your classification model. I never did supervised classification with snap. Maybe some one can help for practical consideration.
Also, if you never worked with radar images, I STRONGLY recommend to study a bit what is a radar image, what it is made of, what is the speckle and so on. If you want just to have some feeling about it, you can follow the ECHOES IN SPACE tutorial on radar remote sensing : https://eo-college.org/courses/echoes-in-space/
thanks @qglaude although i have already performed unsupervised classification and during that and before that i have learnt a lot about radar imageries but still i will learn more about its details. this presentation helped me a lot in learning the theories related to radar imageries. https://earth.esa.int/landtraining07/D1LA1-LeToan.pdf
However , i am not sure for the supervised part how the steps will be carried out in software. For instance, as Radar images are black and white so how can one distinguish training sets clearly and then make signatures from them? what tools should be used for making them and then performing the actual classification?
Because SAR images are “black and white” doesn’t mean you only have one band. After reading theory, you will see that a lot of info can be used for classification. You can take advantage of polarization of images, but also coherence for example. I let you back with SAR theory for it
For the tools, as I said, I don’t use SNAP for classification but I’m sure you will find in the search bar of the forum some topics that already discussed it (probably more with sentinel-2 but it is not fundamentally different)
I know that in some cases (such as classifying trees species or agriculture areas) SAR data might not be the best option due to the fact the micorwave radiation is very sensitive to surface roughness and when interacts with objects such as trees and houses the backscatter signature is very similar and that leads to classification errors.
There are ways where you can improve the classification accuracy using SAR data. Some ideas are described below:
Use dual-polarization datasuch as SENTINEL-1. the more bands involved in a classification problem, the more accurate results we can get.
Perform texture analysis (GLCM). Different features have different textures. Sometimes, looking only at a SAR image is hard to detect different features. When looking at their texture, then the interpretation of each feature improves.
Combination of optical and SAR data. This is a good choice if you want to achieve an accurate classification.
The more layers are available, the better. Hence, you can combine the following layers:
- SAR dual-pol data
- Optical data
- Texture analysis
If you want guidance on how to perform supervised classification, you can have a look at the following posts:
- Forest species classification
- Rndom forest classification steps
- Supervised and unsupervised classification, Sentinel 2
I hope that helps
@johngan. thanks for such a detailed response. so i can’t use optical data as i am working on floods and the imagery is mostly covered with clouds.
for the dual polarization stratgey i have the product but previous researches suggest that for better flood extraction results VV is better than VH. so i guess this one’s down too.
i am not sure about the GLCM. should i just intreprent different objects and make training data from it. i know there is a tool for GLCM but how should i use it in this scenario? what would be the best way for me to move forward?
if you are just interested in the flood areas why don’t you just work with thresholds and make a binary image?
I don’t think image texture will help much in this case as water is alreay quite easy to identify. You could however try to filter your image so that black water areas become more homogenous.
Also consider conversion to db as this inceases contrasts in dark areas and might help to find a more suitable threshold between land and water pixels.
Have a look at these topics, play around with the histograms (use only small areas) and try if you find a suitable threshold in the band maths:
- How to determine appropriate threshold for flood detection (Sentinel 1)
- How to get flood mapping with high accuracy?
- Flood Map using GRD
- Preprocessing and Thresholding for Extracting Water
Also a very good tutorial: http://www.un-spider.org/advisory-support/recommended-practices/recommended-practice-flood-mapping
@ABraun. i have already tried that and gone through the tutorial you just shred but the results are not that accurate also one has to estimate the threshold which in the long run is not suitable for me as i want to perform classification for better accuracy and then automate the whole process through ML
As @ABraun stated, in terms of identifying flooded areas, a defined threshold is enough to extract the flood extend from your image. I do not think its necessary to apply machine learning logarithms for extracting flood extend.
Machine learning algorithms are a powerful tool for dealing with multi-classification problems. When it comes to binary classification (as in your case) a simpler approach (threholding) is sufficient.
Classification and automation are hard to bring into one approach. That would mean that you develop one classifier that works on any input image. This requires very careful calibration of your images as subtle changes in your SAR backscatter might lead to misclassifications. This is especially the case for image textures as they are very sensitive to pixel resolution, scattering mechanism and incidence angle.
Additionally, Minimum Distance or Maximum Likelihood classifiers sometimes fail for radar images in power scale (after calibration, mainly 0-1, but also way above for corner reflection or volume scattering). Therefore, conversion to db scale is advisable because it results in a more gaussian distribution of your values.
They work well with few input data as long as they are of the same unit (Sigma0, for example). As soon as you introduce data of different scaling (e.g textures) these two classifiers work no longer as the input data have different value ranges which ill-conditiones these classifiers.
In turn, the Random Forest classifier can handle data of different input value ranges (e.g. SAR, optical and texture information) but it requires a high number of training input. That means you need
- large training areas: The standard configuration is 5000 pixels per run, so you would need areas larger than that so the randomization of training pixels is effective. Otherwise you always train on the same pixels and the principle of the RF classifier is missed.
- a high number of input rasters: Each run takes the square root of the number of input rasters for training, e.g 3 out of 9, 4 out of 16 and so on. Otherwise your model is trained multiple times on the same input rasters - again, missing the strenght and requirements for the RF model to be effective.
I agree with @johngan: If it comes to automation of flooded areas, band math conditions on few input rasters are way more stable and promising.
Have you considered multi-criteria statements? For example:
IF Sigma0_VV < 0.001 AND Sigma0_VH_db < -20 THEN 1 ELSE 0
If you have dual-polarized data you could use both VV and VH as well as their log-scaled representations. That gives you 4 bands to define your conditions. That should leave you enough flexibility for a detection of high accuracy.
Or derive a median-filtered image (right-click > filter image) of 5x5 pixels to smooth out the black water areas and to reduce small isolated black pixels on land.