在点云(例如100个3D点)内找到由5个刚性,共面,非共线点定义的形状的最有效方法是什么?
答案 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