rapport de mini-projet : equations aux dérivées …rapport de mini-projet : equations aux...
TRANSCRIPT
Rapport de Mini-Projet :
Equations aux dérivées partielles.
APPLICATION A LA RESTAURATION D’IMAGES
BRUITEES
Par
Thierry KlaaBenjamin KohlIbrahim Zangré
Responsable : Antoine Henrot.
1
Table des matières
Introduction 3
1 Présentation du Problème 4
2 Etude théorique 5
2.1 Existence d’une solution au problème de minimisation . . . . . . . . . . . 52.2 Formulation variationnelle du problème . . . . . . . . . . . . . . . . . . . 62.3 Existence et unicité d’une solution au problème variationnel . . . . . . . . 72.4 Equation différentielle satisfaite par la solution u0 . . . . . . . . . . . . . 8
3 Simulation numérique sous Matlab 9
3.1 Description de la méthode de résolution et codes . . . . . . . . . . . . . . 93.2 Exemples de restauration d’image . . . . . . . . . . . . . . . . . . . . . . . 15
Conclusion 19
Bibliographie 20
2
Introduction
L’ère du numérique a révolutionné le monde de l’imagerie. Elle a conduit de nombreuxscientifiques à développer des méthodes de restauration d’image. En effet, lors de sonacquisition numérique, une image est souvent dégradée par des phénomènes de bruit dusà d’une mauvaise acquisition.
L’objectif de ce travail sera de restaurer une image initiale bruitée, en cherchant uneimage plus lisse, proche de la première.
3
Chapitre 1
Présentation du Problème
On définit une image bruitée par :
g : Ω =]0, 1[×]0, 1[−→ [0, 1]
(x, y) −→ g(x, y)
où g(x, y) représente le niveau de gris de pixel situé en (x, y).On remarque que la fonction g est positive bornée, on la supposera donc à carré inté-grable, choix justifié par le fait que g est à valeur constante sur chaque pixel, et qu’il y’aun nombre fini de pixels.
La restauration de cette image peut se faire en minimisant sur H1(Ω) l’énergie dedébruitage :
J(u) =1
2
∫
Ω
(u− g)2dxdy +1
2
∫
Ω
c|∇u|2dxdy (1.1)
où c est une fonction de (x, y),on suppose que c(x, y) ≥ c0 > 0.
On obtient alors une fonction minimisant cette énergie qui sera proche de g et plusrégulière. u sera l’image lissée.
4
Chapitre 2
Etude théorique
2.1 Existence d’une solution au problème de minimi-
sation
On a vu ci-dessus que trouver une image plus “lisse “ revient à trouver une fonction ude H1
( Ω) à valeurs dans [0, 1] qui minimise la fonctionnelle J . Nous allons donc montrer
que l’infimum noté I de J existe et est atteint pour un certain u0 dans H1(Ω) .
Pour cela, considérons une suite (un)n∈N de H1(Ω) qui minimise J (une telle suite existetoujours par défintion d’une borne inférieure), telle que (J(un))n∈N soit décroissante.Alors, il existe n0 ∈ N tel que pout tout n ≥ n0, J(un) ≤ I + 1.Montrons que (un)n∈N est bornée dans H1
( Ω) :
Pour tout n ≥ n0,
J(un) =1
2
∫
Ω
(un − g)2dxdy +
1
2
∫
Ω
c|∇un|2dxdy ≤ I + 1 (2.1)
Or :
1
2
∫
Ω
(u2n−2ung+g
2)dxdy+1
2
∫
Ω
c|∇un|2dxdy ≥
1
2(min(1, c0)‖u‖2H1(Ω))+
1
2
∫
Ω
g2dxdy−
∫
Ω
ungdxdy
Et par Cauchy Schwarz, et sachant que ‖g‖L2(Ω) ≤ 1, on a
∫
Ω
ungdxdy ≤ ‖g‖L2(Ω)‖u‖L2(Ω) ≤
‖u‖H1(Ω). Donc −
∫
Ω
ungdxdy ≥ −‖u‖H1(Ω).
On obtient alors en utilisant (2.1), pour tout n ≥ n0 :
I + 1 ≥ J(un) ≥1
2min(1, c0)‖un‖
2H1(Ω) − ‖un‖H1(Ω) (2.2)
Par conséquent, (un)n∈N est bornée dans H1(Ω).
Donc il existe une suite extraite de (un)n∈N qui converge faiblement dans H1(Ω) versune fonction u0 de H1(Ω) et fortement vers u0 dans L2(Ω), par compacité de l’injectionde H1(Ω) dans L2(Ω).
5
Alors,
∫
Ω
(un − g)2dxdy
n−>∞−→
∫
Ω
(u0 − g)2dxdy, et ‖u0‖H1(Ω) ≤ lim inf(‖un‖H1(Ω)).
Cela implique 12
∫
Ω
c|∇u0|2dxdy ≤ lim inf(
1
2
∫
Ω
c|∇un|2dxdy).
Finalement, J(u0) ≤ lim inf(J(un)), et u0 réalise le minimum de J sur H1(Ω).
2.2 Formulation variationnelle du problème
Dire que u est une solution du problème 1 est équivalent à dire que pour tout v dansH1(Ω) et t ∈ R, on a :
J(u+tv)−J(u) = t(
∫
Ω
(u−g)vdxdy+
∫
Ω
c∇u∇vdxdy)+1
2t2(
∫
Ω
v2dxdy+
∫
Ω
c|∇v|2dxdy) ≥ 0
Lemme 2.2.1. At+Bt2 ≥ 0 , ∀t ∈ R ⇔ A = 0 et B ≥ 0
u est solution du problème si et seulement si :
∫
Ω
(u− g)vdX +
∫
Ω
c∇u∇vdX = 0
et :1
2(
∫
Ω
v2dxdy +
∫
Ω
c|∇v|2dxdy ≥ 0
Cette dernière inégalité est toujours vérifiée vues les hypotèses faites sur c. On en déduitla forme variationnelle suivante du problème (1.1) :
∫
Ω
(uv + c∇u∇v)dX =
∫
Ω
gvdX, ∀v ∈ H1(Ω) (2.3)
6
2.3 Existence et unicité d’une solution au problème
variationnel
Nous allons appliquer le théorème de Lax-Milgram pour prouver l’existence d’uneunique solution au problème variationnel donc au problème de minimisation (1.1).
On définit la forme linéaire L et la forme bilinéaire a :
L : H1(Ω) −→ R
v −→< L, v >=∫
ΩgvdX
a : H1(Ω)×H1(Ω) −→ R
(u, v) −→ a(u, v) =∫
Ω(uv + c∇u∇v)dX)
Proposition 2.3.1. On considère c ∈ L∞(Ω) : L est une forme linéaire continue sur
H1(Ω) et a est une forme bilinéaire continue symétrique. Si de plus |c(x, y)| ≥ c0 > 0,
alors a est coercive.
Démonstration. L (resp. a) est clairement une forme linéaire (resp. bilinéaire symétrique).
| < L, v > | ≤
∫
Ω
|gv|dX ≤ ‖g‖L2(Ω)‖v‖L2(Ω) ≤ ‖g‖L2(Ω)‖v‖H1(Ω)
Donc L est continue.
|a(u, v)| ≤
∫
Ω
(‖c‖∞|∇u∇v|+ |uv|)dX ≤ (1 + ‖c‖∞)‖u‖H1(Ω)‖v‖H1(Ω)
Donc a est continue.
Dans le cas où c(x, y) ≥ c0 > 0 :
|a(u, u)| ≥
∫
Ω
(c0|∇u|2 + u2)dX ≥ min(1, c0)‖u‖2H1(Ω)
Donc a est coercive.
Existence et Unicité
Sous les hypothèses :• La fonction c est dans L∞.
• Il existe c0 tel que c(x, y) ≥ c0 > 0.On supposera desormais que ces hypothèses seront vérifiées dans toute la suite.On applique le théorème de Lax-Milgram. a(u, v) =< L, v > possède une solution
unique u0, et comme a est symétrique, u0 réalise le minimum sur H1(Ω) de la fonctionnelle(1.1).
7
2.4 Equation différentielle satisfaite par la solution u0
u0 est solution de :
∀v ∈ H1(Ω),
∫
Ω
(u0v + c∇u0∇v)dX =
∫
Ω
gvdX
Alors ∀v = ϕ ∈ D(Ω),
< g, ϕ >=∫
ΩgϕdX =
∫
Ω(uϕ+ c∇u∇ϕ)dX =
n∑
i=1
< c∂u0
∂xi,∂ϕ
∂xi>+ < u0, ϕ >
=< −div(c∇u0) + u0, ϕ >
Donc −div(c∇u0) + u0 = g, dans D’(Ω).c’est à dire :
−div(c∇u0) + u0 = g (2.4)
Moralement on a envie que u0 soit plus régulière, c’est à dire que l’égalité ci-dessussoit vérifiée presque partout ; ce qui est vérifié si u0 est dans H2(Ω).
Avant d’appliquer le théorème de régulatité, déterminons la condition de bord rescpectéepar u0 :
Nous travaillerons avec une condition de bord de Neumann car il s’agit de la manièrela plus simple d’appréhender le problème. Si ∂u0
∂n= f :6= 0 sur ∂Ω alors nécessairement
on aurait un terme∫
∂Ωfvdσ supplémentaire dans la forme variationnelle. Donc f = 0.
Théorème de régularité
On a :
• Ω est un ouvert convexe ;• u0 est solution du problème variationnel (2.3)• c est dans L∞(Ω)• ∂u0
∂n∈ H
1
2 (∂Ω)
Donc u0 est dans H2(Ω).
8
Chapitre 3
Simulation numérique sous
Matlab
Le problème revient à resoudre le problème elliptique suivant :Trouver u0 (qu’on sait être dans H2(Ω)) qui vérifie :
−div(c∇u0) + u0 = g dans Ω =]0, 1[×]0, 1[
∂u0
∂n= 0 sur ∂Ω
(3.1)
3.1 Description de la méthode de résolution et codes
Nous avons tenté successivement plusieurs méthodes.– Méthode des différences finies, d’abord sans, puis avec matrices creuses. Mais les
images obtenues par les algorithmes n’étaient pas satisfaisantes
– Méthode des éléments finis avec maillage régulier. Cette méthode, à laquelle nousavons réfléchi, semble correcte, mais nous avons finalement opté pour la méthodesuivante
– Méthode des éléments finis avec maillage optimalNous importerons une image bruitée g sous le format noir-blanc dans Matlab. La solutionu0 de (3.1) devra être une image plus régulière et proche de g.Pour cela, nous nous servirons de la fonction Matlab assempde qui qui utilise une méthoded’éléments finis.Le prototype de la fonction est :u=assempde(b,p,e,t,c,a,f)pour un problème du type :
−div(c(x, y)∇u) + a(x, y)u = f dans Ω
Conditions de bord(Neumann, Dirichlet ou Fourier) = b sur ∂Ω
où :• b représente les conditions de bords du problème
9
• p, e et t caractérisent le mailage : p, le vecteur qui contient les coordonnées desnoeuds du maillage, t repertorie les domaines triangulaires, et e, les arrêtes
• f est la fonction second membre représentée ici par un vecteur qui contient les va-leurs ”f(xi)” de f aux différents noeuds du maillage
• u contient les valeurs de la solution aux centres de gravité des domaines triangulairesdu maillage
Pour nous a(x, y) = Constante= 1, et c(x, y) est une fonction quelconque (positive, bornéeet supérieue à c0 > 0) ou une matrice. Nous verons plus tard l’influence de la fonction csur l’image ”résultat”.
Cependant, une image en noir-blanc est représentée dans Matlab par une matrice.Nous allons donc devoir transformer cette matrice en un vecteur colonne qui contient uneapproximation des valeurs de la matrice aux différents points du maillage. La fonctionMatlab qui effectue cette tache est la suivante :
Function Matlab 1 :
10
function [ ImagTriangle ] = imag2trimesh(p,imagegray)
% transforme une matrice en vecteur qui contient les valeurs aux points du
% maillage
[x, y] = size(p);
ImagTriangle = zeros(1, y);
for i = 1 : y
x1 = floor(p(1,i));
x2 = ceil(p(1,i));
y1 = floor(p(2,i));
y2 = ceil(p(2,i));
if x1 ~= x2
v1 = abs(p(1,i) - x1) * imagegray(y1, x2) + abs(x2 - p(1,i)) * imagegray(y1, x1);
v2 = abs(p(1,i) - x1) * imagegray(y2, x2) + abs(x2 - p(1,i)) * imagegray(y2, x1);
else
v1 = imagegray(y1, x1);
v2 = imagegray(y2, x1);
end
if y1 ~= y2
ImagTriangle(1,i) = v2 * abs(p(2,i) - y1) + v1 * abs(y2 - p(2,i));
else
ImagTriangle(1,i) = v1;
end
end
11
On crée une fonction inTriangle(x1,y1,x2,y2,x3,y3,x0,y0), qui renvoie le booléen ”(x0, y0) appartient au triangle (x1,y1) ;(x2,y2) ;(x3,y3)”.
Function Matlab 2 :
function [ flag ] = inTriangle(x1,y1,x2,y2,x3,y3,x,y)
% flag = 1 point(x,y) et dans le triangle ou sur le bord
% flag = 0 point(x,y) sinon
S = abs((x1-x2)*(y1-y3)-(y1-y2)*(x1-x3));
S1 = abs((x-x2)*(y-y3)-(y-y2)*(x-x3));
S2 = abs((x-x1)*(y-y3)-(y-y1)*(x-x3));
S3 = abs((x-x2)*(y-y1)-(y-y2)*(x-x1));
flag = 0;
if S+0.000005 >= S1+S2+S3
% on laisse 0.000005 en prévision d’erreurs d’arrondis
flag = 1;
end
12
La fonction u est un vecteur colonne qui représente les valeurs barycentriques surchaque triangle du maillage de la solution, ceci dans l’ordre de numérotation des trianglesdu maillage. Nous codons donc une fonction inverse de la précédente qui permet de re-trouver la matrice de l’image à partir de ce vecteur solution.
Function Matlab 3 :
function [ Image ] = trimesh2imag( p, t, ImagTriangle, M, N )
% [ Image ] = trimesh2imag( p, t, ImagTriangle )
% p et t sont les caractérisiques géométriques du maillage
% ImagTriangle est le vecteur solution du problème obtenu avec assempde
% Image(M, N)
Image = zeros(M, N);
[x,y] = size(t);
for i = 1 : y
x1 = p(1,t(1,i));
y1 = p(2,t(1,i));
x2 = p(1,t(2,i));
y2 = p(2,t(2,i));
x3 = p(1,t(3,i));
y3 = p(2,t(3,i));
Xmax = max([x1,x2,x3]);
Ymax = max([y1,y2,y3]);
Xmin = min([x1,x2,x3]);
Ymin = min([y1,y2,y3]);
for x0 = ceil(Xmin) : floor(Xmax)
for y0 = ceil(Ymin) : floor(Ymax)
[flag] = inTriangle(x1,y1,x2,y2,x3,y3,x0,y0);
if flag == 1
Image(y0,x0) = 1/3 * (ImagTriangle(t(1,i)) + ImagTriangle(t(2,i)) ...
+ ImagTriangle(t(3,i)));
end
end
end
end
13
Voici maintenant le programme principal dans lequel on construit le maillage, et oùon précise les paramètres de l’équation différentielle et les conditions aux bords.
Function Matlab 4 :
% Transorme l’image RGB en Noir et Blanc
% OriginalPic.jpg --> OriginalGrayPic.jpg
% [M,N] est la taille de l’image
imwrite(rgb2gray(imread(’OriginalPic.jpg’)),’OriginalGrayPic.jpg’);
% M est Y, N est X
% ImGray( M, N )
ImGray = imread(’OriginalPic2.jpg’);
[M,N] = size(ImGray);
if M > 1000 || N > 1000
disp(’IMAGE TOO LARGE’);
return;
end
g = [2 2 2 2
1 N N 1
N N 1 1
1 1 M M
1 M M 1
1 1 1 1
0 0 0 0];
[p,e,t] = initmesh(g);
[x,y] = size(p);
%On affine le maillage jusqu’à ce que le nombre de points du maillage soit
%superieur au nombre de pixels de l’image initiale.
while y <M*N
[p,e,t] = refinemesh(g,p,e,t);
[x,y] = size(p);
end
% On définit le vecteur image g=ImagTriangle
[ ImagTriangle ] = imag2trimesh( p, ImGray);
14
% conditions au bord
b = [1 1 1 1
0 0 0 0
1 1 1 1
1 1 1 1
48 48 48 48
48 48 48 48
48 48 48 48
48 48 48 48
49 49 49 49
48 48 48 48];
f = ((ImagTriangle(t(1,:)))+(ImagTriangle(t(2,:)))+(ImagTriangle(t(3,:))))/3;
c=’1’;
ImagTriangle=assempde(b,p,e,t,1,c,f );
[ Image ] = trimesh2imag( p, t, ImagTriangle, M, N );
Image = Image / 256;
figure(2)
imshow(ImGray);
figure(3)
imshow(Image)
3.2 Exemples de restauration d’image
Figure 3.1 – Avant Figure 3.2 – Après
Cette restauration est faite avec c(x, y) = 1.
15
Einstein avant,
Figure 3.3 – Avant
Einstein après, pour c= 0.9
Figure 3.4 – Après
- Pour c(x, y) = 2.5, on obtient :
Figure 3.5 – Avant Figure 3.6 – Après
16
- Pour c(x, y) = 0.5, on obtient :
Figure 3.7 – Avant Figure 3.8 – Après
Essayons à présent des fonctions c(x, y) non constantes.
- Pour c(x, y) = cos(x)cos(y), on obtient :
Figure 3.9 – Avant Figure 3.10 – Après
Ce résultat n’est pas étonnant car ici, c ne vérifie pas les hypothèses qui permettentde garantir l’existance et l’unicité d’une solution au problème.
17
- Pour c(x, y) = 107e−0.001(x2+y2), on obtient :
Figure 3.11 – Avant Figure 3.12 – Après
18
Conclusion
Nous sommes partis du problème de minimisation de la fonctionnelle J définie par :
J(u) =1
2
∫
Ω
(u− g)2dxdy +1
2
∫
Ω
c|∇u|2dxdy (3.2)
où c est une fonction de (x, y), vérifiant c(x, y) ≥ c0 > 0, afin de régulariser la fonc-tion g(x,y) représentant une image. Ainsi, suivant les choix de c, nous avons vu que lasolution de ce problème de minimisation n’était pas toujours proche de g. En particulier,les fonctions dont les valeurs explosent (type polynômes ou exponentielles) ne sont pasjudicieuses car elles introduisent un contraste trop important et les images obtenues sontle plus souvent toutes moires, toutes blanches, ou noires sur une partie et blanche surl’autre ( cf. figure(3.12).
L’avantage d’utiliser des fonctions constantes est qu’elles permettent de conserver unniveau de gris ”proportionnel” à celui de l’image initiale en tout point, tout en obtenantune image finale plus régulière.
Par ailleurs, plus la constante choisie est grande, plus l’image finale est sombre. Et inver-sement, plus la constante choisie est faible, plus l’image finale est claire, le choix de c = 1permet de restituer au mieux le contraste initial de l’image.
19
Bibliographie
[1] Variation et optimisation de formes, Antoine Henrot et Michel Pierre
[2] Cours EDP, Antoine Henrot
20