2.2 查找表面模型

使用 create_surface_model 创建了要匹配的对象的表面模型后,就可以使用 find_surface_model 在场景中查找该对象。场景通常由 3D 传感器获取,因此对数据有一定的要求(参见 "数据要求" 一章 )。用于去除背景的预处理步骤(参见 "背景移除" 一章 )可以显著提高性能。请注意,标准基于表面的匹配和基于边缘支持的表面匹配的工作流程是相同的。

一般来说,基于表面的匹配分为三个主要步骤,由 find_surface_model 执行:

  1. 大致匹配:
    搜索场景中表面模型实例的近似位置。对点云进行采样并定义关键点子集。对于每个关键点,在关键点位于对象表面的假设下,计算表面模型的最佳姿态。然后从所有关键点中选出得分最高的姿态作为近似姿态。

  2. 稀疏姿态细化:
    在这一步骤中,通过最小化采样场景点与模型点平面之间的距离,对上一步骤中发现的近似姿态进行细化。这样可以提高姿态的精度和分值的重要性。

  3. 密集姿势细化:
    对前面步骤中发现的姿态进行精确细化。这一步的工作原理与稀疏姿态细化类似,都是最小化所有场景点与最接近模型点的平面之间的距离。

这三个步骤将在以下小节中详细说明。

a) 场景点云 b) 简化场景(灰色),采样点(青色)
和关键点(黄色)

图 2.2: 获取的场景(a)和用于匹配过程不同步骤的点集(b)。请注意,在第二幅图像中,背景已通过 XYZ 映射过滤掉。