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 . Dans le dernier article nous avons vu comment traiter les sorties d’une classification supervisée pour intégrer les résultats dans un SIG.
Ici nous verrons comment lisser les frontières de classe du résultat raster de la classification.
Cette opération n’est pas disponible dans QGis. Elle peut se faire avec ArcMap avec l’outil « Nettoyage de limites ». Avec QGis il est nécessaire de vectoriser le raster classé et de lisser les polygones résultants avec les outils de traitement vecteur.
Lissage des frontières de classe
L’outil Nettoyage de limites lisse les bords irréguliers de limites de classe et regroupe les classes. Cette opération augmente la cohérence spatiale dans les classes. Les régions adjacentes qui appartiennent à la même classe peuvent être connectées.
Outre la définition du raster en entrée et du raster en sortie, vous avez deux options. La première est la technique de tri.
Ce menu spécifie le type de tri à utiliser dans le processus de lissage.
Cela détermine la priorité par laquelle les cellules peuvent se développer dans leurs voisins.
NO_SORT— Ne fait pas de tri par taille. Les zones avec des valeurs plus grandes ont une priorité plus élevée pour se développer en zones avec des valeurs plus petites. C’est la valeur par défaut.
DESCEND – Trie les zones par ordre décroissant de taille. Les zones ayant des zones totales plus grandes ont une priorité plus élevée pour s’étendre en zones ayant des zones totales plus petites.
ASCEND – Trie les zones par ordre croissant de taille. Les zones dont la superficie totale est plus petite ont une priorité plus élevée pour s’étendre à des zones dont la superficie totale est plus grande.
Le lissage des bords se fait au détriment soit du patch, soit de la zone qui l’entoure. L’option ASCEND préserve les patchs en rognant sur la zone environnante. L’option DESCEND rogne plutôt les petits patchs.
Sur la zone précédente, voici les résultats :
La case à cocher « Expansion et rétrécissement deux fois (facultatif) » spécifie le nombre de directions dans lesquelles le processus de lissage aura lieu.
Coché : Effectue l’expansion et le rétrécissement selon le type de tri spécifié, puis effectue un rétrécissement et une expansion supplémentaires avec la priorité inversée.
C’est la valeur par défaut.
Non coché – Effectue une expansion et une contraction une fois, selon le type de tri.
Généralisation de la sortie en supprimant de petites régions isolées
Ce processus supprime de petites régions isolées d’une image classée. Les régions de taille supérieure à un certain nombre de pixels restent sur l’image. Les outils d’ArcMap Groupes par régions, SetNull et Grignotage permettent d’accomplir cette tâche.
Cette opération est plus compliquée que ce qu’elle paraît au départ. En effet, on l’associe à la suppression de polygones avec une taille inférieure à une limite donnée. Mais en réalité elle consiste à déterminer des zones de pixels ayant un nombre inférieur de pixels à une valeur donnée et de leur affecter la valeur des pixels qui entourent cette zone.
C’est pourquoi il nous faut trois opérations pour réaliser ce traitement :
- Grouper par région : va nous permettre de donner un identifiant commun aux pixels appartenant à chaque zone de notre image
- La table attributaire du raster en sortie comporte une colonne « Total » qui indique le nombre de pixels de chaque groupe. C’est à partir de ces informations que vous déterminerez le seuil que vous allez appliquer, c’est-à-dire le nombre minimum de pixels que devront avoir les zones pour être conservées au final.
- L’outil SetNull va nous permettre de créer un masque avec une valeur de 1 pour les pixels des zones à conserver.
- L’outil « Grignotage » utilise ce masque pour remplir les pixels à éliminer avec la valeur des pixels environnants. Les pixels correspondants à la valeur 1 du masque ne sont pas touchés, les autres pixels sont modifiés pour leur affecter la valeur du pixel masqué le plus proche.
Exemple
Nous partons de l’image lissée :
La première étape est le calcul des régions de notre image classée :
Ce qui donne :
Chaque « paquet » de pixels a maintenant une seule valeur qui l’identifie.
Nous ouvrons la table attributaire du raster résultant et nous pouvons trier en ordre croissant la colonne Total, puis sélectionner des enregistrements pour visualiser les paquets ayant moins d’une certaine quantité de pixels. Dans l’image suivante nous avons sélectionné les paquets ayant moins de 50 pixels :
Supposons, pour la suite, que nous choisissons d’éliminer les zones ayant moins de 15 pixels.
Nous utilisons l’outil SetNull pour créer un masque :
On exécute cet outil sur notre raster de régions (pas sur l’image classée).
L’expression contient la condition souhaitée : nombre de pixels du groupe inférieur à 15.
La valeur pour le résultat de l’évaluation de l’expression comme fausse (les paquets ayants plus de 15 pixels) est mise à 1.
Les zones correspondantes aux paquets inférieurs à 15 pixels ont la valeur NoData.
Nous allons utiliser maintenant l’outil Grignotage pour affecter à ces zones la valeur du pixel le plus proche. Le masque défini sur quelles parties de l’image s’effectue cette opération. Seules les parties « trouées » du masque permettent l’opération.
On exécute cet outil sur l’image classée (pas sur l’image des régions).
Le résultat ne contient plus les zones de moins de 15 pixels :
L’image est prête pour être vectorisée en polygones pour son intégration dans un SIG.