Bonjour
J'essaye de simuler ces 2 étapes ss Matlab pour une utilisation ultérieure du résultat.
•1ère étape : Calcul de l’image moyenne M
Pour chaque Pixel G(i,j) de l’image G faire• 2ème étape : calcul de l’image variance locale VL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Si G(i,j) est un Pixel de bordure alors M(i,j)= G(i,j) Sinon M(i,j)= [som de (G(m,n))]/9; avec m= i-1:i+1; n=j-1:j+1;)
Pour chaque Pixel G(i,j) de l’image G faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Si G(i,j) est un Pixel de bordure alors VL(i,j) = G(i,j) Sinon VL(i,j)= [som de (carré (G(m,n)-M(i,j))]/9; avec m= i-1:i+1; n=j-1:j+1;)
• 3ème étape : calcul de l’image variance V
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Pour chaque Pixel VL(i,j) de limage VL faire V (i,j) = 30*log10(1+sqrt(VL(i,j)))
Exemple numérique :
Afin de simuler l'algorithme, Il prennent G une matrice 3*3,
et ils obtiennent
Code : Sélectionner tout - Visualiser dans une fenêtre à part G=[200 230 0;150 90 97; 160 40 255]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 G(i,j) =90 ; M(i,j)= (200+230+0+150+90+97+160+40+255)/9 = 135 (on prend le nombre entier) VL(i,j)= [(200-135)²+ (230-135)²+ (0-135)²+ (150-135)²+ (90-135)²+ (97-135)²+ (160-135)²+ (40-135)²+ (255-135)²] /9 = 7557 = 58
Voici le programme que j'ai écris sous MATLAB
Ceci me donne le bon résultat pour M(i,j) mais pas la bonne variance pour L(i,j)=VL(2,2). Je ne trouve pas 7557.
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
27
28
29
30
31
32
33
34 clear clc close all G=[200 230 0;150 90 97;160 40 255] %Calcul de M, VL, V, moyenne, variance locale et variance de l'image G [L,C]=size(G); for i=1:L for j=1:C % traitement des pixels de bord de G if i==1 | i==L |j==1 | j==C M(i,j)=G(i,j) VL(i,j)=G(i,j) V(i,j)=30*log10(1+sqrt(VL(i,j))) else % traitement des autres pixels de G som1=0; som2=0; for k=i-1:i+1 for l=j-1:j+1 %pavet de 9 pixels som1=som1+ G(k,l) % calcul de la matrice de variance locale sur des pavets de 3*3 % pixel centré sur le pixel P(i,j) som2=som2+ (G(k,l)-M(i,j))^2 end end M(i,j)=floor(som1/9) VL(i,j)=floor(som2/9) V(i,j)=30*log10(1+sqrt(VL(i,j))) end %keyboard end end
Où est le problème? Je ne fais que recommencer la compilation mais vainement, voudriez vous me dire où est l’erreur dans mon code source MATLAB?
Mes remerciements
Partager