【自动驾驶】KITTI数据集Object数据详解

本文深入解析KITTI数据集中的Object数据,重点讲解label的详细含义及坐标转换参数,包括车辆在camera坐标系下的位置、尺寸及旋转计算,对理解自动驾驶场景下的目标检测至关重要。

文章目录

想要使用KITTI数据集中Object数据,其label的理解是非常重要的。对label的理解主要来自于官方发布的devkit_object中的readme中。但我认为这个还是讲的不够详细,这做一些记录。

先列一篇博客KITTI数据集–label解析与传感器间坐标转换参数解析,讲的比较详细,接下来我主要补充一些我认为需要注意的点。

1、xyz
第12~14个数表示车辆的中心位置,然而需要注意的是:

  • 这个表示是在camera坐标系下,X-right,Y-down,Z-forward
  • x和z均表示车辆的中心,而y是在3D box的最下方,而不是高度的中心处

2、hwl,
第9~11个数表示车辆的大小,需要注意的是:

  • 顺序是车辆的高,宽,长
  • 相对应到相机坐标系下,顶点的计算为:x±0.5l,z±0.5w,y-h or y

3、ry的计算是以x轴为起始,绕y轴顺时针转。
如果把所有的ry至为0,则出现下图:
在这里插入图片描述
如果把所有的ry至为pi/4,则出现下图:
在这里插入图片描述

### KITTI 数据集文件夹结构及用途 #### 1. 总体目录结构 KITTI 数据集是一个广泛用于计算机视觉研究的数据集,其文件夹结构设计合理,便于研究人员快速定位所需数据。解压后的文件结构如下所示[^1]: ``` kitti/ ├── testing/ │ ├── image_2/ │ └── ... ├── training/ │ ├── image_2/ │ └── ... └── raw_data/ ├── 2011_09_26/ │ ├── drive_0001_sync/ │ └── ... └── ... ``` #### 2. 各子文件夹的功能描述 ##### (1) `image_2` 子文件夹 该文件夹主要用于存储 RGB 图像数据。具体来说: - **Training 集**: 解压后得到的 `data_object_image2/training/image_2` 文件应放置在 `data/kitti/training` 下。 - **Testing 集**: 类似地,`data_object_image2/testing/image_2` 应存放在 `data/kitti/testing` 中。 RGB 图像是许多任务的基础输入,例如目标检测、语义分割等。 --- ##### (2) `calib` 子文件夹 校准参数(Calibration Parameters)对于多传感器融合至关重要。以下是具体的存储位置和数量: - 训练集路径为 `data_object_calib/training/calib/xxxxxx.txt`,共有 7481 个文件[^2]。 - 测试集路径为 `data_object_calib/testing/calib/xxxxxx.txt`,包含 7518 个文件。 这些 `.txt` 文件记录了相机内外参以及 LiDAR 和相机之间的转换矩阵,帮助实现不同模态间的对齐。 --- ##### (3) `velodyne` 子文件夹 点云数据由 Velodyne 3D 激光雷达采集并以二进制格式(`.bin`)保存。它们位于以下路径中[^4]: - 训练集: `training/velodyne/` - 测试集: `testing/velodyne/` 每帧点云数据包含三维空间中的点坐标及其反射强度信息 `(x, y, z, intensity)`,适用于诸如 3D 目标检测的任务。 --- ##### (4) `raw_data` 子文件夹 原始数据 (`raw_data`) 是未经过处理的真实世界场景捕获结果。它按日期分类存放,并进一步细分为不同的驾驶序列[^3]: ``` raw_data/ ├── 2011_09_26/ │ ├── drive_0001_sync/ │ ├── drive_0002_sync/ │ └── ... ├── 2011_09_28/ │ └── ... └── ... ``` 每个驱动序列可能包括多种类型的同步数据流,比如彩色图像、灰度图像、GPS 坐标、IMU 输出等。这种丰富的数据组合非常适合开发自动驾驶算法。 --- ##### (5) 其他辅助文件夹 除了上述核心组件外,还有其他一些重要的支持性资源: - **Labels:** 对象标注信息通常存在于类似于 `label_2/*.txt` 的地方,每一行代表一个边界框定义。 - **Disparity Maps:** 提供立体匹配计算所得视差图,有助于深度估计工作。 --- ### 示例代码:读取点云数据 下面展示如何加载单个 `.bin` 格式的点云文件: ```python import numpy as np def load_velodyne_points(file_path): points = np.fromfile(file_path, dtype=np.float32).reshape(-1, 4) return points[:, :3] # 只提取 xyz 坐标 point_cloud = load_velodyne_points('path/to/your/file.bin') print(point_cloud.shape) # 打印形状验证成功与否 ``` ---
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值