Object-based supervised classification

From AWF-Wiki
(Difference between revisions)
Jump to: navigation, search
(Feature extraction)
 
(2 intermediate revisions by one user not shown)
Line 2: Line 2:
 
==Segmentation==
 
==Segmentation==
 
* In the search engine of Processing Toolbox, type {{typed|text=segmentation}} and double click '''Segmentation'''.
 
* In the search engine of Processing Toolbox, type {{typed|text=segmentation}} and double click '''Segmentation'''.
* Select the input image: '''Subset_S2A_MSIL2A_20170619T_MUL.tif ''' (data type uint 16bit).
+
* Select the input image: '''a multispectral Sentinel-2 image''' (data type uint16).
 
* Set {{button|text=Segmentation algorithm}} to '''meanshift'''
 
* Set {{button|text=Segmentation algorithm}} to '''meanshift'''
 
* 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 {{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.
Line 10: Line 10:
 
* Check {{button|text=8-neighborhood connectivity}} on.
 
* Check {{button|text=8-neighborhood connectivity}} on.
 
* The {{button|text=Minimum object size}} (in pixels) can be set to {{typed|text=16}} depending on  minimum mapping size.
 
* The {{button|text=Minimum object size}} (in pixels) can be set to {{typed|text=16}} depending on  minimum mapping size.
* Change {{button|text=Output pixel type}} to '''uint32'''.
+
* Name the {{button|text=Output vector file}} e.g. '''segments_meanshift.shp'''. Extension should be '''.shp''' in this module).
* Name the {{button|text=Output vector file}} e.g. '''segments_meanshift.gpkg''' (GeoPackage).
+
 
* Click {{button|text=Run}}.
 
* Click {{button|text=Run}}.
  
 
[[File:qgis_otb_segmentation.png|400px]]
 
[[File:qgis_otb_segmentation.png|400px]]
  
* 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''
+
* Evaluate the segmentation results: Load the output vector file '''segments_meanshift.shp''' into QGIS on top of the image ''Subset_S2A_MSIL2A_20170619T_Mul.tif''
 
Mark the vector layer in the Qgis Layers window. Right click {{mitem|text=Properties --> Symbology  --> Simple Fill}}, {{mitem|text=Fill Style}}: ''No Brush'' and {{mitem|text=Stroke color}}:''white''.
 
Mark the vector layer in the Qgis Layers window. Right click {{mitem|text=Properties --> Symbology  --> Simple Fill}}, {{mitem|text=Fill Style}}: ''No Brush'' and {{mitem|text=Stroke color}}:''white''.
  
 
==Feature extraction==
 
==Feature extraction==
 
In the search engine of Processing Toolbox, type {{typed|text=zonalstats}} and open '''ZonalStatistics''' under Image Manipulation of OTB.
 
In the search engine of Processing Toolbox, type {{typed|text=zonalstats}} and open '''ZonalStatistics''' under Image Manipulation of OTB.
* Select the Input image: '''Subset_S2A_MSIL2A_20170619T_MUL.tif'''.
+
* Select the Input image: '''a multispectral Sentinel-2 image'''.
* Background value to ignore: {{typed|text=0}}
+
* Background value to ignore: {{typed|text=65535}}
* For the {{button|text=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 [[File:QGIS_file_select.png]] and browse directly to the file containing the result from Segmentation: segment polygons in format GPKG '''segments_meanshift.gpkg'''.
+
* For the {{button|text=Input vector data}} select a vector file with segments (output from Segmentation)
* File name for the output vector data: '''segments_meanshift_zonal.gpkg'''.
+
* File name for the output vector data: '''segments_stats.gpkg'''.
 
* Click {{button|text=Run}}.
 
* Click {{button|text=Run}}.
 
[[File:otb_zonalstats.png|400px]]
 
[[File:otb_zonalstats.png|400px]]
Line 45: Line 44:
  
 
==Classification phase==
 
==Classification phase==
* In the search engine of Processing Toolbox, type {{typed|text=Vector}} and double click '''VectorClassifier'''.
+
* In the search engine of Processing Toolbox, type {{typed|text=VectorClass}} and double click '''VectorClassifier'''.
 
* In the {{button|text=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 [[File: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 {{typed|text=segments_meanshift_zonal.gpkg}}.
 
* In the {{button|text=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 [[File: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 {{typed|text=segments_meanshift_zonal.gpkg}}.
 
* Name of the input model file is {{typed|text=svm_obia.model}}.
 
* Name of the input model file is {{typed|text=svm_obia.model}}.
Line 56: Line 55:
 
[[File:qgis_otb_vectorclassifier.png|400px]]
 
[[File:qgis_otb_vectorclassifier.png|400px]]
  
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 and apply the same QGIS style used for the training data. {{mitem|text=Layer --> Layer properties --> Symbology > Style --> Load style...}}.
  
 
[[Category:QGIS Tutorial]]
 
[[Category:QGIS Tutorial]]

Latest revision as of 21:46, 19 June 2021

Contents

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

[edit] Segmentation

  • In the search engine of Processing Toolbox, type segmentation and double click Segmentation.
  • Select the input image: a multispectral Sentinel-2 image (data type uint16).
  • Set Segmentation algorithm to meanshift
  • 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 drop-down list).
  • Check 8-neighborhood connectivity on.
  • The Minimum object size (in pixels) can be set to 16 depending on minimum mapping size.
  • Name the Output vector file e.g. segments_meanshift.shp. Extension should be .shp in this module).
  • Click Run.

Qgis otb segmentation.png

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

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

[edit] Feature extraction

In the search engine of Processing Toolbox, type zonalstats and open ZonalStatistics under Image Manipulation of OTB.

  • Select the Input image: a multispectral Sentinel-2 image.
  • Background value to ignore: 65535
  • For the Input vector data select a vector file with segments (output from Segmentation)
  • File name for the output vector data: segments_stats.gpkg.
  • Click Run.

Otb zonalstats.png

[edit] 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_2 stdev_0 mean_9 mean_7 mean_0" 
  • This is one of many variable sets as a result of a feature selection procedure.
  • 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

[edit] Classification phase

  • In the search engine of Processing Toolbox, type VectorClass 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_2 stdev_0 mean_9 mean_7 mean_0" 
  • Output vector Data file is lucc_classified_obia.gpkg.

Run.

Qgis otb vectorclassifier.png

Load the output vector file manually into QGIS and apply the same QGIS style used for the training data. Layer --> Layer properties --> Symbology > Style --> Load style....

Personal tools
Namespaces

Variants
Actions
Navigation
Development
Toolbox
Print/export