0% ont trouvé ce document utile (0 vote)
159 vues4 pages

Détection de contours en traitement d'images

Ce document présente un TP sur le filtrage d'images. Il introduit la convolution d'une image avec des filtres gradient pour détecter les contours, puis étudie l'influence du bruit et compare les filtres gradient et Sobel. Il conclut en seuillant la norme du gradient pour obtenir une image binaire des contours.

Transféré par

SAHIR Koceila
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
159 vues4 pages

Détection de contours en traitement d'images

Ce document présente un TP sur le filtrage d'images. Il introduit la convolution d'une image avec des filtres gradient pour détecter les contours, puis étudie l'influence du bruit et compare les filtres gradient et Sobel. Il conclut en seuillant la norme du gradient pour obtenir une image binaire des contours.

Transféré par

SAHIR Koceila
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Romain Deléglise

M1 IDIM

Traitement d’Images

TP n°2 : Filtrage

Introduction
L’objectif de ce second TP de traitement d’images est de mettre en pratique de
nouveaux outils afin de détecter les contours d’une image. Tout d’abord, nous allons créer
une fonction convolution que nous associerons avec des filtres gradient pour faire une
détection de contours simple. Ensuite, nous ajouterons du bruit sur l’image et terminerons en
utilisant d’autres techniques de détection de contours.

[Link]
On souhaite créer une fonction simple de détection de contours. On commence par coder une
fonction convolution dans un script séparément du programme principal.
Ensuite, nous utilise notre fonction afin de convoluer une image (pour l’instant un carré blanc
sur fond noir) avec deux filtres gradients. Le 1er filtre permet de mettre en évidence les
contours horizontaux alors que le deuxième met en évidence les contours verticaux.
On effectue la convolution de l’image sur toute sur surface, excepté sur le bord de l’image (1
pixel de large car on ne peut pas appliquer de filtre 3*3 sur le dernier pixel).
On obtient le résultat suivant (figure 1 ci-dessous) :

Figure 1 : Application des filtres gradient sur un carré blanc sur fond noir

Les 2 premières images correspondent aux filtres gradient et la troisième à la norme des
gradients. On obtient bien le résultat souhaité ; en l’occurrence les contrastes sont maximaux
car les pixels sont noirs (0) et blanc (255). Pour une image réelle les contrastes seront tout de
même moins importants.

1|P age
On réalise donc les mêmes filtrages que précedement mais cette fois avec une image réelle de
cameraman. On obtient les résultats suivant (figure 2) :

Figure 2 : Application des filtres gradient et norme sur une image de cameraman

Globalement le filtrage donne des très bons résultats, les contours du cameraman et du
trépied sont bien visibles. On peut également remarquer que l’herbe ressort sous forme de
points sur le bas de l’image car elle possède un contraste assez élevé sur l’image de base.

2. Influence du bruit sur le filtrage


On souhaite observer l’influence du bruit sur le filtrage. Pour cela, on crée une nouvelle image
de bruit blanc (fonction ‘randn’ en 0 et 30 par exemple), qu’on ajoute sur l’image initiale et on
obtient une image bruitée (figure 3 ci-dessous).

Figure 3 : Image (très) bruitée puis filtrée

L’image filtrée conserve des contours assez nets même avec des niveaux de bruits importants.
Le bruit est bien visible dans le fond de l’image mais comme le bruit est aléatoire les contours
restent globalement assez bien visibles.

On s’intéresse maintenant au filtre de Sobel, qui est aussi utilisé pour la détection de contours.
Mais avec comme particularité de posséder une pondération plus importante sur les pixels
juxtaposé (coefficient de 2) et une pondération de 1 sur les pixels dans les coins
(contrairement aux gradients).
2|P age
On réalise le filtrage de Sobel sur des images non bruitées puis bruitées et on observe les
résultats ci-dessous (figure 4 puis 5) :

Figure 4 : Filtre de Sobel appliqué sur une image non bruitée

Pour une image sans bruit, le rendu est très similaire par rapport au premier filtrage gradient.
En conclu que pour une image non-bruitée les 2 filtres offrent des bons résultats.

Figure 5 : Filtre de Sobel appliqué sur une image très bruitée

En revanche, le filtre de Sobel se remarque lorsque l’image initiale est bruitée. Dans ce
cas les contours sont meilleurs qu’avec le premier filtre ; cela repose sur le fait que ce filtre
utilise 6 pixels voisins pour le filtrage (contre 2 pour le gradient) ce qui réduit l’impact d’un
bruit blanc aléatoire sur le filtre.

3 Détection de contours
Finalement, on souhaite compléter notre filtrage en effectuant un seuillage sur la norme du
gradient.
Pour cela il suffit de choisir un niveau de seuil et de seuiller : c’est-à-dire que l’on test chaque
pixel de l’image en fonction de son intensité. Si la valeur du pixel est inférieure au seuil fixé
alors ce pixel est mis à 0 sinon il est mis à 255.

On effectue le seuillage (seuil fixé à 50) et on obtient le résultat suivant (figure 6) :

3|P age
Figure 6 : Détection de contours par seuillage

L’image finale possède des contours bien nets (logique puisque que le gradient représentait
les zones à contraste élevé c’est-à-dire les contours).
Le seuil peut bien sûr être adapté en fonction du résultat souhaité et de l’application.

Conclusion
Tout au long de ce TP, nous avons mis en application des techniques simples de
détection de contours ; les filtres gradients sont très simple et fonctionnent bien sur les
images non-bruitées alors que le filtre de Sobel est un peu plus complexe mais résiste mieux
au bruit.
Finalement, on a pu combiner notre premier filtrage avec un seuillage pour obtenir
une image avec seulement 2 niveaux d’intensité et un contraste maximal qui peut par exemple
permettre de séparer/ compter différents objets si on le souhaite.

4|P age

Vous aimerez peut-être aussi