Tutoriel SCP:Réglages fins de la classification supervisée

Dans cette série d’articles nous avons vu un tutoriel qui aborde la classification d’images aériennes de drone en milieu littoral. Il utilise QGis dans sa version 3.20 et le plugin SCP dans sa version 7.3.

Le but de ce tutoriel est de trouver un moyen de multiplier les trois bandes RGB des images aériennes en utilisant des calculs de texture de sol et de l’analyse en composantes principales.

Pour compléter ce tutoriel, nous verrons ici comment réaliser les réglages fins d’une classification supervisée.

Lors des traitements présentés dans les articles du tutoriel, nous avons créé rapidement trois ROIs correspondantes aux trois classes que nous cherchions à identifier.

Ceci nous a permis de déterminer quelles bandes utiliser et d’avoir une quantification de la discrimination des différents algorithmes disponibles. Tout d’abord, quel outil peut-on utiliser pour affiner notre classification ? Il s’agît de la prévisualisation de la classification :

Prévisualisation de la classification

La prévisualisation de la classification permet d’afficher les classifications temporaires (c.-à-d. les prévisualisations de la classification). Les aperçus de classification sont utiles pour tester l’algorithme dans une petite zone de l’ensemble de bandes, avant de classer l’image entière qui peut prendre du temps.

La prévisualisation de la classification est effectuée selon les paramètres définis dans Algorithm.(Onglet Traitement de bande->Classification)

ATTENTION : les ROI et les prévisualisations sont effectuées sur le jeu de bandes actif.

En plus de la matrice de classification, une matrice d’algorithme (algorithm raster) peut être affichée, qui est utile pour évaluer la distance d’un pixel classé comme classe X à partir de la signature spectrale correspondante X.

Dans les aperçus de classification du raster algorithm, les pixels noirs sont éloignés de la signature spectrale correspondante (c.-à-d. probablement une nouvelle ROI, ou signature spectrale, doit être collectée dans cette zone) et les pixels blancs sont plus proches de la signature spectrale correspondante (c.-à-d. probablement la signature spectrale identifie correctement ces pixels).

Après la création d’un nouvel aperçu, les anciens aperçus sont placés dans les calques QGIS à l’intérieur d’un groupe de calques nommé Class_temp_group (le nom personnalisé peut être défini dans Nom de groupe temporaire et est supprimé lorsque la session QGIS est fermée).

ATTENTION : les aperçus de classification sont automatiquement supprimés du disque lorsque la session QGIS est fermée ; un message QGIS (qui peut être ignoré) pourrait demander le chemin des couches manquantes lors de l’ouverture d’un projet précédemment enregistré.

Zoom la carte de QGis sur l’étendue de la dernière prévisualisation de classification.

Le bouton permet d’afficher/cacher la dernière prévisualisation de classification.

Active le pointeur pour la création d’un aperçu de la classification ; clic-gauche sur la carte pour lancer le processus de classification et afficher l’aperçu de la classification ; clic-droit pour lancer le processus de classification et afficher l’algorithme matriciel (algorithm raster) de l’aperçu.

Génère une nouvelle prévisualisation centrée sur le même pixel que précédemment

Modifie dynamiquement la transparence de prévisualisation de la classification, ce qui est utile pour comparer la classification à d’autres couches

Taille de la zone de prévisualisation en pixels.

Voici un exemple de prévisualisation :

Les pixels non classés apparaissent en noir.

Il y a deux grandes raisons pour que des zones ne soient pas classées.

Une raison peut être une trop grande amplitude des classes qui amènent à une trop grande superposition des signatures spectrales. En sélectionnant une zone assez grande pour les ROIs on inclue sans le vouloir des pixels isolés avec des signatures différentes de la classe recherchée.

A l’opposé, le fait de sélectionner une seule zone ROI pour une classe peut ignorer certaines valeurs naturelles de la classe mais absents dans cette zone en particulier.

Dans le premier cas on cherchera à enlever des pixels (leurs valeurs) de la signature spectrale de la classe, dans le deuxième on cherchera à compléter les valeurs de la signature spectrale avec les valeurs absentes.

Les seuils automatiques

Dans la fenêtre du Graphique de  Signature spectrale on a un pavé intitulé « Seuils automatiques ».

Par défaut, les seuils sont définis en Min Max

Au niveau de chaque bande, l’enveloppe de la classe se situe entre la valeur du pixel avec la valeur la plus faible et la valeur du pixel le plus fort. Une méthode de réduire cette amplitude est l’utilisation de la distribution des valeurs des pixels par bande. On calcule l’écart type des valeurs des pixels pour chaque bande, et l’outil « écart-type »

permet de définir les seuils en multipliant cet écart type par un facteur entré par l’utilisateur.

On rentre une valeur dans le champ du centre et on l’applique aux bandes surlignées en cliquant sur le bouton > à droite.

Voici son fonctionnement avec la classe « sédiments ». Le graphique de départ, basé sur les valeurs Min-Max est le suivant :

Si nous entrons la valeur « 1 » pour l’écart type est appuyons sur le bouton >, un message nous demande si nous voulons bien changer les seuils des bandes surlignées, puis il affiche le nouvel graphique spectral :

On voit bien que l’amplitude spectrale de chaque bande a diminué. Chaque modification de seuil sera suivi d’une prévisualisation de la classification dans la même zone test. On verra alors les effets des modifications et on pourra adapter la valeur du seuil en conséquence.

Ces deux outils affectent l’ensemble des bandes d’une classe.

Ajout ou soustraction de valeurs de pixels

Nous avons vu plus haut que les seuils peuvent ne pas correspondre à nos souhaits à cause, soit de zones ou pixels en trop lors de la création des ROI d’entrainement, soit par le manque de zones ou pixels lors de la création de ces mêmes ROIs.

La deuxième partie du panneau « Seuils automatiques » est utile pour résoudre ces problèmes.

Cette partie du pavé permet de choisir l’opération à réaliser :

  • Si le plus est coché, on ajoute des valeurs à la signature spectrale de la classe
  • Si le moins est coché, on enlève des valeurs à la signature spectrale de la classe

Pour utiliser la fonction « From ROI »  il faut créer un polygone ROI temporaire sur la carte de QGis. Vous n’avez pas à l’ajouter dans les données d’entrainement.

En cliquant sur cette option dans le pavé « Seuils automatiques », le plugin récupère les valeurs des pixels situés à l’intérieur de la ROI temporaire et ajoute ou soustrait ces valeurs de la signature spectrale.

Un réglage plus fin encore peut être fait à partir d’un pixel individuel de l’image globale.

Si on clique sur « From pixel », le plugin attend qu’on clique sur l’image globale, récupère les valeurs du pixel pour chaque bande et effectue l’opération d’ajout ou de soustraction de la signature spectrale.

Voyons maintenant un exemple concret.

Nous avons trouvé un ensemble de courbes spectrales qui nous convient pour une image :

Nous voulons maintenant tester si ces courbes spectrales sont adaptées à une deuxième image adjacente à la première.

Pour cela, nous allons charger les dix rasters correspondants aux bandes utilisées pour la première image dans un deuxième « band set » :

Dans la fenêtre « Jeu de bandes » on va :

  1. Cliquer sur le bouton « Ajouter un nouveau jeu de bandes » . On aura alors un deuxième onglet Band set 2, vide.
  2. Cliquer sur le bouton « Ouvrir un fichier » et pointer sur les rasters de la deuxième image. En cliquant sur « Ouvrir » ces rasters seront chargés dans la liste des bandes et dans le band set actif, celui qu’on vient de créer.

N’oubliez pas de trier les bandes de la deuxième image dans le même ordre que celles de la première image.

On a comme résultat dans la fenêtre cartographique de QGis :

Faisons le point de la situation :

Vous avez deux zones de travail, chacune correspondant à un band set différent (le 1 et le 2). L’onglet actif dans la fenêtre « Jeu de bandes » détermine sur quelle zone les commandes et outils de SCP vont agir. Par exemple, si vous voulez faire un aperçu de classification sur la première zone avec l’onglet 2 activé, vous aurez un message d’erreur en vous indiquant de cliquer à l’intérieur de la deuxième zone.

Par contre, les données d’entraînement et ses courbes spectrales sont uniques et s’appliquent à tous les band sets.

Nous commençons par effectuer un aperçu de classification sur notre nouvelle zone pour voir si les courbes spectrales calculées sur la première zone s’appliquent correctement.

La zone vert foncé correspond à la classe « Sédiments ». Mais nous savons qu’ici, cette zone correspond à un herbier de zostères. Le problème est que lors de la prise de vue la journée était nuageuse et la plus grande partie de la zone classée en sédiments correspond à de l’herbier affecté par l’ombre d’un nuage. Comme nous avions configuré la méthode de classification pendant le travail dans la première zone avec les options LCS et Algorithme, cet aperçu est réalisé avec ces options.

Pour voir exactement le résultat de ce qui correspond strictement à nos courbes spectrales on doit désactiver l’option Algorithme, car, si non, tout ce qui est en dehors de ces courbes est classé avec la la classe qui est la plus proche. En désactivant l’algorithme, on aura, en noir les zones qui ne correspondent pas à nos courbes spectrales.

On voit alors qu’il y a des petites zones de sédiments, mais que les zones d’herbier à l’ombre du nuage ne sont pas comprises dans nos courbes spectrales. Nous allons modifier ces courbes pour qu’elles les prennent en compte avec le bouton « From ROI » du panneau Seuils automatiques.

Tout d’abord, on va créer une ROI temporaire dans la zone noire non classée :

Nous n’allons pas cliquer sur le bouton du panneau ROI et listes de signatures pour ajouter cette ROI aux données d’entraînement.

Cette ROI nous allons l’utiliser avec le panneau Seuils automatiques.

Nous allons noter les détails de la signature de l’herbier avant la prise en compte de cette ROI

La ligne 3 c’est celle qui correspond à l’herbier. On voit les min-max des 6 premières bandes :

1-10,48.99-170,17-51.9,1-34,146-255,207-255,…

On vérifie que la case + est cochée dans le panneau Seuils automatiques. Ceci indique au plugin d’ajouter les valeurs des pixels de la ROI à la signature de la classe.

Cliquez sur le numéro de ligne de la classe à modifier pour la mettre en surbrillance. Si vous oubliez cette étape, les valeurs de la ROI seront ajoutées à TOUTES LES CLASSES.

Puis nous cliquons sur From ROI.

Si on observe les min-max, on voit qu’ils ont été modifiés :

1-11,18-170,14-132,1-61,70-255,186-255,…

Nous cliquons sur le bouton « Redo the classification preview at the same point » pour voir ce que cette opération a modifié sur le résultat :

Une vaste zone qui était précédemment non classée et maintenant classée en herbier.

On peut alors continuer à traiter le reste des zones non classées en les ajoutant aux signatures correspondantes.

Pensez à vérifier que ces modifications n’entraînent pas de problème par rapport au classement de la première image. Pour cela, dans la fenêtre « Jeu de bandes » cliquez sur Bandset 1 et refaites une prévisualisation.

A la fin de cette étape vous aurez obtenu un ensemble de signatures opérationnelles. Pour pouvoir les réutiliser facilement, vous pouvez sauvegarder un fichier de signatures, sans les ROIs des données d’entraînement.

Dans le panneau SCP, vous avez un bouton « Exporter des signatures spectrales »

Vous trouvez aussi cette option dans la fenêtre SCP->Outils basiques

Vous avez le choix entre différents formats, mais celui qui ne stocke pas les ROIs c’est le format csv.

Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

One thought on “Tutoriel SCP:Réglages fins de la classification supervisée

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *