Для этого вам нужно знать внутренние параметры камеры.
Рассматривает плоскость z = 0. Точка
X=(x,y,0,1)'
проецируется на изображение как
p=P*X.
Теперь используйте разложение
P=K[R t],
где K - калибровочная матрица, а [R t] - внешние параметры. Поскольку z = 0, вектор третьего столбца R умножается на ноль. Теперь мы можем опустить 3-й столбец, чтобы получить
p=K*[r1 r2 t]*(x,y,1)=H*(x,y,1),
где H - плоская гомография.
Вы уже вычислили H, например, известные точки. Первый и второй столбец R и вектор t теперь можно восстановить
[r1 r2 t]=inv(K)*H.
Убедитесь, что r1 и r2 - единичная длина, тогда t - правильный вектор перевода. Вектор третьего столбца R может быть восстановлен, поскольку R ортогонально, например, с использованием перекрестного произведения.
r3=cross(r1,r2).
Поскольку H является измерением, вычисленные вами значения r1 и r2 не являются точными. Вы можете использовать SVD для получения матрицы вращения, ближайшей к измерению. Затем вы можете составить проекционную матрицу
P=K[r1 r2 r3 t]
, который проецирует любую 3D-точку в системе координат на основе вашей 2D-системы координат гомографии.
Вот некоторый материал курса, который описывает эту ситуацию.
https://www.dropbox.com/s/qkulg4j64lyn0qa/2018_proj_geo_for_cv_projcv_assignment.pdf?dl=0
Вот связанный вопрос.
Вычисление положения камеры с матрицей гомографии на основе 4 копланарных точек
Как отметил @nbsrujan (спасибо), для тех, кто использует OpenCV, есть функция , которая может разложить гомографию на матрицы перевода и вращения с учетом встроенных функций.