I.   Introduction

   La recherche des contours dans une image est un des problèmes les plus étudiés depuis l’origine des travaux sur l’imagerie numérique. Ceci est en grande partie due à la nature très intuitive du contour qui apparaît très naturellement comme l’indice visuel idéal dans la plus grande partie des situations. Très schématiquement, les contours représentent le lieux des variations significatives de l’information à niveaux de gris.

   La notion du contour étant reliée à celle de la variation, il est évident qu’une telle définition nous amène tout naturellement vers une évaluation de la variation en chaque pixel. Une variation existera si le gradient est localement maximum ou si la dérivée seconde présente un passage par zéro. Les principaux algorithmes connus (Sobel, Prewitt, Kirsh, Canny, Deriche ...), se focalisent sur ce premier aspect du contour.

   Les contours dans une image sont caractérisés par une forte variation de contraste, il est logique de chercher un opérateur permettant de caractériser, de repérer les zones où les niveaux de gris augmentent ou diminue très vite. La dérivée (le gradient) répond tout à fait à ce problème. Le gradient en un pixel d’une image numérique est un vecteur caractérisé par son amplitude et sa direction. L’amplitude est directement liée à la quantité de variation locale des niveaux de gris. La direction du gradient est orthogonale à la frontière qui passe au point considéré.

   Les techniques permettant de détecter un contour sont basées sur l’utilisation :

Les contours sont les lignes de maximum locaux pour les filtres de gradients, et pour les filtres Laplaciens, les contours seront les suites de points à zéro.

Le filtre de Canny trouve les valeurs maximales de l'image qui a été tordue avec une fonction spatiale. Un autre filtre de rang généralement utilisé, le filtre de rang maximal ou minimal est employé pour obtenir des régions de fond lisses. En combinant ces filtres pour filtrer les images et calculant la différence des images finales. Nous étendons cette idée en incluant les valeurs qui sont au milieu du min et le max des valeurs classées. En conséquence, nous obtenons un filtre simple et efficace pour la détection de contour appelé filtrage par différence de rang.

1.   Détecteurs de passage par zéro du Laplacien

   Ces méthodes utilisent le fait que le passage par zéro du Laplacien permet de bien mettre en évidence les extremums de la dérivée. Ce qui exprime qu’une image de contours est obtenue  par filtrage par la dérivée seconde d’un filtre passe-bas, puis détection des zéros de la fonction ainsi obtenue. Les filtres les plus utilisés pour ces filtrages passe-bas sont les filtres gaussiens. Le filtre obtenu par convolution avec le Laplacien d’une gaussienne est connu sous le nom de LOG.

2.   Critères de Canny

Cette approche monodimensionnelle consiste à trouver un filtre optimal linéaire de réponse impulsionnelle paire f(x) satisfaisant trois contraintes pour le signal et garanti une bonne détection :

 Critère d’efficacité de la détection : L’efficacité de la détection est définie comme le quotient de la réponse du filtre f(x) à la transition (au point 0) par la racine carrée de la puissance du bruit après filtrage.

Son expression est donnée par R  : .

 Critère de localisation : La sortie du filtre correspond à un signal d’entrée bruité possédant un maximum en une position x0 , alors que dans le cas d’un signal non bruité le maximum est en zéro. La précision de la localisation du filtre f(x) est mesurée par

L : .

 Critère d’unicité : Ce critère d’unicité exige que la réponse à un contour bruité du filtre recherché ne donne pas lieu à trop de maxima locaux proches du maximum local définissant la position du contour. La distance moyenne entre deux pics est une fraction de la taille du filtre. Son expression est donnée par :

W :  .

Les trois critères étant définis, la détermination du filtre repose sur la maximisation des parties variables du produit R*L sous la contrainte W.

3.   Extension bidimensionnelle du filtre

Le filtre f(x) à une dimension permet la détection des variables du signal de type ligne de crête ou toit, plus exactement il va les amplifier.

Pour une image 2D, il est nécessaire d’étendre le filtre f(x) à deux dimensions. En se basant sur l’hypothèse de la séparabilité du filtre, son extension peut être effectuée par l’utilisation de deux filtres séparables et directionnels. A chaque direction orthogonale correspond un opérateur qui le produit de la fonction  de détection  f avec une fonction de projection g.

La fonction de projection g(x) est déterminée en utilisant un filtre de régularisation à partir de l’opération de filtrage. Le filtre lisseur est donné par l’intégrale double de la fonction f(x).

Le filtre 2D séparable défini par D (i,j) = f(i).g(j), favorise la détection de l’information dans une direction (en savoir plus).

II.   Filtrage par différence de rang.

1.   Rappels sur les filtres de rang.

On considère une fenêtre d’analyse comportant N  pixels {x1, x2, …,xN}. En triant ces données par ordre croissant, on obtient l’ensemble des statistiques d’ordre :  

   La donnée est appelée statistique d’ordre j. Elle a le rang j  dans l’ensemble des observations, le schéma d’un filtre d’ordre comporte deux étapes : un étage de tri, un étage de calcul de sortie :

                                 

   Les filtres de rang sont des opérateurs de prétraitement des images permettant de faciliter la segmentation avant une analyse. En effet, les images réelles comportent souvent un bruit d’image qu’il est nécessaire d’atténuer tout en conservant par ailleurs la forme des structures observées.

Définition

Soit S une région dans l'image I(x,y) contenant N  pixels tel que le pixel (x,y) peut ou ne peut pas être à l'intérieur de S. On trie les valeurs des pixels dans S  tel que la valeur la plus petite est notée par R1[S(I(x,y))] et la plus grande par Rv[S (I(x,y))].

   Le filtre de rang Ri[S(I(x,y))] est le filtre dont la sortie est la ième valeur la plus petite des pixels dans S (I(x,y)). Un filtre de rang supérieur est noté par Ru[S (I(x,y))] et celui de rang inférieur noté par Rl[S(I(x,y))]. Le filtre par différence de rang Ru,l[S(I(x,y))] est donné par la relation suivante :

     Ru,l[S(i(x,y))]=Ru[S(i(x,y))] - Rl[S(i(x,y))]   où     (*)

   La valeur résultante du filtre par différence de rang est alors la différence entre la uème valeur et la lème valeur des pixels dans S. Cette valeur est assignée au pixel correspondant (x,y) dans l'image filtrée.

   L'image filtrée par différence de rang est produite en exécutant l'opération (*) sur tous les pixels dans l'image.

2. les paramètres du filtre

Le comportement du filtre par différence de rang est dirigé par un certain nombre de paramètres :

i)    L'emplacement du pixel (x,y) dans la région S,

ii)   La forme de la région S,

iii)  La taille de S,

iv)   Les valeurs du rang supérieur et inférieur sont numérotées u et l.

   L'emplacement du pixel (x,y) dans la région S détermine l'emplacement du contour résultant dans l'image produite à celui dans l'image originale. Ce filtre étudie tout les emplacements dans S, également les valeurs des intensités dans S déterminent le résultat. Dans ce cas, les valeurs des pixels dans le voisinage délimitant le pixel (x,y) déterminent la localisation de ce pixel et de là, il n'y a aucun changement de pixel dans le contour résultant. Si le pixel (x,y) est loin du point central de la région S, (i.e. à l'extérieur de la région), alors il y aura un changement de résultat dans l'image. Dans ce cas, le pixel (x,y) est remplacé par le résultat de l'opération de différence de rang calculée sur une région qui n'inclut pas le pixel (x,y).

    La forme de la région S détermine quelle orientation spatiale de contours est soulignée plus que d'autres, puisque cette région peut assumer n'importe quelle forme.

    La taille de la région S est formée pour déterminer la résolution spatiale du contour dans l'image. Par exemple, dans une région carrée 3x3 pixels, les contours constitués de plus ou moins de 3 pixels de largeur peuvent être détectés. Des petites tailles de région sont préférées sur les plus grandes parce qu'ils exigent moins de temps d’execution. Cependant, avec une taille de région plus petite, il est plus difficile d'obtenir une forme circulaire avec une grille rectangulaire, Par exemple, pour une fenêtre 3x3, tous les 9 pixels dans la région carrée seront utilisés pour rapprocher une forme circulaire.

     Finalement, la classe des nombres u et l, détermine la tolérance du filtre au bruit de l'image et l'épaisseur du contour dans l'image résultante.

   En choisissant le nombre le plus haut v pour le rang supérieur et le numéro 1 le plus bas pour le nombre de rang inférieur, d’où le filtre produit une image contenant les plus grandes différences d'intensité locales. C'est le cas spécial du filtre par différence de rang qui a été utilisé par Russ. Comme les nombres de rang supérieurs et inférieurs sont proches de leurs valeurs extrêmes, les contours produits par le filtre sont plus minces et moins intenses.

Si on attribue au rang supérieurs et inférieurs les valeurs maximales et moyennes successives des pixels contenus dans la fenêtre du filtre par différence de rang, alors le contour extérieur de l'objet accru de moitié la largeur du filtre résultant. De la même façon, si le milieu et des valeurs du rang les plus bas sont utilisés, alors le contour intérieur de l'objet accru de moitié la largeur du filtre résultant. Cela arrive même en présence de bruit.

Effet de la variation du rang supérieur et inférieur sur l'image de Lenna et une image synthétique

 

Images de Lenna

   Pour une fenêtre 3x3 ,en appliquant notre filtre sur l’image Lenna, on constate que si on fait la différence entre le rang maximum et minimum la différence d’intensité est importante, la détection est bonne, mais les contours sont épais, par contre si on considère le rang maximum et le rang médian l’intensité est moins importante mais le contour est mince, il faudra donc trouver un compromis entre le rang supérieur qui doit se rapprocher du rang maximum et le rang inférieur qui doit être entre le rang inférieur et le rang médian.

    La taille de la fenêtre donne la résolution spatiale des détails fins du contour, par exemple le choix d’une fenêtre carré 3x3 (deuxième figure : b,c,d), les contours sur 3 pixels ou moins sont détectés. Pour des fenêtres plus grandes 7x7 (deuxième figure : e,f,g,h) les contours sont moins précis, et s’ils sont droits ils deviennent arrondis.

Comportement des trois filtres en présence d'un bruit impulsionnel

 

   Le filtre de rang s’avère très efficace dans le cas d’un bruit impulsionnel. Les contours des objets sont conservés mais il faut choisir une fenêtre importante (7x7). Les rangs supérieure et inférieure doivent être rapprochés. Si on choisit les rangs maximum et minimum les résultats sont médiocres et les images traitées restent bruitées.

  Comme tout filtre linéaire le filtre de Canny et le filtre LOG ne donnent pas de résultats satisfaisants, d'où le bruit n’est pas éliminé et les contours des objets ne sont pas apparents.

Comportement des trois filtres en présence d'un bruit Gaussien

 

   Le filtre par différence de rang réagit mal au bruit gaussien comme tout filtre non linéaire. L'application des rangs maximal et minimal donne une image très bruitée, par contre si on applique des rangs médians rapprochés avec des fenêtres importantes (7x7), le résultat optimal n’est pas du point de vue visuel acceptable, et la détection est quasiment impossible.

  Le filtre de Canny donne les meilleurs résultats par rapport au filtre LOG, car ce dernier est sensible au bruit.

Performance du filtre sur des images réelles  

 

                                                      

Conclusion

   Le filtre par différence de rang est plus performant sur des images bruitées par un bruit additive uniforme, que le bruit Gaussien, dont le filtre de Canny donne de meilleurs résultats pour ce dernier, par contre le filtre LOG est le plus sensible au bruit et le moins performant en détection car il est basé sur la dérivée seconde.

   En revanche, si l’image est très bruitée pour les trois filtres, le choix d’une fenêtre plus large (5x5 par exemple) est recommandée pour éliminer le bruit, ce qui demande en contre partie un temps de calcul plus important.

    Le filtre de rang donne des contours plus épais en assurant leur continuité, il est presque aussi performant que le filtre Canny en détection des contours et plus facile en implémentation.