4.4.1 基于表面的匹配和基于边缘支持的表面匹配的注意事项


基于表面的匹配和基于边缘支持的表面匹配

法线方向 参见 参见 "法线"

模型的形状 参见 "模型的形状" 一节

重复点 参见 "重复点" 一节

缩放 使用带有正确缩放的 read_object_model_3d

模型采样

用以下代码检查模型的采样情况:

get_surface_model_param (SurfaceModelID, 'sampled_model', SampledModel)
visualize_object_model_3d(WindowHandle, SampledModel, [], [], [],
                          [], [], [], [], PoseOut)
    

确保表面模型中仍然包含表体的重要部分。

场景采样

用以下代码检查场景的采样情况:

get_surface_matching_result (SurfaceMatchingResultID, 'sampled_scene',
                             0, SampledScene)
visualize_object_model_3d(WindowHandle, SampledScene, [], [], [],
                          [], [], [], [], PoseOut)
    

对象应至少被 150 个场景点覆盖。如果需要考虑模型的细节,则需要降低采样距离。当需要匹配细长对象时,必须调整采样距离,以便在最短的对象延伸段内获得足够的信息(见 图 5.1 )。

分数 如果返回的评分都很低,请检查以下可能的原因:
  • 如果模型内部包含不可见的结构,应移除不可见的结构。
  • 如果模型法线方向与场景法线的大致方向不一致,应进行调整(参见 "法线" 一节 )。
  • 模型需要与场景中的物体相匹配。
  • 模型会进行二次采样以进行精化。此采样可以通过参数值 "pose_ref_rel_sampling_distance" 进行控制。为了获得更精确的结果,可以将该参数设置为更小的值。其默认值为 0.01
  • 如果相机仅能看到少量对象实例,请使用基于视图的评分,其只考虑从相机视角实际能看到的对象部分。