opencv эстимейт жесткого преобразования: как получить глобальный масштаб?

Я использую openCV эстимейт RigidTransform для стабилизации серии видеокадров, что работает очень хорошо.

Функция возвращает матрицу преобразования 2×3 M:

|  a_11 a_12 b_1 |
| -a_12 a_11 b_2 |

Насколько я понимаю b элементы представляют перевод, а a элементы используются для масштабирования и вращения.

То, что я хотел бы сделать, это получить глобальный масштаб от M — значение, которое представляет коэффициент масштабирования камеры. Как я могу рассчитать это правильно из a ценности?


Чтобы уточнить немного, что я хочу получить, вот пример. Допустим, valuRigidTransform вычисляет матрицу M преобразования для второго нижеприведенного кадра относительно первого кадра:

Глобальный коэффициент масштабирования в этом случае должен быть равным 2. Мой вопрос: как получить это значение из M?

2

Решение

Хорошо, после дополнительного поиска я нашел отличный ответ здесь: https://math.stackexchange.com/questions/13150/extracting-rotation-scale-values-from-2d-transformation-matrix

Где «масштабирование» представлено s_x и s_y. Эти два значения будут в основном равны (так как зум в видео, снятом камерами, одинаков в обоих направлениях), поэтому я могу выбрать одно из них.

2

Другие решения


По вопросам рекламы [email protected]