9

我正在寻找一种算法来找到点云和球体之间的最佳拟合。

也就是说,我想最小化

公式

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

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

4

6 回答 6

2

没有即将出现的矩阵方程。您选择的 E 表现不佳;它的偏导数甚至不是连续的,更不用说线性了。即使有不同的目标,这个优化问题似乎基本上是非凸的。具有一个点 P 和非零半径 r,最优解集是关于 P 的球体。

您可能应该重新询问更多优化知识的交流。

于 2012-04-27T12:26:09.477 回答
1

您可能会发现以下参考资料很有趣,但我会警告您,您需要熟悉几何代数 - 特别是保形几何代数才能理解数学。但是,该算法可以直接使用标准线性代数技术实现,并且不是迭代的。

需要注意的是,该算法至少符合中心和半径,您可以找到一种方法来约束拟合,从而限制半径。

使用 (n+ 2)-D 等距表示法对 nD 欧几里得空间中的 k 球体进行总最小二乘拟合。L Dorst,数学成像与视觉杂志,2014 p1-21

您可以从 Leo Dorst 的 researchgate 页面获取一份副本

最后一件事,我和作者没有任何关系。

于 2021-01-18T15:44:17.303 回答
0

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

我已经看到 WildMagic 库使用迭代方法(至少在版本 4 中)

于 2012-04-27T04:40:15.837 回答
0

没有迭代很难做到这一点。

我将按如下方式进行:

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

  2. 有了这个结果,找到到中点的平均距离 Ravg,决定好还是继续..

  3. 从您的集合中删除距离步骤 2 中发现的 Ravg 太远的点

  4. 返回第 1 步(再次平均点,产生更好的中点)

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

于 2020-09-14T13:39:59.610 回答
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,由 M 个维度为 N 的点组成(这里 N=3):

r, c = skg.nsphere_fit(p)

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

于 2022-01-07T02:36:25.123 回答
0

您可能对最适合的 d 维球体感兴趣,即最小化到中心的平方距离的总体方差;它有一个简单的解析解(矩阵微积分):参见 Cerisier 等人的开放获取论文的附录。在 J. 计算机。生物学。24(11), 1134-1137 (2017), https://doi.org/10.1089/cmb.2017.0061 它在数据点被加权时起作用(它甚至适用于连续分布;作为副产品,当 d= 1,检索一个众所周知的不等式:峰度总是大于平方偏度加 1)。

于 2020-09-14T12:08:39.877 回答