6.3.2 根据阈值移除箱子

如果没有箱子的 CAD 网格模型,可以采用以下方法将场景缩减到箱子内的物体:

  1. 使用 "移除背景平面" 一节 所述的方法移除背景平面。
  2. 估算箱子的范围。现在,场景已经缩减为包含待定位对象的箱子,可以根据场景坐标系对箱子进行近似估算(见 图 6.4 b) )。

    smallest_bounding_box_object_model_3d (Scene, 'oriented', BoundingBoxPose, \
                                           Length1, Length2, Length3)
    gen_box_object_model_3d (BoundingBoxPose, Length1, Length2, Length3, BoundingBox)
          

  3. 把箱子转换为估计的最小边界框的中心。

    pose_invert (BoundingBoxPose, PoseInverted)
    rigid_trans_object_model_3d (Scene, PoseInverted, SceneRigidTrans)
          

  4. 在 X 和 Y 映射上应用二维阈值(见 图 6.4 c) 和 d) )。

    object_model_3d_to_xyz (X, Y, Z, SceneRigidTrans, 'from_xyz_map', [], [])
    threshold (X, RegionX, -Length1 / 2 * 0.85, Length1 / 2 * 0.85)
    threshold (Y, RegionY, -Length2 / 2 * 0.85, Length2 / 2 * 0.85)
          

    或者,您也可以使用 select_points_object_model_3d 对 X 坐标和 Y 坐标应用阈值。在这种情况下,可以跳过下一步。

  5. 通过 X 和 Y 映射与无背景的场景域相交,计算出感兴趣区域(见 图 6.4 e) 和 f) )。

    intersection (RegionX, RegionY, RegionIntersection)
    intersection (RegionIntersection, SceneDomain, ROI)
    reduce_object_model_3d_by_view (ROI, Scene, 'xyz_mapping', [], SceneReduced)
          

a) 场景 b) 边界框 c) 阈值化 X 图像
d) 阈值化 Y 图像 e) 相交区域 f) 缩减场景

图 6.4: 移除背景平面后,根据场景的二维映射对域进行缩减。