关于KITTI数据集深度图除以256及深度单位的技术问询
问题解答
1. 为何代码中需将读取的PNG数组除以256获取depth_map
KITTI的深度真值PNG文件采用**16位无符号整数(uint16)**格式存储深度数据。为了在整数存储中保留足够精度,官方将真实深度值(单位:米)乘以256后转换为uint16类型保存。
当用np.array(PIL.Image.open(img_path))读取该PNG文件时,得到的是原始uint16整数数组,这些数值是真实深度的256倍。因此必须除以256,才能将数值还原为以米为单位的真实深度图(depth_map)。
举个实际例子:若某像素真实深度为3.5米,PNG中存储的uint16值就是3.5 * 256 = 896,读取后除以256就能得到3.5米的真实深度。
2. KITTI投影真值PNG的深度单位
KITTI数据集的投影深度真值PNG文件,真实深度单位是米,但存储时做了编码处理:
- 原始深度值(米)被放大256倍,转换为uint16整数存储,这样既节省存储资源,又保留了约4毫米(1/256 ≈ 0.0039米)的精度。
- 只有将读取到的uint16数值除以256后,得到的结果才是以米为单位的真实深度。
内容的提问来源于stack exchange,提问作者so_user2023
相关产品推荐
相关产品推荐

