一、kitti数据集,label解析
代表16个数的含义:
第一个字符串:代表物体类别
‘Car’, ‘Van’, ‘Truck’,‘Pedestrian’, ‘Person_sitting’, ‘Cyclist’,‘Tram’, ‘Misc’ or ‘DontCare’
注意,’DontCare’ 标签表示该区域没有标记,例如,目标对象离激光雷达太远。为了防止在评估过程中(主要是计算)precision),由于某些原因,原本是目标对象但未标注的区域统计为假阳性(false positives),评估脚本会自动忽略DontCare’ 区域预测结果。
第二个数:代表物体是否被截断
从0(非截断)浮动到1(截断)truncated指离开图像边界的对象
第三个数:代表物体是否被遮挡
整数0、1、2、3表示屏蔽程度
0:完全可见 1.小部分遮挡 大部分遮挡 3:完全遮挡(unknown)
第4个数:alpha,物体的观察角度、范围:-pi~pi
在相机坐标系下,以相机原点为中心,相机原点到物体中心的连接为半径,将物体绕着相机y轴旋转到相机z轴。此时,物体方向与相机x轴之间的夹角
r_y pi/2 -theta = alpha pi/2(即图中紫色角相等)
所以alpha = r_y - theta
第5~8这4个数:物体的2维边界框
xmin,ymin,xmax,ymax
9~11这3个数字:3维物体的尺寸
高、宽、长(单位:米)
第12~14这3个数字3维物体的位置
x,y,z(单位在相机坐标系下:米)
三维物体的空间方向:rotation_y
在相机坐标系下,物体的整体方向角(物体的前进方向与相机坐标系x轴的夹角),范围:-pi~pi
第16个数字:检测到的信心度
二、kitti数据集,calib解析
要将Velodyne坐标中的点x投影到左侧的彩色图像y:
使用公式:y = P2 * R0_rect *Tr_velo_to_cam * x
将Velodyne将坐标中的点投影到右侧的彩色图像中:
使用公式:y = P3 * R0_rect *Tr_velo_to_cam * x
Tr_velo_to_cam * x :是将Velodyne坐标中的点x投影到编号为0的相机(参考相机)坐标系
R0_rect *Tr_velo_to_cam * x :是将Velodyne坐标中的点x投影到2号相机(参考相机)坐标系
P2 * R0_rect *Tr_velo_to_cam * x :是将Velodyne坐标中的点x投影到2号相机(参考相机)坐标系中,然后投影到2号相机(左彩色相机)的照片中
注:所有矩阵都存储在主行中,即第一值对应于第一行。 R0_rect包含一个3x3矩阵需要扩展到4x4矩阵,方法是在右下角加1,在其他位置加0。 Tr_xxx是一个3x4矩阵(R | t),需要以同样的方式扩展到4x4矩阵!
使用校准文件夹中的3x4投影矩阵可以将相机坐标系中的坐标投影到图像中。提供图像的左侧彩色相机必须使用P2。rotation_y和alpha两者的区别在于rotation_y相机坐标中直接给出,alpha为了计算物体相对于相机的相对方向,还将考虑从相机中心到物体中心的矢量。 例如,无论汽车位于摄像机坐标系的X轴上,无论它位于哪里X / Z平面(鸟瞰图)的位置,它的位置rotation_y都为 0,只有当汽车位于相机的Z轴上时α当汽车从Z轴移动时,它是零α将会改变。
三、原文(我不注意的部分随便翻译)
摘要 - 为移动机器人和自动驾驶研究提出了从大众旅行车捕获的新数据集。总之,我们使用各种传感器模式(如高分辨率彩色和灰度立体相机),Velodyne 3D高精度的激光扫描仪GPS / IMU惯性导航系统),10-1000 Hz记录6小时的交通情况。从高速公路到农村,到有许多静态和动态物体的城市内景,这些场景多种多样,捕捉现实世界的交通状况。我们校准、同步和时间戳,我们提供校正和原始图像序列。我们的数据集还包括3D tracklets对象标签、光学流、物体检测等任务的在线基准。本文介绍了我们提供的录制平台、数据格式和实用程序。
KITTI在德国卡尔斯鲁厄市内外驾驶时,数据集从移动平台(图1)录制(图2)。 它包括组合GPS / IMU相机图像系统,激光扫描,高精度GPS测量和IMU加速。该数据集的主要目的是促进计算机视觉和自动驾驶算法的发展[1] - [7]。虽然我们的介绍性论文[8]主要关注基准,创建和评估最先进的计算机视觉方法,但我们通过提供原始数据本身的技术细节来补充这些信息。我们准确地解释了如何访问数据和评论传感器限制和常见隐患。数据集可以从http://www.cvlibs.net/datasets/kitti下载。 阅读[8]回顾相关工作
A、数据描述
a) image:
使用8位PNG无损压缩存储文件、颜色和灰度图像。 发动机罩和天空区域已被切割。 为了简化数据的处理,我们还提供了修后的图像(rectifiedimages)。 修正后的图像大小取决于平均约50万像素的校准参数。 还可以使用修正前的原始图像。
b) OXTS (GPS/IMU):
对于每一帧,我们将有30个不同的帧GPS /IMU存储在文本文件中的值:地理坐标包括高度、全球定位、速度、加速、角速、精度和卫星信息。 加速度和角速率由两个坐标系指定,一个坐标系和车身(x,y,z)相连,另一个坐标系映射到该位置的地表截面(f,l,U)。 偶尔会遇到和OXTS对于设备短时间(约1秒)的通信中断,我们线性插入所有值,并将最后三个条目设置为-1,以指示缺失的信息。 dataformat.txt提供更多细节。 在开发工具包中提供转换实用程序。
c) Velodyne:
为提高效率,Velodyne使用提供的浮点二进制文件进行扫描和存储C 或MATLAB代码易于分析。 每个点以其(x,y,z)坐标和附加反射值(r)存储。 虽然每次扫描的点数不固定,但平均每个文件/帧的大小是~1.9MB,对应于?120,000个3D点和反射率值。 请注意,Velodyne激光扫描仪在垂直轴(逆时针)周围连续旋转,可考虑时间戳文件。
B. Annotations
对于参考相机视野中的每个动态对象,我们使用3D Velodyne坐标表示的3D边界框轨迹形式提供注释。 我们定义了类别车、卡车、卡车、行人、人(坐)、骑自行车者、电车和杂项。 tracklets存储在date_drive_tracklets.xml每个对象分配一个类及其3D尺寸(高度、宽度、长度)。 如图7所示,我们提供了三维物体的平移和旋转。请注意,我们只提供偏航角,假设其他两个角度接近零。此外,还指定了屏蔽和截断的级别。 开发工具包括使用boost ::serialization 读写图书馆tracklets的C /MATLAB代码。
为了进一步了解我们集的属性,我们提供了包含注释对象的所有序列的统计数据。在图8中示出了两个主要类别“汽车”和“行人”的对象的总数和对象方位。显示每个对象类别、每个图像标签的数量和捕获序列的长度 图9.由GPS / IMU图10中显示了我们平台的自动运动以及序列长度和对象数量的统计数据。
C. Development Kit
KITTI网站提供的原始数据开发工具包2包含C 包装器的MATLA演示代码和一个readme.txt它提供了更多的细节。 在这里,我们将简要讨论最重要的特征。在运行脚本之前,需要使用脚本make.m构建用于将tracklets读入MATLAB结构和单元阵列mex包装器readTrackletsMex.cpp 它从包含tracklet对象序列化的cpp文件夹中包装文件tracklets.h。 在C ++环境中工作时,该文件也可以直接与之连接。
脚本run_demoTracklets.m演示了如何从XML文件中读取3D边界框tracklets并将其投影到摄像机的图像平面上。 3D Velodyne点云在图像平面中的投影在run_demoVelodyne.m中演示。 参见图6的说明。
脚本run_demoVehiclePath.m显示如何使用GPS / IMU数据读取和显示3D车辆轨迹。 它利用convertOxtsToPose(),它将GPS / IMU测量值作为输入,并输出车辆在欧几里德空间的6D姿态。 对于这种转换,我们利用墨卡托投影[10]
地球半径r≈6378137米,标度s = (见上图),(lat,lon)地理坐标。 lat 0表示第一帧坐标的纬度并唯一确定墨卡托比例。
loadCalibrationCamToCam()函数可用于读取四个视频传感器的内部和外部校准参数。其他3D刚体转换可以使用loadCalibrationRigid()进行分析。
D. Benchmarks
除了原始数据外,我们的KITTI网站还提供了多种计算机视觉和机器人任务(如立体声,光流,视觉测距,SLAM,三维物体检测和三维物体追踪)的评估基准。 有关基准和评估指标的详细信息,请参阅[8]。
IV. 传感器校准
我们注意到所有传感器都经过了仔细的同步和校准。 为了避免随时间漂移,我们在录制后每天都校准传感器。 请注意,即使传感器设置没有在两者之间改变,数字差异也是可能的。坐标系定义如图1和图3所示,即:
符号:在下文中,我们用小写字母(a)编写标量,用粗体小写(a)编写矢量,用粗体首字母(A)编写矩阵。 从坐标系统a到坐标系统b的三维刚体变换将用 表示,T表示“变换”。
A. Synchronization同步
为了同步传感器,我们使用Velodyne 3D激光扫描仪的时间戳作为参考,并将每个旋转视为一个框架。 我们在连续旋转的扫描仪底部安装了一个簧片触点,面向前方时触发相机。这最大限度地减少了由动态对象引起的范围和图像观察的差异。 不幸的是,GPS / IMU系统不能以这种方式同步。 相反,由于它提供100 Hz的更新,因此我们会收集特定帧的激光扫描仪时间戳最接近的时间戳信息,导致GPS / IMU与摄像机/ Velodyne数据包之间的最差时间差为5 ms 。 请注意,所有时间戳都可以通过插值方式随时轻松获得定位信息。所有的时间戳已经使用系统时钟记录在主机上。
B. Camera Calibration相机校准
为了本质上和外在地校准摄像机,我们使用[11]中提出的方法。 请注意,所有相机中心都是对齐的,即它们位于相同的x / y平面上。 这很重要,因为它可以让我们共同纠正所有图像。
每天的校准参数按照主要顺序存储在calib_cam_to_cam.txt中,使用以下标记:
这里,i∈{0,1,2,3}是相机索引,其中0代表左灰度,1代表右灰度,2代表左彩色,3代表右边彩色相机。 请注意,变量定义符合我们用于变形图像的OpenCV库。 在使用同步和纠正的数据集时,只有具有"rect"下标的变量是相关的。 请注意,由于枕形失真效应,图像已被裁剪,使得修整后的图像尺寸小于1392×512像素的原始尺寸。
x是3维空间中的点,x =(x,y,z,1)T
第i个相机图像中的点y =(u,v,1)T
二者投影关系为:
第i个投影矩阵。 这里,(竟然不会插入公式,就是上面这个矩阵右上角的那个"bx(i)")表示相对于参考相机0的基线(??)(以米为单位)。注意,为了将参考相机坐标中的3D点x投影到第i像平面上的点y,旋转矩阵Rrect(0)也必须考虑参考摄像机 的情况:
这里Rrect(0)被扩展成4×4的矩阵,增加了第四个0行和第四个0列,Rrect(0)(4,4)这个元素为1。
C. Velodyne and IMU Calibration
通过使用[11]初始化刚体变换,我们已经注册了Velodyne激光扫描仪相对于参考摄像机坐标系(摄像机0)。 接下来,我们根据50个手动选择的对应关系的欧几里德距离以及KITTI立体基准测试中3个顶级立体方法的视差误差的稳健测量,优化了误差标准[8]。 使用Metropolis-Hastings抽样进行优化。
———————————————— 版权声明:本文为CSDN博主「jilijilicao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/cuichuanchen3307/article/details/80596689