Supervised classification (Tutorial)

From AWF-Wiki
(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
{{construction}}
 
''In this article, you will learn how to conduct a supervised image classification in [[QGIS]]''
 
 
 
== Classification with Orfeo Toolbox ==
 
== Classification with Orfeo Toolbox ==
 
=== Image statistics ===
 
=== Image statistics ===
Line 54: Line 51:
  
  
 
 
== Classification with Semi-Automatic Classification Plugin ==
 
=== Plugin installation and testing ===
 
# Installing the plugin.
 
## Click {{button|text=Manage and install plugins}}.
 
## In the appearing menu, select {{button|text=Add more}}.
 
## Browse for the {{button|text=Semi-Automatic Classification Plugin}} (it's most comfortable to use the search-field).
 
## Click {{button|text=Install}}. If installation was successful, two additional windows should add to the [[QGIS GUI]] ({{button|text=Classification}} and {{button|text=ROI creation}}, see figure '''A''').
 
# Testing the plugin
 
## For the plugin to work, you need to make sure that your installations of GRASS GIS, ORFEO Toolbox and SAGA GIS work correctly.
 
## With the plugin installed, select {{mitem|text=Raster --> Semi Automatic Class Plugin}}.
 
## In the appearing menu, select the {{button|text=Settings}} tab (figure '''B'''). Click {{button|text=Test Grass GIS}} and wait until the message {{button|text=Test OK}} appears. Do the same the Orfeo Toolbox, Saga and Qgis geoalgorithms.
 
 
=== Classification ===
 
# Add the raster map ''188_pca_indices.tif'' from the [[course data]] (see previous exercises).
 
# Also add the vector layer ''Training_manual_poly.shp''.
 
 
==== ROI digitalization ====
 
For better understanding of the workflow, try digitizing some
 
'''R'''egions '''O'''f '''I'''nterest yourself.
 
# First, you need to create a new shapefile to store the ROIs.
 
#* In the {{button|text=Input}} section of the {{button|text=ROI creation}} menu, click the {{button|text=New shapefile}} button. Just select the directory and file for the new shapefile and add it to the [[QGIS GUI|canvas]]. Click the {{button|text=Refresh list of shapefiles}} button and select your shapefile from the pulldown menu.
 
# In the {{button|text=ROI Definition}} section you can add define the attributes of each ROI. The {{button|text=Macroclass ID}}, which may be used to code sub-classes of the main classes (like e.g. ''Coniferous forest'' as a macroclass of ''Forest''), the {{button|text=Class ID}}  and the name of the class in the {{button|text=Information}} column.
 
# As an example, enter {{typed|text=Urban area}} in the {{button|text=Information}} column and leave the ID's as they are.
 
# Looking at the {{button|text=ROI creation}} section, you see two options for generating the ROI:
 
#* By clicking {{button|text=+}}, you can select nondimensional points at the map. Simply place them in pixel clusters you have identified as belonging to the respective class. The regions will later be generated by ''region growing''.
 
#* A more precise way is to delineate ROI polygons using the {{button|text=Create a ROI polygon}} tool. You can re-draw the shape of a specific pixel cluster on the map and finish with a right-click.
 
# After having digitized a certain number of points or polygons for a ROI, click {{button|text=Save ROI}}. Wait until the computation is finished. You will then see the ROI being added to the {{button|text=ROI list}} in the {{button|text=Classification}} window.
 
# Repeat ROI generation for a few classes, like e.g.
 
#* Forest
 
#* Agricultural area
 
#* Water
 
#* Clouds
 
# After having added a few classe, select {{button|text=Minimum distance}} in the {{button|text=Classification algorithm}} section. Click {{button|text=+}} in the {{button|text=Classification preview}} section. By clicking somewhere on the map, a small preview for a section of the map will be generated.
 
 
==== Using predefined ROIs ====
 
Just adding a few classes will not generate a satisfying classification result. For a high quality classification, ROIs have to be very well defined, which requires a lot of time. For a supervised classification closer to real-life, you can use some predefined ROIs.
 
# Load the shapefile ''training_manual_poly.shp'' into the project and select it as training shapefile. You'll see how the ROI list is automatically updated.
 
# For {{button|text=Classification style}} click {{button|text=Select qml}} and browse for the file ''classification.qml'' from the [[course data]].
 
# In the {{button|text=Classification output}} section, check the {{button|text=Classificatin report}} and {{button|text=Calculate accuracy}} boxes.
 
# Click {{button|text=Perform classification}}. Enter name and path for the output map (e.g. ''ml_classification.tif'') and wait for the classification to finish (figure '''C'''). This may take a long time! Plan to do some different work (or just have lunch) while the algorithm is running.
 
 
==== Alternative algorithms and accuracy assessment ====
 
To get an impression of results depending on the alorithm selected, try the {{button|text=Maximum likelihood}} classifier as {{button|text=Classification algorithm}}.
 
In the {{button|text=Semi Automatic classification}} dialogue (figure '''D'''), select the {{button|text=Post processing}} tab to view the error matrix. If desired, it can be saved for future reference.
 
 
 
 
 
=== Figures ===
 
{| class="wikitable" style="border:0pt"
 
|style="border:0pt"|[[Image:RemSens_Exercise08_02.png|thumb|450px|'''Figure A''': Dialogues of the ''Semi-Automatic Classification Plugin]]
 
|style="border:0pt"|[[Image:RemSens_Exercise08_01.png|thumb|450px|'''Figure B''': The ''Semi-Automatic Classification Plugin'' menu]]
 
|-
 
|style="border:0pt"|[[Image:RemSens_Exercise08_04.png|thumb|450px|'''Figure C''': The classified landcover map]]
 
|style="border:0pt"|[[Image:RemSens_Exercise08_05.png|thumb|450px|'''Figure D''': The ''Accuracy'' menu with error matrix]]
 
|}
 
  
 
[[Category:Image classification]]
 
[[Category:Image classification]]

Revision as of 09:48, 11 December 2017

Contents

Classification with Orfeo Toolbox

Image statistics

  1. Add the LandSat-8 imagery SUB_LC81950242013188LGN00_MUL.tif into a QGIS project. It should be available in the course data.
  2. Calculate mean and standard error for each band of the LandSat-8 imagery.
    1. Open Orfeo Toolbox --> Compute images second order statistics (see figure A).
    2. Set SUB_LC81950242013188LGN00_MUL.tif as Input images.
    3. Save the Output XML file as SUB_LC81950242013188LGN00_mul.tif.xml.

Train image classifier

  1. Add the training areas training_manual_poly.shp into QGIS. It should be available in the course data.
  2. Open Orfeo Toolbox --> TrainImageClassifier (libsvm) to use the Support Vector Machine SVM algorithm (see figure B).
  3. Set SUB_LC81950242013188LGN00_MUL.tif as Input image list.
  4. Set training_manual_poly.shp as Input vector list.
  5. Set SUB_LC81950242013188LGN00_MUL.tif.xml as Input XML image statistics file.
  6. Set Name of discrimination field to C_ID (C_ID refers to the column that contain the LUC classes code).
  7. Save the Output confusion matrix as ConfusionMatrixSVM.csv.
  8. Save the Output model as SVM.model.
  9. Calculation of accuracies :
    Open ConfusionMatrixSVM.csv in LibreOffice or MS Excel and calculate overall, producer and consumer accuracies.

Classification

  1. Add the cloud mask cloud_shadow_mask.tif into QGIS. It should be available in the course data.
  2. Open Orfeo Toolbox --> Image Classification (see figure C).
  3. Set SUB_LC81950242013188LGN00_MUL.tif as Input image.
  4. Set cloud_shadow_mask.tif as Input mask.
  5. Set SVM.model as Model file.
  6. Set SUB_LC81950242013188LGN00_MUL.tif.xml as Statistical file.
  7. Save the Output image as su_svm.tif.
  8. Evaluate classification results.
    1. Add the classification result su_svm.tif to QGIS.
    2. Right click su_svm.tif in the TOC and select Properties --> Style --> Style --> Load Style.
    3. Load classifcation.qml, which should be available in the course data.
    4. Open the Google Maps Layer under Web --> ObenLayers plugin --> Add Google Satellite layer and look for misclassification.

Compute a confusion matrix with independent reference data

  1. Open Orfeo Toolbox --> ComputeConfusionMatrix (Vector) (see figure D).
  2. Set su_svm.tif as Input image.
  3. Set train_systematic_seg.shp as Input reference vector data.
  4. Set Field name to C_ID.



Figures

Figure A: Dialogues of the Compute images second order statistics
Figure B: Dialogues of the TrainImageClassifier (libsvm)
Figure C: Dialogues of the Image Classification
Figure D: Dialogues of the ComputeConfusionMatrix (Vector)
Personal tools
Namespaces

Variants
Actions
Navigation
Development
Toolbox
Print/export