我有一个图像,我想生成它的voronoi图 在MATLAB中V = {V_1,V_2,...,V_N}并将图像的角点作为种子点,V_i是像素集。我使用
[v,C] = voronoin(corners);
我知道C是vooronoi单元格,但这些单元格是否包含像素的位置?
答案 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,:)
。