Filtre de Prewitt

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Le filtre de Prewitt est utilisé en traitement d'image pour la détection de contours. Il tient son nom de John Prewitt.

Description simplifiée[modifier | modifier le code]

En terme simple, le filtre calcule le gradient d'intensité lumineuse de l'image à chaque point, donnant la direction et le taux de la plus grande décroissance. Le résultat nous indique les changements abrupte de luminosité de l'image et donc exhibe les contours probables de celle-ci. En pratique cette technique est plus fiable et facile à mettre en œuvre qu'un algorithme plus direct.

Techniquement, il s'agit d'un opérateur différentiel discret calculant une approximation du Gradient d'intensité lumineuse d'une image.

Formulation[modifier | modifier le code]

Mathématiquement, le filtre est composé de deux matrices 3x3 que l'on va convoluer avec l'image originale pour calculer une approximation de sa dérivée en tout point. La première matrice donne la dérivée horizontale et la seconde donne la dérivée verticale. Si nous définissons \mathbf{A} comme étant l'image source, et \mathbf{G_x} et \mathbf{G_y} les deux images dérivées horizontales et verticales de l'intensité lumineuse de l'image, nous pouvons les calculer ainsi avec l'opération de convolution 2d * suivantes: 
\mathbf{G_x} = \begin{bmatrix} 
-1 & 0 & +1 \\
-1 & 0 & +1 \\
-1 & 0 & +1 
\end{bmatrix} * \mathbf{A}
\quad \mbox{and} \quad 
\mathbf{G_y} = \begin{bmatrix} 
+1 & +1 & +1 \\
0 & 0 & 0 \\
-1 & -1 & -1
\end{bmatrix} * \mathbf{A}

Cet opérateur ainsi défini pouvant se décomposer en un produit d'une moyenne et d'une différentielle, il calcule le gradient lissé.

Par exemple, \mathbf{G_x} peut s'écrire: 
\begin{bmatrix} 
-1 & 0 & +1 \\
-1 & 0 & +1 \\
-1 & 0 & +1
\end{bmatrix}
=
\begin{bmatrix}
1\\
1\\
1
\end{bmatrix}
\begin{bmatrix}
-1 & 0 & 1
\end{bmatrix}

Enfin, nous pouvons calculer l'amplitude du gradient via la norme du vecteur ainsi défini en tout point:

\mathbf{G} = \sqrt{ {\mathbf{G}_x}^2 + {\mathbf{G}_y}^2 }

De même, nous pouvons calculer sa direction:

\mathbf{\Theta} = \operatorname{atan2}\left({ \mathbf{G}_y , \mathbf{G}_x }\right)

Par exemple, \Theta = 0 correspond à un front vertical qui est plus sombre du côté droit.

Exemple[modifier | modifier le code]

Image en nuances de gris d'un mur de briques et d'un râtelier à vélo
Gradient avec le filtre de Prewitt d'une image en nuances de gris d'un mur de briques et d'un râtelier à vélo

Article connexe[modifier | modifier le code]

Lien externe[modifier | modifier le code]

Origine de la traduction[modifier | modifier le code]