Opérateur Sobel

L'opérateur sobel est très similaire à l'opérateur Prewitt. C'est également un masque dérivé et est utilisé pour la détection des contours. Comme l'opérateur Prewitt, l'opérateur sobel est également utilisé pour détecter deux types de bords dans une image:

  • Direction verticale
  • Direction horizontale

Différence avec l'opérateur Prewitt

La principale différence est que dans l'opérateur sobel, les coefficients des masques ne sont pas fixes et ils peuvent être ajustés selon nos exigences à moins qu'ils ne violent aucune propriété des masques dérivés.

Voici le masque vertical de l'opérateur Sobel:

-1 0 1
-2 0 2
-1 0 1

Ce masque fonctionne exactement de la même manière que le masque vertical de l'opérateur Prewitt. Il n'y a qu'une seule différence, c'est qu'il a les valeurs «2» et «-2» au centre de la première et de la troisième colonne. Lorsqu'il est appliqué sur une image, ce masque mettra en évidence les bords verticaux.

Comment ça fonctionne

Lorsque nous appliquons ce masque sur l'image, les bords verticaux sont proéminents. Il fonctionne simplement comme un dérivé de premier ordre et calcule la différence des intensités de pixels dans une région de bord.

Comme la colonne centrale est de zéro, elle n'inclut pas les valeurs d'origine d'une image mais calcule plutôt la différence des valeurs de pixels droit et gauche autour de ce bord. De plus, les valeurs centrales de la première et de la troisième colonne sont respectivement 2 et -2.

Cela donne plus de poids aux valeurs de pixel autour de la région de bord. Cela augmente l'intensité du bord et il devient amélioré par rapport à l'image d'origine.

Voici le masque horizontal de l'opérateur Sobel

-1 -2 -1
0 0 0
1 2 1

Le masque ci-dessus trouvera des bords dans la direction horizontale et c'est parce que la colonne des zéros est dans la direction horizontale. Lorsque vous convoluerez ce masque sur une image, il mettra en évidence les bords horizontaux de l'image. La seule différence entre cela est qu'il a 2 et -2 comme élément central de la première et de la troisième rangée.

Comment ça fonctionne

Ce masque mettra en évidence les bords horizontaux d'une image. Il fonctionne également sur le principe du masque ci-dessus et calcule la différence entre les intensités de pixels d'un bord particulier. Comme la rangée centrale du masque est constituée de zéros, elle n'inclut pas les valeurs d'origine du bord dans l'image mais calcule plutôt la différence des intensités de pixels ci-dessus et inférieures du bord particulier. Augmentant ainsi le changement soudain d'intensité et rendant le bord plus visible.

Il est maintenant temps de voir ces masques en action:

Exemple d'image

Voici un exemple d'image sur lequel nous appliquerons au-dessus de deux masques un à la fois.

Après avoir appliqué le masque vertical

Après avoir appliqué un masque vertical sur l'image d'échantillon ci-dessus, l'image suivante sera obtenue.

Après avoir appliqué le masque horizontal

Après avoir appliqué un masque horizontal sur l'image d'échantillon ci-dessus, l'image suivante sera obtenue

Comparaison

Comme vous pouvez le voir sur la première image sur laquelle nous appliquons un masque vertical, tous les bords verticaux sont plus visibles que l'image d'origine. De même, dans la deuxième image, nous avons appliqué le masque horizontal et, par conséquent, tous les bords horizontaux sont visibles.

Ainsi, vous pouvez voir que nous pouvons détecter les bords horizontaux et verticaux d'une image. De plus, si vous comparez le résultat de l'opérateur sobel avec l'opérateur Prewitt, vous constaterez que l'opérateur sobel trouve plus d'arêtes ou rend les arêtes plus visibles par rapport à l'opérateur Prewitt.

En effet, dans l'opérateur sobel, nous avons attribué plus de poids aux intensités de pixels autour des bords.

Appliquer plus de poids au masque

Maintenant, nous pouvons également voir que si nous appliquons plus de poids au masque, plus il obtiendra d'arêtes pour nous. Aussi comme mentionné au début du tutoriel qu'il n'y a pas de coefficients fixes dans l'opérateur sobel, voici donc un autre opérateur pondéré

-1 0 1
-5 0 5
-1 0 1

Si vous pouvez comparer le résultat de ce masque avec celui du masque vertical Prewitt, il est clair que ce masque donnera plus d'arêtes que celui de Prewitt simplement parce que nous avons attribué plus de poids au masque.