-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSegmentarPX.m
76 lines (76 loc) · 2.57 KB
/
SegmentarPX.m
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
function [X0,ObjActuPX]=SegmentarPX(X0,ObjActu)
pos=0;
n=size(X0,1);
while size(ObjActu,1)>pos
pos=pos+1;
jv=ObjActu(pos,1);
iv=ObjActu(pos,2);
X0(jv,iv)=0;
izq=iv>1;
der=iv<n;
arr=jv>1;
abj=jv<n;
%Vecindad 8
% ver=zeros(1,8);
% for pixs=1:size(ObjActu,1) %Ver si ya existe el pixel en la lista
% ver(1)=ver(1)+(mean(ObjActu(pixs,:)==[jv,iv-1])==1).*1.0; %iz
% ver(2)=ver(1)+(mean(ObjActu(pixs,:)==[jv-1,iv-1])==1).*1.0;%iz ar
% ver(3)=ver(1)+(mean(ObjActu(pixs,:)==[jv-1,iv])==1).*1.0;%ar
% ver(4)=ver(1)+(mean(ObjActu(pixs,:)==[jv-1,iv+1])==1).*1.0;%de ar
% ver(5)=ver(1)+(mean(ObjActu(pixs,:)==[jv,iv+1])==1).*1.0;%de
% ver(6)=ver(1)+(mean(ObjActu(pixs,:)==[jv+1,iv+1])==1).*1.0;%de ab
% ver(7)=ver(1)+(mean(ObjActu(pixs,:)==[jv+1,iv])==1).*1.0;%ab
% ver(8)=ver(1)+(mean(ObjActu(pixs,:)==[jv+1,iv-1])==1).*1.0;%iz ab
% end
if izq %izquierda
if X0(jv,iv-1)==1
ObjActu=[ObjActu;[jv,iv-1]];
X0(jv,iv-1)=0;
end
end
if izq&arr %izquierda arriba
if X0(jv-1,iv-1)==1
ObjActu=[ObjActu;[jv-1,iv-1]];
X0(jv-1,iv-1)=0;
end
end
if arr %arriba
if X0(jv-1,iv)==1
ObjActu=[ObjActu;[jv-1,iv]];
X0(jv-1,iv)=0;
end
end
if arr&der %derecha arriba
if X0(jv-1,iv+1)==1
ObjActu=[ObjActu;[jv-1,iv+1]];
X0(jv-1,iv+1)=0;
end
end
if der %derecha
if X0(jv,iv+1)==1
ObjActu=[ObjActu;[jv,iv+1]];
X0(jv,iv+1)=0;
end
end
if der&abj %derecha abajo
if X0(jv+1,iv+1)==1
ObjActu=[ObjActu;[jv+1,iv+1]];
X0(jv+1,iv+1)=0;
end
end
if abj %abajo
if X0(jv+1,iv)==1
ObjActu=[ObjActu;[jv+1,iv]];
X0(jv+1,iv)=0;
end
end
if izq&abj %izquierda abajo
if X0(jv+1,iv-1)==1
ObjActu=[ObjActu;[jv+1,iv-1]];
X0(jv+1,iv-1)=0;
end
end
%fin vecindad 8
end
ObjActuPX=ObjActu;
end