Ordenar un vector de centroides
Publicado por Guillermo (12 intervenciones) el 28/03/2017 08:19:49
mi duda es que en la imagen de arriba necesito sacar los centroides y después necesito que se grafique en orden de arriba hacia abajo de izquierda a derecha entonces aplico operaciones morfológicas y saco los centroides hasta ahí todo bien
Mi duda es como ordeno ese vector ya que lo intente por el método burbuja sin resultados favorables y también intente sacar las "x" y las "y" con un resultado todavía más catastrófico si alguien me pudiera ayudar a ordenar los centroides seria genial y se lo agradezco de antemano
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
%%
[nombre, dire]=uigetfile({'*.jpg;*.bmp;*;*.tiff','Imágenes';...
'*.jpg','JPEG (*.jpg)';'*.bmp', 'BITMAP (*.bmp)';}...
,'selecciona imagen','C:\Users\Roguegear\Documents\Escuela\Cuatrimestre 10\Vision');
imcal1=imread( fullfile(dire,nombre));
figure
imshow(imcal1)
assignin('base','imcal1',imcal1);
%%
k=1;
for i=0:5:100
for j=0:5:100
a(k,1)=i;
a(k,2)=j;
a(k,3)=0;
k=k+1;
end
end
%%
img_g=rgb2gray(imcal1);
figure
imshow(img_g);
thresh= graythresh(img_g);
BW=im2bw(img_g,0.5);
figure
imshow(BW)
BW=not(BW);
%BW=BW.*(masc)
figure
imshow(BW)
%%
%Obteniendo centroides
BW=bwareaopen(BW,10);
h=ones(2,2);
BW=imerode(BW,h);
figure
imshow(BW)
centroides=regionprops(BW,'centroid');
kk=size(centroides);
centroideso=centroides;
%%
%Ordenando centroides
field ='Centroid';
for k=1:kk(1)
cen=centroideso(k).Centroid;
try
valuex=[valuex;cen(1)];
valuey=[valuey;cen(2)];
valueh=[valueh;sqrt(((cen(1))^2)+((cen(2))^2)) k];
catch
valuex=cen(1);
valuey=cen(2);
valueh=[sqrt(((cen(1))^2)+((cen(2))^2)) k];
end
end
%Ordenar H
n=kk(1);
svc=length(valueh);
for p=1:svc
ae1=valueh(p,1);
ae2=valueh(p,2);
valuec(p,1)={[ae1 ae2]};
end
centroideso=struct(field,valuec);
for i=1:n
for j=1:n-i
ceno=valuec(j);
cena=valuec(j+1);
ceno=ceno(1);
cena=cena(1);
if ceno>cena
aux=valuec(j);
valuec(j)=valuec(j+1);
valuec(j+1)=aux;
end
end
end
% valuef=cat(2,valuex,valuey);
% svc=length(valuef);
% for p=1:svc
% ae1=valuef(p,1);
% ae2=valuef(p,2);
% valuec(p,1)={[ae1 ae2]};
% end
% centroideso=struct(field,valuec);
%%
%Dibujando centroides origen superior izquierdo
figure
imshow(BW)
hold on
for k=1:kk(1)
cen=centroideso(k).Centroid;
plot(cen(1),cen(2),'.r','LineWidth',2);
pause(0.5);
hold on
end
hold off
- Vision.rar(76,5 KB)
Valora esta pregunta
0