Найти перевод и масштаб на двух наборах точек, чтобы получить наименьшую квадратную ошибку на их расстоянии?

У меня есть два набора трехмерных точек (исходные и восстановленные) и информация о соответствии пар. Какая точка из одного набора представляет второй. Мне нужно найти коэффициент трехмерного перевода и масштабирования, который преобразует набор для реконструкции, чтобы сумма квадратов была наименьшей (вращение было бы также неплохо, но точки вращались аналогично, так что это не является основным приоритетом и может быть опущено в целях простоты и скорость). И вот мой вопрос - это решено и доступно где-нибудь в Интернете? Лично я бы использовал метод наименьших квадратов, но я нене так много времени (и хотя яЯ немного хорош в математике, я неЯ часто использую его, поэтому мне лучше его избежать), поэтому я бы хотел использовать другиеРешение, если оно существует. Я предпочитаю решение на C ++, например, с использованием OpenCV, но один алгоритм достаточно хорош.

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

РЕШЕНИЕ: (из ваших ответов)

Для меня этос Кабш алхоритм;

Базовая информация:http://en.wikipedia.org/wiki/Kabsch_algorithm

Общее решение:http://nghiaho.com/?page_id=671

ЕЩЕ НЕ РЕШЕНО: Мне тоже нужен масштаб. Значения шкалы от SVD мне не понятны; когда мне нужна шкала около 1-4 для всех осей (по моим оценкам), шкала SVD составляет около [2000, 200, 20], что совсем не помогает.

Ответы на вопрос(8)

Ваш ответ на вопрос