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】:在这些文件中,P1
、P0
等不是相机内在函数,而是投影矩阵,由类似的东西定义
P1=calibration_matrix * [R_1 | T_1]
这意味着它们的大小为3*4
。我不确定相应的定义是否是上面的定义,或者您是否必须使用(嗯,这是一个等效的定义,或多或少......)
P1=calibration_matrix*[R_1.transpose() | -R_1.transpose()*T_1]
但我认为只需读取/显示数据即可轻松检查。
至于Tr
,是所有摄像头位置的串联。你有四个摄像头P0, ..., P3
,而Tr
有12
元素,所以前三个是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 文件中的值)