Как понять файлы калибровки камеры KITTI?
Я работаю над набором данных KITTI.
Я загрузил набор данных объекта (левый и правый) и калибровочные матрицы камеры набора объектов.
Я хочу использовать информацию о стерео.
Но я не знаю, как получить Внутреннюю Матрицу и R|T Матрицу двух камер. И я не понимаю, что означают файлы калибровки.
Содержание файлов калибровки:
P0:
7.070493000000e+02 0.000000000000e+00 6.040814000000e+02 0.000000000000e+00
0.000000000000e+00 7.070493000000e+02 1.805066000000e+02 0.000000000000e+00
0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P1:
7.070493000000e+02 0.000000000000e+00 6.040814000000e+02 -3.797842000000e+02
0.000000000000e+00 7.070493000000e+02 1.805066000000e+02 0.000000000000e+00
0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P2:
7.070493000000e+02 0.000000000000e+00 6.040814000000e+02 4.575831000000e+01
0.000000000000e+00 7.070493000000e+02 1.805066000000e+02 -3.454157000000e-01
0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 4.981016000000e-03
P3:
7.070493000000e+02 0.000000000000e+00 6.040814000000e+02 -3.341081000000e+02
0.000000000000e+00 7.070493000000e+02 1.805066000000e+02 2.330660000000e+00
0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 3.201153000000e-03
R0_rect:
9.999128000000e-01 1.009263000000e-02 -8.511932000000e-03
-1.012729000000e-02 9.999406000000e-01 -4.037671000000e-03
8.470675000000e-03 4.123522000000e-03 9.999556000000e-01
Tr_velo_to_cam:
6.927964000000e-03 -9.999722000000e-01 -2.757829000000e-03 -2.457729000000e-02
-1.162982000000e-03 2.749836000000e-03 -9.999955000000e-01 -6.127237000000e-02
9.999753000000e-01 6.931141000000e-03 -1.143899000000e-03 -3.321029000000e-01
Tr_imu_to_velo:
9.999976000000e-01 7.553071000000e-04 -2.035826000000e-03 -8.086759000000e-01
-7.854027000000e-04 9.998898000000e-01 -1.482298000000e-02 3.195559000000e-01
2.024406000000e-03 1.482454000000e-02 9.998881000000e-01 -7.997231000000e-01
1 ответ
От README,
Zip-архив калибровки датчика содержит файлы, хранящие матрицы в выровненном порядке, что означает, что первые значения соответствуют первой строке:
calib_cam_to_cam.txt: калибровка камеры от камеры
- S_xx: размер изображения 1х2 хх до выпрямления
- K_xx: 3х3 калибровочной матрицы камеры хх до выпрямления
- D_xx: 1x5 вектор искажения камеры хх до выпрямления
- R_xx: матрица вращения 3x3 камеры xx (внешняя)
- T_xx: вектор трансляции 3x1 камеры xx (внешний)
- S_rect_xx: 1x2 размер изображения xx после выпрямления
- R_rect_xx: выпрямление вращения 3x3, чтобы сделать плоскости изображения копланарными
- P_rect_xx: матрица проекции 3x4 после выпрямления
Примечание. При использовании этого набора данных вам, скорее всего, потребуется доступ только к P_rect_xx, поскольку эта матрица действительна для выпрямленных последовательностей изображений. поддерживается
См. https://medium.com/test-ttile/kitti-3d-object-detection-dataset-d78a762b5a4
Матрицы Px проецируют точку в ректифицированных координатах привязанной камеры на изображение camera_x. camera_0 координаты ссылка камеры. R0_rect является вращение выпрямляющего для справки координат (выпрямление делает изображения нескольких камер лежат на тот же план). Tr_velo_to_cam отображает точку в облаке точек координат ссылки координат.
Сделаю здесь 2 теста. Первый тест - проецировать трехмерные ограничивающие рамки из файла этикетки на изображение. Второй тест - спроецировать точку в координатах облака точек на изображение. Алгебра проста в следующем. Первое уравнение для проектирования коробки bouding 3D в ссылочной камере координате с camera_2 изображения. Второе уравнение проецирует координату велодина на изображение камеры_2.
y_image = P2 * R0_rect * R0_rot * x_ref_coord y_image = P2 * R0_rect * Tr_velo_to_cam * x_velo_coord
В приведенном выше примере R0_rot - это матрица вращения, отображающая координату объекта в координату ссылки ".