Наконец, у меня есть решение моей проблемы:
Если оси БПЛА отличаются от осей камеры, мы должны найти матрицу R1, которая преобразует оси БПЛА в камеры, и другую, которая выполняет та же задача, наоборот, от оси камеры до оси БПЛА R2.
Гомография возвращает значение сдвига и поворота, которое должно быть применено к первому ИЗОБРАЖЕНИЮ, чтобы получить второе. Но мы хотим позу камеры, а не изображение. Так, например, если ось z указывает на объект, у которого стрелка направлена вверх, поворот ИЗОБРАЖЕНИЯ на 90 ° вокруг этой передней оси сделает стрелку направленной. Но это не тот поворот, который должна делать камера, чтобы стрелка указывала вправо. Если вы хотите, чтобы стрелка указывала вправо, вы должны повернуть камеру на -90º вдоль этой же оси. В заключение, движение камеры является инверсией изображения, поэтому вращение камеры будет инверсией вращения гомографии, а перемещение будет равно -1 * (homography_traslation) * scale_factor.
Предположим, что у нас есть вращение R между исходным изображением и конечным. Если мы хотим получить EulerAngles (предпочтительно называемый Tait-Brian) как Rotz * Roty * Rotx БПЛА, мы должны вычислить EulerAngles для R1 * inv (R) * R2. Это R умножение всех промежуточных вращений между кадрами, так что R = Rinit * ... * Rend