Matlab - Buscar puntos cercanos en diferentes ángulos

 
Vista:
sin imagen de perfil

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


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

Puntos
Captura
Captura2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder