MATLAB: ¿Cómo derivar los vértices (coordenadas) de polígonos en el diagrama de Voronoi?

StackOverflow https://stackoverflow.com/questions/7819153

  •  26-10-2019
  •  | 
  •  

Pregunta

Tengo un archivo de función creado en la mano que es dibujar líneas en la imagen,[img]=drawline(point1,point2,color,img). Se usa para conectar dos puntos dentro de la imagen. Me piden que cree el diagrama de Voronoi en la imagen (no usando la función de la trama). Por el momento, estoy tratando de mostrar las líneas en la imagen, pero no sé cómo obtener los vértices de los bordes de polígono.

He estado usando algunos códigos de prueba:

x=[50 70 70 30 40 ];% this is just some simple values for testing, 
y=[50 30 90 30 80 ];% in further stage, i plan to use `x=rand(n,1)*200`.
img=zeros(200,200,3);
color=[255 0 0];
[vx,vy]=voronoi(x,y); 

Solo sé hasta arriba, a continuación creo que necesito usar for loop Para alinear los vértices hacia arriba. Simplemente no tengo idea de cómo comenzar. Y también estoy atrapado en cómo resolver los problemas negativos e infinitos, si necesito mostrarlos en imagen (coordenadas de píxeles).

¿Fue útil?

Solución

Suponiendo que tengas esto drawline función que dibuja líneas en las imágenes, así es como se reproduce sobre los bordes del diagrama de Voronoi de un conjunto de puntos:

%# set of points and voronoi diagram
X = rand(10,1)*200; Y = rand(10,1)*200;
[vx,vy] = voronoi(X,Y);

%# vertices connecting the edges
p1 = [vx(1,:);vy(1,:)];     % columns are "from" points
p2 = [vx(2,:);vy(2,:)];     % columns are "to" points

%# draw edges on top of image matrix
img = zeros(200,200,3);
clr = [255 0 0];
for i=1:size(vx,2)
    img = drawline(p1(:,i), p2(:,i), clr, img);
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top