是否存在一种算法,用于查找具有最小半径的圆形圆柱以获得3D云点?我知道解决了最小封闭圆的2D情况(例如这个线程在Python中最小的封闭圆圈,代码中有错误),但有没有3D的工作方法?
编辑1:OBB.下面是弧形云点的示例.这个工具找到了最小的圈圈https://www.nayuki.io/page/smallest-enclosing-circle
圆由三个点定义,其中两个几乎位于直径上,因此很容易估计中心轴的位置."拳击"点将产生一个明显偏离真正中心的盒子中心.
我的结论是,OBB方法并不普遍.
EDIT2:PCA.下面是紧密点云对比的PCA分析示例.点云与异常值.对于紧密点云,PCA令人满意地预测气缸方向.但是,如果存在少量的异常值,与主云相比,PCA基本上会忽略它们,产生的矢量距离封闭圆柱体的真实轴线很远.在下面的示例中,封闭圆柱体的真实几何轴以黑色显示.
我的结论是,PCA方法并不普遍.
EDIT3:OBB与PCA和OLS.一个主要区别 - OBB仅依赖于几何形状,而PCA和OLS依赖于总点数,包括那些不影响形状的中间点.为了使它们更有效,可以包括数据准备步骤.首先,找到凸壳.其次,排除所有内部要点.然后,沿着船体的点可以不均匀地分布.我建议删除所有这些,只留下多边形船体,并用网格覆盖它,其中节点将是新点.将PCA或OLS应用于这个新的点云应该可以更准确地估计气缸轴.
如果OBB提供尽可能平行于封闭圆柱轴的轴,则所有这些都是不必要的.
EDIT4:已发布的方法.@meowgoesthedog:Michel Petitjean撰写的论文("关于最小封闭圆柱问题的代数解决方案")可能有所帮助,但我没有足够资格将其转换为工作程序.作者自己也做到了(这里的模块CYL http://petitjeanmichel.free.fr/itoweb.petitjean.freeware.html).但根据论文中的结论,他说:" 现在的软件,名为CYL,可以在http://petitjeanmichel.free.fr/itoweb.petitjean.freeware.html免费下载,并没有声称提供最好的实现这些方法也没有声称比其他气缸计算软件更好地工作. "论文中的其他短语也给人留下了印象,它是一种实验方法,未经过彻底验证.无论如何,我会尝试使用它.
@Ripi2:Timothy M. Chan撰写的这篇论文对我来说也有点复杂.我不是数学水平的专家,能够转换为工具.
@ Helium_1s2:可能,这是一个很好的建议,然而,与上面的两篇论文相比,它的细节要少得多.此外,未经验证.
EDIT5:回复用户1717828.两个最远点与圆柱轴.一个反例 - 立方体形状的8个点,适合圆柱体.两点之间的最大距离 - 绿色对角线.显然不与气缸轴线平行.
Ripi2的"中间点"方法:它仅适用于2D.在3D情况下,圆柱轴可以不与任何两个点之间的单个段相交.