KITTI 校准文件中的参数格式

Posted

技术标签:

【中文标题】KITTI 校准文件中的参数格式【英文标题】:Format of parameters in KITTI's calibration file 【发布时间】:2018-05-07 09:03:54 【问题描述】:

我从part odometry of KITTI访问了校准文件,其中一个校准文件的内容如下:

P0: 7.188560000000e+02 0.000000000000e+00 6.071928000000e+02 0.000000000000e+00 0.000000000000e+00 7.188560000000e+02 1.852157000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P1: 7.188560000000e+02 0.000000000000e+00 6.071928000000e+02 -3.861448000000e+02 0.000000000000e+00 7.188560000000e+02 1.852157000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P2: 7.188560000000e+02 0.000000000000e+00 6.071928000000e+02 4.538225000000e+01 0.000000000000e+00 7.188560000000e+02 1.852157000000e+02 -1.130887000000e-01 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 3.779761000000e-03
P3: 7.188560000000e+02 0.000000000000e+00 6.071928000000e+02 -3.372877000000e+02 0.000000000000e+00 7.188560000000e+02 1.852157000000e+02 2.369057000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 4.915215000000e-03
Tr: 4.276802385584e-04 -9.999672484946e-01 -8.084491683471e-03 -1.198459927713e-02 -7.210626507497e-03 8.081198471645e-03 -9.999413164504e-01 -5.403984729748e-02 9.999738645903e-01 4.859485810390e-04 -7.206933692422e-03 -2.921968648686e-01

我可以得到P0,P1代表黑白相机和P2,P3彩色相机。据我了解,相机内在的常见形状是

fx 0  cx
0  fy cy
0  0  1 .

所以我无法弄清楚每行和标签Tr之后的最后一行中剩余的三个参数(我猜是用于失真校正)的含义。

可以从this post 找到类似的问题,但我仍然不知道答案。谁能帮帮我?

【问题讨论】:

【参考方案1】:

在这些文件中,P1P0 等不是相机内在函数,而是投影矩阵,由类似的东西定义

P1=calibration_matrix * [R_1 | T_1]  

这意味着它们的大小为3*4。我不确定相应的定义是否是上面的定义,或者您是否必须使用(嗯,这是一个等效的定义,或多或少......)

P1=calibration_matrix*[R_1.transpose() | -R_1.transpose()*T_1] 

但我认为只需读取/显示数据即可轻松检查。

至于Tr,是所有摄像头位置的串联。你有四个摄像头P0, ..., P3,而Tr12 元素,所以前三个是P0 的翻译,后三个是P1 的翻译等等。我不确定是每个都表示为T_i 还是-R_i.transpose()*T_i。我认为最安全的方法是尝试通过使用数据来检查这一点。

至于为什么会有四个摄像头P0, ...,P3,引用他们的paper:

这里, 一世 ∈ 0 , 1 , 2 , 3 是相机索引,其中 0 代表 左灰度, 1 正确的灰度, 2 左边的颜色和 3 正确的彩色相机。

我认为这也解释了为什么它们的投影矩阵彼此接近。

【讨论】:

但是为什么投影矩阵在结合相机外在因素(又名旋转和平移)后保持不变。或者,每一行只表示第一帧的投影矩阵? 这些在我看来并不固定...看看第四列,或者最后一列。 嗨,我的信息是,四个中的每个投影矩阵都应该随着每个相机的自我运动而变化。换句话说,每张图像对应一个单独的投影矩阵。 另外,除了第4、8、12列之外,所有参数都一样。 @Finley 我编辑了答案。此外,我认为您最好浏览一下我链接到的论文。【参考方案2】:

这些是 基线,以米 w.r.t 为单位。参考相机 0。

这篇文章有更多细节: How Kitti calibration matrix was calculated?

【讨论】:

你能不能稍微扩展一下你的答案?

以上是关于KITTI 校准文件中的参数格式的主要内容,如果未能解决你的问题,请参考以下文章

射频校准原理和设置

OpenCV - 鱼眼校准值(重用保存在 JSON 文件中的值)

OpenCV每日函数 相机校准calibrateCamera函数

OpenCV中的相机失真内外参不失真图像相机校准

iPhone 5s 相机校准参数

在实时视频捕获应用程序中使用相机校准参数