Матрица калибровки камеры как? - PullRequest
1 голос
/ 22 ноября 2010

С помощью этой панели инструментов я выполнял калибровку камеры.

Однако вывод набора инструментов приводит к матричной форме, и, будучи нубом, я не очень понимаю математику.

Матрица имеет следующий вид.

alt text

Где R - матрица вращения, T - вектор трансляции.

И вот результаты, которые я получил от панели инструментов. Выводит значения в пикселях.

-0.980755   -0.136184  -0.139905  217.653207
0.148552    -0.055504  -0.987346  995.948880
0.126695    -0.989128  0.074666  371.963957
0.000000    0.000000  0.000000  1.000000

Используя эти данные, я могу узнать, на сколько повернута моя камера и каково ее расстояние от калибровочного объекта?

Ответы [ 2 ]

3 голосов
/ 22 ноября 2010

Часть расстояния легка. Перевод от источника дается первыми тремя числами в самом правом столбце. Это представляет перевод в направлениях x, y и z соответственно. В вашем примере положение камеры p = (p x , p y , p z ) = (217.653207, 995.948880, 371.963957). Вы можете взять евклидово расстояние между местоположением камеры и местоположением объекта калибровки (c x , c y , c z ). То есть это будет просто sqrt ((p x -c x ) 2 + (p y -c y ) 2 + (p z -c z ) 2 )

Более сложная часть касается вращения, которое фиксируется в верхних левых 3х3 элементах матрицы. Не зная точно, как они к этому пришли, вам не повезло. То есть преобразовать это обратно в Euler Angles нелегко, если вы этого хотите. Однако вы можете преобразовать эти элементы в Quaternion Rotation , который даст вам уникальный единичный вектор и угол для поворота камеры в эту ориентацию. Специфика расчета приведена здесь . Получив вращение кватерниона, вы можете легко применить его к векторам n = (0, 0, 1), up = (0, 1, 0) и right = (1, 0, 0), чтобы получить нормальное (направление камера указана), вверх и вправо векторов. Правый вектор полезен, только если вы заинтересованы в повороте камеры влево или вправо от ее текущего положения.

1 голос
/ 23 ноября 2010

Я предполагаю, что в коде используется форма ' standard ' - тогда вы найдете больше подробностей в документации opencv или их книге.

...