выровняйте один набор 2d точек с другим, используя только перевод и вращение

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

Представьте, что у меня есть два набора точек в 2d - допустим, каждый набор имеет ровно 50 точек.

]Например установить A = {x1, y1, x2, y2, ..., x50, y50}

установить B = {x1 ', y1', x2 ', y2', ..., x50 ', y50'}

Я хочу найти комбинацию вращения и перемещения, которая наиболее приближена к отображению набора A на набор B. Я бы определил «ближайший», поскольку минимизирует среднее расстояние между точками в A и соответствующими точками в BIe, минимизирует среднее расстояние между (x1, y1) и (x1 ', y1') и т. д.

Думаю, я мог бы использовать грубую силу для проверки всех возможных перемещений и поворотов, но это было бы крайне неэффективно. Кто-нибудь знает способ попроще?

Спасибо!

11
задан Andrew 16 August 2011 в 11:21
поделиться