programmation matlab (boucles et sélection)
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
Code:
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;) |
• 2ème étape : calcul de l’image variance locale VL
Pour chaque Pixel G(i,j) de l’image G faire
Code:
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:
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,
Code:
G=[200 230 0;150 90 97; 160 40 255]
et ils obtiennent
Code:
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
Code:
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 |
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.
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