| Developers' Corner

XYZ 映射简介(第 1 部分)

a) Intensity Image
a) Intensity Image
b) X-Image
b) X-Image
c) Y-Image
c) Y-Image
d) Z-Image
d) Z-Image

在 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 物体定位。后续技术文章会介绍更多详细信息。