6.2 移除任意形状的背景

在某些情况下,背景可能不仅仅包含一个平面。如果所有场景的背景都保持稳定,您可以获取一个参考场景(不包含想要的对象),以便从实际场景中减去它。请按照以下步骤移除任意形状的背景:

  1. 获取参考场景和实际场景的 Z 图像,然后将它们相减。

    * Offline step, performed once:
    object_model_3d_to_xyz (XRef, YRef, ZRef, ReferenceScene, 'from_xyz_map', [], [])
    * Online steps, performed for every scene:
    object_model_3d_to_xyz (X, Y, Z, Scene, 'from_xyz_map', [], [])
    sub_image (ZRef, Z, ImageSub, 1, 0)
        

  2. 应用阈值并降低噪点,以接收感兴趣的区域。确保阈值低于所需的对象高度。

    threshold (ImageSub, Region, 0.5, 1e+10)
    connection (Region, ConnectedRegions)
    * Remove noise based on shape features, e.g. area:
    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 2000, 1e+10)
    union1 (SelectedRegions, RegionUnion)
        

  3. 使用您感兴趣的区域,按视图缩减场景。

    reduce_object_model_3d_by_view (RegionUnion, Scene, [], [], SceneReduced)