Méthodologies de classification d'image sous GRASS : contextes d'utilisation des fonctions i.group, i.cluster, i.gensig, i.class, i.maxlik
 Avant toute utilisation des fonctions de  classifications, il faut au préalable avoir rassemblé ses images de  télédétection dans un groupe (par exemple, images_Landsat) et  spécifiquement les bandes sur lesquelles on souhaite procéder à la  classification dans un sous-groupe (par exemple, Landsat_2002_infrarouge).  La création du groupe et du sous-groupe se fait à travers la fonction i.group.
Par  exemple :
i.group name=images_Landsat subgroup=Landsat_2002_infrarouge  name=L_MIR, L_PIR
Classification non-supervisée : i.cluster+i.maxlik
Classification supervisée :
- i.gensig+i.maxlik (fourniture d'une carte d'apprentissage  pré-classifiée en entrée) 
 - i.class+i.maxlik (mode interactif : construction des classes d'apprentissage par l'utilisateur)
 
Classification d'image non-supervisée (non-dirigée) : i.cluster
i.cluster group=images_Landsat subgroup=Landsat_2002_infrarouge  sigfile=fichier_cluster_genere1 classes=7
Il convient de choisir le nombre de classes de façon judicieuse par rapport au contenu des images que l'on cherche à classifier :
- trop peu de classes et des éléments très disparates se trouveront réunis (par exemple, prairie et certains types de cultures)
 - trop de classes et une même classe d'occupation du sol se verra scindée en plusieurs groupes (prairie exposée au soleil, et prairie en zone ombragée par exemple).
 
 
Il existe en outre d'autres paramétrages (optionnels) d'ajustement  pour générer au mieux le fichier de signatures spectrales que va  utiliser i.maxlike, notamment :
seed=mes_signatures_spectrales  au cas où l'on disposerait d'un fichier de signatures spectrales  pouvant servir de base au clustering. 
En introduisant ce paramètre,  la classification devient alors partiellement supervisée (généralement,  dans le cas d'une classification partiellement supervisée, l'utilisateur  construira ce fichier source lui-même à l'aide de la fonction i.class)  : c'est un très bon moyen d'améliorer les résultats de la  classification automatique (voir deuxième partie sur la classification  supervisée).
convergence=75 qui est le pourcentage  de convergence que doit atteindre le cluster, par défaut fixé à 98. Si  les classes à séparer sont très distinctes (par exemple rizières et  zones boisées), un taux de convergence élevé n'est pas un handicap car  les classes vont arriver plus rapidement à se stabiliser ; en revanche,  sur des zones notamment urbaines où les classes d'occupation du sol sont  difficiles à distinguer, il peut être intéressant de descendre la  valeur de ce paramètre auquel cas l'algorithme de clustering aura  plus de mal à séparer et à stabiliser les classes et aura par conséquent  besoin de davantage d'itérations pour atteindre un résultat  optimal (voir ci-dessous).
iterations=50 qui est le  nombre d'itérations que va faire l'algorithme de clustering pour trier  les classes - par défaut fixé à 30. Le laisser travailler plus longtemps  sur un plus grand nombre d'itérations peut se révéler bénéfique.  Attention : la convergence n'étant jamais complètement atteinte, même au  bout d'un grand nombre d'itérations, point n'est besoin de lui fixer  non plus une valeur astronomique ; il prendrait davantage de temps à  s'exécuter sans pour autant obtenir aucune amélioration probante.
separation=1.0  par défaut 0.0, correspond à la différenciation entre chaque classe  spectrale. De même que précédemment pour la convergence, ou lors du  choix du seuillage en x nombre de classes, si l'on souhaite que les  classes obtenues soient bien distinctes sur le plan spectrale ; il  faut laisser l'algorithme faire davantage d'itérations (voir  ci-dessus)
min_size=200 nombre minimal de pixels  dans une classe, par défaut fixé à 17. Le fait de porter ce paramètre à  un chiffre plus élevé permet d'éviter de trouver des "classes  orphelines", c'est-à-dire contenant peu de pixels, mais très distincts  sur le plan spectral pour le clustering.
sample=200,200  taille de la fenêtre d'échantillonnage (par défaut, fenêtre de 100  pixels sur 100 pixels). (Attention : le fait d'agrandir la fenêtre  d'échantillonnage a également pour effet de ralentir le travail de  l'algorithme. Ainsi, si vous dépassez les capacités mémoire de votre PC  (ou de votre serveur), GRASS retournera un message d'erreur).
file=rapport_clustering  permet d'obtenir un rapport détaillé du résultat, notamment les  statistiques de chaque classe, le nombre d'itérations nécessaires pour  les distinguer et le taux de convergence atteint. Il est utile de  s'appuyer sur les résultats de celui-ci afin de modifier les paramètres  utilisés : si une ou plusieurs sont loin d'avoir atteint le taux de  convergence, l'algorithme a évidemment besoin de davantage d'itérations,  si les classes sont peu distinctes sur le plan spectral, il est  peut-être préférable d'en distinguer moins ou d'augmenter la séparation  entre elles.
Ne pas hésiter à exécuter à plusieurs reprises i.cluster en modifiant les paramètres mentionnés ci-dessus (en particulier classes, convergence et itérations) dans le but d'affiner le fichier de signatures spectrales (NB : changez le nom du fichier généré de signatures spectrales ainsi que du rapport à chaque nouvelle tentative afin d'avoir un panel de fichiers de signatures spectrales pour le passage de i.maxlik et de pouvoir ainsi comparer les résultats de vos paramétrages successifs sur la qualité de la classification).
Classification d'image supervisée (dirigée) à partir d'un raster d'apprentissage : i.gensig
Dans une classification supervisée, on ne laisse plus le soin à un  algorithme de clustering de déterminer les classes et leur composition.  On fournira en entrée à i.maxlik, un fichier de signatures  spectrales généré soit par la fonction i.gensig soit par la  fonction i.class.
L'utilisation d'i.gensig est  réservée aux cas où vous disposez d'une image ayant déjà fait l'objet  d'une classification, et que vous vouliez prendre celle-ci comme base  afin de procéder à une nouvelle classification. C'est en particulier  bien indiqué lorsque l'on travaille sur une mosaïque d'images d'une  région ou encore sur des séries temporelles issues du même capteur sur  la même zone. 
Cela donne a minima une base de travail. Il est  indispensable de revenir ensuite au cas par cas sur les dissimilarités  entre les deux scènes : par exemple, acquisitions faites à deux saisons  différentes qui peuvent changer la couverture végétale du tout au tout.
(Attention  de ne pas fournir non plus n'importe quoi en entrée pour  l'apprentissage, à défaut de la même scène, le fichier de signatures  spectrales doit se montrer adapté au contexte de l'image, faute de quoi  il prendra des algues pour des plantations de salades (et vice-versa) si  les éléments en question possèdent la même signature spectrale).
Voici  un exemple de passage de la commande :
Le raster_classifie contient les valeurs des  différentes classes, à partir de celui-ci i.gensig va récupérer  les valeurs spectrales dans les bandes originales (ici Landsat_2000_infrarouge).  Le fichier_signatures_resultat mettra donc en correspondance la  valeur spectrale du pixel dans les différentes bandes et la valeur de  correspondance souhaitée dans le raster de classification.
Ce raster_classifie  peut avoir différentes provenances : par exemple, avoir été généré par  un logiciel de traitement d'images autre que GRASS (ou encore avoir été  constitué par l'utilisateur au moyen de la fonction r.digit -  dans ce cas précis, i.class se montre un peu plus adapté...).
Classification d'image supervisée (dirigée) à partir d'un apprentissage interactif : i.class
Dans le second cas de figure évoqué ci-dessus, l'utilisateur trouvera  également pratique de pouvoir désigner les différentes classes de façon  interactive à l'aide de la fonction i.class.
Contrairement aux  algorithmes de clustering, l'oeil humain travaille généralement mieux à  partir d'une image où les différentes bandes ont été fusionnées. Il est  donc de bon goût de passer en argument de la fonction i.class sous  l'option map le nom de l'image RVB. Comme d'habitude, on passera  ensuite en argument le groupe et le sous-groupe d'images à classifier  (ce dernier contenant les canaux R, V et B séparés).
La fonction i.class possède une interface graphique  dédiée permettant à l'utilisateur de zoomer / dézoomer sur l'image, de  tracer le contour d'une région d'apprentissage (zone homogène),  d'analyser cette région (calcul d'un histogramme), de supprimer la  région dessinée ou de revenir au contour d'une région précédente.
Lorsque  l'on trace le contour d'une région d'apprentissage, il est plus  spécialement recommandé :
- de choisir des régions d'apprentissage suffisamment étendues (c'est-à-dire pas une poignée de pixels qui se battent en duel...),
 - ces régions d'apprentissage comporteront autant que possible des pixels de la même classe donnant des réponses spectrales différentes (par exemple, prairie sèche et prairie humide) afin que l'apprentissage soit aussi utile que possible,
 - de se méfier des pixels en limite de deux zones d'occupation du sol, dont la réponse spectrale est mélée et qui ne doivent pas être inclus dans les régions d'apprentissage. Ces pixels mixtes sont d'autant plus nombreux que la résolution des images est faible et que les pixels couvrent une plus grande surface et ont des chances de comprendre des classes très diverses sur le plan spectral.
 
La valeur ajoutée déterminante de cette méthodologie est dans l'interprétation de l'image par l'opérateur humain. Une classification supervisée à partir de classes d'apprentissage fournies par un humain pourra ainsi donner de bien meilleurs résultats qu'une classification automatique pour autant que l'interprète ait une bonne connaissance de la vérité-terrain étudiée (reconnaître tel ou tel type de couvert végétal), et soit en mesure de bien définir les régions d'apprentissage pour l'algorithme de clustering et/ou l'algorithme de classification.
Algorithme de classification par maximum de ressemblance : i.maxlik
L'utilisation de la fonction suivante i.maxlik est beaucoup plus simple puisqu'elle applique la segmentation en classes sur le lot de bandes radiométriques du sous-groupe. (Par conséquent, si vous souhaitez améliorer votre classification, il faut toujours travailler en amont d'i.maxlik, au niveau du paramétrage d'i.cluster et/ou d'i.class puis passer en argument les différents fichiers de clustering que vous aurez généré dans l'option sigfile).
Ici, ma_classif2 contient le résultat de la classification,  l'algorithme ayant attribué une valeur discrète à chaque cellule du  raster résultant.
Même si elle n'est qu'optionnelle, il est  chaudement conseillé d'utiliser le paramètre reject=confiance_classif2  qui attribue à ces mêmes pixels une valeur de confiance et permet  d'évaluer la qualité de la classification des pixels en question.
Michael  Shapiro recommande en particulier de réutiliser cette couche raster à  l'intérieur de la fonction r.mask afin de mettre en évidence les  pixels les plus "douteux" (il s'agira notamment des pixels à réponse  spectrale mixte en bordure des régions d'apprentissage) et de masquer  ceux qui au contraire ont été classifiés sans ambiguïté.
    Site officiel :
    GRASS GIS