Bonjour

Je sais que ce sujet a déja plus ou moins été abordé mais mon cas a des nuances: il s'agit de calculer la distance euclidienne entre les pixels des régions voisines d'une image bitmap convertie en matrice. Ces régions sont représentées par des numéros (labels) de 1 a N (dans mon code N est désigné par la variable number). Donc ici il s'agira de déterminer la distance di, entre les pixels des régions 1 et 2, 2 et 3,..., number -1 et number. Pour chaque couple de régions je retiens la plus petite distance min(d), ce qui me permettra apres de regrouper les régions selon que leurs distances minimales soient plus ou moins grandes.

le code:


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
35
36
37
38
39
40
41
42
43
function proxym(filename);
img = imread(filename);
bw=(img);
bw=~bw;
[Labeling,number]=bwlabel(bw)
p = 0;
q = 0;
for Label_number = 1 : number   %number est le nombre de regions
    count= 1;
 
    %Scan de l’image de gauche a droite
    for x = 1 : 256
        for y = 1 : 256
 
            %lecture de la premiere region labelisée et extraction des coordonnées des  % pixels
            if (bw(x,y)==Label_number)
 
                Array_Label_number([x count])=x;
                Array_Label_number([y count])=y;
 
 
                % lecture de la region suivante
            else
 
                Array_Label_number([x count+1])=x;
                Array_Label_number([y count+1])=y;
 
                p = x;
                q = y;
 
            end
            count = count+1;
            d = distance(x,y,p,q);
        end
    end
 
    edismin = min(d);
    disp('Component:');
    disp(Label_number);
    disp(edismin);
    %
    %                  disp(count);
end
Je ne suis vraiment pas un expert en matlab, donc je demande votre indulgence si vous constatez de grossieres erreurs.

La fonction distance calcule la distance euclidienne entre 2 pixels en prenant comme parametres les coordonnées des pixels:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
function Dist = distance(m,n,o,p)
x1=m;
y1=n;
x2=o;
y2=p;
Dist=((x1-x2)^2+(y1-y2)^2)^0.5;
end
Merci de vos conseils et suggestions!