Matlab:如何在voronoi图中导出多边形的顶点(坐标)?

时间:2011-10-19 09:26:16

标签: image matlab voronoi

我手头有一个创建的函数文件,用于在图像中绘制线条[img]=drawline(point1,point2,color,img)。它用于连接图像内的任意两个点。我被要求在图像中创建voronoi图(不使用绘图函数)。目前,我正试图在图像中显示线条,但我不知道如何获得多边形边缘的顶点。

我一直在使用一些测试代码:

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

我只知道直到上面,接下来我想我需要使用for loop来排列顶点。我不知道如何开始。如果我需要在图像中显示它们(像素坐标),我也会陷入如何解决负面和无限问题。

1 个答案:

答案 0 :(得分:2)

假设你有这个drawline函数在图像中绘制线条,这就是你在一组点的Voronoi图的边缘上循环的方法:

%# 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