Détection de contours

Transcription

Détection de contours
GBM – Imagerie numérique – T.P. 3
Détection de contours
I – Introduction
Le présent TP a pour but d’implémenter la détection de contours par les deux techniques
dérivatives GRADIENT et LAPLACIEN. On reprendra le source (préalablement sauvegardé)
de lecture et affichage d’un image BMP, en travaillant, au niveau du traitement, sur l’image
monochrome générée.
II – Calcul du gradient d'une image
Rédiger une fonction de calcul de gradient (selon la méthode choisie : Roberts, Prewitt, Sobel,
…) de la forme suivante :
void Gradient(int L, int C, char *ImageOrig, char *ImageGradient)
Les entiers L et C représentent naturellement les dimensions de l'image. L'image résultat
(ImageGradient) sera allouée à l'intérieur de cette fonction. Les bords non traités seront
mis à 0.
Rédiger un fonction SeuilImage (int L, int C, char *Image, int Seuil) qui
binarisera l'image selon le seuil choisi, en ne conservant comme non nulles (255) les données
supérieures à Seuil.
III – Calcul du Laplacien
Rédiger une fonction de calcul de Laplacien (selon le filtrage choisi) de la forme suivante :
void Laplacien(int L, int C, char *ImageOrig, char *ImageLaplacien) ;
Le fonctionnement général sera globalement identique à la question II.
Rédiger ensuite la fonction de calcul de l'image de polarité :
Void Polarite (int L, int C, char *ImageLaplacien, char *ImagePolarite) ;
La fonction de détection des passages par zéro suit, sans surprise :
Void PpZero (int L, int C, char *ImagePolarite, char *ImagePpZero) ;
Utiliser ensuite l'image gradient de l'image originale pour seuiller les passages par zéro de
faible norme. Le seuil choisi sera fixé de façon approximative…..
1
GBM – Imagerie numérique – T.P. 3
IV – Calcul du filtre de Variance
Rédiger une fonction de calcul de filtrage de la variance :
void Variance(int L, int C, char *ImageOrig, char *ImageVariance) ;
IV – Mise en place globale
Les principales variables à déclarer seront :
int L,C ;
int SeuilGradient ;
char
char
char
char
char
char
*Image;
*ImageGradient ;
*ImageLapalcien ;
*ImagePolarite ;
*ImagePpZero ;
*ImageVariance
Dans une première approche, on fera une détection des contours par un gradient et on
affichera l'image résultat. Ensuite, on fera de même avec le filtrage de variance.
On terminera par l'implémentation du filtrage par le Laplacien et on analysera les résultats.
2