Формат параметров в файле калибровки KITTI
Я получил доступ к файлам калибровки из одометрии детали 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
,
Подобный вопрос можно найти в этом посте, но ответы на него до сих пор не очевидны для меня. Может кто-нибудь мне помочь?
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
Процитирую их статью:
Здесь i ∈ { 0, 1, 2, 3 } - индекс камеры, где 0 представляет левую шкалу серого, 1 - правую шкалу серого, 2 - левый цвет и 3 - правую камеру цвета.
Я думаю, это также объясняет, почему их матрицы проекций близки друг к другу.
Это базовые линии в метрах WRT эталонной камеры 0.
В этом посте есть более подробная информация: как рассчитывалась калибровочная матрица Kitti?