如何从空间中的一组点中找到最接近/最近平面的最佳算法/论文?

3

针对点云,如何找到最接近的平面,既要精确又要快速?

我搜索了最近的平面,但没有找到相关信息。

我想用这个方法将它们捕捉到该平面上。


你可以从构建一个类似于这里的线开始:http://en.wikipedia.org/wiki/Linear_regression,它是你目标的二维对应物。 - BlackBear
你是指“主要”平面之一(XY、XZ、YZ,分别带有一些Z、Y或X偏移量),还是确定由点集最接近描述的平面? - user1207456
@DavidEllis:后者。 - Joan Venge
2个回答

4
最小二乘回归可能是我猜测的。它将为您提供系数,以使平面在所有点上最小化均方误差。
你不是第一个: 3D 最小二乘平面

你知道针对这个问题的任何具体示例或我可以修改并使用的示例吗?我听说过最小二乘法,但以前从未使用过。 - Joan Venge

1

我认为你也可以使用主成分分析来完成这个任务:

计算你的点的平均值:

C = (0,0,0);
for each point Ri in your dataset,
  { C += Ri; }
C = C * 1.0 / npoints;

计算您的数据点的协方差矩阵:

A = zeros(3,3);
for each point Ri in your dataset,
  {
  D = Ri - C;
  A += D*D';  // outer product
  }

计算A的逆矩阵,A_inv:

  A_inv = inv(A)

通过反复应用A_inv到一个随机初始向量来执行幂迭代:

  N = random vector.
  for i=1:20 (or so)
    {
    N = A_inv*N;
    N = normalize(N);
    }

从原点到你的平面的偏移量为k = dot(N,C)。描述你的平面的方程是所有满足k = dot(N,R)的点R。


谢谢,我不确定如何计算这两个主向量。你有任何例子吗? - Joan Venge
根据duffymo链接的另一个帖子中的答案,通过反向迭代直接找到N比计算P1、P2再寻求其正交补更有意义。我认为只要您有三个非共线点,A就保证是对称正定的(因此可逆)。 - rchilton
是的,这样更有意义。我很难看出这个解决方案为什么更好。计算完整的逆矩阵似乎不是一个好主意 - 很可能会被舍入误差淹没。 - duffymo
只有一个评论,你真正想要找到/测量的是A的奇异性。如果A是奇异的,则其零空间是所寻平面的法向量;如果它接近奇异,则其最小主特征值/奇异向量是所寻平面的法向量。PCA/SVD明确分离/正交化这些空间的事实是(在我看来)一件好事。 - rchilton
A确实是3x3的。有4个未知数,但我们只使用PCA计算正常的(x,y,z)。第四个未知数(与原点的偏移量)是后处理的。另外,太晚编辑了 - 那个“A可逆当且仅当它是由3个非共线点构建而成”的评论应该改为“4个非共面点”。 - rchilton
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接