Image TP2 Traitements locaux : filtrage spatial 1 Convolution spatiale : aperçu La convolution spatiale consiste en la transformation d’une image, où la valeur des pixels est modifiée en fonction de leurs voisinages locaux, comme l’illustre la figure ci-dessous. Pour effectuer un produit de convolution (désigné par le symbole ∗ ou parfois ⊗), on utilise un masque de convolution, qui représente la transformation à effectuer autour du voisinage souhaité. On fait alors « glisser » le masque de convolution en chaque point de l’image pour obtenir l’image transformée. Figure 1 – Convolution spatiale : chaque pixel de l’image est modifiée en fonction de son voisinage local. Les pixels notés « ? » sur la figure illustrent un phénomène appelé effet de bord : à ces emplacements, une partie de l’information nécessaire pour calculer la transformation n’est pas disponible. Il existe plusieurs possibilités pour gérer ce phénomène : effet miroir, considérer que les points situés à l’extérieur sont à 0, ne pas filtrer les bords, rogner les bords, etc. Définition Soit I une image et M un masque de convolution. En tout point (x, y) situé hors de la zone affectée par l’effet de bord, le résultat du produit de convolution est donné par : J(x, y) = (I ∗ M )(x, y) = XX u I(x − u, y − v) × M (u, v) v Le domaine de définition de u et v dépend de la taille du masque de convolution. En général, un masque de convolution est une matrice carrée de dimension impaire, et on considère que l’origine (0, 0) du masque est au centre. 1 Exemple Considérons un détail de l’image I et un masque de convolution M de taille 3 × 3 définis comme ci-dessous : x x 145 154 140 145 141 137 135 143 149 139 y 150 155 130 157 152 0 148 151 154 144 147 143 150 147 148 143 1/6 0 1/6 1/3 1/6 0 1/6 = J(x, y) = y 0 M I On a alors : 145 J 1 1 X X I(x − u, y − v) × M (u, v) u=−1 v=−1 1 1 1 1 1 = ( × 154) + ( × 155) + ( × 153) + ( × 157) + ( × 130) 6 6 6 6 3 ≈ 145 Dans le fichier Outils.java, complétez la méthode convoluer(...) en suivant les consignes indiquées en commentaire. N’hésitez pas à consulter les commentaires du fichier Masque.java afin de comprendre comment utiliser cette classe. 2 Lissage et élimination du bruit Dans cette section, on utilisera des filtres de convolution dont la somme des valeurs est égale à 1, ceci afin de conserver la dynamique de l’image (i.e. ne pas modifier le contraste). 2.1 Filtre moyen Comme son nom l’indique, le filtre moyen remplace chaque pixel par la moyenne des pixels de son voisinage. h 1 1 1 iIl a pour but de lisser l’image et d’éliminer le bruit. Un exemple de filtre moyen est : M = 1 111 × 9 111 Dans le fichier FiltreMoyen_.java, complétez le code de la méthode run(...) en suivant les consignes indiquées en commentaire. Vous testerez votre plugin avec des filtres de différentes tailles. 2.2 Filtre gaussien Comme le filtre moyen, le filtre gaussien a pour objet de lisser l’image et d’éliminer le bruit. Il présente l’avantage de diminuer l’effet de flou ainsi généré. Le masque de convolution utilisé est une gaussienne 2D. Les coefficients de la matrice sont calculés de la manière suivante : G(u, v) = 1 u2 + v 2 exp(− ) 2 2πσ 2σ 2 Idéalement, on doit créer un filtre de taille (6σ + 1) × (6σ + 1) pour bien représenter la gaussienne. 2 Dans le fichier FiltreGaussien_.java, complétez le code de la méthode run(...) en suivant les consignes indiquées en commentaire. Vous testerez votre plugin avec des filtres de différentes tailles. 3 Filtre médian Le filtre médian a lui aussi pour objet l’élimination du bruit. À la différence des deux précédents, ce n’est pas un filtre de convolution (dans le sens où la transformation appliquée n’est pas une combinaison linéaire du voisinage du pixel). Il s’agit de remplacer le niveau de gris du pixel (x, y par la valeur médiande des niveaux de gris des pixels de son voisinage. 30 10 20 10 250 25 20 25 10 10 20 20 25 25 30 30 250 30 Médiane = 25 Dans le fichier FiltreMedian_.java, complétez le code de la méthode run(...) en suivant les consignes indiquées en commentaire. Vous testerez votre plugin avec des filtres de différentes tailles. 3
© Copyright 2024 Paperzz