您的位置:首页 > 教育 > 锐评 > kitti深度估计数据集介绍

kitti深度估计数据集介绍

2024/10/5 20:25:22 来源:https://blog.csdn.net/weixin_38252409/article/details/141712394  浏览:    关键词:kitti深度估计数据集介绍

文章目录

  • 前言
  • 一、kitti官网数据集介绍
    • 1、通用内容
    • 2、深度图内容
      • 第一部分内容解读
      • 第二部分内容
      • 3、深度图模型效果展示
  • 二、同步与校准文件解读(synced+rectified data)
    • 1、文件数据内容
      • 2011_09_26文件
      • proj_depth文件
    • 2、2011_09_26文件内容解读
      • 1、相机图像内容
      • 2、oxts参数内容
      • 3、velodyne_points文件内容
  • 三、标定文件(calibration)
    • 1、calib_cam_to_cam.txt内容
    • 2、calib_velo_to_cam.txt内容
    • 3、与kitti的calib文件对比
      • 整体参数示意
      • 外参矩阵参数对比
      • 内参矩阵参数对比
      • rect纠正矩阵参数对比
    • 4、点云数据转像素坐标方法

前言

最近,我也开始做深度估计模型,该内容属于CV另一个领域,我使用depth anythingv2实现深度估计内容。然而kitti数据一直都是3d重要内容,作者收集了长达6个小时的真实交通环境,数据集由经过校正和同步的图像、雷达扫描、高精度的GPS信息和IMU加速信息等多种模态的信息组成。作者还在数据集官网提供了光流、物体检测、深度估计等多种任务的Benchmark。本篇介绍KITTI深度数据内容。

一、kitti官网数据集介绍

1、通用内容

别人已经介绍很多,我不在介绍了,给出一些别人介绍的链接,如下:
https://www.cnblogs.com/llfctt/p/9317653.html
https://blog.csdn.net/weixin_44764524/article/details/112711666

当然,我这里给出kitti数据采集感受器布置方式,如下图:
在这里插入图片描述
而我们重点要关注的是相机2与3,都是彩色相机,如上图。

2、深度图内容

可以看到官网深度图在raw data内容,这里面包含了深度图内容,如下:
在这里插入图片描述

第一部分内容解读

我们对其翻译如下:

此页面包含我们的原始数据记录,按类别分类(请参阅上方菜单)。到目前为止,我们只包含了那些拥有3D物体标签的序列或出现在我们的里程计基准训练集中的序列。该数据集包含了以下信息,以每秒10Hz的频率捕获并同步:- 原始(未同步+未校正)和处理过的(同步+校正)灰度立体图像序列(0.5兆像素,存储为png格式)
- 原始(未同步+未校正)和处理过的(同步+校正)彩色立体图像序列(0.5兆像素,存储为png格式)
- 三维Velodyne点云(每帧10万个点,存储为二进制浮点矩阵)
- 三维GPS/IMU数据(位置、速度、加速度、元信息,存储为文本文件)
- 校准信息(相机、相机到GPS/IMU、相机到Velodyne,存储为文本文件)
- 三维物体轨迹标签(汽车、卡车、有轨电车、行人、骑自行车者,存储为xml文件)这里,“未同步+未校正”指的是原始输入帧,在这些帧中,图像存在畸变且帧索引并不对应;而“同步+校正”则指的是经过处理的数据,在这些数据中,图像已经被校正和去畸变,并且所有传感器流的数据帧编号都相对应。对于这两种设置,均提供了带有时间戳的文件。大多数人只需要“同步+校正”版本的文件。更多关于传感器、数据格式以及校准的详细信息可以在以下链接找到:- 我们的IJRR数据论文预印版
- 下载原始数据开发包(1MB)
- 下载原始数据集下载脚本(1MB)(感谢Omid Hosseini分享!)
- 下载Velodyne校准文件(1MB)(感谢Sascha Wirges分享!)
- Vipin Sharma撰写了一份指南,帮助更好地理解KITTI传感器坐标系统
- Mark Muth编写了一个基于QT的可视化工具,用于点云和轨迹序列
- Yani Ioannou(多伦多大学)收集了一些使用PCL处理KITTI原始数据的工具
- Christian Herdtweck(图宾根马普所)编写了一个Python解析器,用于读取物体标签XML文件
- Lee Clement和他的团队(多伦多大学)编写了一些Python工具,用于加载和解析KITTI原始数据和里程计数据集
- Tomáš Krejčí创建了一个简单的工具,用于将原始KITTI数据集转换为ROS包文件:kitti2bag
- Helen Oleynikova创建了几个使用ROS处理KITTI原始数据集的工具:kitti_to_rosbag
- Mennatullah Siam创建了KITTI MoSeg数据集,其中包含移动物体检测的真实标注
- Hazem Rashed扩展了KITTI MoSeg数据集10倍,提供了移动物体检测的真实标注。该数据集包含12919张图像,并在项目网站上提供
- Jack Borer编写了一个针对KITTI数据集中激光雷达扫描的运动补偿库请注意:我们未能对所有序列进行标注,仅提供了通过第三阶段人工验证的那些轨迹标注,即那些质量非常高的标注。对于有轨迹标注可用的序列,您会在下载类别中找到[轨迹]链接。

第二部分内容

里有很多文件,我们只需下载关注如下内容,如图:
在这里插入图片描述

3、深度图模型效果展示

这个也是使用别人的,看着很有意思,我后期也会给一些博客来介绍深度估计。

在这里插入图片描述

二、同步与校准文件解读(synced+rectified data)

在这里插入图片描述

1、文件数据内容

2个文件夹,一个包含四个相机图像、传感器参数与点云图,另一个是深度估计内容,如下:
在这里插入图片描述

2011_09_26文件

内容如下:
在这里插入图片描述

proj_depth文件

proj_depth文件内是一个groundtruth文件,包含相机2与3的深度图,如下:
在这里插入图片描述

2、2011_09_26文件内容解读

1、相机图像内容

简单说image_00到image_03就是四个相机拍摄的图像,是经过校正的,如下像是:

在这里插入图片描述

2、oxts参数内容

实际就是测量中各种参数内容,每个图都有保存对应参数,如下图:

在这里插入图片描述
对于每个参数txt文件对应值内容如下:

- `lat`: 经度(度)
- `lon`: 纬度(度)
- `alt`: 高程(米)
- `roll`: 倾斜角(弧度),0 表示水平,正值表示左侧向上,范围:-π 到 +π
- `pitch`: 俯仰角(弧度),0 表示水平,正值表示前端向下,范围:-π/2+π/2
- `yaw`: 航向角(弧度),0 表示向东,正值表示逆时针方向,范围:-π 到 +π
- `vn`: 向北速度(米/秒)
- `ve`: 向东速度(米/秒)
- `vf`: 前进速度,即平行于地球表面的速度(米/秒)
- `vl`: 左侧速度,即平行于地球表面的速度(米/秒)
- `vu`: 向上速度,即垂直于地球表面的速度(米/秒)
- `ax`: 在 x 方向的加速度,即车辆前方方向(米/秒²)
- `ay`: 在 y 方向的加速度,即车辆左侧方向(米/秒²)
- `az`: 在 z 方向的加速度,即车辆顶部方向(米/秒²)
- `af`: 前进加速度(米/秒²)
- `al`: 左侧加速度(米/秒²)
- `au`: 向上加速度(米/秒²)
- `wx`: 绕 x 轴的角速度(弧度/秒)
- `wy`: 绕 y 轴的角速度(弧度/秒)
- `wz`: 绕 z 轴的角速度(弧度/秒)
- `wf`: 绕前进轴的角速度(弧度/秒)
- `wl`: 绕左侧轴的角速度(弧度/秒)
- `wu`: 绕向上轴的角速度(弧度/秒)
- `pos_accuracy`: 位置精度(南北/东西方向的米)
- `vel_accuracy`: 速度精度(南北/东西方向的米/秒)
- `navstat`: 导航状态(参见 navstat_to_string 函数)
- `numsats`:GPS 接收器追踪到的卫星数目
- `posmode`:GPS 接收器的位置模式(参见 gps_mode_to_string 函数)
- `velmode`:GPS 接收器的速度模式(参见 gps_mode_to_string 函数)
- `orimode`:GPS 接收器的方位模式(参见 gps_mode_to_string 函数)

3、velodyne_points文件内容

这个就是每个图对应的点云,我不在解读了,如下:
在这里插入图片描述

三、标定文件(calibration)

当然,你也需要下载一个相关参数内容,如下:
在这里插入图片描述
我们只关心雷达点云转相机与相机转像素,第三与第一文件夹内容。

1、calib_cam_to_cam.txt内容

calib_cam_to_cam.txt内容如下:

calib_time: 09-Jan-2012 13:57:47
corner_dist: 9.950000e-02
S_00: 1.392000e+03 5.120000e+02
K_00: 9.842439e+02 0.000000e+00 6.900000e+02 0.000000e+00 9.808141e+02 2.331966e+02 0.000000e+00 0.000000e+00 1.000000e+00
D_00: -3.728755e-01 2.037299e-01 2.219027e-03 1.383707e-03 -7.233722e-02
R_00: 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.000000e+00
T_00: 2.573699e-16 -1.059758e-16 1.614870e-16
S_rect_00: 1.242000e+03 3.750000e+02
R_rect_00: 9.999239e-01 9.837760e-03 -7.445048e-03 -9.869795e-03 9.999421e-01 -4.278459e-03 7.402527e-03 4.351614e-03 9.999631e-01
P_rect_00: 7.215377e+02 0.000000e+00 6.095593e+02 0.000000e+00 0.000000e+00 7.215377e+02 1.728540e+02 0.000000e+00 0.000000e+00 0.000000e+00 1.000000e+00 0.000000e+00
S_01: 1.392000e+03 5.120000e+02
K_01: 9.895267e+02 0.000000e+00 7.020000e+02 0.000000e+00 9.878386e+02 2.455590e+02 0.000000e+00 0.000000e+00 1.000000e+00
D_01: -3.644661e-01 1.790019e-01 1.148107e-03 -6.298563e-04 -5.314062e-02
R_01: 9.993513e-01 1.860866e-02 -3.083487e-02 -1.887662e-02 9.997863e-01 -8.421873e-03 3.067156e-02 8.998467e-03 9.994890e-01
T_01: -5.370000e-01 4.822061e-03 -1.252488e-02
S_rect_01: 1.242000e+03 3.750000e+02
R_rect_01: 9.996878e-01 -8.976826e-03 2.331651e-02 8.876121e-03 9.999508e-01 4.418952e-03 -2.335503e-02 -4.210612e-03 9.997184e-01
P_rect_01: 7.215377e+02 0.000000e+00 6.095593e+02 -3.875744e+02 0.000000e+00 7.215377e+02 1.728540e+02 0.000000e+00 0.000000e+00 0.000000e+00 1.000000e+00 0.000000e+00
S_02: 1.392000e+03 5.120000e+02
K_02: 9.597910e+02 0.000000e+00 6.960217e+02 0.000000e+00 9.569251e+02 2.241806e+02 0.000000e+00 0.000000e+00 1.000000e+00
D_02: -3.691481e-01 1.968681e-01 1.353473e-03 5.677587e-04 -6.770705e-02
R_02: 9.999758e-01 -5.267463e-03 -4.552439e-03 5.251945e-03 9.999804e-01 -3.413835e-03 4.570332e-03 3.389843e-03 9.999838e-01
T_02: 5.956621e-02 2.900141e-04 2.577209e-03
S_rect_02: 1.242000e+03 3.750000e+02
R_rect_02: 9.998817e-01 1.511453e-02 -2.841595e-03 -1.511724e-02 9.998853e-01 -9.338510e-04 2.827154e-03 9.766976e-04 9.999955e-01
P_rect_02: 7.215377e+02 0.000000e+00 6.095593e+02 4.485728e+01 0.000000e+00 7.215377e+02 1.728540e+02 2.163791e-01 0.000000e+00 0.000000e+00 1.000000e+00 2.745884e-03
S_03: 1.392000e+03 5.120000e+02
K_03: 9.037596e+02 0.000000e+00 6.957519e+02 0.000000e+00 9.019653e+02 2.242509e+02 0.000000e+00 0.000000e+00 1.000000e+00
D_03: -3.639558e-01 1.788651e-01 6.029694e-04 -3.922424e-04 -5.382460e-02
R_03: 9.995599e-01 1.699522e-02 -2.431313e-02 -1.704422e-02 9.998531e-01 -1.809756e-03 2.427880e-02 2.223358e-03 9.997028e-01
T_03: -4.731050e-01 5.551470e-03 -5.250882e-03
S_rect_03: 1.242000e+03 3.750000e+02
R_rect_03: 9.998321e-01 -7.193136e-03 1.685599e-02 7.232804e-03 9.999712e-01 -2.293585e-03 -1.683901e-02 2.415116e-03 9.998553e-01
P_rect_03: 7.215377e+02 0.000000e+00 6.095593e+02 -3.395242e+02 0.000000e+00 7.215377e+02 1.728540e+02 2.199936e+00 0.000000e+00 0.000000e+00 1.000000e+00 2.729905e-03

解释如下:
calib_cam_to_cam.txt文件包含了KITTI数据集中摄像头校准参数的信息。这些参数用于描述摄像头的内部和外部特性,这对于将3D点从世界坐标或者车辆坐标转换到图像像素坐标是必需的。

让我们先解释一下文件中的一些关键参数:

S (skew): 描述图像传感器上的像素是否正交。通常情况下,对于大多数摄像头,该值接近于0,意味着像素是正交的。
K (intrinsic matrix): 内参矩阵,包含了焦距(以像素为单位)和平移(主点位置,即图像中心点在像素坐标系中的位置)等信息。
D (distortion coefficients): 镜头畸变系数,用于校正图像的桶形或枕形畸变。
R (rotation matrix): 旋转矩阵,描述摄像头相对于某个参考坐标系的旋转。
T (translation vector): 平移向量,描述摄像头相对于某个参考坐标系的位置。
R_rect: 描述摄像头的旋转以实现图像的矩形化(去除畸变)。
P_rect: 矩形化投影矩阵,用于将3D点投影到2D图像平面上,并考虑了畸变校正和摄像头内参。

2、calib_velo_to_cam.txt内容

calib_velo_to_cam.txt内容如下:

calib_time: 15-Mar-2012 11:37:16
R: 7.533745e-03 -9.999714e-01 -6.166020e-04 1.480249e-02 7.280733e-04 -9.998902e-01 9.998621e-01 7.523790e-03 1.480755e-02
T: -4.069766e-03 -7.631618e-02 -2.717806e-01
delta_f: 0.000000e+00 0.000000e+00
delta_c: 0.000000e+00 0.000000e+00

3、与kitti的calib文件对比

假如我们使用kitti的通用每个图像参数与其对比,假如深度图对应参数(右边)与左边某个相机下值是相等的。为证明猜想,我们进一步实验理解与分析深度图标定参数与通用kitti点云标定参数,如下:
在这里插入图片描述

整体参数示意

我使用代码读取正常kittti转换参数与depth提供的转换参数,分别左图与右图,其结果示意如下。
在这里插入图片描述

外参矩阵参数对比

结论是完全一致的,我们选择kitti数据calib文件与深度数据calib_velo_to_cam.txt对比,除了calib_velo_to_cam.txt使用一个R矩阵表示外参旋转矩阵与T矩阵表示外参移动矩阵,而000001.txt使用一个矩阵Tr_velo_to_cam表示外参旋转矩阵与移动矩阵。经过对比,2者的值是完全一致的。其结果如下:

在这里插入图片描述

内参矩阵参数对比

结论是完全一致的,我们使用image_2图像对应kitti数据calib文件与深度数据calib_cam_to_cam.txt对比,calib_cam_to_cam.txt使用一个P_rect_02内参矩阵与kitti的P2内参矩阵完全相等。其结果如下:

在这里插入图片描述

rect纠正矩阵参数对比

结论是完全一致的,我们使用image_2图像对应kitti数据calib文件与深度数据calib_cam_to_cam.txt对比,calib_cam_to_cam.txt使用一个R_rect_00纠正矩阵与kitti的R0_rect矩阵完全相等。即0相机纠正都一样,自然后续点云转换也是一样的。其结果如下:

在这里插入图片描述

4、点云数据转像素坐标方法

可以从上面得出结论,通用kitt点云与深度图的点云转图像像素坐标方法是一致的。举例通用点云转图像2的像素公式:
在这里插入图片描述
上面知识一个示意图,我不在解读了,网上有很多内容。

https://blog.csdn.net/m0_46556474/article/details/130944612

然而深度估计才是我们重点,我也找了一些文章参考如下:
深度估计点云转像素坐标可参考:文章1 与 文章2

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com