4.3 重复点

重复点(即坐标相同的点)的存在通常取决于传感器在三维采集过程中对数据的处理。在某些情况下,传感器的某些部分无法记录任何信息,例如由阴影或表面反射特征造成的,从而导致无效数据点。有些三维传感器会删除无效点,有些会将其编码为 NaN,还有些会将其编码为 0。如果这些值被赋值为 0,所有无效数据点将被重建为(0, 0, 0)坐标点。为了检查是否存在重复点,可以使用函数 debug_find_surface_model 的 "自动值检查" 或 Z 映射的灰度值直方图(见 图 4.3 )。如果存在重复点,匹配过程会减慢,三维边缘提取也会失败。

图4.3:用值0的贬值表示的Z映射灰度直方图检查重复点。

可以通过在 Z 映射上设置适当的阈值或应用算子 select_points_object_model_3d 来删除重复点。在 图 4.3 的示例中,以下两种方法可以解决问题。

基于映射的方法

object_model_3d_to_xyz (XMapping, YMapping, ZMapping, Scene, 'from_xyz_map', [], [])
threshold (ZMapping, Region, 0.000001, 1)
reduce_object_model_3d_by_view (Region, Scene, CamParam, Pose, SceneReduced)
    

基于三维的方法

select_points_object_model_3d (Scene, 'num_neighbors_fast 0.000001', 0, 1, SceneReduced)