Получите ось вращения из матрицы вращения и вектора перемещения в OpenCV

У меня есть шахматная доска на двух изображениях с некоторым углом поворота. Найдем угол поворота второго изображения относительно первого изображения.

Для этого я нашел матрицу вращения (3x3) и матрицу перевода (3x1) этих объектов.

Как я могу найти угол поворота и ось вращения объекта, используя эти матрицы?


person aranga    schedule 17.09.2012    source источник
comment
Если вам просто нужно представление угла оси вашей матрицы вращения, тогда вам вообще не нужна матрица перевода. Вы можете найти преобразование где угодно в Интернете, например в разделе 2.3 Преобразование из и в угол оси Статья в Википедии о матрицах вращения.   -  person Hammer    schedule 17.09.2012


Ответы (2)


Для каждого типа преобразования между представлениями вращения у вас есть этот веб-сайт евклидово пространство.

Вы найдете теорию и примеры кода:

  • Матрица поворота в кватернион: ссылка

  • Угол между кватернионом и осью: ссылка

  • Вращения в целом и все представления: ссылка

И в отношении вашего вопроса у вас есть угол оси. Если у вас есть матрица вращения R (3x3), вы можете получить угол и ось таким образом (см. Угол поворота матрицы к оси):

  • angle = acos(( R00 + R11 + R22 - 1)/2);

  • Ось x, y, x:

    х = (R21 - R12) / sqrt ((R21 - R12) ^ 2 + (R02 - R20) ^ 2 + (R10 - R01) ^ 2);

    y = (R02 - R20) / sqrt ((R21 - R12) ^ 2 + (R02 - R20) ^ 2 + (R10 - R01) ^ 2);

    z = (R10 - R01) / sqrt ((R21 - R12) ^ 2 + (R02 - R20) ^ 2 + (R10 - R01) ^ 2);

person Jav_Rock    schedule 18.09.2012
comment
Привет .. jav, у меня есть еще один вопрос. Мой объект был помещен параллельно колесу. Когда колесо движется, мой объект также перемещался с использованием матрицы вращения. Я вычислял угол и ось вращения. Теперь вопрос в том, как это сделать. рассчитать угол поворота центра колеса или шпинделя. i47.tinypic.com/344vck6.jpg - person aranga; 23.09.2012

Уже работая с openCV, я бы порекомендовал использовать метод Rodrigues: : Rodrigues (src, dst, jacobian), который вычисляет вектор вращения, если у вас есть матрица вращения для аргумента, и наоборот.

person jochen    schedule 23.01.2019