如何从KITTI 2015标定文件提取基线与焦距用于深度估计?
从KITTI 2015标定文件提取基线与焦距的方法
背景
我是图像处理新手,需使用KITTI 2015立体图像,通过Census变换和汉明距离实现深度估计,当前需要明确如何从数据集的标定文件中提取基线(baseline)和焦距(focal length)。
标定文件参数概览
calib_cam_to_cam/000nr.txt(nr取值000-199,对应图像对编号)
该文件包含以下参数:
S_xx:图像xx校正前的尺寸,1×2矩阵K_xx:图像xx校正前的3×3内参标定矩阵D_xx:图像xx校正前的1×5畸变向量R_xx:相机xx的3×3旋转外参矩阵T_xx:相机xx的3×1平移外参向量S_rect_xx:图像xx校正后的尺寸,1×2矩阵R_rect_xx:使图像平面共面的3×3校正旋转矩阵P_rect_xx:校正后的3×4投影矩阵
calib_velo_to_cam/000nr.txt
该文件包含以下参数:
R:将3D点从Velodyne坐标系转换到相机坐标系的3×3旋转矩阵T:将3D点从Velodyne坐标系转换到相机坐标系的3×1平移向量delta_f:左右彩色相机焦距的差值,单目相机取值为0delta_c:左右彩色相机主点的差值,单目相机取值为0
具体提取步骤
焦距(Focal Length)
对于校正后的立体图像,直接从calib_cam_to_cam文件的P_rect_xx矩阵中提取:
P_rect_02对应左相机的校正投影矩阵,P_rect_03对应右相机的校正投影矩阵- 投影矩阵的标准结构为:
[f_u, 0, c_u, 0] [0, f_v, c_v, 0] [0, 0, 1, 0] - 焦距可选取
f_u或f_v(KITTI数据集中两者数值近似相等),例如从P_rect_02的第一行第一列数值获取f_u
基线(Baseline)
基线是左右相机光心之间的水平距离,有两种常用计算方式:
- 基于外参向量计算:
- 从
calib_cam_to_cam文件中获取左相机到参考相机的平移向量T_02,以及右相机到参考相机的平移向量T_03 - 计算左右相机的平移差:
T_diff = T_03 - T_02 - 基线长度为该向量X轴分量的绝对值(KITTI立体相机为水平布置,基线沿X轴)
- 从
- 基于投影矩阵快速计算:
- 从
P_rect_03矩阵中取第一行第四列的数值(即P_rect_03[0][3]) - 结合左相机焦距
f_u,通过公式计算:baseline = -P_rect_03[0][3] / f_u
- 从
内容的提问来源于stack exchange,提问作者Vulsan Bianca
相关产品推荐
相关产品推荐

