У меня есть изображение с 2D-проекцией (зеленая) 3D-квадрата (синее), как фотография комнаты, где оригинальный квад в 3D-пространстве является полом этой комнаты. Я знаю 2D XY положение точек ABCD (предоставлено пользователем).
http://i41.tinypic.com/rr59xt.png
Зная ширину, высоту и внутренние углы четырехугольника в трехмерном пространстве, я хочу получить исходное расположение камеры и объекта, которое создало эту проекцию. Так что, насколько я понимаю, это точная проблема, решаемая AR-инструментами при отображении 3D-маркеров на 2D-изображениях, и может быть решена с помощью компланарного алгоритма POSIT. Я использую код из AForge.NET Framework (http://www.aforgenet.com/articles/posit/), который в результате дает мне матрицу вращения и вектор перевода.
Мое первое замешательство: Получаю ли я матрицу вращения и вектор перевода в мировой системе координат с (0,0,0) в качестве начала координат (т.е. моя камера находится в положении 0,0,0 с 0,0,0 оборота)
Мое второе заблуждение: Я помещаю четырехугольник того же размера, что и исходный (синий на первом изображении) на плоскость XY, как я могу преобразовать свою матрицу вращения и вектор перевода, сгенерированный CoPOSIT, также в чтобы получить положение и поворот камеры, чтобы этот квадрат соответствовал исходной 2D-проекции (зеленый прямоугольник на первом изображении). Как и на последнем изображении, где синий полупрозрачный трехмерный квадратор совмещает пол.
http://i44.tinypic.com/zl5cmu.png
http://i44.tinypic.com/2vru6n4.png