Voronoi图:MATLAB中[v,C] = voronoin(X)的输出是什么?

时间:2017-07-12 06:52:32

标签: matlab voronoi

我有一个图像,我想生成它的voronoi图 在MATLAB中V = {V_1,V_2,...,V_N}并将图像的角点作为种子点,V_i是像素集。我使用

[v,C] = voronoin(corners);

我知道C是vooronoi单元格,但这些单元格是否包含像素的位置?

1 个答案:

答案 0 :(得分:0)

documentation中所述:

  

V是n维空间中numv Voronoi顶点的numv-by-n数组,每行对应于Voronoi顶点。 C是一个矢量单元数组,其中每个元素包含相应Voronoi单元顶点的V索引。

这意味着C是基于V中的顶点创建的,并且提到了每个单元格的顶点id。

例如:

X = [0.5 0; 0 0.5; -0.5 -0.5; -0.2 -0.1; -0.1 0.1; 0.1 -0.1; 0.1 0.1]

X = 

     0.5000         0
     0    0.5000
    -0.5000   -0.5000
    -0.2000   -0.1000
    -0.1000    0.1000
     0.1000   -0.1000
     0.1000    0.1000

计算voronoi单元格:

[V,C] = voronoin(X)

 V = 

   Inf       Inf
 0.7000   -1.6500
-0.0500   -0.0500
-0.0500   -0.5250
-1.4500    0.6500
-1.7500    0.7500
      0    0.2875
 0.3833    0.3833
 0.2875         0
      0         0

C = 7×1 cell array
[1×4 double]
[1×5 double]
[1×4 double]
[1×4 double]
[1×4 double]
[1×5 double]
[1×4 double]

使用for循环显示单元格数组C的内容。

for i = 1:length(C)
    disp(C{i});
end

 9     2     1     8
 8     1     6     5     7
 6     1     2     4
 6     4     3     5
10     3     5     7
10     3     4     2     9
10     7     8     9

其中一个单元格为9 2 1 8。这意味着该单元格的顶点分别为V(9,:), V(2,:), V(1,:), V(8,:)