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
  • 如果相机只能看到对象实例的一小部分,则使用基于视图的得分,其只考虑从相机视角实际能看到的对象部分。