质心3d matlab

时间:2013-04-05 10:35:32

标签: matlab geometry computer-vision physics

我有一个稀疏的3d体积(立方体),在每个x,y位置我想创建一个半径为r的球体,中心位于x,y,z。对于每个球体,我想计算质心。

我的问题:

  1. 每个球体内的点不均匀分布,所以我的质量中心不是质心,我如何计算质心?我发现了许多不同的方式......

  2. 我需要在每size(x)*size(y)次计算一次,这可能非常大, 我可以像这样创建一个3d球体:

    w = ceil(r)*2+1;
    [x,y,z] = meshgrid(1:w,1:w,1:w);
    xc = floor(w./2)+1;
    yc = floor(w./2)+1;
    zc = floor(w./2)+1;   
    mask = (x-xc).^2 + (y-yc).^2 + (z-zc).^2 <= r.^2;
    mask = double(mask);
    
  3. 但是这会让我为每个点进行循环,并且会非常耗时。 谢谢 matlabit

1 个答案:

答案 0 :(得分:3)

查看K-means clustering的更新步骤,它会找到球体的质心。

要查找应该包含在该球体中的点,请计算球体的质心和每个点之间的euclidean distance并将其阈值计算。如果距离小于球体的半径,则包括它。

在你的x,y,z球体质心集上的三个深嵌套for循环中执行此操作,然后就完成了。