【问题标题】:Match 3D point cloud to CAD model将 3D 点云与 CAD 模型匹配
【发布时间】:2013-09-30 18:14:57
【问题描述】:

我有一个对象的点云,通过激光扫描仪获得,以及该对象的 CAD 表面模型。

如何将点云与表面匹配,以获得点云与模型之间的平移和旋转?

我想我可以对表面进行采样并尝试使用Iterative Closest Point (ICP) 算法将生成的采样点云与扫描仪点云进行匹配。

这真的有用吗?

对于这项任务有更好的算法吗?

【问题讨论】:

    标签: algorithm 3d computer-vision point-clouds object-recognition


    【解决方案1】:

    在新的 OpenCV 中,我实现了一个表面匹配模块来将 3D 模型与 3D 场景匹配。不需要初始姿势,检测过程是全自动的。该模型还涉及 ICP。

    要了解一下,请在此处查看视频(尽管它不是由 OpenCV 中的实现生成的):

    https://www.youtube.com/watch?v=uFnqLFznuZU

    完整的源代码是here,文档是here

    您提到您需要对 CAD 模型进行抽样。这是正确的,我们已经给出了适合点对特征匹配的采样算法,例如在 OpenCV 中实现的算法:

    Birdal、Tolga 和 Slobodan Ilic。 一种用于不规则几何形状 3D 匹配的点采样算法。 2017 年 IEEE/RSJ 智能机器人和系统国际会议 (IROS)。 IEEE,2017 年。

    http://campar.in.tum.de/pub/tbirdal2017iros/tbirdal2017iros.pdf

    【讨论】:

    • 视频看起来很有趣,但这个答案缺少重现结果所需的信息。您能否总结一下您使用的方法,并展示相关的 OpenCv 调用?完整的代码在某处可用吗?
    • 有这方面的教程吗?如何训练,如何使用等?
    • 您说演示的视频不是使用代码拍摄的。此外,还不清楚如何训练和测试,也没有可以说的使用指南。您共享的链接“描述”了该方法。如果它完全适合他们的情况,人们会首先尝试它,然后会尝试深入研究描述。
    • 如果您向下滚动,您将看到训练和测试它的示例代码。该部分称为“完整示例”。其他代码(用于视频)尚未开源。所以没有我可以提供的教程。
    【解决方案2】:

    是的,ICP 可以应用于此问题,正如您建议对表面进行采样一样。如果您的激光扫描中有所有可用的面,那将是最好的,否则您可能必须从模型中删除不可见的面(取决于这些面的数量)。

    通过去除一些隐藏面来自动准备模型的一种方法是计算凹壳,该凹壳可用于丢弃隐藏面(例如不靠近凹壳的面)。根据模型的参与程度,这可能是必要的,也可能不是。

    如果给出一个好的初始猜测,ICP 效果很好,因为它会忽略与当前猜测不相近的点。如果 ICP 没有提供良好的对齐方式,您可以尝试多次随机重启来尝试解决此问题,选择最佳对齐方式。

    一个更复杂的解决方案是进行局部特征匹配。您采样并计算一个不变的描述符,如 SHOT 或 FPFH。您找到最佳匹配,拒绝不一致的匹配,使用它们提出良好的初始对齐,然后使用 ICP 进行优化。但您可能不需要此步骤,具体取决于随机重启 ICP 的稳健性和速度。

    【讨论】:

      【解决方案3】:

      point cloud algorithms 有一个开源库,它针对其他点云实现了registration。也许你可以尝试他们的一些方法,看看是否合适。

      首先,如果他们没有任何特定的东西适合多边形网格,您可以将网格顶点视为另一个点云并将您的点云与它相匹配。这是他们绝对支持的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-27
        • 2017-02-13
        • 2019-07-20
        • 2012-03-26
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 2016-08-15
        相关资源
        最近更新 更多