Page principale   Hiérarchie des classes   Liste des composants   Liste des fichiers   Composants   Déclarations

Comparaison de différents filtres à base d'équations aux dérivées partielles

Introduction
Analyse des différents filtres
Equation de la chaleur
Perona et Malik
Alvarez, Lyons et Morel (1)
Alvarez, Lyons et Morel (2)
Comparaison
Conclusion
Bibliographie
Commentaires sur le code

Introduction

PDElib a été réalisée dans le cadre du cours de Henri Maître sur le thème "méthodes de base de l'analyse d'images". Une version de cette page du programme est disponible sur BETI. Cette page ainsi que le code de PDElib ont été réalisés par Sylvain Paris.

L'objectif est de comparer différentes filtres anti-bruit à base d'équations aux dérivées partielles .

PDElib est une bibliothèque qui permet de mettre en oeuvre rapidement et simplement des filtres EDP. La version actuelle ne fonctionne que sur des images noir et blanc.

L'étude sera centrée sur quatre filtres EDP : l'équation de la chaleur, l'équation de Perona et Malik et deux équations proposées par Alvarez, Lions et Morel. On observera les caractéristiques de chacun des filtres ainsi que l'impact du choix des fonctions paramètres. Le point crucial de la comparaison est le comportement des filtres par rapprt aux contours de l'image traitée. En effet, on souhaite supprimer le bruit présent dans l'image tout en respectant autant que possible les contours de l'image.

Haut de la page

Analyse des différents filtres

Dans chacune des EDP suivantes, on notera u la fonction intensité de l'image. Ensuite, l'EDP donne la loi d'évolution temporelle de u représentée par  .

Comme on s'intéresse principalement au comportement par rapport aux contours de l'image, il est judicieux d'observer les EDP dans le repère local lié au gradient de l'intensité. En effet, un contour induit un fort gradient d'intensité dans l'image et par conséquent, la direction du contour est orthogonale à la direction du gradient. Ainsi, on notera  la direction du gradient,  la direction orthogonale et  les dérivées secondes dans les directions correspondantes.

De là, on décomposera chaque EDP dans ce repère local. Le terme en  correspond à un lissage dans la direction du contour; on souhaite donc que ce terme soit faible dans les zones où le gradient est important. Ainsi on "respecte" le gradient. Le terme en  correspond au lissage dans la direction orthogonale au contour et par conséquence à un très faible impact sur les contours.

Haut de la page

Equation de la chaleur

Ce filtre est basé sur l'équation :  . Dans le repère local, on a la forme suivante :  . Cette équation en physique représente la diffusion isotrope de la chaleur dans un matériau.

Koenderink a montré que ce filtre était équivalent à une convolution par une gaussienne. La gaussienne est invariante par rotation et on retrouve bien cette propriété dans l'EDP car le laplacien est aussi invariant par rotation. On a donc ici un filtre isotrope dont le traitement est le même partout dans l'image et selon toutes les directions. Si on observe son comportement dans l'espace de Fourier, on observe que ce filtre est la multiplication par une gaussienne et donc "étouffe" les hautes fréquences. Ainsi, il est clair qu'on élimine le bruit - qui se situe bien dans les hautes fréquences - mais on lisse aussi les contours. Ce filtre est exposé ici principalement comme référence pour pouvoir le comparer aux autres filtres.

Avantages

A priori, ce filtre ne présente pas beaucoup d'avantages. Toutefois, il est facile à implémenter et fonctionne très vite pour peu que l'on exploite le cache processeur et l'unité de calcul flottant.

Désavantages

Ce filtre lisse les contours quels qu'ils soient. Dans tous les cas, l'image devient floue.

Haut de la page

Perona et Malik

Ce filtre est basé sur l'équation :  .

Dans le repère local, on a la forme suivante :  . La fonction c est une fonction décroissante sur  telle que  et  .

L'idée est simple, on veut diminuer l'effet du filtre sur les contours. Pour cela, on pondère le gradient par la fonction c de manière à contrôler la force de la diffusion. Ainsi, on obtient une diffusion forte sur les zones uniformes i.e. les zones de faible gradient et une diffusion faible sur les contours i.e. les zones de fort gradient.

Toutefois, cette EDP pose un problème, le coefficient de  de la forme  peut devenir négatif à cause de la dérivée première de la fonction c. Or dans ce cas, l'EDP n'est plus une EDP de diffusion mais une EDP de réaction qui diverge. Et finalement, dans les zones de très fort gradient ce coefficient devient négatif et les contours sont localement renforcés.

Avantages

Le filtre traite différemment les contours et les zones uniformes. Ainsi les contours sont assez bien préservés et les zones uniformes sont débruitées.

Désavantages

Les forts contours sont artificiellement renforcés.

Le traitement des contours est très sensible à le valeur du gradient à cause du terme  . Ainsi un contour le long duquel le gradient varie n'est pas transformé de manière uniforme ce qui, évidemment, peut poser problème -- par exemple si on souhaite faire une détection de contours ensuite.

Influence du choix de la fonction c

Deux fonctions ont été essayées pour c : une fonction "rampe" linéaire par morceaux:  et une fonction "carré inverse"  .

Ces deux fonctions ont une allure générale comparable et détermine la limite au-delà de laquelle on considère un gradient comme important. On s'attardera pas sur cette limite qui doit être fixée au cas par cas, selon les contours que l'on souhaite préserver ou non.

Par ailleurs, comme la dérivée première de c intervient dans le filtre, la fonction "rampe" fait apparaître des paliers et des discontinuités. Et cela se traduit sur l'image par des zones qui correspondent aux différents paliers et apparaissent entre les zones des frontières dues aux discontinuités.

La fonction "carré inverse" étant continue et à dérivée continue permet de supprimer cet effet de "zones". Elle représente donc un choix judicieux par rapport à la fonction "rampe".

Haut de la page

Alvarez, Lions et Morel (première équation)

Ce filtre est basé sur l'équation :  où g est une fonction décroissante sur  telle que  et  est une gaussienne dont le but est de régulariser u pour obtenir des résultats d'existence et d'unicité sur la solution de l'EDP, son impacte sur l'image est faible. Par conséquent, elle n'est pas codée dans PDElib et nous n'étudierons pas son influence sur le résultat final.

Dans le repère local, on a la forme suivante :  .

Il est donc clair que ce filtre n'agit que dans la direction orthogonale au gradient et donc n'affecte que très très peu les contours. Par ailleurs, s'il on prend comme fonction g la fonction inverse, on fait apparaître le terme  dont la norme est égale à la courbure de la ligne de niveau sur laquelle on se situe. Le filtre a donc une action qui proportionnelle à la courbure locale de l'image.

D'un point de vue général, le filtre agit sur les lignes de niveau de l'image, il les resserre ou les écarte selon l'endroit. Ce filtre a donc tendance à faire apparaître des aplats de couleur unie dans les zones où les lignes de niveau s'écartent.

Avantages

Les contours sont très bien respectés.

Désavantages

On ne lisse que dans une seule direction.

On fait apparaître des aplats de couleurs. Notamment les dégradés perdent en qualité à cause de ce phénomène.

Influence du choix de la fonction g

Contrairement à l'EDP de Perona et Malik, ici la dérivée première n'apparaît pas. Par conséquent, le choix de la fonction g entre "rampe" et "carré inverse" n'a que peu d'importance.

Haut de la page

Alvarez, Lions et Morel (seconde équation)

Ce filtre est basé sur l'équation :  où g est une fonction décroissante sur  telle que  et  et h est une fonction croissante sur  telle que  et  .

Dans le repère local, on a la forme suivante :  .

Dans le repère local, l'expression de ce filtre est très semblable celui de Perona et Malik sauf que l'on a la fonction h à la place d'un terme qui contenait la dérivée première de la fonction c. Par conséquent, il n'est plus possible d'avoir un coefficient négatif dans l'EDP. On est assuré de toujours avoir un phénomène de diffusion régulé par la norme du gradient.

Qui plus est on lisse en permanence selon les deux directions donc on évite le phénomène d'aplats de couleur de la première équation. Bien sûr, en conséquence les contours sont moins bien respectés.

Avantages

Les contours et les dégradés sont bien respectés.

Désavantages

Les contours sont moins bien repectés qu'avec la première équation.

Influence du choix des fonctions g et h

De même que pour la première équation, le choix n'a que peu d'importance car les dérivées n'interviennent pas.

Haut de la page

Comparaison

Attention les liens qui suivent ouvrent des pages comportant de nombreuses images.

Comparaison sur une image réelle : Sur cette image on voit particulièrement bien l'effet de réaction dans le filtre de Perona et Malik et les différences de traitements sur les contours.

Comparaison sur une image artificielle : Sur cette image, on voit particulièrement bien les différences de traitement sur les dégradés et le cas extrême pour le premier filtre de Alvarez, Lions et Morel (certains pixels ne sont que peu ou pas filtrés au cours du processus).

Nota bene :

La fonction rampe utilisée pour les filtres de Perona et Malik et de Alvarez, Lyons et Morel (1) a pour paramètres a = 0 et b = 0.25. La fonction carré inverse est telle qu'elle vaut 0.1 en x = 0.25.

Pour Alvarez, Lyons et Morel (2) la fonction rampe a comme paramètre a = 0.025 et b = 0.05. La fonction carré inverse est la même que ci-dessus.

A chaque fois, le pas de temps est dt = 0.125.

Haut de la page

Conclusion

A moins d'avoir un un impératif très strict sur la rapidité du traitement, dans quel cas le filtre basé sur l'équation de la chaleur peut s'avérer un bon choix, on choisira une des deux équations de Alvarez, Lions et Morel. En effet, les qualités des images ainsi obtenues sont supérieures à celles des autres filtres. Le choix entre les deux se fera en fonction de l'importance que l'on donne au respect des contours par rapport à celui des dégradés.

Haut de la page

Bibliographie

J. J. Koenderink, The Structure of Images. Biol. Cybern, 50,363-370, 1984.

P. Perona, J. Malik Scale-space and edge detection usinf anisotropic diffusion. IEEE Transactions on Pattern Analysis and Machine Intelligence, 12(7):629-639, 1990

L. Alvarez, P.L. Lions, J.M. Morel Image selective smoothing and edge detection by nonlinear diffusion (ii). SIAM J, Numer Anal, 29(3):845-866 1992

R. Deriche and O. Faugeras. Les EDP en Traitement des Images et Vision par Ordinateur. Traitement du Signal, 13(6), 1996.

Haut de la page

Commentaires sur le code

Le code est optimisé pour aboutir à un compromis entre vitese d'exécution et espace mémoire utilisé. Toutefois, certaines optimisations ne sont pas implémentées dans le but de conserver un code lisible (entre autres dans l'implémentation des filtres -- cf. PDE_library.cc -- les variables ne sont pas réutilisées au cours du calcul pour conserver la clarté des opérations).

Plusieurs interfaces sont proposées : une souple mais peu optimisée à base de fonctions géométriques (Image_data::get_dx()...) et d'opérateurs arithmétiques (+,-,*,/) pour tester rapidement une EDP et une plus contraignante mais optimisée à base de fonctions arithmétiques (add(), sub()...) et de constructeurs foncionnels.

Pour avoir un exemple d'utilisation des filtres déjà implémenter, il suffit d'observer le code de PDE.cc qui est le programme qui a servi pour créer les exemples. Pour avoir exemple d'implémentation de filtres, on s'inspirera de ceux contenus dans PDE_library.cc.

Pour compiler PDElib, il suffit de compiler la bibliothèque Image et de la lier au source du programme qui utilise PDElib. Le reste de la bibliothèque est entièrement incluse dans le source du programme, ce qui permet d'utiliser les fonctions inline et les modèles (template) y compris avec g++ ou egcs.

Le code est intégralement commenté de manière compatible avec Doxygen. On trouvera donc la description des fonctions aussi bien incluse dans les fichiers .h et *.cc que sous forme HTML accessible à l'aide du menu en haut de cette page.

Télécharger les sources

Cette bibliothèque est sous license GPL.

Haut de la page


Généré le Mon Mar 19 22:47:37 2001 pour PDElib par doxygen1.2.5 écrit par Dimitri van Heesch, © 1997-2001