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 44 45 46 47 48 49 50
| function [b] = IBR(im)
k=1; %%indice du tableau cell contenant les info des bloc ajouté
kp=1; %% indice du vecteur contenant les indice des bloc ajouter
%%precedement
[M N]=size(im);
for y=1:N
kc=1; %% indice du vercteur contenant les indice des blocs en cours de %%traitement
x=1;
while (x<=M)
while (im(x,y)==0 && x<M)
x=x+1;
end %%ajout blocs a b{} qui est vide initialement
if (x<=M) %%detection de l'objet et initialisation du 1er repére (x1)
x1=x;
end
while (im(x,y)==1) %% parcourir l'objet
x=x+1;
end
if (x<=M) %%detection de la fin de l'objet
x2=x-1; %%2éme repére (x2)
trouv=true; %%objet trouver pour dire que la ligne contien des '1'
end
if (trouv)
connect=false;
%%si objet trouver vérifier si il ne correspond pas
%%a des bloc ajouter precedement ie: avec les méme x1 et x2
for j=1:kp
if(x1==b{p(j)}(1) && x2==b{p(j)}(2)) %%verification
C(kc)=p(j); b{p(j)}(4)=y;
connect=true; %%si il ya correspondance alors
end %%on le connect avec le bloc qui lui correspond
end
if (connect==false)
%%pas de correspondance alors on crée un nouveau bloc
b{k}(1)=x1; b{k}(2)=x2;
b{k}(3)=y; b{k}(4)= y;
C(kc)=k; k=k+1; %%incrementé l'indice de nombre de blocs ajouter
end
kc=kc+1;
end
for i=1:k-1
p(i)=C(i);
kp=kc; %%indice de blocs precedent est incrementé
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end |