Как рассчитывалась калибровочная матрица Kitti?
Я работаю с другим набором данных (без kitti), но мне нужно преобразовать его в формат набора данных kitti. Не могу понять, как в kitti рассчитывались калибровочные матрицы. Пример:
калибровочная матрица камеры 2 (P2) из calib.txt:
[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 я знаю, что Cam 2 смещается от Cam 0 на 0,06 м отрицательно по оси X. Размер пикселя камеры составляет 4,65 мкм. Но
0.06[m] / (4.65 * 10^(-6)[m]) != 386.1448 [pixels]
Итак, что означает последний столбец? А как рассчитать калибровочную матрицу прямо как в kitti.
1 ответ
Согласно файлу calib_cam_to_cam.txt(calib_time: 09 января 2012 14:00:15), представленному на веб-сайте Китти - http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d, приведенное выше указанная матрица предназначена для камеры 01(P_rect_01). Как упоминалось в документе " Видение встречает робототехнику": набор данных KITTI от Андреаса Гейгера, Филиппа Ленца, Кристофа Стиллера и Ракель Уртасун(Раздел IV B - калибровка камеры), матрица проекции для i-й камеры -
P(i)rect = [[fu 0 cx -fu*bx],
[0 fv cy 0],
[0 0 1 0]]
где bx - базовая линия в метрах относительно эталонной камеры 0. Настройка датчика, показанная на веб-сайте Kitti - http://www.cvlibs.net/datasets/kitti/setup.php, указывает, что базовая линия между камерами 3 и 2 составляет 0,54 м, а базовая линия между кулачком 0 и кулачком 2, а также кулачком 1 и кулачком 3 составляет 0,06 м.
Теперь -fu*bx/fu = -386,1448/718,856 ~= -0,537165 ~= -0,54 (B3-2 - B2-0 + B1-3 = B1-0)