Sous-sections


6.1.5 Expressions pratiques d'opérateurs de gradient et masques de convolution

À partir des différents opérateurs discrets introduits plus haut, nous allons voir comment définir différentes formes de base de filtre ainsi que les masques de convolution que l'on pourra appliquer directement aux images échantillonnées.

Le passage le plus simple des expressions analytiques valables pour des images continues à des images échantillonnées s'effectue en considérant un pas d'échantillonnage h identique en x et en y. Par convention, h est choisi égal à 1; dès lors, f (x + hy) représente alors le pixel situé juste à droite (ou à gauche selon l'orientation de l'axe x) du pixel f (x, y).

6.1.5.1 Formes de base pour la dérivée première

L'approximation la plus sommaire de la dérivée première dans la direction x consiste à prendre la différence entre deux pixels voisins en utilisant le masque de convolution suivant6.1

$\displaystyle \left[\vphantom{\begin{array}{cc} 1 & -1\end{array}}\right.$$\displaystyle \begin{array}{cc} 1 & -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{cc} 1 & -1\end{array}}\right]$ (6.32)

ce qui correspond en fait à l'approximation non-centrée suivante

$\displaystyle {\frac{{f(x+h,y)-f(x,y)}}{{h}}}$ (6.33)

Ce masque présente un inconvénient majeur: le résultat est décalé d'un demi pixel par rapport aux points utilisés pour le calcul. On lui préfère généralement le masque étendu suivant

$\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & 0 & -1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & 0 & -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & 0 & -1\end{array}}\right]$ (6.34)

qui correspond à l'approximation centrée décrite en détail précédemment. Ce petit masque s'applique directement sur la grille des pixels de l'image que l'on désire traiter, en plaçant le 0 sur le pixel en cours de traitement. Une approximation de la dérivée première dans la direction y est donnée par

$\displaystyle \left[\vphantom{\begin{array}{c} 1\\  0\\  -1\end{array}}\right.$$\displaystyle \begin{array}{c} 1\\  0\\  -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{c} 1\\  0\\  -1\end{array}}\right]$ (6.35)

Dans la foulée, on peut imaginer l'utilisation du masque suivant

$\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & 0 & 0\\  0 & 0 & 0\\  0 & 0 & -1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & 0 & 0\\  0 & 0 & 0\\  0 & 0 & -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & 0 & 0\\  0 & 0 & 0\\  0 & 0 & -1\end{array}}\right]$ (6.36)

pour procéder à une dérivation directionnelle dans la direction diagonale 1350. La figure 6.5 montre le résultat de l'application de divers opérateurs de dérivée. L'image originale est définie sur 8 bits de luminance; les images gradients ont été décalées de 128.

Figure 6.5: Illustrations de l'application de masques de dérivée première: (a) image originale, (b) application d'un masque horizontal, (c) application d'un masque vertical et (d) application d'un masque à 1350.
6395  
6398  
6401  
6404  

6.1.5.1.1 Problème pratiques.

L'utilisation des masques de convolution pose quelques problèmes pratiques:

6.1.5.1.2 Filtres gradient de PREWITT.

Les formes de base effectuent un gradient ligne par ligne ou colonne par colonne. Les directions horizontales et verticales sont dès lors privilégiées. Il existe des formes qui permettent de fournir un gradient aux caractéristiques plus isotropes. Pour y parvenir, ces formes s'étendent dans les deux directions.

Les filtres de gradient de PREWITT appartiennent à cette classe d'opérateurs gradient. Ils valent

$\displaystyle \left[\vphantom{h_{x}}\right.$hx$\displaystyle \left.\vphantom{h_{x}}\right]$ = $\displaystyle {\frac{{1}}{{3}}}$$\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & 0 & -1\\  1 & 0 & -1\\  1 & 0 & -1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & 0 & -1\\  1 & 0 & -1\\  1 & 0 & -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & 0 & -1\\  1 & 0 & -1\\  1 & 0 & -1\end{array}}\right]$ = $\displaystyle {\frac{{1}}{{3}}}$$\displaystyle \left[\vphantom{\begin{array}{c} 1\\  1\\  1\end{array}}\right.$$\displaystyle \begin{array}{c} 1\\  1\\  1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{c} 1\\  1\\  1\end{array}}\right]$ $\displaystyle \otimes$ $\displaystyle \left[\vphantom{\begin{array}{ccc} -1 & 0 & 1\end{array}}\right.$$\displaystyle \begin{array}{ccc} -1 & 0 & 1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} -1 & 0 & 1\end{array}}\right]$ (6.37)

$\displaystyle \left[\vphantom{h_{y}}\right.$hy$\displaystyle \left.\vphantom{h_{y}}\right]$ = $\displaystyle {\frac{{1}}{{3}}}$$\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & 1 & 1\\  0 & 0 & 0\\  -1 & -1 & -1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & 1 & 1\\  0 & 0 & 0\\  -1 & -1 & -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & 1 & 1\\  0 & 0 & 0\\  -1 & -1 & -1\end{array}}\right]$ = $\displaystyle {\frac{{1}}{{3}}}$$\displaystyle \left[\vphantom{\begin{array}{c} 1\\  0\\  -1\end{array}}\right.$$\displaystyle \begin{array}{c} 1\\  0\\  -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{c} 1\\  0\\  -1\end{array}}\right]$ $\displaystyle \otimes$ $\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & 1 & 1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & 1 & 1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & 1 & 1\end{array}}\right]$ (6.38)

Figure 6.6: Image originale, images traitées respectivement par le filtre horizontal et le filtre vertical de PREWITT.
6469  

La figure  montre l'effet des filtres de PREWITT. Le calcul pratique s'effectue en appliquant successivement une convolution par la colonne verticale puis par la ligne horizontale, plutôt qu'en traitant l'image par la matrice carrée. En effet, on sait que f (x, y) $ \otimes$ $ \left(\vphantom{h_{xv}\otimes h_{xh}}\right.$hxv $ \otimes$ hxh$ \left.\vphantom{h_{xv}\otimes h_{xh}}\right)$ = $ \left(\vphantom{f(x,y)\otimes h_{xv}}\right.$f (x, y) $ \otimes$ hxv$ \left.\vphantom{f(x,y)\otimes h_{xv}}\right)$ $ \otimes$ hxv. Cette astuce algorithmique réduit quelque peu le nombre d'opérations à effectuer.

6.1.5.1.3 Filtres gradient de SOBEL.

Les filtres de SOBEL constituent une alternative aux filtres de PREWITT. Ils s'expriment comme suit

$\displaystyle \left[\vphantom{h_{x}}\right.$hx$\displaystyle \left.\vphantom{h_{x}}\right]$ = $\displaystyle {\frac{{1}}{{4}}}$$\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & 0 & -1\\  2 & 0 & -2\\  1 & 0 & -1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & 0 & -1\\  2 & 0 & -2\\  1 & 0 & -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & 0 & -1\\  2 & 0 & -2\\  1 & 0 & -1\end{array}}\right]$ = $\displaystyle {\frac{{1}}{{4}}}$$\displaystyle \left[\vphantom{\begin{array}{c} 1\\  2\\  1\end{array}}\right.$$\displaystyle \begin{array}{c} 1\\  2\\  1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{c} 1\\  2\\  1\end{array}}\right]$ $\displaystyle \otimes$ $\displaystyle \left[\vphantom{\begin{array}{ccc} -1 & 0 & 1\end{array}}\right.$$\displaystyle \begin{array}{ccc} -1 & 0 & 1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} -1 & 0 & 1\end{array}}\right]$ (6.39)

$\displaystyle \left[\vphantom{h_{y}}\right.$hy$\displaystyle \left.\vphantom{h_{y}}\right]$ = $\displaystyle {\frac{{1}}{{4}}}$$\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & 2 & 1\\  0 & 0 & 0\\  -1 & -2 & -1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & 2 & 1\\  0 & 0 & 0\\  -1 & -2 & -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & 2 & 1\\  0 & 0 & 0\\  -1 & -2 & -1\end{array}}\right]$ = $\displaystyle {\frac{{1}}{{4}}}$$\displaystyle \left[\vphantom{\begin{array}{c} 1\\  0\\  -1\end{array}}\right.$$\displaystyle \begin{array}{c} 1\\  0\\  -1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{c} 1\\  0\\  -1\end{array}}\right]$ $\displaystyle \otimes$ $\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & 2 & 1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & 2 & 1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & 2 & 1\end{array}}\right]$ (6.40)

La figure 6.7 montre l'effet des filtres de SOBEL.

Figure 6.7: Une image originale et les images traitées par application d'un masque de SOBEL (respectivement horizontal et vertical).
6521  

La comparaison des figures 6.6 et 6.7 montre que les différences entre les images filtrées sont minimes.

6.1.5.2 Formes de base pour la dérivée seconde

Les formes de base comprennent les filtres horizontaux et verticaux suivants

$\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & -2 & 1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & -2 & 1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & -2 & 1\end{array}}\right]$ (6.41)

$\displaystyle \left[\vphantom{\begin{array}{c} 1\\  -2\\  1\end{array}}\right.$$\displaystyle \begin{array}{c} 1\\  -2\\  1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{c} 1\\  -2\\  1\end{array}}\right]$ (6.42)

provenant directement de l'approximation de la dérivée seconde donnée précédemment.

On peut obtenir un filtre bidimensionnel en combinant les deux expressions précédentes ou lui préférer un masque de type

$\displaystyle \left[\vphantom{\begin{array}{ccc} 0 & 1 & 0\\  1 & -4 & 1\\  0 & 1 & 0\end{array}}\right.$$\displaystyle \begin{array}{ccc} 0 & 1 & 0\\  1 & -4 & 1\\  0 & 1 & 0\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 0 & 1 & 0\\  1 & -4 & 1\\  0 & 1 & 0\end{array}}\right]$ (6.43)

qui a un caractère plus isotrope.

La figure 6.8 illustre l'application de ces différents masques; on y a représenté respectivement l'image originale, le laplacien horizontal, le laplacien vertical, le laplacien obtenu avec le masque 6.43 et enfin l'image résultant de l'application du masque suivant

$\displaystyle \left[\vphantom{\begin{array}{ccc} 1 & 1 & 1\\  1 & -8 & 1\\  1 & 1 & 1\end{array}}\right.$$\displaystyle \begin{array}{ccc} 1 & 1 & 1\\  1 & -8 & 1\\  1 & 1 & 1\end{array}$$\displaystyle \left.\vphantom{\begin{array}{ccc} 1 & 1 & 1\\  1 & -8 & 1\\  1 & 1 & 1\end{array}}\right]$ (6.44)

Figure 6.8: Illustrations de l'application de masques de dérivée seconde.
6560  
6563  
6566  
6569  



Notes

... suivant6.1
En toute rigueur, tous les masques sont précédés de facteurs de normalisation. Nous négligerons parfois ces facteurs car, en pratique, on renormalise bien souvent le résultat.

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