MATLAB: Как вывести вершины (координаты) многоугольников на диаграмме Voronoi?

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

  •  26-10-2019
  •  | 
  •  

Вопрос

У меня есть созданный функциональный файл в руке, который нарисует линии в изображении,[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 Чтобы выровнять вершины. Просто не знаю, как начать. И я также застрял в том, как решить негативные и бесконечные проблемы, если мне нужно отобразить их на изображении (координаты пикселей).

Это было полезно?

Решение

Предполагая, что у вас есть это 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top