Résumé
Article étudiant le lissage d'images par les moindres carrés. Application sur Matlab possible par son étude.
Document illustré par de nombreuses figures explicatives.
Extrait:
L'objectif est de développer (sur le logiciel Matlab par exemple) deux outils permettant de filtrer une image f bruitée, le but étant de réduire au mieux ce bruit pour permettre d'obtenir après filtrage une image la plus proche de l'originale. Nous utiliserons une méthode de filtrage consistant à minimiser les gradients de l'image numérique. Ainsi, deux méthodes seront utilisées, elles sont basées sur le même principe, celui du lissage par moindres carrés. Désignons par f une image mathématique construite à partir d'une image informatique par interpolation [...]
[...] Afin d'étudier le lissage isotrope, nous pouvons effectuer : 1. une méthode de programmation vectorielle ; 2. une méthode de programmation matricielle ; 3. une méthode de programmation matricielle optimisée pour Matlab. Pour les deux premières méthodes implémentées, afin d'éviter du temps de calcul, le critère J1 n'est pas calculé afin d'estimer seulement le temps du lissage. [...]
[...] La méthode utilisée ici est donc une méthode de gradient (Jacobi) et l”algorithme utilisé dans chaque programme est le suivant : initialisation : u0 = f , f Rn×m boucle des itérations p (arrêt défini en paramètre variable) pour i = n 1 et j = m 1 up+1 = i,j 1 ǫ h fi,j + ǫ1 (up i+1,j h2 p p + up i,j+1 + + ) fin pour fin boucle Voici un tableau exprimant le temps nécessaire en secondes pour le calcul de chacune des trois méthodes (tests effectués sur un Pentium IV à 2.60 Ghz avec 512 Mo de RAM) suivant le nombre d'itérations demandées (paramètres ǫb = 0.1 et ǫ1 = 0.01 ) avec trois images différentes : oeil.jpg méthode 1 méthode 2 méthode ombre.jpg méthode 1 méthode 2 méthode fenetre.jpg méthode 1 méthode 2 méthode Par l'observation de ces trois tableaux, la méthode de lissage la plus rapide saute immédiatement aux yeux, il s'agit de la troisième (pratiquement un facteur de 10 gagné par rapport à la méthode numéro alors que nous faisons plus de calculs ! ! Pourquoi une telle différence de temps d'exécution pour la méthode numéro 3 sur les trois images prises en compte ? [...]
[...] Il s'agit donc d'un lissage isotrope (lissage de base). La seconde méthode consiste à minimiser le critère suivant (ǫ a ) : J2(u) = Ω u)2 dΩ + ǫ + a 2 dΩ Ω Ce problème correspond à un problème non linéaire. Nous considérons une fonctionnelle dont les minimiseurs peuvent être discontinus Lissage isotrope Théorie Nous allons développer une méthode de lissage par moindres carrés consistant à minimiser le critère J1(u). Le problème de base est le suivant : J1(u) = Ω u)2 dΩ + ǫ Ω 2 dΩ , ǫ1 Problème différentiel : déterminons la dérivée d'un tel critère en utilisant la définition suivante : J1(u + tv) J1(u) lim t Un simple calcul algébrique nous conduit alors à l'identité suivante : J1(u + tv) = = 2 Ω u tv)2 dΩ + ǫ Ω + tv) 2 dΩ Ω u)2 dΩ t Ω Ω v dΩ + Ω t v 2 dΩ Ω + ǫ 2 dΩ + Ω ǫ t 2 2 dΩ + ǫ1 t Ω Ω dΩ = J1(u) + t + t 2 v dΩ + ǫ1 Ω dΩ v 2 dΩ + Ω ǫ1 t 2 2 dΩ J1(u + tv) J1(u) t Ω −u)vdΩ+ǫ1 Ω Ω t 2 v 2 dΩ+ Ω ǫ1 t 2 Ω 2 dΩ J1(u + tv) J1(u) lim t v dΩ + ǫ1 Ω dΩ La formule de Green, avec u et v définies sur l'ouvert Ω de R est : v dΩ + Ω Ω dΩ = v dΩ où est la frontière de Ω et η la normale unitaire sortante à Ω le long de ∂Ω. [...]
[...] Nous devons les dimensionner de telle manière que le lissage s'effectue sans trop modifier les contours à forts gradients. Dans une image, le carré du module du gradient de f (ici varie entre 0 et son maximum que nous notons tmax . Ainsi, nous choisissons a tel que : n at 1 1+at = , n N + d'où a = t max Nous pouvons alors calculer les valeurs importantes que prennent nos coefficients : valeur maximale des coefficients de lissage ǫ2 = ǫ2 10n 2tmax valeur maximale du coefficient de lissage tangent au contour ǫ2 10n ǫ2 ϕ (tmax ) = 2tmax valeur maximale du coefficient de lissage normal au contour ǫ2 (tmax ) 1 atmax 1 + atmax = 2tmax 10n ǫ2 Pour permettre un minimum de comparaison avec le lissage isotrope, nous fixons ǫ2 par rapport à ǫ1 ainsi : ǫ2 = ǫ ǫ2 = 2ǫ1 tmax ǫ2 10n et ǫ2 = ǫ1 ǫ2 = 10n 2tmax Approximation : afin de calculer dérivées premières et secondes, nous utiliserons dans le programme ce qui a été proposé pour le lissage isotrope c'est-à-dire une approximation par forme centrée avec les notations = et = précédentes = = h est la taille du pixel) : ui,j = 2 ui,j = ui,j+1 ui+1,j et ui,j = 2h 2h ui,j+1 2ui,j + ui+1,j 2ui,j + 2 et ui,j = 2 h2 h ui+1,j+1 + ui,j = 4h2 La norme du gradient est donnée par ce calcul : 2 = u)2 + u)2 Le Laplacien se calcule ce cette façon : = u + u = ui+1,j + ui,j+1 4ui,j + + h2 Applications numériques : les deux figures suivantes représentent les résultats obtenus pour la même image bruitée avec un n valant 3 puis 4. [...]
[...] Pour tout petit paramètre ǫ, nous construisons une image dite lissée et solution du problème suivant : 1 (Ω) min Ω f u 2 dΩ + ǫ 2 Ω 2 dΩ ce qui revient à résoudre : + u = f dans Ω Ainsi, nous pouvons gommer les petites imperfections mais les contours sont étalés, un effet de flou est créé par ce lissage linéaire. Ce lissage permet de corriger le bruit dans les parties homogènes (voir le panorama des images lissées) des images mais est moins efficace sur les détails et contours qu'il dégrade. Il rend ainsi l'image moins bruitée mais plus floue Lissage non linéaire Théorie Maintenant, nous allons minimiser J2(u). [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture