Opérateur Prewitt

L'opérateur Prewitt est utilisé pour la détection des contours dans une image. Il détecte deux types d'arêtes

  • Bords horizontaux
  • Bords verticaux

Les bords sont calculés en utilisant la différence entre les intensités de pixels correspondantes d'une image. Tous les masques utilisés pour la détection des contours sont également appelés masques dérivés. Parce que, comme nous l'avons dit à plusieurs reprises dans cette série de tutoriels, cette image est également un signal, les changements dans un signal ne peuvent donc être calculés qu'en utilisant la différenciation. C'est pourquoi ces opérateurs sont également appelés opérateurs dérivés ou masques dérivés.

Tous les masques dérivés doivent avoir les propriétés suivantes:

  • Le signe opposé doit être présent dans le masque.
  • La somme du masque doit être égale à zéro.
  • Plus de poids signifie plus de détection des bords.

L'opérateur Prewitt nous fournit deux masques, l'un pour détecter les bords dans la direction horizontale et l'autre pour détecter les bords dans une direction verticale.

Direction verticale

-1 0 1
-1 0 1
-1 0 1

Le masque ci-dessus trouvera les bords dans la direction verticale et c'est parce que la colonne des zéros dans la direction verticale. Lorsque vous convoluerez ce masque sur une image, cela vous donnera les bords verticaux d'une image.

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. Cela augmente l'intensité du bord et il devient amélioré par rapport à l'image d'origine.

Direction horizontale

-1 -1 -1
0 0 0
1 1 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.

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. Les deux masques ci-dessus suivent le principe du masque dérivé. Les deux masques ont un signe opposé et la somme des deux masques est égale à zéro. La troisième condition ne sera pas applicable dans cet opérateur car les deux masques ci-dessus sont normalisés et nous ne pouvons pas en modifier la valeur.

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. Cette image contient des bords verticaux. Vous pouvez le juger plus correctement en comparant avec l'image des bords horizontaux.

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.