Le lissage d'images est une opération importante en traitement d'images, utilisée pour atténuer un bruit qui corrompt l'information, généralement avant un autre traitement. Cette opération consiste le plus souvent à appliquer à l'image un filtre linéaire passe-bas numérique.
Généralités
Par comparaison avec des problèmes voisins, le traitement de l'image présente deux particularités. D'une part, il s'agit de signaux qui nécessitent des traitements dans un espace à deux dimensions. D'autre part, à la différence de ce qui se passe par exemple avec le son, la définition naturelle des filtres se situe dans l'espace plutôt que dans le domaine des fréquences.
En numérique le filtre est représenté mathématiquement par une matrice, un tableau de nombres, appelé matrice de convolution ou noyau. S'il est symétrique avec un nombre impair de termes, comme dans les exemples qui suivent, la convolution qui permet de traiter l'image s'effectue de manière très simple. Le centre du filtre étant placé sur le pixel à traiter, on multiplie les coefficients du filtre par les valeurs des pixels correspondants et on ajoute les résultats. Pour conserver le niveau initial du signal, la matrice est constituée par des entiers puis divisée par leur somme ; il s'agit donc d'une moyenne éventuellement pondérée.
Une transformation de Fourier adaptée au cas discret est utilisée pour décrire le filtre dans le domaine des fréquences. Pour les filtres symétriques la transformée est réelle mais elle peut comporter des changements de signe correspondant à des oppositions de phase susceptibles de dégrader le signal.
Pour accélérer le calcul il est souhaitable que le filtre bidimensionnel soit séparable en deux filtres unidimensionnels. La considération du cas unidimensionnel où la matrice carrée est remplacée par un vecteur permet de comprendre plus facilement l'essentiel des phénomènes.
Filtres unidimensionnels
Filtre rectangulaire
Le vecteur à (2N+1) composantes qui contient uniquement des 1 est normalisé en les divisant par (2N+1). C'est une moyenne mobile ; on conçoit intuitivement qu'elle atténue les petites irrégularités du signal. Le filtre et la fonction de transfert correspondante sont donnés par
Cette fonction de transfert a une allure de sinusoïde amortie (filtre passe-bas) avec des changements de signe. Ceux-ci traduisent le fait que le signal de sortie est tantôt en phase, tantôt en opposition avec le signal d'entrée.
En détection de contours la méthode de Prewitt utilise un filtre rectangulaire à trois termes dans chacune des deux directions. Le niveau étant sans importance dans ce cas, le vecteur s'écrit tout simplement [1 1 1].
Filtre triangulaire
Pour résoudre le problème des phases, il suffit d'appliquer le filtre sur lui-même. Dans le domaine des fréquences, la convolution conduit simplement à élever au carré la fonction de transfert, ce qui supprime les changements de phase. Dans l'espace, les valeurs non nulles du résultat sont proportionnelles au nombre de points communs aux deux « peignes ». Lors du déplacement de l'un par rapport à l'autre, elles croissent donc de 0 à 2N+1 pour retomber ensuite à 0 : c'est un filtre triangulaire qui privilégie les valeurs centrales.
Dans le filtre de Sobel ce filtre limité à trois termes remplace le précédent sous la forme [1 2 1].
Filtre gaussien
Selon les propriétés de la loi de Gauss, la fonction de transfert d'un tel filtre a la même forme que le filtre (exactement pour un filtre continu, approximativement pour un filtre numérique). Elle est donc toujours positive.
A priori, il serait possible d'utiliser des tables de la loi de Gauss pour la discrétiser mais il est plus efficace de remarquer que des convolutions successives du filtre de base [1 1] conduisent aux coefficients du binôme de Newton, c'est-à-dire aux coefficients de la loi binomiale. D'après le théorème central limite, cette loi représente une approximation de la loi de Gauss dont la précision croît avec le nombre de termes.
Filtres bidimensionnels
La convolution de filtres rectangulaires (resp. triangulaires) selon les deux axes de l'image conduit à un filtre uniforme (resp. pyramidal) représenté par une matrice carrée, les deux directions étant d'une certaine manière privilégiées.
Au contraire le filtre de Gauss à deux variables est isotrope. Il est utilisé en particulier dans le filtre de Canny.
Gestion des bords
Lors de la convolution, il est nécessaire de différencier le traitement pour les pixels du bord de l'image, car certains points du voisinage n'existent pas, i.e. sont en dehors de l'image d'origine. Il existe plusieurs méthodes pour gérer ceci, consistant à affecter des valeurs fictives à ces pixels virtuels.
Voir aussi