Halcon XYZ 映射简介

打印

 

上一主题

 

下一主题

开启左侧

[HALCON文档] XYZ 映射简介 

[复制链接]
在 HALCON 3D 应用的背景下,您肯定已经听说过“3D 映射”、“XYZ 映射”或“XYZ 图像”等术语。
许多 3D 传感器可随点云提供这些 XYZ 映射。在本文及后续技术文章中,我们会为您介绍这些 XYZ 映射。
我们将讨论什么是 XYZ 映射 (XYZ-Mappings),并简要介绍了为何使用 XYZ 映射对许多 3D 应用有益, 并会更详细的回答:为何使用 XYZ 映射对许多 3D 应用有益。

什么是 XYZ 映射?
XYZ 映射是将 3D 坐标映射为 2D 坐标的图像,即 X 坐标编码为 X 图像中的灰度值,Y 坐标编码为 Y 图像中的灰度值,Z 坐标编码为 Z 图像中的灰度值。

我们来看一些示例数据: (我们的标准示例 find_surface_model_with_edges.hdev 和 find_box_3d.hdev 中也使用了这些数据)


上方可以看到同一 3D 场景的四个图像。强度看起来像是可用于普通 2D 图像处理的“正常”2D 图像。
在 XYZ 图像中,我们大体上看到与强度图像中相同的结构(三个盒子)。但是图像未包含强度值,而是包含相关 3D 点的 X、Y 和 Z 坐标。
因此,在 XYZ 图像中,3D 点坐标按行和列顺序排列成 2D 图像。示例图像中还可以看到支持边缘的基于表面的匹配所需的约定:
  • X 映射的灰度值从左到右递增,
  • Y 映射的灰度值从上到下递增,
  • Z 映射的灰度值在远离相机的物体部分递增。
要将 XYZ 图像转换为 3D 物体模型,可使用算子xyz_to_object_model_3d (X, Y, Z, ObjectModel3D)反之则可使用object_model_3d_to_xyz (X, Y, Z, ObjectModel3D, 'from_xyz_map', [], [])// ObjectModel3D 必须包含映射有关 3D 物体模型的更多一般信息,请查看我们的解决方案指南【Solution Guide III-C 3D Vision】, chapter 2.3 3D Object Models.

为何使用 XYZ 映射对许多 3D 应用有益?
总而言之,使用 XYZ 映射可提高应用的速度和灵活性。大多数相关 3D 算子都包含基于映射的模式,例如 triangulate_object_model_3d、sample_object_model_3d和 reduce_object_model_by_view此外,在 XYZ 映射上,可使用 HALCON 强大的 2D 库,直观、高效、灵活地为应用的主要环节准备点云,例如基于表面匹配的 3D 物体定位。

为何使用 XYZ 映射对许多 3D 应用有益?
在 3D 应用中使用 XYZ 映射对于点云的准备及应用的主要环节都有好处。我们会在下文中介绍三个主要优点,并给出一些解释和具体示例。以下列表和示例并非面面俱到,但应该能让您有一个整体的了解。

1) 加快 3D 算子速度
3D 数据的许多运算都需要不同 3D 点之间邻域的信息。对于包含 XYZ 映射的点云,可从 2D XYZ 映射中 3D 点的独特关系得出邻域,从而加快代价高昂的 3D 运算。

示例:
许多 HALCON 算子提供的方法明确使用了 XYZ 映射,例如 surface_normals_object_model_3d、sample_object_model_3d、reduce_object_model_by_view 或 triangulate_object_model_3d。您可以查看算子参考资料,了解可用方法。

2) 通过使用 2D 算子提高灵活性(并加快速度
此外,您可以在 XYZ 图像上使用许多 HALCON 现有的强大 2D 算子(例如分割和过滤等),从而提高灵活性。通常,在 XYZ 图像上使用 2D 算子也比类似的 3D 算子快。

示例:
假设我们希望在上次所用的示例图像中将盒子从背景中分离出来。在处理 3D 物体模型时,可使用以下算子:
  1. connection_object_model_3d (OM3DScene, 'distance_3d', 0.01, ObjectModel3DConnected)
  2. select_object_model_3d (ObjectModel3DConnected, 'num_points', 'and', 5000, 500000, ObjectModel3DSelected)
  3. union_object_model_3d (ObjectModel3DSelected, 'points_surface', ObjectModel3DBoxes1)
复制代码
在处理 2D XYZ 图像时,我们还可以选择使用:
  1. object_model_3d_to_xyz (X, Y, Z, OM3DScene, 'from_xyz_map', [ ], [ ])
  2. regiongrowing (Z, Regions, 3, 3, 0.01, 100)
  3. select_shape (Regions, SelectedRegions, 'area', 'and', 5000, 500000)
  4. union1 (SelectedRegions, RegionUnion)
  5. reduce_object_model_3d_by_view (RegionUnion, OM3DScene, [ ], [ ], ObjectModel3DBoxes2)
复制代码

虽然 3D 和 2D 方法可以提供相同或相似的结果,但是第二种方法通常比第一种方法快,尤其是在处理大点云时。在此示例中,可实现高达 400% 的加速。

3) 需要 XYZ 图像的 3D 算子
使用 3D 边缘的算子非常需要 XYZ 图像,例如 edges_object_model_3d、find_box_3d 或支持边缘的基于表面的匹配。因此,如果要使用这些方法,需要包含 XYZ 映射的 3D 物体模型。

总结
总体而言,使用包含 XYZ 映射的 3D 物体模型可以显著提高应用的速度、灵活性和稳定性。因此,强烈建议在 3D 处理中使用 XYZ 图像。 更多信息和示例(例如背景去除)可以在我们随 HALCON 20.11 开发版提供的新技术说明:%HALCONROOT%/doc/pdf/manuals/surface_based_matching.pdf中找到。
  • 30
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值