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