我有一个物体的点云,用激光扫描仪获得,以及该物体的CAD表面模型。
如何将点云与曲面相匹配,以获得云与模型之间的平移和旋转?
我想我可以对表面进行采样并尝试使用Iterative Closest Point(ICP)算法将生成的采样点云与扫描仪点云进行匹配。
这实际上有用吗?
这项任务有更好的算法吗?
答案 0 :(得分:6)
在新的OpenCV中,我实现了一个表面匹配模块,以将3D模型与3D场景相匹配。无需初始姿势,检测过程完全自动化。该模型还涉及ICP。
要想一想,请在此处查看视频(虽然它不是由OpenCV中的实现生成的):
https://www.youtube.com/watch?v=uFnqLFznuZU
您提到需要对CAD模型进行采样。这是正确的,我们给出了一个适合点对特征匹配的采样算法,例如在OpenCV中实现的算法:
Birdal,Tolga和Slobodan Ilic。 用于不规则几何的3D匹配的点采样算法。 2017 IEEE / RSJ智能机器人和系统国际会议(IROS)。 IEEE,2017。
http://campar.in.tum.de/pub/tbirdal2017iros/tbirdal2017iros.pdf
答案 1 :(得分:4)
是的,ICP可以应用于此问题,正如您建议对表面进行采样。最好是你的激光扫描中有所有可用的面孔,否则你可能需要从模型中移除隐形面(取决于其中有多少面)。
通过去除一些隐藏面来自动准备模型的一种方法是计算可用于丢弃隐藏面(例如不靠近凹面船体的面)的凹面船体。根据模型的相关程度,这可能是必要的,也可能不是必需的。
如果给出良好的初始猜测,ICP很有效,因为它忽略了与当前猜测不相近的点。如果ICP没有提供良好的对齐方式,您可以尝试通过多次随机重启来尝试解决此问题,选择最佳对齐方式。更复杂的解决方案是进行本地特征匹配。您可以对SHOT或FPFH等不变描述符进行采样和计算。您可以找到最佳匹配,拒绝不一致的匹配,使用它们来获得良好的初始对齐,然后使用ICP进行优化。但您可能不需要此步骤,具体取决于随机重启ICP的稳健性和快速性。
答案 2 :(得分:1)
point cloud algorithms有一个开源库,可以对其他点云实施registration。也许你可以试试他们的一些方法,看看是否合适。
作为初学者,如果他们没有任何特定的东西适合多边形网格,您可以将网格顶点视为另一个点云,并使您的点云适合它。这是他们绝对支持的。