【KITTI数据集中Raw_Data数据标定文件中的参数关系解读】

KITTI数据集中Raw_Data数据标定文件中的参数关系解读

上一节本人将KITTI Odometry数据集中的参数文件进行了解释。本节主要针对一些做融合slam的人,将Raw_Data数据标定文件中的参数按照自己的理解做如下阐述。其中,所讲之处如有错误,欢迎各位批评指正。

一、下载Raw_Data文件

我们从官网下载原始的Raw_Data数据:
在这里插入图片描述

下载下来以后,我们拿synced+rectified data版本数据为例进行参数文件解读,解压数据包可以发现数据以以下结构排列:

 
└── 2011_10_03
    ├── 2011_10_03_drive_0047_sync
    │   ├── image_00
    │   │   ├── data
    │   │   └── timestamps.txt
    │   ├── image_01
    │   │   ├── data
    │   │   └── timestamps.txt
    │   ├── image_02
    │   │   ├── data
    │   │   └── timestamps.txt
    │   ├── image_03
    │   │   ├── data
    │   │   └── timestamps.txt
    │   ├── oxts
    │   │   ├── data
    │   │   ├── dataformat.txt
    │   │   └── timestamps.txt
    │   └── velodyne_points
    │       ├── data
    │       ├── timestamps_end.txt
    │       ├── timestamps_start.txt
    │       └── timestamps.txt
    ├── calib_cam_to_cam.txt
    ├── calib_imu_to_velo.txt
    └── calib_velo_to_cam.txt

二、calib.txt文件内容解读

首先,对于calib_imu_to_velo和calib_velo_to_cam文件结构相对简单,内部仅包含了一个矩阵,分别表示imu到雷达坐标系的变换以及雷达到未矫正相机0的变换。
随后,对于calib_cam_to_cam文件内部较为复杂如图所示:

在这里插入图片描述
其中下标00号代表左边灰度相机、01号代表右边灰度相机、02号代表左边彩色相机、03号代表右边彩色相机;S_i代表1x2 矫正前的图像i的大小、K_i代表3x3 矫正前摄像机i的校准矩阵、D_i代表1x5 矫正前摄像头i的失真向量、R_i代表3x3(外部)的旋转矩阵(从相机0到相机i)、T_i代表3x1(外部)的平移矢量(从相机0到相机i)、S_rect_i代表1x2 矫正后的图像i的大小、R_rect_i代表3x3 纠正旋转矩阵(使图像平面共面)、P_rect_i代表3x4 矫正后的投影矩阵。
虽然calib_cam_to_cam包含的参数较多,但是对于我们而言,在计算外参和内参过程中仅用到了R_rect_i和P_rect_i。所以我们仅对各个相机的两个矫正矩阵进行解读即可。对于每个相机i而言,由于安装误差,通常相机坐标系不在一个直线上,为了解决这个问题,因此引入矫正矩阵。先利用R_rect_0对雷达到未矫正相机0进行旋转初步修正:
Ttemp_velo= Rrect_0 * Tunrect_cam0_velo
随后,同一直线理想(等同于最终修正)的相机0、1、2、3均与初步修正相机0存在平移偏差。因此P_rect_i可以理解为理想(最终修正)相机i的内参矩阵*初步修正相机0相对于理想(最终修正)相机i的外参矩阵即

P_rect_i= ∣ f x 0 c x 0 0 f y c y 0 0 0 1 0 ∣ \begin{vmatrix} fx & 0 & cx & 0\\ 0 & fy & cy & 0\\ 0 & 0 & 1 & 0 \end{vmatrix} fx000fy0cxcy1000 * ∣ 1 0 0 T x 0 1 0 0 0 0 1 0 0 0 0 1 ∣ \begin{vmatrix} 1 & 0 & 0 & Tx\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1& 0\\ 0 & 0 & 0 & 1 \end{vmatrix} 100001000010Tx001 = ∣ f x 0 c x f x ∗ T x 0 f y c y 0 0 0 1 0 ∣ \begin{vmatrix} fx & 0 & cx & fx*Tx\\ 0 & fy & cy & 0\\ 0 & 0 & 1 & 0 \end{vmatrix} fx000fy0cxcy1fxTx00
所以,对于相机0、1、2、3而言,他们最终修正的内参矩阵K_cami=P_rect_i(0:3, 0:3),初步修正相机0相对于理想(最终修正)相机i的外参矩阵Tcami_temp=

∣ 1 0 0 P r e c t i ( 0 , 3 ) / P r e c t i ( 0 , 0 ) 0 1 0 0 0 0 1 0 0 0 0 1 ∣ \begin{vmatrix} 1 & 0 & 0 & Precti(0, 3)/Precti(0, 0)\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1& 0\\ 0 & 0 & 0 & 1 \end{vmatrix} 100001000010Precti(0,3)/Precti(0,0)001

所以我们利用calib文件得到四个相机内参数的同时,还可以得到雷达、imu与四个最终修正相机之间的外参数即:

Tcami_velo=Tcami_temp*Ttemp_velo

Tcami_imu=Tcami_velo*Tvelo_imu

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值