2

我从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 .

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

可以从这篇文章中找到一个类似的问题,但它的答案对我来说仍然不明显。谁能帮我吗?

4

2 回答 2

3

在这些文件中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,引用他们的论文

这里,i ∈ { 0 , 1 , 2 , 3 } 是相机索引,其中 0 表示左灰度,1 表示右灰度,2 表示左颜色,3 表示右颜色相机。

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

于 2018-05-07T09:52:22.830 回答
-1

这些是以米为单位的基线,以参考摄像机 0 为单位。

这篇文章有更多详细信息: 如何计算 Kitti 校准矩阵?

于 2020-05-08T16:54:19.787 回答