Domanda

Ho un file funzione creata in mano che è quello di disegnare linee nell'immagine, [img]=drawline(point1,point2,color,img). E 'utilizzato per collegare due punti che sono dentro l'immagine. Mi viene chiesto di creare il diagramma di Voronoi nell'immagine (non si utilizza la funzione plot). Per il momento, sto cercando di mostrare le linee di immagine, ma non so come ottenere i vertici dei bordi dei poligoni.

Ho usato alcuni codici di prova:

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); 

So solo fino al di sopra, il prossimo penso che ho bisogno di usare for loop per allineare i vertici in su. proprio idea di come start.And sto anche bloccato in come risolvere il negativo e le questioni infinite, se ho bisogno di visualizzarli in immagine (pixel coordinate).

È stato utile?

Soluzione

Supponendo di avere questa funzione drawline che disegna le linee nelle immagini, questo è il modo per ciclo oltre i bordi del diagramma di Voronoi di un insieme di punti:

%# 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top