Sous-sections

7.2.4 Matrice de co-occurrence des niveaux de gris

Les descripteurs statistiques décrits précédemment ne fournissent pas d'information concernant la nature périodique qu'une texture peut présenter. Ainsi, la texture de fond d'images (petits carrés obliques) de la figure 7.3 présente un caractère périodique qu'aucun descripteur introduit précédemment ne pourra mettre en lumière.

La matrice de co-occurrence introduite ci-après va nous offrir un premier moyen de caractériser la périodicité et la directivité des textures.

L'idée consiste à étudier la texture au moyen d'une fenêtre B d'observation de la texture en comptabilisant le nombre de paires de pixels distants de d qui présentent une différence $ \Delta$z en niveaux de gris. En plus de la distance, on tient compte de la direction définie par toute paire de pixels.

Une matrice de co-occurrence est définie au moyen d'une relation géométrique R entre deux pixels (x1, y1) et (x2, y2). Un exemple de relation géométrique simple est

x2 = x1 + 1 (7.10)
y2 = y1 (7.11)

pour lequel le pixel (x2, y2) est le pixel voisin de droite de (x1, y1).

La matrice de co-occurrence CR(i, j) est carrée et de dimension L×L, où L est le nombre de niveaux de gris présents dans B. Les indices de la matrice de co-occurrence sont donc les niveaux de gris de la texture étudiée. La matrice CR(i, j) se construit comme suit :

  1. Initialisation de la matrice : $ \forall$i, j $ \in$ $ \left[\vphantom{0,L}\right.$0, L$ \left.\vphantom{0,L}\right[$  :  CR(i, j) = 0.
  2. Remplissage de la matrice. Si la relation R entre deux pixels (x1, y1) et (x2, y2) est respectée:

    CR$\displaystyle \left(\vphantom{f(x_{1},y_{1}),f(x_{2},y_{2})}\right.$f (x1, y1), f (x2, y2)$\displaystyle \left.\vphantom{f(x_{1},y_{1}),f(x_{2},y_{2})}\right)$ = CR$\displaystyle \left(\vphantom{f(x_{1},y_{1}),f(x_{2},y_{2})}\right.$f (x1, y1), f (x2, y2)$\displaystyle \left.\vphantom{f(x_{1},y_{1}),f(x_{2},y_{2})}\right)$ + 1

Dès lors, CR(i, j) contient le nombre de fois que l'on a rencontré dans B deux pixels (x1, y1), (x1, y1) vérifiant la relation géométrique R et tel que f (x1, y1) = i et f (x2, y2) = j. En pratique, on utilise des relations géométriques assez simples comme celle citée comme exemple. Ainsi, on définit une matrices orientées

P90o, d(i, j) = $\displaystyle \sharp$$\displaystyle \left\{\vphantom{ (x_{1},y_{1}),(x_{2},y_{2})\in B\,\vert\, x_{1}...
...-y_{1}\right\vert=d,\, f(x_{1},y_{1})=i\,\textrm{et}\, f(x_{2},y_{2})=j}\right.$(x1, y1),(x2, y2) $\displaystyle \in$ B | x1 = x2,$\displaystyle \left\vert\vphantom{y_{2}-y_{1}}\right.$y2 - y1$\displaystyle \left.\vphantom{y_{2}-y_{1}}\right\vert$ = df (x1, y1) = i et f (x2, y2) = j$\displaystyle \left.\vphantom{ (x_{1},y_{1}),(x_{2},y_{2})\in B\,\vert\, x_{1}=...
...y_{1}\right\vert=d,\, f(x_{1},y_{1})=i\,\textrm{et}\, f(x_{2},y_{2})=j}\right\}$ (7.12)

90o correspond à une direction verticale et d détermine la distance entre les deux pixels en question. De même, on définit

P0o, d(i, j) = $\displaystyle \sharp$$\displaystyle \left\{\vphantom{ (x_{1},y_{1}),(x_{2},y_{2})\in B\,\vert\, y_{1}...
...-x_{1}\right\vert=d,\, f(x_{1},y_{1})=i\,\textrm{et}\, f(x_{2},y_{2})=j}\right.$(x1, y1),(x2, y2) $\displaystyle \in$ B | y1 = y2,$\displaystyle \left\vert\vphantom{x_{2}-x_{1}}\right.$x2 - x1$\displaystyle \left.\vphantom{x_{2}-x_{1}}\right\vert$ = df (x1, y1) = i et f (x2, y2) = j$\displaystyle \left.\vphantom{ (x_{1},y_{1}),(x_{2},y_{2})\in B\,\vert\, y_{1}=...
...x_{1}\right\vert=d,\, f(x_{1},y_{1})=i\,\textrm{et}\, f(x_{2},y_{2})=j}\right\}$ (7.13)

Cette définition fournit une matrice symétrique -ce qui permet de ne stocker qu'une partie de la matrice.

Il est également possible de définir d'autres matrices correspondant aux directions 45o et 135o.

Exemple. Soit l'image suivante comportant L = 4 niveaux de gris (l = 0, 1, 2, 3) :

f (x, y) = $\displaystyle \begin{array}{cccc} 0 & 0 & 0 & 1\\  0 & 0 & 1 & 1\\  0 & 2 & 2 & 3\\  2 & 2 & 3 & 3\end{array}$ (7.14)

Les matrices P0o, 1 et P90o, 1 sont donc de dimension 4 et valent

P0o, 1 = $\displaystyle \left[\vphantom{\begin{array}{cccc} 6 & 2 & 1 & 0\\  2 & 2 & 0 & 0\\  1 & 0 & 4 & 2\\  0 & 0 & 2 & 2\end{array}}\right.$$\displaystyle \begin{array}{cccc} 6 & 2 & 1 & 0\\  2 & 2 & 0 & 0\\  1 & 0 & 4 & 2\\  0 & 0 & 2 & 2\end{array}$$\displaystyle \left.\vphantom{\begin{array}{cccc} 6 & 2 & 1 & 0\\  2 & 2 & 0 & 0\\  1 & 0 & 4 & 2\\  0 & 0 & 2 & 2\end{array}}\right]$          P90o, 1 = $\displaystyle \left[\vphantom{\begin{array}{cccc} 6 & 1 & 2 & 0\\  1 & 2 & 1 & 1\\  2 & 1 & 2 & 1\\  0 & 1 & 1 & 2\end{array}}\right.$$\displaystyle \begin{array}{cccc} 6 & 1 & 2 & 0\\  1 & 2 & 1 & 1\\  2 & 1 & 2 & 1\\  0 & 1 & 1 & 2\end{array}$$\displaystyle \left.\vphantom{\begin{array}{cccc} 6 & 1 & 2 & 0\\  1 & 2 & 1 & 1\\  2 & 1 & 2 & 1\\  0 & 1 & 1 & 2\end{array}}\right]$ (7.15)

On peut remarquer que les matrices de co-occurrence sont bien symétriques. D'autre part, la somme des valeurs des occurrences vaut 24 tant pour P0o, 1 que pour P90o, 1.

L'analyse de textures sur base de la matrice de co-occurrence est fondée sur l'occurrence répétée d'une configuration typique dans la texture; cette configuration varie rapidement en fonction de la distance pour des textures fines et lentement pour des textures plus grossière. Les matrices de co-occurrence sont généralement utilisées par des algorithmes automatiques, à des fins d'identification par exemple. Seuls des cas simples, comme celui décrit ci-après, permettent une interprétation intuitive du contenu d'une matrice de co-occurrence.

Considérons la texture suivante comportant deux niveaux de gris 0 et 1:

0 0 0 0 0 0
1 1 1 1 1 1
0 0 0 0 0 0
1 1 1 1 1 1
0 0 0 0 0 0
1 1 1 1 1 1
(7.16)

composée de lignes noires (ou blanches !) horizontales et calculons les matrices de co-occurrence pour les directions horizontales et verticales ainsi que pour d valant 1 et 2 :

P0o, 1 = $\displaystyle \left[\vphantom{\begin{array}{cc} 30 & 0\\  0 & 30\end{array}}\right.$$\displaystyle \begin{array}{cc} 30 & 0\\  0 & 30\end{array}$$\displaystyle \left.\vphantom{\begin{array}{cc} 30 & 0\\  0 & 30\end{array}}\right]$          P90o, 1 = $\displaystyle \left[\vphantom{\begin{array}{cc} 0 & 30\\  30 & 0\end{array}}\right.$$\displaystyle \begin{array}{cc} 0 & 30\\  30 & 0\end{array}$$\displaystyle \left.\vphantom{\begin{array}{cc} 0 & 30\\  30 & 0\end{array}}\right]$ (7.17)

P0o, 2 = $\displaystyle \left[\vphantom{\begin{array}{cc} 24 & 0\\  0 & 24\end{array}}\right.$$\displaystyle \begin{array}{cc} 24 & 0\\  0 & 24\end{array}$$\displaystyle \left.\vphantom{\begin{array}{cc} 24 & 0\\  0 & 24\end{array}}\right]$          P90o, 2 = $\displaystyle \left[\vphantom{\begin{array}{cc} 24 & 0\\  0 & 24\end{array}}\right.$$\displaystyle \begin{array}{cc} 24 & 0\\  0 & 24\end{array}$$\displaystyle \left.\vphantom{\begin{array}{cc} 24 & 0\\  0 & 24\end{array}}\right]$ (7.18)

On peut donner une interprétation à ces résultats. Dans la direction horizontale (0o), on ne peut trouver que des transitions noir-blanc, les matrices P0o, d ne peuvent donc être que diagonales. Pour les matrices P90o, d, on voit que l'on peut caractériser la taille de la texture grâce à la valeur de d.

Les matrices de co-occurrence permettent donc de caractériser la répétition de motifs dans une texture. Néanmoins, il faut remarquer que la taille d'une matrice de co-occurrence est proportionnelle au nombre de niveaux de gris de la texture. Pour L = 256, il faudrait donc des matrices carrées de taille 256×256. De plus, il faut considérer une matrice par couple (direction, d), ce qui entraîne un nombre assez élevé de descripteurs de texture.

À partir des matrices de co-occurrence, on a créé toute une série de nouveaux descripteurs (en nombre restreint cette fois-ci) permettant de mettre en évidence les paramètres les plus importants de ces matrices de co-occurrence.

7.2.4.1 Probabilité maximale

C'est simplement la valeur maximale normalisée d'une des matrices ou de toutes les matrices de co-occurrence considérées.

7.2.4.2 Moments

Le moment d'ordre k d'une matrice de co-occurrence CR(i, j) est défini par

$\displaystyle \left(\vphantom{m_{R}}\right.$mR$\displaystyle \left.\vphantom{m_{R}}\right)_{{k}}^{}$ = $\displaystyle \sum_{{i=0}}^{{L-1}}$$\displaystyle \sum_{{j=0}}^{{L-1}}$(i - jCR(i, j) (7.19)

Ce descripteur a de faibles valeurs lorsque les éléments diagonaux de CR sont grands. L'effet inverse peut être obtenus grâce aux moments de la différence inverse.

7.2.4.3 Moments de la différence inverse

$\displaystyle \left(\vphantom{m_{R}^{-1}}\right.$mR-1$\displaystyle \left.\vphantom{m_{R}^{-1}}\right)_{{k}}^{}$ = $\displaystyle \sum_{{i=0}}^{{L-1}}$$\displaystyle \sum_{{j=0}}^{{L-1}}$$\displaystyle {\frac{{C_{R}(i,j)}}{{(i-j)^{k}}}}$i $\displaystyle \neq$ j (7.20)


7.2.4.4 Contraste

C(k, n) = $\displaystyle \sum_{{i=0}}^{{L-1}}$$\displaystyle \sum_{{j=0}}^{{L-1}}$| i - j|k CR(i, j)n (7.21)


7.2.4.5 Entropie

H = - $\displaystyle \sum_{{i=0}}^{{L-1}}$$\displaystyle \sum_{{j=0}}^{{L-1}}$CR(i, j) log2CR(i, j) (7.22)


Marc Van Droogenbroeck. Tous droits réservés.
2003-09-30