Bonjour tout le monde,
J'ai devant moi le code d'une fonction matlab,sachant que je n'ai jamais utilisé ce soft j'aurai besoin que vous m'aidiez à comprendre le sens de quelques instructions dont la syntaxe m'est totalement inconnu...Si ça ne vous dérange pas bien sur
Tout d'abord voici le prototype de la fonction :
Pour ce qui est des paramètres de cette fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 function [u,v] = GVF(f, mu, ITER)
f : est une image (Edge Map d'une image pour etre plus precis)
mu : est un réel.
ITER : un entier ( nombre d'itérations de la boucle principale)
voici le corp de cette fonction :
Petite confirmation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 1:[m,n] = size(f); 2:fmin = min(f(:)); 3:fmax = max(f(:)); 4:f = (f-fmin)/(fmax-fmin); % Normalize f to the range [0,1] 5:f = BoundMirrorExpand(f); % Take care of boundary condition 6:[fx,fy] = gradient(f); % Calculate the gradient of the edge map 7:u = fx; v = fy; % Initialize GVF to the gradient 8:SqrMagf = fx.*fx + fy.*fy; % Squared magnitude of the gradient field % Iteratively solve for the GVF u,v 9:for i=1:ITER, 10: u = BoundMirrorEnsure(u); 11: v = BoundMirrorEnsure(v); 12: u = u + mu*4*del2(u) - SqrMagf.*(u-fx); 13: v = v + mu*4*del2(v) - SqrMagf.*(v-fy); 14: fprintf(1, '%3d', i); 15: if (rem(i,20) == 0) 16: fprintf(1, '\n'); 17: end 18:end 19:fprintf(1, '\n'); 20:u = BoundMirrorShrink(u); 21:v = BoundMirrorShrink(v);
Les instructions 2 et 3 : min(f( : )) et max(f( : )) renvoient respectivement la plus petite valeur et la plus grande valeur de la matrice f.Est ce bien cela?
Aprés ces deux instructions je crois avoir compris la suite,jusqu'a arrivé aux instructions 12 et 13:
Alors tout d'abord la fonction del2,Est ce une fonction prédéfini dans Matlab?Si oui,qu'est ce qu'elle calcul à partir de u?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 12: u = u + mu*4*del2(u) - SqrMagf.*(u-fx); 13: v = v + mu*4*del2(v) - SqrMagf.*(v-fy);
SqrMagf est l'amplitude du gradient de f,ce qui vient juste après dans les deux expressions,l'opération " .* "! ( SqrMagf.*(u-fx) )Quel est cette opération?
Puisque SqrMagf et (u-fx) ont les mêmes dimensions (mXn),la multiplication ne peut être définie!mais peut etre que ce n'est pas une simple multiplication ?
PS: Un petit commentaire sur les instructions 14,15,16 et 19 ne pourra que m' éclaircir davantage.
Merci d'avance.
Partager