我正在寻找一种算法来找到点云和球体之间的最佳拟合。
也就是说,我想最小化
formula http://img855.imageshack.us/img855/6033/codecogseqn.gif
其中 C 是球体的中心, r 是它的半径,而每个 P 是我 n的一组中的一个点点。变量显然是 Cx , Cy , Cz 和 r 。 在我的情况下,我可以事先获得一个已知的 r ,只留下 C 的组件作为变量。
我真的不想使用任何类型的迭代最小化(例如牛顿方法,Levenberg-Marquardt等) - 我更喜欢一组线性方程或明确使用SVD的解决方案。
答案 0 :(得分:3)
没有即将出现的矩阵方程式。你选择的E表现得很糟糕;它的偏导数甚至不连续,更不用说是线性的。即使有不同的目标,这个优化问题似乎从根本上是非凸的;在一个点P和一个非零半径r的情况下,最优解的集合是关于P的球体。
你应该重新考虑具有更多优化知识的交易所。
答案 1 :(得分:0)
可以找到制作矩阵方程的简短描述here。
我看到WildMagic Library使用iterative method(至少在版本4中)
答案 2 :(得分:0)
The linked thesis contains a problem : it doesn't handle noise properly and overestimates the radius. (Centre is OK). It looks like it should be possible to come up with a correction based upon the estimate of the applied noise.
答案 3 :(得分:0)
您可能对最适合的d维球体感兴趣,即,使到中心的平方距离的总体方差最小;它有一个简单的分析解决方案(矩阵演算):请参阅Cerisier等人的开放获取论文的附录。在J.Comput。生物学24(11),1134-1137(2017),https://doi.org/10.1089/cmb.2017.0061 在对数据点进行加权时有效(甚至对于连续分布也有效;作为副产品,当d = 1时,将检索到众所周知的不等式:峰度始终大于平方偏斜加1)。>
答案 4 :(得分:0)
很难做到这一点而无需迭代。
我将进行如下操作:
通过平均所有点的(X,Y,Z)坐标来找到整体中点
得到的结果,找到到中点的平均距离Ravg,确定或继续。.
从您的集合中删除点,使其与步骤2中找到的Ravg的距离太远
返回第1步(再次取平均分,得出更好的中点)
当然,这需要(2)和(4)的某些条件,具体取决于点云的质量!
答案 5 :(得分:0)
您可能会发现以下参考资料很有趣,但我会警告您 你需要对几何代数有一定的了解 - 特别是共形几何代数来理解 数学。但是,该算法很容易实现 标准的线性代数技术,不是迭代的。
一个警告,该算法,至少在所呈现的同时适合中心和 半径,您也许可以找到一种方法来约束拟合,从而约束半径。
使用 n-D 欧几里得空间中 k 球体的总最小二乘拟合 (n+2)-D 等距表示。 L Dorst, Journal of Mathematical Imaging and Vision, 2014 p1-21
您可以从 Here is a video from Kevin Powell that shows how to do it.
最后一件事,我和作者没有关系。