Znajdowanie tłumaczenia i skalowanie na dwóch zestawach punktów w celu uzyskania najmniejszego błędu kwadratowego w ich odległości?

Mam dwa zestawy punktów 3D (oryginalne i zrekonstruowane) oraz informacje o korespondencji o parach - który punkt z jednego zestawu reprezentuje drugi. Muszę znaleźć współczynnik translacji 3D i współczynnik skalowania, który przekształca zestaw rekonstrukcji tak, aby suma odległości kwadratowych była najmniejsza (obrót byłby również miły, ale punkty są obracane podobnie, więc nie jest to główny priorytet i może być pominięty ze względu na prostotę i prędkość). A więc moje pytanie brzmi - czy jest to rozwiązane i dostępne gdzieś w Internecie? Osobiście używałbym metody najmniejszych kwadratów, ale nie mam zbyt wiele czasu (i chociaż jestem trochę dobry w matematyce, nie używam go często, więc lepiej byłoby mi tego uniknąć), więc ja chciałby użyć innego rozwiązania, jeśli istnieje. Preferuję rozwiązanie w C ++, na przykład przy użyciu OpenCV, ale sam algorytm jest wystarczająco dobry.

Jeśli nie ma takiego rozwiązania, obliczę je sam, nie chcę ci tak bardzo przeszkadzać.

ROZWIĄZANIE: (z twoich odpowiedzi)
Dla mnie jest to Kabsch Alhorithm;
Podstawowe informacje:http://en.wikipedia.org/wiki/Kabsch_algorithm
Ogólne rozwiązanie:http://nghiaho.com/?page_id=671

NIEDOZWOLONE: Potrzebuję też skali. Wartości skali z SVD nie są dla mnie zrozumiałe; kiedy potrzebuję skali około 1-4 dla wszystkich osi (szacowane przeze mnie), skala SVD wynosi około [2000, 200, 20], co wcale nie pomaga.

questionAnswers(8)

yourAnswerToTheQuestion