我有一个点云,并希望在我的代码中检测到某些点模式的出现。
假设我在3d空间中有1000个点,并且我想要检测形成“L”形状的3个点的所有实例,其中L的每个段具有特定长度。点云可能没有完全匹配,但可能非常接近(即在点云中,“L”段的长度可能比理想值略长/短)
我最初的想法是这样的:
问题是这种方法的运行时间最糟糕。理想情况下,我希望有一些数据结构来加速我的查询'查找距离给定点之间的distanceMin和distanceMax之间的所有点。有人能指出一些可能有用的有用数据结构。
我正在考虑将所有点放在八叉树中以加快访问时间。
关于如何改善运行时间的其他建议?启发式的启发式方法?
注意:我想要找到的形状是可变的。他们不会总是'L'。我尝试查看霍夫变换,但它们似乎只对检测特定的预定形状(如线/圆)很有用。
答案 0 :(得分:1)
在PCL库中有 Sample consensus 模块,直接引用文档:
拥有像RANSAC这样的SAmple Consensus(SAC)方法以及平面和圆柱等模型。这些可以自由组合,以便在点云中检测特定模型及其参数。
也许您可以创建一些组合这些基元的形状并在云中搜索它们。