3D Жесткая регистрация - Аналитическое решение с минимальными точками - Как построить матрицы вращения? - PullRequest
2 голосов
/ 14 марта 2012

У меня есть два набора из трех (неколлинеарных) точек в трех измерениях. Я знаю соответствие между точками - то есть набор 1 равен {A, B, C}, а набор 2 равен {A ', B', C '}.

Я хочу найти комбинацию перемещения и поворота, которая преобразует A 'в A, B' в B и C 'в C. Примечание: масштабирование не используется. (Я знаю это наверняка, хотя мне любопытно, как с этим справиться, если бы он существовал.)

Я нашел то, что похоже на твердое объяснение , пытаясь понять, как это сделать. Раздел 2 (стр. 3), озаглавленный «Регистрация в трех точках», - это то, что мне нужно сделать. Я прекрасно понимаю шаги с 1 по 4 и с 6 по 7, но 5 поставил меня в тупик.

5. Build the rotation matrices for both point sets:
    Rl = [xl, yl, zl], Rr = [xr, yr, zr]

Как мне это сделать ???

Позже я планирую реализовать решение наименьших квадратов, но сначала я хочу это сделать.

Ответы [ 2 ]

1 голос
/ 14 марта 2012

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

обновление: столбец 1 Rl - это ось x, построенная ранее ([0,1,0]с точки зрения оригинальных осей).так что я представляю, что x, y и z являются осями, как векторы столбцов.что имеет смысл ... и я предполагаю, что Rr то же самое в другой системе координат.

это ясно?

0 голосов
/ 14 марта 2012

Я сделаю удар.

каждая точка получает уравнение: a_1x + b_1y + c_1z = d_1, верно, поэтому сделайте 2 матрицы 3x3 из значений a, b, c.

тогда, поскольку каждая точка не зависит друг от друга, вы можете найти для преобразования между двумя матрицами, A и A '

TA = A' После некоторой линейной алгебры,

T = A 'inv (A)

Попробуйте в MATLAB и дайте нам знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...