在3D点云中查找简单形状

时间:2013-06-19 13:37:03

标签: algorithm graph 3d point

在点云(例如100个3D点)内找到由5个刚性,共面,非共线点定义的形状的最有效方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用距离在相关变换(旋转,移位等)下不变的事实。所以匹配距离是个好主意。试试这个:

首先,创建一个包含3d云的所有成对距离的数据结构。这是100x100所以它不是太糟糕。

现在,开始匹配距离:对于2d集中的每个点,查看3d集中是否存在匹配距离。保持匹配距离的图表并慢慢扩展它。

你看到如何将其变成算法吗?使用正确的数据结构,这可能是合理的。

答案 1 :(得分:0)

蛮力方法

在伪代码中:

Find all possible three point tuples from your set of points.
Every three-tuple now defines a plane.
For all planes:
   filter the set of points for points that lie in the plane
   if you have five or more points remaining, return the first five and exit  
return NOT_FOUND and exit

请注意,此方法的复杂性为因子,表示 O(n!)

例如,对于一百个积分,你将需要进行约1700万个共面性检查,而对于一千个点,则需要进行约1700亿次共面性检查。

答案 2 :(得分:-1)

您可以选择5个点并找到一个形状。 100C5会做到这一点。现在,如何有效地计算组合,您可以找到它的算法。可以使用示例实现here