kitti数据集坐标转换

目录

基本情况

1、kitti数据采集平台

2、表示方法

3、kitti 激光雷达、摄像头数据融合:

4、在论文中所述:

5、 传感器标定


基本情况

参考了以下文章
kitti数据集标定文件解析
更详细的解释见文章:
Vision meets Robotics: The KITTI Dataset

1、kitti数据采集平台

KITTI数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,一个Velodyne64线3D激光雷达,4个光学镜头,以及1个GPS导航系统。图示为传感器的配置平面图,为了生成双目立体图像,相同类型的摄像头相距54cm安装。由于彩色摄像机的分辨率和对比度不够好,所以还使用了两个立体灰度摄像机,它和彩色摄像机相距6cm安装。见下图,存在的三个坐标系的方向分别为:

  • 相机:x 轴向右,y 轴向下,z 轴向前
  • Velodyne(激光雷达):x 轴向前,y 轴向左,z轴向上
  • GPS / IMU:x 轴向前,y 轴向左,z 轴向上

在这里插入图片描述

在这里插入图片描述
作者将所有传感器都经过仔细的校准和同步.为了避免随时间出现误差,作者会在录制后每天对传感器进行校准.即使两者之间的传感器设置没有更改,也有可能会存在数值差异.

2、表示方法

  • S_xx:1x2 矫正前的图像xx的大小
  • K_xx:3x3 矫正前摄像机xx的校准矩阵
  • D_xx:1x5 矫正前摄像头xx的失真向量
  • R_xx:3x3 (外部)的旋转矩阵(从相机0到相机xx)
  • T_xx:3x1 (外部)的平移矢量(从相机0到相机xx)
  • S_rect_xx:1x2 矫正后的图像xx的大小
  • R_rect_xx:3x3 纠正旋转矩阵(使图像平面共面)
  • P_rect_xx:3x4 矫正后的投影矩阵 (内参矩阵,前面第一行为前面四个数据,依次三行)

在此,xx∈{0,1,2,3}是摄像机索引,其中0表示左侧灰度,1表示右侧灰度,2表示左侧彩色,3表示右侧彩色摄像机。把灰度摄像机0看做参考相机。所有相机中心均对齐,即它们位于同一x / y平面上。这很重要,因为它使我们可以共同校正所有图像。请注意,变量定义与我们用于扭曲图像的OpenCV库兼容。当使用同步和校正后的数据集时,只有带有rect-下标的变量才是相关的。

3、kitti 激光雷达、摄像头数据融合:

要将Velodyne坐标中的点x投影到左侧的彩色图像中y:
使用公式:y = P_rect_2 * R0_rect *Tr_velo_to_cam * x
将Velodyne坐标中的点投影到右侧的彩色图像中:
使用公式:y = P_rect_3 * R0_rect *Tr_velo_to_cam * x
Tr_velo_to_cam * x :是将Velodyne坐标中的点x投影到编号为0的相机(参考相机)坐标系中
R0_rect *Tr_velo_to_cam * x :是将Velodyne坐标中的点x投影到编号为0的相机(参考相机)坐标系中,再修正
P_rect_2 * R0_rect *Tr_velo_to_cam * x :是将Velodyne坐标中的点x投影到编号为0的相机(参考相机)坐标系中,再修正,然后投影到编号为2的相机(左彩色相机)
注意:
P_rect_2 (标号为2的摄像机的内参矩阵,只和相机内部参数有关,比如焦距和光心位置)
R0_rect(相机0的矫正旋转矩阵)
Tr_velo_to_cam(点云到相机的外参矩阵)

4、在论文中所述:

修正后的空间三维点云x =(x,y,z,1)^T投影到第i个摄像机图像中的点y =(u,v,1)^T的投影为
在这里插入图片描述
其中
在这里插入图片描述
而将参考相机坐标中的3D点x投影到第i个图像平面上的点y,还需要考虑校正旋转矩阵R0_rect,如下式:
在这里插入图片描述
其中R0_rect经R0_rect(4,4)= 1扩展为4×4矩阵.
最后,如果要把激光雷达坐标中的点转换到参考相机坐标上,要使用下列公式:
在这里插入图片描述
其中Tr_velo_to_cam 为:
在这里插入图片描述

  • R_velo_to_cam为3x3旋转矩阵
  • T_velo_to_cam为3x1平移向量

5、 传感器标定

(1)calib_cam_to_cam.txt (P_rect_xx)

相机的标定,即为通过某个已知的目标,求取相机内参矩阵的过程。最常用的标定目标就是棋盘格。

准备好棋盘格照片之后采用matlab 自带的tools Camera Calibrator进行标定

单目摄像机需要标定的参数双目都需要标定

双目摄像机比单目摄像机多标定的参数(R和T)主要是描述两个摄像机相对位置关系的参数,这些参数在立体校正和对极几何中用处很大

(2)calib_velo_to_cam.txt

主要是得到点云到图像的旋转平移矩阵:Tr_velo_to_cam = (R | T)

6、 KITTI目标检测数据集calib文件格式:
如下图:
在这里插入图片描述
The coordinates in the camera coordinate system can be projected in the image by using the 3x4 projection matrix in the calib folder, where for the left color camera for which the images are provided, P2 must be used.

To project a point from Velodyne coordinates into the left color image,
you can use this formula: x = P2 * R0_rect * Tr_velo_to_cam * y
For the right color image: x = P3 * R0_rect * Tr_velo_to_cam * y

Note: All matrices are stored row-major, i.e., the first values correspond to the first row. R0_rect contains a 3x3 matrix which you need to extend to a 4x4 matrix by adding a 1 as the bottom-right element and 0’s elsewhere. Tr_xxx is a 3x4 matrix (R|t), which you need to extend to a 4x4 matrix in the same way!

猜你喜欢

转载自blog.csdn.net/shyjhyp11/article/details/113308914