Filtre de Sobel

Filtre de Sobel

Algorithme de Sobel

Exemple de détection de contours avec opérateurs Sobel, ici : G=abs(Gx)+abs(Gy).

L’algorithme de Sobel est un opérateur utilisé en traitement d'image pour la détection de contours. Il s'agit d'un des opérateurs les plus simples qui donne toutefois des résultats corrects.

Sommaire

Description simplifiée

Pour faire simple, l'opérateur calcule le gradient de l'intensité de chaque pixel. Ceci indique la direction de la plus forte variation du clair au sombre, ainsi que le taux de changement dans cette direction. On connaît alors les points de changement soudain de luminosité, correspondant probablement à des bords, ainsi que l'orientation de ces bords.

En termes mathématiques, le gradient d'une fonction de deux variables (ici l'intensité en fonction des coordonnées de l'image) est un vecteur de dimension 2 dont les coordonnées sont les dérivées selon les directions horizontale et verticale. En chaque point, le gradient pointe dans la direction du plus fort changement d'intensité, et sa longueur représente le taux de variation dans cette direction. Le gradient dans une zone d'intensité constante est donc nul. Au niveau d'un contour, le gradient traverse le contour, des intensités les plus sombres aux intensités les plus claires.

Formulation

L'opérateur utilise des matrices de convolution. La matrice (généralement de taille 3×3) subit une convolution avec l'image pour calculer des approximations des dérivées horizontale et verticale. Soit \mathbf{A} l'image source, \mathbf{G_x} et \mathbf{G_y} deux images qui en chaque point contiennent des approximations respectivement de la dérivée horizontale et verticale de chaque point. Ces images sont calculées comme suit:


\mathbf{G_x} = \begin{bmatrix} 
+1 & 0 & -1 \\
+2 & 0 & -2 \\
+1 & 0 & -1 
\end{bmatrix} * \mathbf{A}
\quad \mbox{et} \quad 
\mathbf{G_y} = \begin{bmatrix} 
+1 & +2 & +1 \\
0 & 0 & 0 \\
-1 & -2 & -1 
\end{bmatrix} * \mathbf{A}

En chaque point, les approximations des gradients horizontaux et verticaux peuvent être combinées comme suit pour obtenir une approximation de la norme du gradient:

\mathbf{G} = \sqrt{ \mathbf{G_x}^2 + \mathbf{G_y}^2 }

On peut également calculer la direction du gradient comme suit :

\mathbf{\Theta} = \operatorname{arctan}\left({ \mathbf{G_y} \over \mathbf{G_x} }\right)

où, par exemple, \mathbf{\Theta} vaut 0 pour un contour vertical plus foncé à gauche.

Précisions

Puisque l'intensité d'une image numérique est discrète, les dérivées de cette fonction ne peuvent pas être définies si ce n'est sous une hypothèse de continuité de la fonction intensité continue qui a été échantillonnée. En pratique on peut calculer des approximations plus ou moins fidèles du gradient en chaque point.

L'algorithme de Sobel calcule une approximation assez inexacte du gradient d'intensité, mais cela suffit en pratique dans beaucoup de cas. En effet, il n'utilise qu'un voisinage (généralement de taille 3×3) autour de chaque point pour calculer le gradient, et les poids utilisés pour le calcul du gradient sont entiers.

Détails d'implémentation

De par sa simplicité, l'algorithme de Sobel peut être aisément implémenté de manière logicielle ou même matérielle : seulement huit points autour du point considéré sont nécessaires pour calculer le gradient. Ce calcul utilise simplement des calculs sur les entiers. De plus, les filtres horizontal et vertical sont séparables :

\begin{bmatrix} 
-1 & 0 & +1 \\
-2 & 0 & +2 \\
-1 & 0 & +1 
\end{bmatrix} = \begin{bmatrix} 
1 \\
2 \\
1  
\end{bmatrix} * \begin{bmatrix} 
-1 & 0 & +1
\end{bmatrix} \quad \quad
\begin{bmatrix} 
+1 & +2 & +1 \\
0 & 0 & 0 \\
-1 & -2 & -1 
\end{bmatrix} = \begin{bmatrix} 
+1 \\
0 \\
-1  
\end{bmatrix} * \begin{bmatrix} 
1 & 2 & 1
\end{bmatrix}

et les deux dérivées \mathbf{G_x} et\mathbf{G_y} peuvent être calculées comme suit :


\mathbf{G_x} = \begin{bmatrix} 
1 \\
2 \\
1
\end{bmatrix} * \begin{bmatrix} 
-1 & 0 & +1  
\end{bmatrix} * \mathbf{A}
\quad \mbox{et} \quad 
\mathbf{G_y} = \begin{bmatrix} 
+1 \\
0 \\
-1  
\end{bmatrix} * \begin{bmatrix} 
1 & 2 & 1
\end{bmatrix} * \mathbf{A}

La séparabilité peut être mise à profit dans certains types d'implémentation pour permettre moins d'opérations lors du calcul.

Plus fondamentalement, en divisant par quatre, ces formules montrent que la dérivation dans une direction est associée à un lissage triangulaire dans l'autre direction destiné à éliminer les « faux contours », la même technique étant utilisée dans le filtre de Prewitt avec un lissage rectangulaire qui introduit des changements de phase (voir lissage de l'image).

Voir aussi

Références

  • (en) Cet article est partiellement ou en totalité issu d’une traduction de l’article de Wikipédia en anglais intitulé « Sobel ».

Lien externe

  • Portail de la photographie Portail de la photographie
  • Portail de l’informatique Portail de l’informatique
Ce document provient de « Algorithme de Sobel ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Filtre de Sobel de Wikipédia en français (auteurs)

Игры ⚽ Нужен реферат?

Regardez d'autres dictionnaires:

  • Algorithme De Sobel — Exemple de détection de contours avec opérateurs Sobel, ici : G=abs(Gx)+abs(Gy). L’algorithme de Sobel est un opérateur utilisé en traitement d image pour la détection de contours. Il s agit d un des opérateurs les plus simples qui donne… …   Wikipédia en Français

  • Algorithme de sobel — Exemple de détection de contours avec opérateurs Sobel, ici : G=abs(Gx)+abs(Gy). L’algorithme de Sobel est un opérateur utilisé en traitement d image pour la détection de contours. Il s agit d un des opérateurs les plus simples qui donne… …   Wikipédia en Français

  • Algorithme de Sobel — Exemple de détection de contours avec opérateurs Sobel, ici : G=abs(Gx)+abs(Gy). L’algorithme de Sobel est un opérateur utilisé en traitement d image pour la détection de contours. Il s agit d un des opérateurs les plus simples qui donne… …   Wikipédia en Français

  • Détection de contours — Le but de la détection de contours est de repérer les points d une image numérique qui correspondent à un changement brutal de l intensité lumineuse. Ces changements de propriétés de l image traduisent en général des événements importants ou des… …   Wikipédia en Français

  • Detection de contours — Détection de contours Le but de la détection de contours est de repérer les points d une image numérique qui correspondent à un changement brutal de l intensité lumineuse. Ces changements de propriétés de l image traduisent en général des… …   Wikipédia en Français

  • Détection De Contours — Le but de la détection de contours est de repérer les points d une image numérique qui correspondent à un changement brutal de l intensité lumineuse. Ces changements de propriétés de l image traduisent en général des événements importants ou des… …   Wikipédia en Français

  • Détection de contour — Détection de contours Le but de la détection de contours est de repérer les points d une image numérique qui correspondent à un changement brutal de l intensité lumineuse. Ces changements de propriétés de l image traduisent en général des… …   Wikipédia en Français

  • Logiciel de traitement d'image — Traitement d images Le traitement d images désigne une discipline des mathématiques appliquées qui étudie les images numériques et leurs transformations, dans le but d améliorer leur qualité ou d en extraire de l information. Il s agit donc d un… …   Wikipédia en Français

  • Logiciel de traitement d'images — Traitement d images Le traitement d images désigne une discipline des mathématiques appliquées qui étudie les images numériques et leurs transformations, dans le but d améliorer leur qualité ou d en extraire de l information. Il s agit donc d un… …   Wikipédia en Français

  • Traitement d'image — Traitement d images Le traitement d images désigne une discipline des mathématiques appliquées qui étudie les images numériques et leurs transformations, dans le but d améliorer leur qualité ou d en extraire de l information. Il s agit donc d un… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”