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 : 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;)
• 2ème étape : calcul de l’image variance locale VL

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 l’image 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 : Sélectionner tout - Visualiser dans une fenêtre à part
G=[200 230 0;150 90 97; 160 40 255]
et ils obtiennent

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

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
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