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

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

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

РЕШЕНИЕ: (из ваших ответов)
Для меня это Kabsch Alhorithm;
Базовая информация:http://en.wikipedia.org/wiki/Kabsch_algorithm
Общее решение:http://nghiaho.com/?page_id=671


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