IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Les filtres usuels en traitement d'images


précédentsommairesuivant

III. Définition du Filtrage

Le principe du filtrage est de modifier la valeur des pixels d'une image, généralement dans le but d'améliorer son aspect. En pratique, il s'agit de créer une nouvelle image en se servant des valeurs des pixels de l'image d'origine.

N'entrent pas dans la catégorie du filtrage toutes les transformations de l'image d'origine : zoom, découpage, projections, …

III-A. Filtrage Global

Dans le filtrage global, chaque pixel de la nouvelle image est calculé en prenant en compte la totalité des pixels de l'image de départ. Dans cette catégorie on trouve, par exemple, les opérations sur les histogrammes ou les opérations qui nécessitent de passer dans l'espace de Fourier.

III-B. Filtrage Local

Dans le filtrage local, chaque pixel de la nouvelle image est calculé en prenant en compte seulement un voisinage du pixel correspondant dans l'image d'origine. Il est d'usage de choisir un voisinage carré et symétrique autour du pixel considéré. Ces voisinages sont donc assimilables à des tableaux à deux dimensions (matrices) de taille impaire.

Voisinage 3x3 du pixel x,y kitxmlcodeinlinelatexdvp\begin{pmatrix} {P}_{x-1,y-1} & {P}_{x,y-1} & {P}_{x+1,y-1} \\ {P}_{x-1,y} & {P}_{x,y} & {P}_{x+1,0} \\ {P}_{x-1,y+1} & {P}_{x,y+1} & {P}_{x+1,y+1} \end{pmatrix}finkitxmlcodeinlinelatexdvp

Voisinage 5x5 du pixel x,y kitxmlcodeinlinelatexdvp\begin{pmatrix} {P}_{x-2,y-2} & {P}_{x-1,y-2} & {P}_{x,y-2} & {P}_{x+1,y-2} & {P}_{x+2,y-2} \\ {P}_{x-2,y-1} & {P}_{x-1,y-1} & {P}_{x,y-1} & {P}_{x+1,y-1} & {P}_{x+2,y-1} \\ {P}_{x-2,y} & {P}_{x-1,y} & {P}_{x,y} & {P}_{x+1,0} & {P}_{x+2,y} \\ {P}_{x-2,y+1} & {P}_{x-1,y+1} & {P}_{x,y+1} & {P}_{x+1,y+1} & {P}_{x+2,y+1} \\ {P}_{x-2,y+2} & {P}_{x-1,y+2} & {P}_{x,y+2} & {P}_{x+1,y+2} & {P}_{x+2,y+2} \end{pmatrix}finkitxmlcodeinlinelatexdvp

Gestion des bords

Lorsque le pixel considéré est proche du bord de l'image, certains points du voisinage sont en dehors de l'image d'origine. Il convient alors de choisir une stratégie pour gérer ces pixels extérieurs. Les stratégies couramment employées :

  • Mise à zéro : Si un pixel du voisinage est en dehors de l'image d'origine, sa valeur est considérée comme nulle. C'est à dire : Image[-1][y]=0
  • Continuité : Si un pixel du voisinage est en dehors de l'image d'origine, sa valeur est celle du pixel le plus proche qui est dans l'image d'origine. C'est à dire : Image[-1][y]= Image[0][y]
  • Miroir : Si un pixel du voisinage est en dehors de l'image d'origine, sa valeur est celle du pixel symétrique par rapport au bord de l'image. C'est à dire : Image[-1][y]= Image[1][y]
  • Sphérique : Si un pixel du voisinage est en dehors de l'image d'origine, sa valeur est celle du pixel correspondant si l'image était projetée sur une sphère. C'est à dire : Image[-1][y]= Image[Largeur-1][y]

III-B-1. Filtrage Local Linéaire

Le filtre local est dit linéaire si la valeur du nouveau pixel est une combinaison linéaire des valeurs des pixels du voisinage.
combinaison linéaire des pixels du voisinage kitxmlcodeinlinelatexdvp{NouvelleValeur}_{x,y} = \sum_{i,j}^{} {A}_{i,j}*{P}_{x+i,y+j}finkitxmlcodeinlinelatexdvp

avec i,j variant entre -h et +h, la demi taille du voisinage (pour 3x3 h=1, pour 5x5 h=2, …)
et Ai,j = valeur, entière ou réelle, spécifique au filtre linéaire.

Normalisation

Si la valeur obtenue n'est dans les limites imposées par le format d'image (entier(s) entre 0…255), alors la valeur doit être normalisée. Le facteur de normalisation peut être facilement calculé en cherchant la valeur maximale (positive) et minimale (négative) que peut atteindre la combinaison linéaire.

La valeur maximale est atteinte lorsque tous les pixels associés aux coefficients positifs ont la valeur maximale (255) et ceux associés aux coefficients négatifs ont la valeur minimale (0). Il suffit donc de faire la somme des coefficients positifs pour connaître le facteur de normalisation positif.

facteur de normalisation positif kitxmlcodeinlinelatexdvpFacteurPositif = \sum_{i,j}^{ } {A}_{i,j}, \;\; si \; {A}_{i,j}>0finkitxmlcodeinlinelatexdvp

Idem pour le facteur de normalisation négatif, qui est la somme des coefficients négatifs.

facteur de normalisation négatif kitxmlcodeinlinelatexdvpFacteurNegatif = \sum_{i,j}^{ } {A}_{i,j}, \;\; si \; {A}_{i,j}<0finkitxmlcodeinlinelatexdvp

Le facteur de normalisation est le plus grand (en valeur absolu) de ces deux facteurs.

facteur de normalisation du filtre linéaire kitxmlcodeinlinelatexdvpFacteur = max(\left|FacteurPositif\right|, \left|FacteurNegatif\right|)finkitxmlcodeinlinelatexdvp

Une fois la combinaison linéaire calculée, il suffit de diviser le résultat par le facteur de normalisation (et de convertir en entier, si besoin). La valeur obtenue peut être négative.

Une fois la normalisation effectuée, les valeurs obtenues sont dans la plage [-255,+255]. La conversion finale à effectuer (pour être dans la plage [0,255]) dépend du type de filtre et du résultat visuel souhaité : seuillage à zéro, mise à l'échelle, valeur absolue, …

Noyau

Il est d'usage de présenter les coefficients sous forme d'une matrice (appelée noyau de convolution) facilitant ainsi la mise en correspondance avec les valeurs du voisinage.

noyau de convolution 3x3 kitxmlcodeinlinelatexdvp\begin{pmatrix} {A}_{-1,-1} & {A}_{0,-1} & {A}_{1,-1} \\ {A}_{-1,0} & {A}_{0,0} & {A}_{1,0} \\ {A}_{-1,1} & {A}_{0,1} & {A}_{1,1} \end{pmatrix}finkitxmlcodeinlinelatexdvp

voisinage 3x3 kitxmlcodeinlinelatexdvp\begin{pmatrix} {P}_{x-1,y-1} & {P}_{x,y-1} & {P}_{x+1,y-1} \\ {P}_{x-1,y} & {P}_{x,y} & {P}_{x+1,0} \\ {P}_{x-1,y+1} & {P}_{x,y+1} & {P}_{x+1,y+1} \end{pmatrix}finkitxmlcodeinlinelatexdvp

multiplication du noyau et du voisinage kitxmlcodeinlinelatexdvp\begin{pmatrix} {A}_{-1,-1}*{P}_{x-1,y-1} & {A}_{0,-1}*{P}_{x,y-1} & {A}_{1,-1}*{P}_{x+1,y-1} \\ {A}_{-1, 0}*{P}_{x-1,y} & {A}_{0, 0}*{P}_{x,y} & {A}_{1, 0}*{P}_{x+1,0} \\ {A}_{-1, 1}*{P}_{x-1,y+1} & {A}_{0, 1}*{P}_{x,y+1} & {A}_{1, 1}*{P}_{x+1,y+1} \end{pmatrix}finkitxmlcodeinlinelatexdvp

La nouvelle valeur du pixel Px,y est alors la somme des éléments de la dernière matrice (au facteur de normalisation près).

III-B-2. Filtrage Local Non-Linéaire

Si le filtre ne peut pas être exprimé par une combinaison linéaire, il est appelé " non-linéaire ". Les filtres non-linéaires sont plus complexes à mettre en œuvre que les filtres linéaires. Cependant les résultats obtenus avec les filtres non-linéaires sont très souvent de meilleure qualité que ceux obtenus par les filtres linéaires.


précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2012 Xavier Philippeau. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.