Object-based supervised classification
From AWF-Wiki
(Difference between revisions)
(→Training phase) |
(→Feature extraction) |
||
(6 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: '''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. | ||
* Set {{button|text=Minimum Region size}} (in pixels) to {{typed|text=16}}. | * Set {{button|text=Minimum Region size}} (in pixels) to {{typed|text=16}}. | ||
* {{button|text=Processing mode}} '''Vector''' | * {{button|text=Processing mode}} '''Vector''' | ||
− | * Set the {{button|text=Mask image}} to blank (top of | + | * Set the {{button|text=Mask image}} to blank (top of drop-down list). |
− | + | ||
* 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. |
− | * Name the {{button|text=Output vector file}} e.g. ''' | + | * Name the {{button|text=Output vector file}} e.g. '''segments_meanshift.shp'''. Extension should be '''.shp''' in this module). |
* 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. | + | * 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. {{mitem|text= | + | 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: ''' | + | * Select the Input image: '''a multispectral Sentinel-2 image'''. |
− | * Background value to ignore: {{typed|text= | + | * Background value to ignore: {{typed|text=65535}} |
− | * For the {{button|text=Input vector data}} | + | * For the {{button|text=Input vector data}} select a vector file with segments (output from Segmentation) |
− | * File name for the output vector data: ''' | + | * 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 33: | Line 32: | ||
* ''Output model filename'' is {{button|text=svm_obia.model}} | * ''Output model filename'' is {{button|text=svm_obia.model}} | ||
* In the field ''Field names for training features'' copy and paste | * In the field ''Field names for training features'' copy and paste | ||
− | <pre> "mean_2 | + | <pre> "mean_2 stdev_0 mean_9 mean_7 mean_0" </pre> |
+ | * 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 {{button|text=C_ID}}. | * The name of ''Field containing the class id for supervision" is {{button|text=C_ID}}. | ||
* Classifier to use for training: {{button|text=libsvm}} | * Classifier to use for training: {{button|text=libsvm}} | ||
Line 44: | Line 44: | ||
==Classification phase== | ==Classification phase== | ||
− | * In the search engine of Processing Toolbox, type {{typed|text= | + | * 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}}. | ||
* Output field containing the class is {{typed|text=C_ID}} | * Output field containing the class is {{typed|text=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: | * 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: | ||
− | <pre> " | + | <pre> "mean_2 stdev_0 mean_9 mean_7 mean_0" </pre> |
* Output vector Data file is {{typed|text=lucc_classified_obia.gpkg}}. | * Output vector Data file is {{typed|text=lucc_classified_obia.gpkg}}. | ||
{{button|text=Run}}. | {{button|text=Run}}. | ||
Line 55: | 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... | + | 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.
- 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.
[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 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.
- 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 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.
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....