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