Buscar puntos cercanos en diferentes ángulos
Publicado por Fabiola (1 intervención) el 16/08/2016 22:05:22
Hola
Tengo que encontrar los puntos mas cercanos a un punto central, pero en diferentes ángulos, un ejemplo de una imagen es la siguiente en donde desde el punto central busco los mas cercanos en cada angulo... Le doy las gracias de antemano..
Imágenes integradas 1
Es decir,
Imágenes integradas 2
Deberían quedar solo los puntos que encierro en rojo
Imágenes integradas 3
El código que he escrito es el siguiente
Tengo que encontrar los puntos mas cercanos a un punto central, pero en diferentes ángulos, un ejemplo de una imagen es la siguiente en donde desde el punto central busco los mas cercanos en cada angulo... Le doy las gracias de antemano..
Imágenes integradas 1
Es decir,
Imágenes integradas 2
Deberían quedar solo los puntos que encierro en rojo
Imágenes integradas 3
El código que he escrito es el siguiente
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
%% Encontrar los puntos mas cercanos
%clear all, close all, clc
% Puntos=imread('F:\2016\Balmart\Ensayos Gabr\Uva de mesa\Puntos.jpg');
Puntos=imread('F:\2016\Balmart\Ensayos Gabr\Uva de mesa\Puntos2.jpg');
figure, imshow(Puntos)
IBW=im2bw(Puntos);
figure, imshow(IBW)
% [x y]=find(IBW==0)
s = regionprops(~IBW,'centroid');
centroids = cat(1, s.Centroid);
CY=round(centroids(:,1)');
CX=round(centroids(:,2)');
figure, imshow(Puntos)
hold on
plot(CY,CX,'r+')
Xc=CX(3);
Yc=CY(3);
plot(Yc,Xc,'b+')
CX(3)=[];
CY(3)=[];
a=length(CY);
Radio=510;
% for i=-pi:pi/2:pi;
% [c d]=find
%
for i=1:a,
dist(i)=sqrt((Xc-CX(i))^2+(Yc-CY(i))^2);
end
MENOR= min(dist);
PUNTO=find(dist == MENOR);
plot(CY(PUNTO), CX(PUNTO), 'g*')
for i=0:22.5:22.5*17
plot([Yc Yc+Radio*sind(i)], [Xc Xc+Radio*cosd(i)])
end
IBW2=~IBW;
figure, imshow(IBW2)
hold on
plot(CY,CX,'r*')
plot(Yc,Xc,'b+')
figure, imshow(IBW2)
hold on
Radio=280;
NRectas= 15;
Angulo = 22.5;
for i=0:Angulo:NRectas*Angulo,
plot([Yc Yc+Radio*sind(i)], [Xc Xc+Radio*cosd(i)])
%[Xi, Yi]=find(IBW2(Yc:Yc+Radio*sind(i), Xc:Xc+Radio*cosd(i))==1);
[e,f] = find(IBW2(Yc:Yc+Radio*sind(i),Xc:Xc+Radio*cosd(i)), 1,'first') % AQUÍ ESTA MI PROBLEMA
end
[c,d] = find(IBW2, 1, 'first') %% encuentra el primer 1 en la matriz IBW2
[g,h] = find(IBW2, 1, 'last')
figure, imshow(IBW2)
hold on
plot(d,c,'*r') % punto mas cercano
plot(h,g,'*r') % punto mas lejano
Valora esta pregunta
0