image-processing - Kitti校准矩阵是如何计算的?

标签 image-processing calibration kitti

我使用其他数据集(没有 kitti),但我需要将其转换为 kitti 数据集格式。我无法理解如何在 kitti 中计算校准矩阵。例子:

来自 calib.txt 的相机 2 (P2) 校准矩阵:

[718.856     0     607.1928  -386.1448]
[   0     718.856  185.2157      0    ]
[   0        0        1          0    ]

我知道
[718.856     0     607.1928]
[   0     718.856  185.2157]
[   0        0        1    ]

-- 是 K - 相机内在的。但最后一列是什么意思?

我建议,它是第 0 个相机的偏移量,以像素为单位。
来自 kitti sensor setup ,我知道凸轮 2 与凸轮 0 的 X 轴负偏移 0.06m。
Camera像素大小为 4.65um。但
0.06[m] / (4.65 * 10^(-6)[m]) != 386.1448 [pixels]

那么最后一列是什么意思呢?以及如何像在 kitti 中一样计算校准矩阵。

最佳答案

根据 Kitti 网站上提供的文件 calib_cam_to_cam.txt(calib_time: 09-Jan-2012 14:00:15) - http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d ,上述矩阵适用于 Camera 01(P_rect_01) 0x79204。正如 Andreas Geiger、Philip Lenz、Christoph Stiller 和 Raquel Urtasun(第 IV B 部分 - 相机校准),第 i 个相机的投影矩阵 -

P(i)rect = [[fu 0  cx  -fu*bx],
            [0  fv  cy  0],
            [0   0   1  0]]

其中,bx 是以米为单位的基线 w.r.t.引用相机 0。Kitti 网站上显示的传感器设置 - http://www.cvlibs.net/datasets/kitti/setup.php 表示凸轮 3 和凸轮 2 之间的基线为 0.54m,凸轮 0 和凸轮 2 之间的基线以及凸轮 1 和凸轮 3 之间的基线为 0.06m。

现在,-fu * BX/复= -386.1448/718.856〜= -0.537165〜= -0.54( 3-2 - 2-0 + 1-3 = 1-0)

关于image-processing - Kitti校准矩阵是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58918538/

相关文章:

image-processing - KITTI Stereo 2015 数据集使用的两个彩色相机的外部参数和内部参数是多少

algorithm - MATLAB 中的 rgb2ind() 使用什么算法?

c# - 文件去斑 - OCR

c++ - OpenCV 立体校准旋转矩阵

bluetooth-lowenergy - 使用定位应用程序进行 Radius Networks 信标校准

computer-vision - 视觉里程计,Kitti 数据集

c++ - OpenCV/C++:warpPerspective产生过度扭曲的结果

python - OpenCV 硬币检测和自动结果检查

r - 后验概率的校准

image - 使用RGB图像和PointCloud,如何从PointClouds生成深度图? (Python)