为何使用 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 物体模型时,可使用以下算子:
connection_object_model_3d (OM3DScene, 'distance_3d', 0.01, ObjectModel3DConnected) select_object_model_3d (ObjectModel3DConnected, 'num_points', 'and', 5000, 500000, ObjectModel3DSelected) union_object_model_3d (ObjectModel3DSelected, 'points_surface', ObjectModel3DBoxes1)
在处理 2D XYZ 图像时,我们还可以选择使用:
object_model_3d_to_xyz (X, Y, Z, OM3DScene, 'from_xyz_map', [ ], [ ]) regiongrowing (Z, Regions, 3, 3, 0.01, 100) select_shape (Regions, SelectedRegions, 'area', 'and', 5000, 500000) union1 (SelectedRegions, RegionUnion) 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中找到。