用最小二乘法将球拟合到点的线性拟合

9
我是一位有用的助手,可以为您翻译文本。
我正在寻找一种算法来找到点云和球之间最佳匹配。也就是说,我想要最小化:

formula

其中C是球的中心,r是它的半径,每个P是我一组n个点中的一个点。变量显然是CxCyCzr在我的情况下,我可以事先获得已知的r,只留下C的分量作为变量。

我真的不想使用任何迭代最小化方法(例如牛顿法、Levenberg-Marquardt等)——我更喜欢一组线性方程或明确使用SVD的解决方案。

6个回答

2

暂时没有矩阵方程需要提供。您选择的E表现不佳;它的偏导数甚至不连续,更别说是线性的了。即使有了不同的目标,这个优化问题似乎基本上是非凸的;对于一个点P和一个非零半径r,最优解集合是以P为球心的球体。

您可能应该在更具有优化知识的交流平台上重新提问。


你可能想要使用类似于sum [i = 0..n](| P_i- C | ^ 2 - r ^ 2)^ 2这样的东西,这样你的导数就能够适当地处理。而且,因为你的问题在任何情况下都是非线性的,所以你可能被迫使用某种形式的迭代。 - comingstorm

1
您可能会觉得以下参考资料很有趣,但我要提醒您需要对几何代数 - 特别是共形几何代数有一定的了解才能理解其中的数学内容。然而,该算法使用标准线性代数技术很容易实现,并且不需要迭代。一个注意点是,该算法至少适用于中心和半径,您可以想办法约束拟合使半径受到限制。《欧几里得空间中k-球的全最小二乘拟合:使用(n+2)-D等距表示》L Dorst,数学成像与视觉杂志,2014年1-21页。您可以从Leo Dorst的researchgate页面获取副本。最后,我与作者无关。

0

制作矩阵方程的简短说明可以在这里找到。

我注意到WildMagic库(至少在版本4中)使用迭代法


0
您可能对最佳拟合d维球感兴趣,即最小化到中心的平方距离的总体方差;它有一个简单的解析解(矩阵微积分):请参见Cerisier等人在J. Comput. Biol. 24(11), 1134-1137 (2017)的开放获取论文附录,https://doi.org/10.1089/cmb.2017.0061。当数据点被加权时,它可以工作(即使对于连续分布也可以工作;作为副产品,当d=1时,可以得到一个众所周知的不等式:峰度始终大于平方偏度加1)。

0

没有循环很难做到这一点。

我会按照以下步骤进行:

  1. 通过对所有点的(X,Y,Z)坐标求平均值找到整体中心点

  2. 通过该结果找到距离中心点的平均距离Ravg,决定是否继续操作

  3. 从距离步骤2中找到的Ravg太远的点中删除点

  4. 返回步骤1(再次平均点,得到更好的中心点)

当然,这将需要一些关于(2)和(4)的条件,这取决于您点云的质量!


0

Ian Coope提出了一种有趣的算法,他使用变量的改变来线性化问题。拟合非常强健,虽然它略微重新定义了最优条件,但我发现它通常在处理嘈杂数据时视觉效果更好。

Coope的论文预印本可在此处获得:https://ir.canterbury.ac.nz/bitstream/handle/10092/11104/coope_report_no69_1992.pdf

我发现这个算法非常有用,所以我在scikit-guess中实现了skg.nsphere_fit。假设您有一个(m, n)数组p,由N维(这里N=3)的M个点组成:

r, c = skg.nsphere_fit(p)

半径r是一个标量,c是包含中心的n向量。


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