Détection de contours : Filtres de Prewitt, Robert, Kirsch et Sobel

La détection de contour est une étape préliminaire à de nombreuses applications dans le traitement d’image. Les contours constituent en effet des indices riches pour toute interprétation ultérieure de l’image.

Deux approches :
1. Approche gradient : détermination des extréma locaux dans la direction du gradient.
2. Approche laplacienne : détermination des passages par zéro du laplacien.

Les contours seront représentés par les lignes de maximum locaux pour les filtres de gradient, et par les suites de points à 0 pour les filtres Laplaciens.

Nous allons uniquement aborder ici l'approche gradient qui fait intervenir la convolution d'image à partir de filtres séparables.

Le gradient

Le gradient est une grandeur vectorielle qui indique de quelle façon une grandeur physique varie dans l'espace. Dans le cadre d'une image, il décrit la variation d'intensité d'un pixel et s'écrit $\bigtriangledown I(x,y)$.
Le gradient est caractérisé par son amplitude et sa direction.

Les filtres séparables et le gradient

Un filtre à réponse impulsionnelle h(x, y) séparable selon x et y est un filtre pour lequel : $$h(x, y) = h_{x}(x).h_{y}(y)$$ ce qui se traduit pour le filtrage d’une image par : $$g′(x, y) = h(x, y) * f(x, y)$$ $$g′(x, y) = h_{y}(y) * (h_{x}(x) ∗ f(x, y))$$

Les principaux intérêts des filtres séparables sont :
1. Ramener le problème du filtrage d’un signal bidimensionnel à celui du filtrage d’un signal monodimensionnel.
2. Réduire le temps de calcul. Pour une convolution par un masque de filtrage de dimension $N$, la complexité est de $2N$ au lieu de $N^{2}$.
3. Possibilité d’implanter récursivement le filtre.

Les filtres qui vont suivre sont tous conçus dans le même but : détecter avec la plus grande précision les contours naturels cachés dans une image. Les filtres suivants utilisent deux noyaux, l’un pour l’axe horizontal (X) et l’autre pour l’axe vertical (Y). Chacun des noyaux est en fait un filtre gradient, qui sont tous les deux combinés pour créer l’image finale.

Robert

C'est le filtre le plus simple. Le deuxième masque se déduit du premier par rotation de $\pi/2$.
$$h_{x} = \begin{pmatrix} 1 & 0\\ 0 & -1 \end{pmatrix}$$ $$h_{y} = \begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix}$$


Le problème de ce filtre réside dans sa forte sensibilité au bruit. D'autres masques ont ensuite été proposés pour diminuer l'effet de ce dernier.

Prewitt & Sobel

Le calcul de gradient est mené par l'intermédiaire des deux masques. Là encore, le deuxième masque se déduit du premier par une rotation de $\pi/2$.

$$h_{x} = \begin{pmatrix} -1 &0 &1\\ -c &0 &c\\ -1 &0 &1 \end{pmatrix}$$ $$h_{y} = \begin{pmatrix} -1 &-c &-1\\ 0 &0 &0\\ 1 &c &1 \end{pmatrix}$$


Lorsque $c=1$, il s'agit des opérateurs de Prewitt, et lorsque $c=2$, de ceux de Sobel. Par rapport aux précedents, ces masques ont l'avantage de produire deux effets. Outre le calcul du gradient dans une direction, ils effectuent un lissage dans la direction orthogonale. Ce lissage rend ces masques un peu moins sensibles au bruit que le précédent.
Le masque horizontal calcule en effet le gradient horizontal sur trois lignes et un lissage vertical est opéré.
Les deux écritures employées montrent bien que les deux actions, lissage et dérivation, du filtrage de Prewitt ou de Sobel, sont séparables.
Le principal intérêt de ces masques est leur facilité de mise en œuvre ainsi que la rapidité de leur traitement. Leur inconvénient est leur grande sensibilité au bruit tout comme le précédent.

Les filtres boussoles et le gradient

Les opérateurs dits boussoles mesurent le gradient dans des directions définies. L'image est successivement filtrée par un ensemble de masques $m_{k}(i,j)$ dont chacun représente une approximation discrète du contour idéal dans une orientation spécifique (par exemple, les 8 points cardinaux). Le résultat du filtrage de l'image $f(i,j)$ avec le $k^{ième}$ masque est $g_{k}(i,j)$.

Kirsch : masques EST et SUD

$$h_{EST} = \frac{1}{15} \times \begin{pmatrix} -3 &-3 &5 \\ -3 &0 &5 \\ -3 &-3 &5 \end{pmatrix}$$ $$h_{SUD} = \begin{pmatrix} -3 &-3 &-3 \\ -3 &0 &-3 \\ 5 &5 &5 \end{pmatrix}$$

Le filtre Laplacien

Le filtre Laplacien est un filtre de convolution particulier utilisé pour mettre en valeur les détails qui ont une variation rapide de luminosité. Il est donc idéal pour rendre visible les contours des objets.
D’un point de vue mathématique, le Laplacien est une dérivée d’ordre 2, à deux dimensions et se note $\bigtriangleup I(x,y)$ ou $\bigtriangledown^{2} I(x,y)$.
Dans le cas du traitement d’image, l’image de départ $f(i, j)$ n’est pas une fonction continue, mais une fonction discrète à cause de la numérisation effectuée. Mais on peut tout de même obtenir la dérivée seconde (soit le laplacien) avec une bonne approximation grâce aux noyaux de convolution suivants (entre autres).
Opérateur Laplacien : $$h = \begin{pmatrix} 0 &1 &0 \\ 1 &-4 &1 \\ 0 &1 &0 \end{pmatrix}$$


Opérateur Laplacien (avec les diagonales): $$h = \begin{pmatrix} 1 &1 &1 \\ 1 &-8 &1 \\ 1 &1 &1 \end{pmatrix}$$