我正在尝试自动检测 3d 点云上的旋转轴。
换句话说,如果我取一个小的 3d 点云,选择一个单一的旋转轴,并以不同的旋转角度制作多个点的副本,那么我会得到一个更大的点云。
我的算法的输入是较大的点云,所需的输出是单对称轴。最终我将计算相互旋转的点之间的对应关系。
较大点云的大小约为 100K 点,旋转副本的数量未知。
在我的例子中,旋转角度有恒定的增量,但不一定跨越 360 度。例如,我可能有 0、20、40、60。或者我可能有 0、90、180、270。但我不会有 0、13、78、212(或者如果我有,我不在乎来检测它)。
这似乎是一个计算机视觉问题,但我无法弄清楚如何精确找到轴。输入通常非常干净,接近浮点精度。
我没有旋转/复制以制作更大点云的原始较小点云。我知道数据是合成的,噪音很小(通常是另一个程序的输出)。
我们不能轻易地计算较小云中可能的点数,因为不幸的是,这些点不会沿着轴重复。如果我们知道哪些点在轴上,那么我们可以想出可能的因素,但是我们已经解决了这个问题。
--
谢谢大家的建议。看起来我的最终算法将尝试使用 k-nn 度量提出匹配点的派系。每个派系都会给出一个轴。然后,我可以使用 RANSAC 将轴拟合到所有派系的结果。