Извлечь проективную годовую гомографию с двух карт глубины Kinect

Учитывая два последовательных облака 3D-точек 1 и 2 (не все облако, скажем, 100 баллов, выбранных из облака с GoodFeaturestRestomatch), полученным из глубины Kinect, я хочу вычислить гомографию камеры от 1 До 2. Я понимаю, что это проектное преобразование, и оно уже было сделано многими людьми: здесь (слайд 12) , здесь (слайд 30) и здесь Что кажется классической статьей . Моя проблема заключается в том, что в то время как я компетентный программист, у меня нет навыков математики или трига, чтобы превратить один из этих методов в код. Поскольку это не простая проблема, я предлагаю большую щедрость для кода, который решает следующую проблему:

камера находится в начале происхождения, глядя в направлении Z, на нерегулярном пентаэдре [A, B, C, D, D, D, E, F]: camera position 1

Камера перемещает -90 мм влево (x), + 60 мм вверх (y), + 50 мм вперед (z) и вращается на 5 ° вниз, 10 ° справа и -3 ° против часовой часовой стрелки: camera position 2

Вращавшая всю сцену так, чтобы камера вернулась в исходное положение, позвольте мне определить локации вершин в 2: enter image description here

Файлы MAX 3DS, используемые для приготовления этого MAX 1 , MAX 2 и MAX 3

Вот положения вершин до и после, внутри , так далее.: vertices and intrinsics

Обратите внимание, что вершины Camera2 не являются точными 100%, есть немного преднамеренного шума.

Вот числа в файле Excel

код, который мне нужен, который должен быть легко переведен в VB.NET или C #, с помощью Emgucv и OpenCV, где это необходимо, принимает 2 набора вершин и внутри и приводит к этому Выход:

Camera 2 is at -90 X, +60 Y, +50 Z rotated -5 Y, 10 X, -3 Z.
The homography matrix to translate points in A to B is:
a1, a2, a3
b1, b2, b3
c1, c2, c3

Я не знаю, если гомография 3x3 или 3x4 для однородных координат, но она должна позволить мне перевести вершины от 1 до 2.

Я также не знаю значения A1, A2, так далее; Это то, что вы должны найти>; -) [) [) [)

500 Bounty предлагает «заменяет» щедрость, которую я предложил это очень похожий вопрос , я добавил комментарий там, указывающий на этот вопрос.

Редактировать2: Мне интересно, если я задаю этот вопрос, вводит в заблуждение. Мне кажется, что проблема - это больше устойчивости точечного облака, чем у геометрии камеры (если вы знаете, как перевести и повернуть до B, вы знаете трансформацию камеры и вице-версию). Если это так, то, возможно, решение может быть получено с алгоритмом Kabsch или что-то подобное

15
задан Community 23 May 2017 в 12:25
поделиться

0 ответов