Dans l’article précédent (https://www.sigterritoires.fr/index.php/classification-supervisee-dimages-de-drone-en-milieu-littoral-1-utilisation-de-la-texture/ ) nous avons vu comment calculer la matrice de co-occurrence de niveau gris (GLCM) qui est à la base des calculs de texture d’image.
Nous avions calculé les fréquences des paires de pixels présents dans notre fenêtre de calcul. Travailler avec des fréquences rend la comparaison entre fenêtrees diffcile. C’est pourquoi nous travaillerons avec une matrice « normalisée ».
Exprimer la GCGL comme probabilité
Avant de voir les différentes variables que l’on peut calculer pour caractériser les textures, il nous faut achever le travail avecx notre petite image d’exemple. Ci-dessous vous verrez la matrice avec les fréquences horizontales, c’est-à-dire en comptant chaque paire dans le sens E-W et W-E pour avoir une matrice symétrique.
On peut se poser la question : Est-il plus probable de trouver une combinaison horizontale de, disons, 2-2 dans l’image originale, ou est-ce 2-3 la plus probable ?
L’examen de la GLCM horizontale montre que la combinaison 2-2 se produit 6 fois sur les 24 combinaisons horizontales de pixels de l’image (12 à l’est + 12 à l’ouest). En d’autres termes, 6 est l’entrée dans le GLCM horizontal dans la troisième colonne (valeur de pixel de référence = 2) et la troisième ligne (valeur de pixel voisin = 2). La définition la plus simple de la probabilité d’un résultat donné est « le nombre de fois que ce résultat se produit, divisé par le nombre total de résultats possibles. » En utilisant cette définition, nous pouvons calculer : la combinaison (2-2) se produit dans 6 cellules sur 24, pour une probabilité de 6/24 = 1/4 ou 0,250. La probabilité de (2-3) est de 1/24 ou 0,42.
Voici l’équation pour transformer la GLCM en une approximation proche d’une table de probabilités :
La Probabilité de la paire 2-3, c’est-à-dire P2,3 est égale à la valeur de la fréquence observée de cette paire V2,3 divisée par le nombre de paires totales présentes (somme de toutes les fréquences de la matrice).
Ce n’est qu’une approximation parce qu’une vraie probabilité nécessiterait des valeurs continues, et nous traitons ici de valeurs de fréquence discrètes, qui ne peuvent être que des nombres entiers. Donc, ce processus est appelé normalisation de la matrice. La normalisation implique de diviser par la somme des valeurs. Il ne diffère de la probabilité que dans un sens formel.
Pondération des valeurs de la matrice
La plupart des calculs de mesure de texture sont des moyennes pondérées du contenu normalisé des cellules GLCM. Une moyenne pondérée multiplie chaque valeur à utiliser par un facteur (un poids) avant de les additionner et de les diviser par le nombre de valeurs. Le poids est destiné à exprimer l’importance relative de la valeur.
Calcul des mesures de texture
Les mesures de texture sont les différentes valeurs utilisées pour résumer la GLCM symétrique normalisé de manière utile. Ce sont les choses les plus souvent citées dans la littérature : « Contraste»; « Dissimilarité »; « Entropie », etc. Il y en a plusieurs parce que chacune résume d’une manière différente la matrice GLCM, permettant de choisir celle qui s’ajuste au mieux au problème posé. Dans cette section on verra comment sont calculées les principales mesures utilisées.
Groupes de mesures de texture
Nous regroupons ici les mesures de texture selon le but recherché par la pondération dans les équations.
Une autre façon commune de classer les textures est selon leur degré, ce qui signifie l’exposant le plus élevé utilisé. La plupart des mesures – et toutes celles utilisées ici – sont de premier ou deuxième degré. Ici nous ne faisons pas du degré le critère principal de classification, à des fins entièrement pratiques. L’intention ici est de relier les mesures de texture à leur capacité d’approcher une distinction visuelle entre les textures. N’oubliez pas que toutes les mesures de GLCM sont de « second ordre », ce qui signifie qu’elles calculent la mesure à partir de GLCM (paires de pixels). Les mesures du « premier ordre » calculent quelque chose (par exemple l’écart-type) à partir des valeurs de pixels originales elles-mêmes dans une fenêtre, et non à partir des valeurs de GLCM. Il est facile de confondre ces deux notions lors de la lecture de la littérature, et en effet il n’est pas très clair dans certains fichiers d’aide.
Nous verrons trois groupes de mesures de la texture :
- Groupe de contraste
- Groupe de mesures liées à l’ordre
- Groupe de statistiques descriptives de la mesure de texture GLCM
Groupe de mesures de Contraste
Contraste
Les mesures liées au contraste utilisent des poids liés à la distance de la diagonale GLCM.
Le principe est assez simple : Pour accentuer le contraste, on génère un poids qui donne comme résultat un chiffre plus grand que la simple différence entre les deux pixels adjacents.
Voyons cela. Les valeurs de la diagonale GLCM ne montrent aucun contraste. Les deux pixels ont la même valeur dans l’image de départ. Le contraste augmente en s’éloignant de la diagonale. Par exemple, 10 colonnes à droite de la diagonale, la différence entre les deux pixels sera de dix valeurs. Donc, créer un poids qui augmente à mesure que la distance de la diagonale augmente va augmenter dans la mesure de texture résultante l’écart entre les deux pixels de chaque paire.
Nous reprenons notre exemple de matrice, en considérant qu’elle correspond à la fenêtre définie pour le calcul (même si elle n’est pas impaire).
La formule de calcul de la texture Contraste est
Le poids dans cette formule est donné par (i – j)2
Lorsque i et j sont égaux, la cellule est sur la diagonale et (i-j)=0.
Ces valeurs représentent des pixels tout à fait similaires à leur voisin, de sorte qu’ils reçoivent un poids de 0 (pas de contraste).
Si i et j diffèrent par 1, il y a un petit contraste, et le poids est de 1.
Si i et j diffèrent de 2, le contraste augmente et le poids est de 4.
Les poids continuent d’augmenter de façon exponentielle à mesure que (i-j) augmente. Le résultat final pour cette fenêtre sera affecté au pixel central. Ce résultat est la somme des résultats de pondération des 4 x 4 cellules, dans ce cas 0.586 .
Dissimilarité
Au lieu que les poids augmentent de façon exponentielle (0, 1, 4, 9, etc.) au fur et à mesure qu’on s’éloigne de la diagonale comme on fait pour le contraste, les poids de dissimilarité augmentent linéairement (0,1,2,3 etc.).
Le résultat final pour cette fenêtre sera affecté au pixel central. Ce résultat est la somme des résultats de pondération des 4 x 4 cellules, dans ce cas 0.415 .
Inverse Difference Moment – IDM ( Homogénéité)
La dissimilarité et le contraste augmentent les valeurs de la texture de manière à augmenter le contraste. Par contre, si on diminue les poids au fur et à mesure que l’on s’éloigne de la diagonale, la mesure de texture calculée sera plus grande pour les fenêtres avec peu de contraste. Les poids d’homogénéité sont calculés par l’inverse du poids du contraste, les poids diminuant de façon exponentielle par rapport à la diagonale.
Le résultat final pour cette fenêtre sera affecté au pixel central. Ce résultat est la somme des résultats de pondération des 4 x 4 cellules, dans ce cas 0.764 .
Groupe de mesures d’ordre
Le mot ordre, ici, signifie à quel point les différences de valeurs de pixels dans la fenêtre sont régulières (« ordonnées », « rangées »).
Prenons un exemple : les deux images ci-dessous ont le même degré de contraste horizontal (chaque pixel est inférieur à son voisin de droite). Mais le degré d’ordre est très différent.
En termes visuels cela donne:
Dans l’image plus ordonnée à gauche, chaque paire de valeurs se produit plusieurs fois : 2 est à côté de 1 quatre fois, 3 est à côté de 2 quatre fois, etc. Pour l’image moins ordonnée, les combinaisons se produisent moins souvent : 2 est à côté de 1 une seule fois, 3 à côté de 2 trois fois, et ainsi de suite.
Les mesures de l’ordre, comme les mesures de contraste, utilisent une moyenne pondérée des valeurs de la matrice GLCM. Le poids est construit en fonction du nombre de fois qu’une paire donnée se produit, donc :
- Un poids qui augmente la fréquence observée donnera une mesure de texture d’ordre plus forte ;
- Un poids qui diminue la fréquence observée produit une mesure de texture d’ordre qui augmente avec le désordre
Étant donné que les valeurs Pij dans la matrice GLCM sont déjà une mesure de la fréquence de l’occurrence, il est logique de les utiliser sous une forme quelconque comme poids pour eux-mêmes. Ainsi les poids sont dérivés de chaque valeur de cellule de la GLCM elle-même (et nous ne pouvons pas faire un tableau a priori comme pour les calculs de contraste).
Angular Second Moment(ASM),Energie
L’ASM et l’Energie utilisent chaque Pij comme un poids pour eux-mêmes. Des valeurs élevées d’ASM ou d’énergie se produisent lorsque la fenêtre est très ordonnée. L’équation de l’ASM est la suivante :
Le résultat final pour une fenêtre et qui sera affecté au pixel central, sera la somme des fréquences au carré observées dans les différentes cellules de la fenêtre.
Dans le traitement de r.texture l’Energie n’est pas calculée. A l’occasion on peut utiliser la racine carrée de l’ASM comme mesure de texture. On appelle Energie cette valeur :
Entropie
Pour le calcul de l’entropie, on choisit comme terme de pondération le logarithme de la valeur Pij.
La formule de l’entropie est :
Il faut quand même quelques aménagements, car ln(0) n’est pas défini. Donc on définit que quand la valeur de fréquence dans la GLCM est 0 on aura 0*ln(0)= 0 .
Attention ! Il ne faut pas confondre les valeurs 0 d’origine sur l’image (zones de bordure, par exemple, ou codes) avec les valeurs 0 dans la GLCM (une combinaison de pixels de référence et voisins a simplement un compte de 0). Ainsi pour la GLCM, une entrée de 0 est tout à fait possible, même commune, car elle ne signifie pas autre chose que deux valeurs de pixels ne sont jamais adjacentes. L’équation d’entropie se réfère aux entrées de la GLCM, et non aux valeurs de pixel. La GLCM ne peut pas avoir d’entrées négatives, donc cette spécification supplémentaire de ce qu’il faut faire avec ln(0) est tout à fait adéquate et indispensable.
L’utilisation de ln pour l’équation d’entropie de la GLCM signifie que :
Pij est toujours compris entre 0 et 1, car il s’agit d’une probabilité et une probabilité ne peut jamais être supérieure à 1 ni inférieure à 0.
Par conséquent ln(Pij ) sera toujours égal à 0 ou négatif.
Plus la valeur de Pij est petite (c.-à-d. que la fréquence de cette combinaison de pixels est faible), plus la valeur absolue de ln(Pij ) est grande, plus le multiplicateur (-1) de l’équation d’entropie rend chaque terme positif.
Par conséquent, plus la valeur Pij est petite, plus le poids est important et plus la valeur de -[Pij *ln(Pij )] est grande.
Cela peut être déroutant, comme toujours quand on se retrouve avec des nombres négatifs, mais même si vous choisissez de ne pas passer plus de temps à travailler cela en détail pour vous-même, retenez que l’effet global est quand on a de grandes valeurs d’entropie cela nous indique un plus grand désordre, et ces zones de haute entropie apparaîtront plus brillantes sur l’image de texture d’entropie.
Dans le prochain article nous verrons le dernier groupe de mesures de texture avec le statistiques descriptives, ainsi que quelques conseils pour le calcul des mesures dans le but de les intégrer dans une classification supervisée d’image.
Bonjour,
Les images dont vous présentez l’analyse sont elles disponibles ?
Je souhaiterais pouvoir les mettre en pratique pour accompagner votre tutoriel.
Merci pour cette publication fort intéressante.
Je vous envoie les images par mail
Merci