Bonjour
voila je vous explique un peu ce que je veut faire !!
en fait j'ai une image binaire que je veut décomposer en bloc de telle sorte que les blocs soient uniformes c a d il ont les même coordonnées en abscisse
un bloc se caractérise par ses coins sup gauche et inf droit (x1 y1,x2 y2)
moi je veux une structure qui contient tous les blocs enfin leur coordonnées seulement parce que le contenu c'est des "1" alors pas d'importance quand je veux faire des traitements!
Alors j'ai écrit un algo mais j'ai des problème en ce qui concerne le premier élément de mon cell array voici l'algo bien expliqué avec la première erreur générée.
pour l'erreur :
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
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
j'espère que c'est clair !>> IBR(im)
??? Undefined function or variable "p".
Error in ==> IBR at 25
if(x1==b{p(j)}(1) && x2==b{p(j)}(2)) %%verification
Partager