2.2.1 近似匹配

首先,通过参数 ObjectModel3D 从场景中均匀采样点。采样距离由参数 RelSamplingDistance 控制。

然后,从采样场景点中选出一组关键点(见 图 2.2 )。所选关键点的数量由参数 KeyPointFraction 控制。

对于每个选定的关键点,都要在假设关键点位于对象表面的前提下计算出表面模型的最佳姿态。计算方法是将关键点与所有其他采样场景点配对(见 图 2.2 ),并找出表面模型上具有相似距离和相对方向的点对。相似度由 create_surface_model 时的参数 "feature_step_size_rel""feature_angle_resolution" 定义。采样场景中位于对象上的点数最多的姿态被认为是该关键点的最佳姿态。对象上的采样场景点数被视为该姿态的得分。

如果模型是为基于边缘支持的表面匹配而训练的,则会从三维场景中提取边缘(类似于算子 edges_object_model_3d )并进行采样。除了采样的三维表面外,参考点也会与所有采样的边缘点配对,并在表面模型上识别出类似的点-边缘组合。

然后从所有关键点中选出得分最高的姿态作为近似姿态。

如果姿态细化被禁用,则会在 Score 中为每个姿态返回上述得分。得分值取决于场景中可见的实例表面面积和场景采样率。只有得分超过 MinScore 的姿态才会被返回。为确定 MinScore 的最佳阈值,建议在多个场景中测试匹配。返回姿态的最大数量由通用参数 "num_match" 设置。

请注意,这一步得出的姿态只是近似值。姿态误差与 create_surface_model 时给出的表面模型采样率成正比,通常小于对象直径的 5%。