【问题标题】:Linear Least Squares Fit of Sphere to Points球体到点的线性最小二乘拟合
【发布时间】:2012-04-27 02:45:46
【问题描述】:

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

也就是说,我要最小化

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

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

【问题讨论】:

    标签: algorithm 3d least-squares


    【解决方案1】:

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

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

    【讨论】:

    • 您可能想改用sum[i=0..n]( |P_i - C|^2 - r^2 )^2 之类的东西,这样您的衍生产品就会正常运行。而且,由于您的问题在任何情况下都是非线性的,因此您可能会遇到某种形式的迭代。
    【解决方案2】:

    您可能会发现以下参考资料很有趣,但我会警告您 你需要对几何代数有一定的了解—— 特别是保形几何代数来理解 数学。但是,该算法很容易实现 标准线性代数技术,不是迭代的。

    需要注意的是,该算法至少与所展示的一样适合中心和 半径,您也许可以想出一种方法来限制拟合,从而限制半径。

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

    您可以从 Leo Dorst's researchgate page

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

    【讨论】:

      【解决方案3】:

      制作矩阵方程的简短描述可以找到here

      我看到 WildMagic 库使用 iterative method(至少在版本 4 中)

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          我会按照以下方式进行:

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

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

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

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

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

          【讨论】:

            【解决方案6】:

            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-向量。

            【讨论】:

              猜你喜欢
              • 2012-08-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-03-05
              • 1970-01-01
              • 2017-02-24
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多