PROJET DE MTI

Jean-Sébastien Grail & David Fourniou

Sujet : Faut-il filtrer une image avec un passe-bas avant de procéder à une détection de contours ?


L'idée principale de cette page est que si l'on fait une détection de contours sur une image source qui n'est que du bruit, on va trouver des contours alors qu'il n'y en a pas. En conséquence, toute image bruitée ou même n'ayant pas été créée numériquement c'est-à-dire provenant par exemple d'un appareil photo souffrira d'une sur-détection de contours. Il faut donc essayer d'annihiler ce phénomène. Filtrer l'image avec un passe-bas permet de l'homogénéiser localement ce qui évite les extrema du gradient et donc les contours parasites. C'est également un bon moyen de ne pas tenir compte de la texture des objets lors de la détection de ses contours.

Mais illustrons ces phénomènes à travers le traitement de quelques images. Pour executer les filtrages nous avons utilisé le logiciel khoros-cantata. La détection de contours a été faite via la méthode Sobel, et le filtre passe-bas utilisé est le Median.


I-MOON

L'image précédente nous montre une partie de la surface de la lune. On y aperçoit de petits monticules ainsi que de plus larges trous. Une observation plus minutieuse nous permet de découvrir une texture, à moins que ce ne soit du bruit. Voyons ce que donne la détection de contours de Sobel sur cette image.

Ce qui saute tout d'abord aux yeux c'est l'aspect inexploitable de cette image. On trouve des contours de toute part et en plus, les contours des gros trous sont masqués par l'apparition de contours parasites. Toutefois, les bosses principales sont détectées.

L'image suivante est le résultat lorsque l'on filtre l'image moon avec le filtre passe-bas Median de rayon 5 puis qu'on lui applique la méthode de détection de contours. Il ne reste alors que les principales bosses dont bien évidemment la plus grosse -- en haut à gauche -- et les trous dont les contours restent relativement flous, mais c'est également le cas dans l'image originale. Par contre, la majeure partie des contours parasites liés à la texture ou au bruit ont disparus.

Étudions une autre image pour confronter ces premiers résultats à d'autres cas.


II-Ultrasound

Cette image est vraisemblablement très bruitée. Voyons comment se comporte le détecteur de contours avec et sans préfiltrage.

L'image ci-dessus représente le résultat de la détection de contours sans pré-filtrage tandis que l'image ci-dessous est la détection de contours avec un Median de rayon 11. Il est clair que l'image précédente n'a aucun intérêt pour ce qui est de la détection des contours. La majorité des contours proviennent du bruit présent sur l'image, même si les "vrais contours" sont présents. L'image suivante détecte bien les contours : les arcades sourciliaires, l'oeil gauche et le nez, tout en éliminant la majeure partie des contours liés au bruit. On remarque que l'oeil droit a disparu mais il est très peu marqué sur l'image originale et n'est absolument pas détecté par une simple détection de contours.

Observons les résultats engendrés sur une image texturée.


III-Feath

Bien que la qualité de l'image ne soit pas parfaite, on peut observer la texture du chapeau de Feath et celle de ses cheveux.

Pour ne parler que des problèmes de texture, on voit très bien que l'image précédente -- sans pré-filtrage -- rend compte de la texture du chapeau et des cheveux tandis que la suivante qui utilise un Median de rayon 3 gomme presque intégralement les deux textures pour ne conserver que les contours des cheveux et du chapeau.

Cependant dans certains cas le pré-filtrage n'est pas utile voir même néfaste.


IV-Tools

L'image originale représente quatres objets :

La particularité de cette image est d'être binaire : tous ses points ont une luminance de 0 ou de 255. Elle ne comporte donc ni bruit ni texture.

L'image ci-dessus -- sans pré-filtrage -- opère une détection parfaite tandis que la suivante -- avec pré-filtrage de rayon 3 -- détecte certes les contours mais elle fait disparaitre le trou au milieu de la "tête" de la pince et la partie extrême gauche de la clef.


En conclusion, pour détecter les contours dans une image, il faut préalablement la filter avec un passe-bas pour "éliminer" le bruit et la texture. Cependant les images créées numériquement ne sont pas bruitées et ne nécessitent pas de pré-filtrage. Par ailleurs, comme nous l'avons vu pour Tools, le filtrage induit une perte d'information qui peut engendrer la perte de détails fins.

Toutefois, on est en droit de se demander si les résultats obtenus précédemment ne sont pas liés intrinsèquement au filtre Median et au détecteur de Sobel. Les trois images suivantes répondent par la négative à cette interrogation. En effet cet exemple a été traité avec toujours le même filtre passe-bas -- rayon 2 -- mais le détecteur de contours de Prewitt.

L'image de gauche est celle qui n'a pas subi de pré-filtrage. On se rend bien compte que dans celle de droite on a gommé la texture du chapeau et des fleurs, ainsi que la majorité de celle présente sur la main gauche et dans les cheveux à côté de la main droite.