Cloud masking
(→Creating cloud shadow mask) |
(→Applying cloud and cloud shadow mask) |
||
Line 48: | Line 48: | ||
* Mark the new created polygon layer in the [[TOC]] and toggle editing [[File:Qgis_vector_edit.png]] of the vector file. Select all polygons using [[File:Qgis_vector_select_all.png|200px]] or press {{button|text=Ctrl + A}}. Activate {{mitem|text=Edit --> Move feature(s)}} [[File:Qgis_vector_move.png]]. Left click on a selected yellow polygon, move the polygon that shadows are completely covered, and confirm with left click. Save your edits and [[File:Qgis_vector_save.png]]and stop editing [[File:Qgis_vector_edit.png]]. | * Mark the new created polygon layer in the [[TOC]] and toggle editing [[File:Qgis_vector_edit.png]] of the vector file. Select all polygons using [[File:Qgis_vector_select_all.png|200px]] or press {{button|text=Ctrl + A}}. Activate {{mitem|text=Edit --> Move feature(s)}} [[File:Qgis_vector_move.png]]. Left click on a selected yellow polygon, move the polygon that shadows are completely covered, and confirm with left click. Save your edits and [[File:Qgis_vector_save.png]]and stop editing [[File:Qgis_vector_edit.png]]. | ||
− | = | + | = Merge cloud and cloud shadow mask = |
* {{mitem|text= Vector --> Data management tools --> Merge vector layers}}. as '''Layer to merge''' select the ''cloud'' and ''cloud_shadow'' polygon layers. {{button|text=Run}}. | * {{mitem|text= Vector --> Data management tools --> Merge vector layers}}. as '''Layer to merge''' select the ''cloud'' and ''cloud_shadow'' polygon layers. {{button|text=Run}}. | ||
[[File:Qgis_vector_merge.png|400px]] | [[File:Qgis_vector_merge.png|400px]] | ||
Line 54: | Line 54: | ||
* {{mitem|text= Vector --> Geoprocessing Tools --> Symmetrical difference}}. Input layers are the image extent and the merged cloud and cloud_shadow polygons. | * {{mitem|text= Vector --> Geoprocessing Tools --> Symmetrical difference}}. Input layers are the image extent and the merged cloud and cloud_shadow polygons. | ||
[[File:Qgis_vector_symdiff.png|400px]] | [[File:Qgis_vector_symdiff.png|400px]] | ||
− | * Apply the output vector layer ''' | + | * Apply the output vector layer '''cloud_cloudshadow''' as mask to the multiband Sentinel-2 image file. {{mitem|text= Raster --> Extraction --> Clip Raster by Mask Layer}}. |
=Graphical Processing Tool Model= | =Graphical Processing Tool Model= |
Revision as of 15:11, 10 November 2020
Contents |
Inspect Sentinel-2 quality indicator data
The exclusion of clouds and cloud shadow is an important processing step which is usually done in an early pre-processing stage. The Sentinel-2 products are annotated with Quality Indicators (QI_DATA).
If you use a Sentinel-2 Level 1C product, you'll find a rough dense cloud and cirrus mask (GML vector format) in the folder QI_DATA with the file name MSK_CLOUDS_B00.gml. The vector attribute column masktype distinguishes two classes: OPAQUE (dense clouds) and CIRRUS.
In case of a Sentinel-2 Level 2A product you may find a file in the folder QI_DATA with the extension _CLD_20m.jp2 (data type: 8bit unsigned integer, spatial resolution 20m) which might be used for masking clouds. Data range is from 0 for high confidence clear sky to 100 for high confidence cloudy (for more details see L2A Product Definition Document).
- Load a multiband Sentinel-2 satellite image (Level 2-A product) Changing Raster Layer Style to display a true color (RGB = B4,B3,B2) and a standard false color composite (RGB = B8,B4,B3)
- Zoom in to a cloudy part of the image and compare the extent of cloud and cloud shadow in both composites. Which composite is better for displaying clouds?
- Overlay the QI Cloud band on top of the color composites. Use the Identify Feature Tool for requesting pixel values of the QI band file inside a cloud. Which values represent clouds?
- Change Render type Singelband pseudocolor
- Interpolation is discrete.
- Choose Color ramp spectral
- Mode is equal with
- Interval Classes is 10 as shown in the screenshot.
- Double click on a color field of some classes {{mitem|text=Layer --> Properties --> Style) to open the change color window. Change the opacity from 100% to 0%. Find the threshold for clouds.
Convert quality indicator band to a binary cloud mask
- Create a binary cloud mask (bitmask) where clouds = 1 and non-clouds = 0. Use the Processing tool OTB --> Image Manipulation --> Band Math. Tick the single band QI layer (_CLD) in the Input Image list list. In the Parameter tab write a conditional ifelse expression using lazy operators.
Type into the Expression field: (im1b1>30)?1:0 If pixel values of band 1 of multiband image 1 are larger than 30 then replace with 1 otherwise replace with 0. Adjusot labels for NoData 3 and undecided 2 he output pixel type is uint8.
- Apply a circular majority filter with a radius of 16 pixels. Open the Processing tool OTB --> Learning --> ClassificationMapRegularization. The input classifcation image is the Output Image of the band math operation step. Adjust the Label for NoData 3 and Undecided 2 class. Structuring element radius is 16 pixels. Output pixel type is uint8.
- Open the Processing tool OTB --> Feature Extraction --> BinaryMorphologicalOperation. Choose the Regularized image as input image. The structuring element type is ball with a X and Y radius of 21 pixels. The morphological operation is dilate. Output pixel type is uin8.
- Convert the Feature Output Imge from raster to vector format. Raster --> Conversion --> Polygonize. Select an output file name for vector polygons in format GPKG.
- Change the display of the output vector polygon layer Layer properties --> Symbology --> Single Symbol --> Simple Fill --> Fill Style from Solid to No Brush. Change the Outline color to bright green and increase the Outline width. As background layer use a Standard False Color Composite (RGB = B8,B$,B3) of the Sentinel-2 image.
- Toggle editing of the resulting vector polygon layer. Activate Select polygons by dragging a box or by single click . select all polygons with attribute DN = 0 and delete them by pressing Del on your keyboard. Save your edits .
Creating cloud shadow mask
- Prepare a False color composite (RGB = B8,B4,B3) of the Sentinel-2 image as background layer in the canvas.
- Right click on the cloud polygon layer in the TOC. Choose Export --> Save features as.... Fill the form as shown below.
- Mark the new created polygon layer in the TOC and toggle editing of the vector file. Select all polygons using or press Ctrl + A. Activate Edit --> Move feature(s) . Left click on a selected yellow polygon, move the polygon that shadows are completely covered, and confirm with left click. Save your edits and and stop editing .
Merge cloud and cloud shadow mask
- Vector --> Data management tools --> Merge vector layers. as Layer to merge select the cloud and cloud_shadow polygon layers. Run.
- Create a polygon with the extent of the Sentinel-2 image: Create image extent polygon.
- Vector --> Geoprocessing Tools --> Symmetrical difference. Input layers are the image extent and the merged cloud and cloud_shadow polygons.
- Apply the output vector layer cloud_cloudshadow as mask to the multiband Sentinel-2 image file. Raster --> Extraction --> Clip Raster by Mask Layer.
Graphical Processing Tool Model
You can use a prepared graphical processing toolbox model. Download the file from Stud.IP:S2cloudDetection.model3.
- Open QGIS and go to the Processing Toolbox; if the Toolbox is not opened click Processing --> Toolbox to activate it. Once the Toolbox is opened go to Models --> Open existing models and load the previously downloaded model.
- The model should appear in the Models tab. Double click on it to execute.
- A window showing the different input and outputs should appear, just as if you were using any other geo-algorithm of the Processing Toolbox.
- You will just need to provide a multispectral Sentinel-2 image file with 10 ordered bands (B2, B3, B4, B5, B6, B7, B8, B8A, B11, B12).