Object-based supervised classification

From AWF-Wiki
(Difference between revisions)
Jump to: navigation, search
(Classification phase)
Line 56: Line 56:
  
 
Load the output vector file manually into QGIS. {{mitem|text=Layer --> Layer properties --> Symbology > Style --> Load style...}}. Open the same QGIS style file which is already in use for the training data: {{typed|text=lucc_training_obia.qml}}.
 
Load the output vector file manually into QGIS. {{mitem|text=Layer --> Layer properties --> Symbology > Style --> Load style...}}. Open the same QGIS style file which is already in use for the training data: {{typed|text=lucc_training_obia.qml}}.
 
=Object-based image analysis (OBIA) with OTB standalone=
 
==Segmentation==
 
* Type into the search box of the Windows taskbar: {{typed|text=mapla.bat}}. Click on mapla.bat to open  Monteverdi Application Launcher.
 
* In the search engine of mapla, type {{typed|text=Segmentation}} and double click '''Segmentation'''.
 
* Select the input image: '''Subset_S2A_MSIL2A_20170619T_MUL.tif ''' (datatype uint 16bits).
 
* The {{button|text=Range radius}} value can be set to {{typed|text=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 {{button|text=Minimum Segment size}} (in pixels) can be set to {{typed|text=25}}. 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 {{button|text=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 {{button|text=Execute}}.
 
[[File:otb_segmentation.png|500px]]
 
* 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. {{mitem|text=Layer --> Properties --> Symbology  --> Simple Fill}} to ''No Brush'' and {{mitem|text=Stroke color}} to ''white''.
 
{{info|message=Info|text=For more detailed information on the SVM algorithm visit the [http://www.csie.ntu.edu.tw/~cjlin/libsvm/ LibSVM website]}}
 
 
==Feature extraction==
 
* In the search engine of Processing Toolbox, type {{typed|text=zonal}} and double click '''Zonal Statistics'''.
 
* Select the Raster layer: '''Subset_S2A_MSIL2A_20170619T_MUL.tif '''.
 
* Set Raster band  {{button|text=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: {{typed|text=B1}}
 
* In the list Statistics to calculate just check two measures: '''Mean''' and '''Std. dev.'''.
 
* Click {{button|text=Run}}.
 
[[File:qgis_zonal_stats.png|400px]]
 
* Repeat the procedure for bands 02, 03, 04, 05, 06, 07, 08, 09 and 10.
 
* Open the attribute table of vector layer '''lucc_meanshift_seg.tif''' containing now statistics for each zone or segment.
 
 
==Training phase==
 
* In the search engine of mapla, type {{typed|text=Train}} and double click '''TrainVectorClassifier'''.
 
* ''Name of the input shapefile'' is {{button|text=train_input_OBIA.shp}}.
 
* ''Output model filename'' is {{button|text=lucc_svm_obia.model}}
 
* In the list ''Field names for training featrues'' mark 11 columns: {{button|text=B1mean, B2mean, B2stdev, B3mean, B4mean, B5mean, B6mean, B7mean, B7stdev, B9mean, B9stdev, B10mean}} with Ctrl + left-click.
 
* The name of ''Field containing the class id for supervision" is {{button|text=C_ID}}.
 
* Classifier to use for training: '''LibSVM classifier'''
 
* SVM Kernel Type: '''Linear'''
 
* SVM Model Type: '''C support vector classification'''
 
* Click Parameters optimization{{button|text=ON}}.
 
* Click {{button|text=Execute}}.
 
[[File:Qgis_otb_trainVectorClassifier.png|400px]]
 
{{info|message=Info|text=For more detailed information on the SVM algorithm visit the [http://www.csie.ntu.edu.tw/~cjlin/libsvm/ LibSVM website]}}
 
 
==Classification phase==
 
* In the search engine of mapla, type {{typed|text=Vector}} and double click '''VectorClassifier'''.
 
* Name of the input vector data is {{typed|text=lucc_segments.shp}}.
 
* Name of the input model file is {{typed|text=lucc_svm_obia.model}}.
 
* Filed class is {{typed|text=C_ID}}
 
* Mark in the list ''Field names to be calculated'' the '''same features''' as in the TrainVectorClassifier module (see above) using Ctrl + left-click).
 
* Specify the Output vector file. {{button|text=Execute}}
 
[[File:qgis_otb_vectorClassifier.png|400px]]
 
  
 
[[Category:QGIS Tutorial]]
 
[[Category:QGIS Tutorial]]

Revision as of 13:16, 17 December 2020

Contents

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 16bit).
  • 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 16.
  • Processing mode Vector
  • Set the Mask image to blank (top of dro-down list).
  • The Minimum Segment size (in pixels) can be set to 16 depending on minimum mapping size.
  • Check 8-neighborhood connectivity on.
  • Change Output pixel type to uint32.
  • Name the Output vector file e.g. segments_meanshift_seg.gpkg (GeoPackage).
  • Click Run.

Qgis otb segmentation.png

  • Evaluate the segmentation results: Load the output vector file segments_meanshift.gpkg 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 zonalstats and open ZonalStatistics under Image Manipulation of OTB.

  • Select the Input image: Subset_S2A_MSIL2A_20170619T_MUL.tif.
  • Background value to ignore: 0
  • For the Input vector data do not select a vector file from the file list which are already loaded in the QGIS Viewer. There is currently a bug in QGIS 3.16 which leads to failure because the full pathname is not parsed correctly. Instead, please select a vector file by clicking QGIS file select.png and browse directly to the file containing the result from Segmentation: segment polygons in format GPKG segments_meanshift.gpkg.
  • File name for the output vector data: segments_meanshift_zonal.gpkg.
  • Click Run.

Otb zonalstats.png

Training phase

  • In the search engine of Processing Toolbox, type Train and double click TrainVectorClassifier.
  • In the Input Vector Data List do not select a file from the list which is already loaded in the QGIS Viewer. There is currently a bug in QGIS 3.16 which leads to failure during file import. Instead please select a vector file clicking Qgis add file.png and browse directly to the file containing training area polygons in format GPKG or SHP e.g. lucc_training_obia.gpkg.
  • Output model filename is svm_obia.model
  • In the field Field names for training features copy and paste
 "mean_0 mean_1 stdev_1 mean_2 mean_3 mean_4 mean_5 mean_6 stdev_6 mean_8 stdev_8 mean_9" 
  • The name of Field containing the class id for supervision" is C_ID.
  • Classifier to use for training: libsvm
  • SVM Kernel Type: linear
  • SVM Model Type: csvc
  • Click Parameters optimizationON.
  • Click Run.

Qgis otb trainvector.png

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

Classification phase

  • In the search engine of Processing Toolbox, type Vector and double click VectorClassifier.
  • In the Input Vector Data do not select a file from the list which is already loaded in the QGIS Viewer. There is currently a bug in QGIS 3.16 which leads to failure during file import. Instead please select a vector file clicking Qgis add file.png and browse directly to the file containing segments and features for the whole image (result of Feature extaction)training area polygons in format GPKG segments_meanshift_zonal.gpkg.
  • Name of the input model file is svm_obia.model.
  • Output field containing the class is C_ID
  • Copy and paste into the field Field names to be calculated have to be the same features for prediction as were defined before in the TrainVectorClassifier module:
 "mean_0 mean_1 stdev_1 mean_2 mean_3 mean_4 mean_5 mean_6 stdev_6 mean_8 stdev_8 mean_9" 
  • Output vector Data file is lucc_classified_obia.gpkg.

Run.

Qgis otb vectorclassifier.png

Load the output vector file manually into QGIS. Layer --> Layer properties --> Symbology > Style --> Load style.... Open the same QGIS style file which is already in use for the training data: lucc_training_obia.qml.

Personal tools
Namespaces

Variants
Actions
Navigation
Development
Toolbox
Print/export