XII. Télédétection

XII.4 Classification supervisée


Dans cette partie, nous allons effectuer une classification supervisée, c'est-à-dire se basant sur des données d'entraînement que vous aurez créées. Nous utiliserons pour cela une image Sentinel 2B acquise sur le bassin endoréique de l'Okavango, au Botswana.

Qu'est-ce qu'une classification supervisée ?

Comme une classification non supervisée, une classification permet le regroupement des pixels d'une image pour aboutir à des catégories, par exemple d'occupation du sol. Mais à la différence de cette dernière, elle se base sur un échantillonnage terrain fait par l'utilisateur.

Pour cet échantillonnage, il est possible de se baser sur une campagne de terrain avec des relevés d'occupation du sol, et/ou sur des bases de données autres (Corine Land Cover...).

Il existe de nombreux algorithmes de classification supervisée :

  • Algorithmes bayésiens
  • Machine Learning (SVM, Random Forest, réseaux de neurones...)
  • Deep Learning (nécessite un très grand échantillonnage)

Nous utiliserons ici l'algorithme du maximum de vraisemblance, qui fait partie des algorithmes bayésiens. L'idée est de calculer pour chaque pixel la probabilité qu'il appartienne à chaque classe, avec 2 hypothèses préalables :

  • un pixel a autant de probabilité d'appartenir à une classe qu'à une autre
  • la distribution des valeurs dans chaque bande est gaussienne, c'est-à-dire qu'elle suit une loi normale :
Courbe de Gauss ou courbe en cloche

Cet algorithme de type probabiliste bien adapté aux images satellitaires permet d'associer une probabilité d'appartenance d'un pixel à une classe. La prise de décision se fait par la valeur maximale de probabilité et permet d'associer une carte de confiance dans la prédiction.

Le choix d'un algorithme de classification demeure complexe puisqu'il dépend du type de données, de l'échantillonnage dont on dispose et surtout du paysage étudié.

Visualisation de l'image

Compositions colorées

Ouvrez un nouveau projet QGIS et ajoutez-y l'image SENTINEL2B_20200619-Okavango.

Ajoutez un fonds OpenStreetMap pour situer l'image.

Localisation de l'image satellite dans le Sud de l'Afrique et zoom sur l'image elle-même

En allant dans les propriétés de la couche, rubrique Information, vous pouvez voir que cette image n'a que 10 bandes, contrairement à ce que nous avons pu voir sur les images Sentinel-2 ici. Les bandes B1 (aérosol côtier), B9 (vapeur d'eau) et B10 (SWIR Cirrus) ne sont pas présentes, ce qui nous donne la correspondance suivante :

Correspondance entre numéro de bande visible dans QGIS et bande Sentinel-2 pour l'image SENTINEL2B_20200619-Okavango
Numéro de bande Bande Sentinel-2
- Bande 1 - Aérosol côtier
01 Bande 2 - Bleu
02 Bande 3 - Vert
03 Bande 4 - Rouge
04 Bande 5 - Végétation "red edge"
05 Bande 6 - Végétation "red edge"
06 Bande 7 - Végétation "red edge"
07 Bande 8 - PIR
08 Bande 8A - PIR "étroit"
- Bande 9 - Vapeur d'eau
- Bande 10 - SWIR - Cirrus
09 Bande 11 - SWIR
10 Bande 12 - SWIR
bandset pour l'image SENTINEL2B_20200619-Okavango : longueurs d'onde

Avec les bandes 3, 2 et 1 dans les canaux R, G et B, on obtient cette image en "vraies couleurs" : Composition colorée avec les bandes 3, 2 et 1

A compléter !

Pixels en RFE (Réflectance au sol en pour 10000)

A faire !

Superficie de l'image

Comment obtenir la superficie de l'image étudiée ?

On peut utiliser l'emprise de la couche pour calculer cette surface.

Ouvrez les propriétés de la couche, rubrique Information.

Nous allons d'abord vérifier les unités des coordonnées de la couche, et donc le SCR. Descendez jusqu'à Système de coordonnées de référence (SCR) :

Capture d'écran de la partie sur les SCR dans la partie Information de la fenêtre des propriétés

Il s'agit d'un SCR projeté utilisant la projection UTM, les coordonnées sont donc métriques.

Remontez maintenant jusqu'à Information du fournisseur pour lire l'emprise de la couche :

Capture d'écran de l'emprise dans la partie Information de la fenêtre des propriétés

Cette emprise se lit comme ci : xmin, ymin, xmax, ymax.

La couche mesure donc en X :

750000 - 723200 = 26800

Soit 26,8 km, et en Y :

7812800 - 7790200 = 22600

Soit 22,6 km.

La superficie couverte est donc de 26,8 * 22,6 = 605,68 soit un peu plus de 600 km².

On peut aussi obtenir cette surface avec l'outil de mesure de QGIS, ce sera plus rapide mais moins précis !

Cliquez sur l'outil de mesure et sélectionnez Mesurer une aire si ça n'est pas déjà fait (l'icône de cet outil est différente suivant le type de mesure sélectionnée).

Capture d'écran de l'outil de mesure et de sa liste déroulante

Dessinez ensuite le contour de l'image satellite, en cliquant sur chacun de ses 4 angles, avec un clic droit n'importe où pour terminer. Vous pouvez lire la surface de la zone que vous avez délimitée dans la fenêtre de l'outil, en choisissant l'unité kilomètres carrés :

Résultat de la mesure à la main : environ 610 km2

Cette mesure variera selon les points où vous avez cliqué.

Notre zone couvre donc environ 23 km par 27 km,soit un peu plus de 600 km².

Dire pourquoi on calcule cette superficie

Extraction des signatures spectrales

Pour effectuer une classification supervisée, il nous faut des données d'entraînement, donc des ROI. Ces ROI nous serviront également à lire les signatures spectrales de nos futures classes d'occupation du sol.

Nous utiliserons les 4 classes suivantes :

  • surface en eau
  • végétation arborée
  • végétation rase
  • surface en sol nu

Créez une couche de ROI, en prenant entre 5 et 10 polygones par classe.

Pour digitaliser plusieurs polygones dans une même macro-classe, il faut cliquer après chaque polygone sur l'icône Sauver les ROI temporaires dans les données d'entraînement (en bas à droite du panneau SCP) :

Bas du panneau SCP avec l'icône de sauvegarde entourée en rouge et la case signature décochée

Pour gagner du temps pendant la saisie, vous pouvez décocher la case Signature pour ne pas calculer les signatures spectrales à chaque sauvegarde.

bouton de calcul de signatureEt dans ce cas, vous pouvez calculer ces signatures en une seule fois une fois tous les ROI créés, en les sélectionnant puis en cliquant sur le bouton calculer les signatures pour les éléments surlignés.

Il est ensuite possible de calculer une signature globale pour chaque classe.

bouton de fusion de signaturePour cela, sélectionnez tous les éléments d'une même classe puis cliquez sur le bouton Fusionner les signatures spectrales surlignées.

bouton d'ajout des signatures au graphiqueIl ne vous reste plus ensuite qu'à ajouter les signatures de chaque classe au graphique, à l'aide du bouton Ajouter les signatures spectrales surlignées au graphique :

Graphique des signatures spectrales des 4 classes, en X les longueurs d'ondes et en Y le nombre de pixels

Vous remarquerez que les 2 lignes du tableau correspondant à la végétation rase et au sol nu sont surlignées en orange : cela signifie que ces 2 classes se recouvrent partiellement.

Nous allons maintenant pouvoir faire une classification basée sur ces ROI !

Penser à ajouter dans les données en téléchargement une couche de ROI exemple.

Classification supervisée avec l'algorithme du maximum de vraisemblance

Ici, nous allons utiliser l'algorithme du maximum de vraisemblance pour regrouper les pixels en catégories, en se basant sur les ROI que nous venons de dessiner.

Icône de l'outil de traitement de bandesPour accéder à l'outil de classification supervisée, cliquez sur l'icône Traitement de bande puis Classification dans la barre d'outils sur la gauche du panneau SCP, ou bien Menu SCP → Traitement de bande → Classification (cliquer pour voir en plus grand) :

Fenêtre de l'outil de classification, avec les options : utiliser MC ID, algorithme max de vraisemblance, rapport de classification
  • Sélectionner un jeu de bande : a priori il y a un seul jeu de bandes dans notre projet, laisser 1
  • Utiliser : sélectionnez MC ID pour obtenir dans l'image finale autant de catégories que de macro-classes, c-est-à-dire de classes d'occupation du sol (en choisissant C ID nous aurions autant de catégories que de polygones)
  • Algorithme : sélectionnez maximum de vraisemblance et laissez le seuil à 0. Si le seuil est défini, avec une valeur entre 0 et 100, les pixels ayant une probabilité inférieure à ce seuil d'appartenir à une classe seront exclus de la classification
  • Classification d'occupation des sols : ne sélectionnez aucune valeur. Il s'agit d'un autre algorithme de classification qui peut être utilisé seul ou bien combiné à celui choisi au-dessus. Pour plus d'infos voir la documentation (Land Cover Signature Classification) !
  • Sortie de la classification : il est possible ici de spécifier un style ou un masque pour l'image en sortie, créer un fichier vecteur de sortie en plus du geotiff, créer un rapport de classification qui indiquera pour chaque classe le nombre et le pourcentage de pixels concernés, ainsi que la surface. Ici, vous pouvez ne cocher que la case du rapport de classification.
  • En cochant la case sauvegarder les fichiers temporaires, vous obtiendrez également un raster pour chacun des ROI utilisés, plus un raster « général » ; voir la documentation (Save algorithm files) pour plus d'informations.

Cliquez sur le bouton Lancer. Choisissez un emplacement et un nom pour le fichier geotiff qui sera créé.

Il est possible que le fichier créé n'ait pas d'extension dans son nom ; dans ce cas, ajoutez-lui l'extension .tif manuellement dans votre explorateur de fichier, pour qu'il soit bien reconnu comme un fichier geotiff.

L'image correspondant au résultat de la classification est chargée dans QGIS. Dans cette image, chaque pixel a une valeur correspondant à une des classes utilisées. Ici, ces valeurs vont de 1 à 4 car nous avons basé notre classification sur 4 macro-classes.

Pour mieux voir ce résultat, il est possible de modifier le style de cette couche. Rendez-vous dans ses propriétés → Symbologie : vous pouvez modifier la couleur de chaque classe et son étiquette en double-cliquant dessus (oui, il est possible de mettre des caractères accentués dans les étiquettes !) :

Fenêtre des propriétés du geotiff créé avec la classification, rubrique style, avec des couleurs 'classiques' : bleu pour l'eau, vert foncé pour la végétation arborée, vert clair pour la végétation rase, jaune pour le sol nu, et des étiquettes correspondant aux noms des classes.

pour un résultat qui doit ressemble à ceci (ce résultat dépendra de vos ROI !) :

Résultat de la classification, avec l'eau en bleu, la végétation arborée en vert foncé, la végétation rase en vert clair et le sol nu en jaune

Alors là, j'ai un truc assez différent du cours, j'ai dû mal choisir mes ROI !!

Vous pouvez également ouvrir le rapport de classification avec un tableur, ce fichier CSV a été créé au même endroit que l'image avec le suffixe _report (le délimiteur est la tabulation) :

Rapport de classification : tableau avec 4 colonnes Class, PixelSum, Percentage % et Area [metre^2], et 4 lignes pour les 4 classes

On peut y lire par exemple que la classe 3 (végétation rase) rassemble un peu plus de 35% des pixels de l'image. Bien sûr, vos résultats seront sûrement un peu différents !

Interprétation des résultats et mise en page

A faire !!


Vous êtes arrivé.e au bout de ce tutoriel. Si vous le suivez depuis le début, bravo pour votre patience, et sinon bravo également !


chapitre précédent
haut de page