6.3.1 根据网格 CAD 模型移除箱子

基于网格 CAD 模型的箱子移除可通过以下步骤实现:

  1. 用网格 CAD 模型创建一个表面模型,以箱子为模型(见 图 6.3 b) )。

    create_surface_model (Model, 0.03, 'model_invert_normals', 'true', SurfaceModelID)
          

  2. 定位箱子。

    find_surface_model (SurfaceModelID, Scene, 0.05, 0.2, 0, 'true',[], [], Pose, \
                        Score, SurfaceMatchingResultID)
          

  3. 将网格 CAD 模型移动到场景中。

    rigid_trans_object_model_3d (Model, Pose, ObjectModel3DRigidTrans)
          

  4. 将场景缩减到箱子内部。因此,需要减去场景和找到的 CAD 模型的 Z 映射,通过应用阈值移除背景,然后按视图缩减场景,并考虑由此产生的区域。

    object_model_3d_to_xyz (XModel, YModel, ZModel, ObjectModel3DRigidTrans, \
                            'cartesian_faces', [CameraParam],[0,0,0,0,0,0,0])
    object_model_3d_to_xyz (XScene, YScene, ZScene, Scene, 'from_xyz_map', [],[])
    sub_image (ZModel, ZScene, ImageSub, 1, 0)
    threshold (ImageSub, Regions, 0.001,1)
    reduce_object_model_3d_by_view (Regions, Scene, [], [], SceneReduced)
          

a) 场景 b) CAD 模型 c) 定位的箱子

图 6.3:可以在场景中找到箱子,并使用 CAD 模型将其从场景中移除。