Object-based classification (Tutorial)

From AWF-Wiki
(Difference between revisions)
Jump to: navigation, search
(Preparation of training data)
(Training phase)
Line 43: Line 43:
  
 
==Training phase==
 
==Training phase==
 +
[[File:qgis_otb_trainvector.jpg]|400px]
 +
 
==Classification phase==
 
==Classification phase==
 
=Object-based image analysis (OBIA) with OTB standalone=  
 
=Object-based image analysis (OBIA) with OTB standalone=  

Revision as of 11:53, 7 July 2019

Contents

Preparation of training data

  • Create a dense regular point grid Vector --> Research tools --> Regular points... with the extent of the multispectral image and a point spacing of 200 meters.
  • Install the Point sampling plugin.
  • Extract the landcover class from an existing thematic classifcation map using the Point Sampling Tool.

Qgis point sampling.png.

  • Select 50 points in each class stratified sampling with equal allocation: Vector --> Resarch tools --> Random section within subsets....

Qgis random selection.png.

  • Rename the class field name to C_ID and change the datatype to int using Processing --> Vector table --> Refactor field.
  • Join the Land use/cover (LUC) class attribute of the selected regular points with the segments (output of Feature extraction). Vector --> Data Management Tools --> Join Attributes by Location ....

Qgis joinLayer.png

  • Interpret the C_ID class by visual interpretation of Google satellite as reference.

Object-based image analysis (OBIA) with QGIS and OTB processing plugin

Segmentation

  • In the search engine of Processing Toolbox, type segmentation and double click Segmentation.
  • Set Segmentation algorithm to meanshift
  • Select the input image: Subset_S2A_MSIL2A_20170619T_MUL.tif (data type uint 16bits).
  • The Range radius value can be set to 600. The optimal value depends on datatype dynamic range of the input image and requires experimental trials for the specific classifcation objectives.
  • Set Minimum Region size (in pixels) to 25.
  • Processing mode Vector
  • Set the Mask image to blank (top of dro-down list).
  • The Minimum Segment size (in pixels) can be set to 25 depending on minimum mapping size.
  • Check 8-neighborhood connectivity on.
  • Change Output pixel type to uint32.
  • Name the Output vector file e.g. lucc_meanshift_seg.shp.
  • Define the Output labeled image as lucc_meanshift_seg.tif.
  • Click Run.

Qgis otb segmentation.png

  • Evaluate the segmentation results: Load the output vector file lucc_meanshift_seg.shp into QGIS on top of the image Subset_S2A_MSIL2A_20170619T_Mul.tif

Mark the vector layer in the Qgis Layers window. Layer --> Properties --> Symbology --> Simple Fill, Fill Style: No Brush and Stroke color:white.

Feature extraction

  • In the search engine of Processing Toolbox, type zonal and double click Zonal Statistics.
  • Select the Raster layer: Subset_S2A_MSIL2A_20170619T_MUL.tif .
  • Set Raster band Band 01.
  • The vector layer containing zones is the result from Segmentation: lucc_meanshift_seg.tif.
  • Change output column prefix to the original Sentinel-2 band name: B1
  • In the list Statistics to calculate just check two measures: Mean and Std. dev..
  • Click Run.

Qgis zonal stats.png

  • Repeat the procedure for bands 02, 03 and 07.
  • Open the attribut table of vector layer lucc_meanshift_seg.tif containing now statistics for each zone or segment.

Training phase

[[File:qgis_otb_trainvector.jpg]|400px]

Classification phase

Object-based image analysis (OBIA) with OTB standalone

Segmentation

  • Type into the search box of the Windows taskbar: mapla.bat. Click on mapla.bat to open Monteverdi Application Launcher.
  • In the search engine of mapla, type Meanshift and double click LargeScaleMeanshift.
  • Select the input image: Subset_S2A_MSIL2A_20170619T_MUL.tif (datatype uint 16bits).
  • The Range radius value can be set to 600. The optimal value depends on datatype dynamic range of the input image and requires experimental trials for the specific classifcation objectives.
  • The value for Minimum Segment size (in pixels) can be set to 10. It depends on the size of the minimum mapping unit and the smallest object that can be destinguished.
  • Leave all other configurations as they are and click Run. Have a look on the resulting filtered and spatial images.
  • The Output GIS vector file is specified as a shapefile with the extension *.shp.
  • Click Execute.

Otb segmentation.png

  • Evaluate the segmentation results:

Load the output vector file into QGIS on top of the image Subset_S2A_MSIL2A_20170619T_Mul.tif Mark the vector layer in the Qgis Layers window. Layer --> Properties --> Symbology --> Simple Fill to No Brush and Stroke color to white.

info.png Info
For more detailed information on the SVM algorithm visit the LibSVM website

Training phase

  • In the search engine of mapla, type Train and double click TrainVectorClassifier.
  • Name of the input shapefile is training_input_OBIA.shp.
  • Output model filename is SVM_OBIA.model
  • In the list Field names for training featrues mark the columns meanB0, meanB1, meanB2, .. meanB9 shift left+ click.
  • The name ofField containing the class id for supervision" is C_ID.Execute.
  • Classifier to use for training: LibSVM Linear
  • Parameters optimization is ON.

Qgis otb trainVectorClassifier.png

Feature extraction

Classification phase

  • In the search engine of mapla, type Vector and double click VectorClassifier.
  • Name of the input vector data is lab10_segments.shp.
  • Name of the input model file is SVM_OBIA.model.
  • Mark in the list Field names to be calculated the same features as for training!
  • Specify the Output vector file. Execute

Qgis otb vectorClassifier.png

Validation phase

Personal tools
Namespaces

Variants
Actions
Navigation
Development
Toolbox
Print/export