Trouver la traduction et de l'échelle sur deux ensembles de points pour obtenir des moindres carrés de l'erreur dans leur distance?

J'ai deux ensembles de points 3D (original et reconstruit) et de la correspondance d'informations sur les paires qui point à partir d'un ensemble représente la deuxième. J'ai besoin de trouver 3D de traduction et de facteur d'échelle qui transforme reconstruire, de sorte que la somme des carrés des distances seraient moins (rotation serait sympa aussi, mais les points sont tournés de la même façon, donc ce n'est pas la principale priorité et peut être omis dans un souci de simplicité et de rapidité). Et donc ma question est, est - ce résolu et disponible quelque part sur Internet? Personnellement, je voudrais utiliser la méthode des moindres carrés, mais je n'ai pas beaucoup de temps (et même si je suis assez bon en maths, je ne l'utilise pas souvent, donc il serait préférable pour moi de l'éviter), donc je voudrais utiliser une autre solution si elle existe. Je préfère la solution en C++, par exemple à l'aide d'OpenCV, mais seul algorithme est assez bon.

Si ce n'est pas la solution, je vais calculer ça par moi-même, je ne veux pas vous dérange tant.

SOLUTION: (à partir de vos réponses)
Pour moi, c'est Kabsch alhorithm;
Base info: http://en.wikipedia.org/wiki/Kabsch_algorithm
Solution générale: http://nghiaho.com/?page_id=671

N'EST TOUJOURS PAS RÉSOLU:
J'ai aussi besoin d'échelle. L'échelle des valeurs de SVD ne sont pas compréhensibles pour moi; quand j'ai besoin de mettre à l'échelle de 1 à 4 pour tous les axes (estimés par moi), SVD échelle est d'environ [2000, 200, 20], ce qui n'est pas aider du tout.

Probablement Kabsch algorithme est-ce que vous avez besoin. Différence de deux centroïdes donne la traduction; et après le calcul de SVD de la matrice de covariance, singulière les valeurs des facteurs d'échelle et de matrices unitaires donner optimale de la matrice de rotation.
Evgeny Kluev: merci beaucoup, on dirait que c'est elle. Je vais essayer de poster les résultats (il faudra un certain temps; j'ai d'autres choses à mettre en œuvre). Par la façon dont, heureusement pour moi, OpenCV contient SVD de la calculatrice, ce qui simplifie beaucoup les choses.
Evgeny Kluev: je m'en excuse profondément pour répondre si tard: j'ai eu de plus en plus important de projets. Je voudrais vous demander, comment dois-je interpréter les facteurs d'échelle? Ces chiffres sont vraiment de gros (200 - 2000) ou de petite taille (~0.5) mais de mon jugement, l'échelle doit être d'environ 1 à 4. Et aussi, les facteurs d'échelle sont souvent différentes pour les différents axes (par exemple [2000, 200, 20]).
En fait il n'y a aucun moyen d'obtenir des facteurs d'échelle directement à partir de valeurs singulières. Mon erreur. Désolé. SVD basée sur l'algorithme peut s'appliquer ici, mais je ne sais pas comment. En tout cas, le froid essayez plus générale Itératif point le plus proche de l'algorithme.
Avez-vous regardé ma réponse ci-dessous? Vous obtenez l'échelle de Eigen ainsi eigen.tuxfamily.org/dox/... bien sûr, cela suppose que vous avez les correspondances

OriginalL'auteur | 2012-11-17

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *