Projet de MBAI
Philippe Tieghem - Yves Capion
Détection de contours d'une image couleur par la méthode du gradient
L'image couleur traitée
dans la suite est le panier de fruits ci-dessous (fruits.jpg)
Remarquons que toutes les images utilisées dans ce document ont été traitées en format rvb mais sont affichées en jpeg pour des contraintes liées à l'application Netscape.
Description de la méthode du gradient pour une image en niveaux de gris
Un contour se caractérise
sur une image par une discontinuité des niveaux de gris. Par conséquent,
le gradient 2D des niveaux de gris sur un contour est maximal. Si on effectue
le calcul du gradient sur l'ensemble de l'image, puis qu'on réalise
un seuillage de l'image obtenue, on ne conservera alors que les maximas
du gradient, et donc les contours des objets. Le but est donc dans un premier
temps de faire le calcul du gradient. Celui-ci ne s'obtient pas par une
approche analytique. On l'évalue le plus souvent par des applications
de masque, prenant en considération les variations locales des niveaux
de gris. Les masques les plus utilisés sont représentés
ci-dessous (on utilisera dans la suite le masque de Sobel). Le module du
gradient s'obtient alors comme suit :
- on place le masque sur chaque pixel de l'image successivement (au centre des masques 3x3, au coin supérieur gauche des masques 2x2).
- on effectue le produit des niveaux de gris des pixels par la valeur du masque la recouvrant, et on prend la valeur absolue de la somme de chaque produit.
- on effectue à nouveau l'opération en tournant le masque de 90°. Le module du gradient est la somme des deux valeurs absolues obtenues dans chaque configuration.
Suite à cette
évaluation du gradient, il ne reste généralement plus
qu'à seuiller l'image, afin de n'avoir que les fortes variations
de gradient. Ce seuillage dépend des caractéristiques de
l'image initiale : éclairage homogène ou non, importance
du bruit,...
Masques utilisés pour l'évaluation
du gradient
Applications de la méthode à une image en couleur
L'image couleur se caractérise par trois canaux portant les informations de niveaux de rouge, vert et bleu, la combinaison des trois composantes donnant l'image finale. La détection de contours doit donc se faire en prenant en compte les informations contenues dans les trois couleurs.
Deux méthodes sont envisageables. Dans un premier temps, on peut se ramener au cas d'une image à niveaux de gris en calculant la luminance de l'image couleur. Celle-ci s'obtient au pixel (i,j) par la formule :
où Y désigne la luminance, R, V et B les niveaux de rouge, vert et bleu.
Une fois la luminance
obtenue, il suffit alors d'évaluer le gradient sur cette composante
de la même façon que sur une image en niveaux de gris.
La deuxième
méthode consiste à calculer un gradient sur chaque composante.
On obtient donc les contours rouges, verts et bleus. Il faut ensuite réussir
à fusionner les informations provenant de chaque couleur. On décide
donc de prendre le maximum en un pixel des trois gradients calculés
précédemment.
Ce choix a le mérite
d'accorder immédiatement de l'importance aux discontinuités
existantes sur une couleur. Ainsi, si le bleu et le rouge restent à
un niveau constant, tandis que le vert effectue un saut conséquent,
l'information de contours sera prise sur le vert. On aurait pu choisir
de prendre la moyenne des trois gradients comme méthode de fusion,
mais cette opération a le désavantage d'atténuer les
fortes variations d'une couleur, si les autres varient peu. Ainsi, dans
l'exemple précédent, la discontinuité sur la couleur
verte aurait été considérablement diminuée.
Filtrons l'image obtenue par un seuillage à 170. On élimine
ainsi les traits grossiers du filtre primitif, les contours dessinés
restent gras mais sont satisfaisants. (Rem: On aurait pu appliquer ce seuillage
à l'image obtenue par traitement de la luminance, le résultat
aurait été sensiblement similaire)
Cependant ce choix reste tout à fait arbitraire. Il formalise une distance particulière, on aurait pu en faire un autre. Pourquoi ne pas avoir pris la distance euclidienne par exemple, ou de s'en etre inspirée, de celle-la ou d'une autre. Celle-ci présente un inconvénient : elle n'est pas normalisée (!) Son résultat brut peut excéder 255 et ne peut être directement retranscrit en image. Laissons libre cours à notre imagination pour illustrer ce phénomène:
La norme euclidienne des trois composantes RVB du gradient
Les composantes RVB du gradient moyennées
Epilogue
Le lecteur s'est sans doute rendu compte, à travers ces quelques exemples, que seul l'oeil particulièrement aiguisé peut certifier d'une différence entre ces détections. Il en est ainsi de tous les traitements d'images. Le choix d'une technique de détection plutôt qu'une autre est tout à fait subjective et dépend en grande partie des applications que chacun veut en tirer.