1

我手头有一个创建的函数文件,用于在图像中画线,[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来排列顶点。只是不知道如何开始。如果我需要在图像(像素坐标)中显示它们,我也被困在如何解决负面和无限问题上。

4

1 回答 1

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
于 2011-10-19T10:21:52.177 回答