¿Encontrar la traducción y la escala en dos conjuntos de puntos para obtener el menor error de cuadrado en su distancia?

Tengo dos conjuntos de puntos 3D (originales y reconstruidos) e información de correspondencia sobre pares, cuyo punto de un conjunto representa el segundo. Necesito encontrar la conversión 3D y el factor de escala que transforma el conjunto de reconstrucción para que la suma de distancias cuadradas sea la menor (la rotación también sería agradable, pero los puntos se rotan de manera similar, por lo que esta no es la prioridad principal y podría omitirse en aras de la simplicidad y la simplicidad). velocidad). Entonces, mi pregunta es: ¿está resuelto y está disponible en algún lugar de Internet? Personalmente, usaría el método de mínimos cuadrados, pero no tengo mucho tiempo (y aunque soy bastante bueno en matemáticas, no lo uso a menudo, por lo que sería mejor para mí evitarlo), así que Me gustaría usar la solución de otros si existe. Prefiero la solución en C ++, por ejemplo, utilizando OpenCV, pero el algoritmo solo es lo suficientemente bueno.

Si no existe tal solución, la calcularé por mi cuenta, no quiero molestarte tanto.

SOLUCIÓN: (de tus respuestas)
Para mí es el algoritmo de Kabsch;
Información de base:http://en.wikipedia.org/wiki/Kabsch_algorithm
Solución general:http://nghiaho.com/?page_id=671

AÚN NO RESUELVE: También necesito la escala. Los valores de escala de SVD no son comprensibles para mí; cuando necesito una escala de aproximadamente 1-4 para todos los ejes (estimado por mí), la escala SVD es aproximadamente [2000, 200, 20], lo que no ayuda en absoluto.

Respuestas a la pregunta(8)

Su respuesta a la pregunta