Encontrar tradução e escala em dois conjuntos de pontos para obter um erro mínimo de quadrado na distância deles?

Eu tenho dois conjuntos de pontos 3D (original e reconstruído) e informações de correspondência sobre pares - o ponto de um conjunto representa o segundo. Eu preciso encontrar tradução 3D e fator de escala que transforma o conjunto de reconstrução para que a soma das distâncias quadradas seja menor (a rotação também seria boa, mas os pontos são rotacionados de forma semelhante, então essa não é a prioridade principal e pode ser omitida em termos de simplicidade e Rapidez). E a minha pergunta é: isso está resolvido e disponível em algum lugar da Internet? Pessoalmente, eu usaria o método dos mínimos quadrados, mas eu não tenho muito tempo (e embora eu seja um pouco bom em matemática, eu não uso isso com frequência, então seria melhor para mim evitá-lo), então eu gostaria de usar a solução de outra pessoa se ela existir. Eu prefiro solução em C ++, por exemplo, usando OpenCV, mas o algoritmo sozinho é bom o suficiente.

Se não houver essa solução, vou calcular sozinha, não quero incomodá-lo tanto.

SOLUÇÃO: (de suas respostas)
Para mim, é o algoritmo do Kabsch;
Informação de base:http://en.wikipedia.org/wiki/Kabsch_algorithm
Solução geral:http://nghiaho.com/?page_id=671

AINDA NÃO RESOLVIDO: Eu também preciso de escala. Valores de escala de SVD não são compreensíveis para mim; quando eu preciso de escala de cerca de 1-4 para todos os axises (estimado por mim), a escala SVD é de cerca de [2000, 200, 20], o que não está ajudando em nada.

questionAnswers(8)

yourAnswerToTheQuestion