Найти разность векторов перевода двух маркеров Aruco - PullRequest
0 голосов
/ 19 мая 2019

Я работаю с RGBD-камерой. Мне нужно научиться объединять 2 разных изображения, но проблема в том, что у каждого облака точек есть своя новая система координат. Чтобы отслеживать изменения камеры, я использую маркеры Aruco. Я сохраняю первое изображение с маркером Аруко, как есть. А также сохранить данные из маркера (матрицы поворота и перевода). Затем я меняю положение камеры и делаю новую фотографию с тем же маркером. Я сохраняю данные нового маркера (new_rotation, new_translation). Мне нужно понять, как изменилось положение камеры, изменив данные с маркера. Если я найду его, я смогу применить эту разницу в повороте и перемещении к новому захваченному облаку точек, чтобы объединить его с предыдущим.

Я хочу найти изменения положения камеры и применить эти изменения к новому облаку точек, чтобы преобразовать его систему координат в старую (первый снимок).

Mat rotationMatrix(3,3, CV_64F, Scalar(1));
rotationMatrix = rotation * new_rotation.inv();

Mat translationMatrix = Mat::zeros(Size(1,3), CV_64F);
translationMatrix = translation - rotationMatrix * new_translation;

new_point = rotationMatrix * point_xyz + translationMatrix;

Я знаю, что матрица вращения верна. Проблема с матрицей перевода. Это неправильный вектор.

...