Finden Sie die Übersetzung und Skalierung für zwei Punktmengen, um den kleinsten Fehlerquadrat in der Entfernung zu erhalten?

Ich habe zwei Sätze von 3D-Punkten (original und rekonstruiert) und Korrespondenzinformationen über Paare - der Punkt aus einem Satz repräsentiert den zweiten. Ich muss einen 3D-Verschiebungs- und Skalierungsfaktor finden, der die Menge der Rekonstruktionen so transformiert, dass die Summe der quadratischen Abstände am geringsten ist (Drehung wäre auch schön, aber Punkte werden ähnlich gedreht, sodass dies keine Hauptpriorität darstellt und der Einfachheit halber weggelassen werden könnte Geschwindigkeit). Meine Frage lautet also: Ist dies gelöst und irgendwo im Internet verfügbar? Persönlich würde ich die Methode der kleinsten Fehlerquadrate verwenden, aber ich habe nicht viel Zeit (und obwohl ich etwas gut in Mathe bin, verwende ich sie nicht oft, daher ist es besser, wenn ich sie vermeide) möchte die Lösung eines anderen verwenden, wenn sie existiert. Ich bevorzuge eine Lösung in C ++, zum Beispiel mit OpenCV, aber der Algorithmus alleine ist gut genug.

Wenn es keine solche Lösung gibt, berechne ich sie selbst, ich möchte Sie nicht so sehr stören.

LÖSUNG: (aus deinen Antworten)
Für mich ist es Kabsch-Alhorithmus;
Basisinfo:http://en.wikipedia.org/wiki/Kabsch_algorithm
Allgemeine lösung:http://nghiaho.com/?page_id=671

NOCH NICHT GELÖST: Ich brauche auch eine Waage. Skalenwerte aus SVD sind für mich nicht nachvollziehbar; Wenn ich für alle Achsen eine Skala von etwa 1 bis 4 benötige (von mir geschätzt), beträgt die SVD-Skala etwa [2000, 200, 20], was überhaupt nicht hilft.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage