Question

Disons que j'ai 3 nuages ​​de points :le premier qui a 3 points {x1,y1,z1}, {x2,y2,z2}, {x3,y3,z3} et le deuxième nuage de points qui a les mêmes points que {xx1, yy1, zz1}, {xx2,yy2, zz2}, {xx3,yy3,zz3}...Je suppose que pour aligner le deuxième nuage de points sur le premier, je dois multiplier les points du deuxième par T[3x3matrix].

1) Alors, comment trouver cette matrice de transformation (T) ?J'ai essayé de faire les équations à la main, mais je n'ai pas réussi à les résoudre.Y a-t-il une solution quelque part, car je suis presque sûr que je ne suis pas le premier à tomber sur le problème.

2) Je suppose que cette matrice pourrait inclure l'inclinaison et le cisaillement.Existe-t-il un moyen de trouver une matrice avec seulement 7 degrés de liberté (3 traductions, 3 rotations, 1 échelle) ?

Était-ce utile?

La solution

La matrice de transformation T1 qui prend les vecteurs unitaires {1, 0, 0}, {0, 1, 0} et {0, 0, 1} en {x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3} est simplement

     | x1 x2 x3 |
T1 = | y1 y2 y3 |
     | z1 z2 z3 |

Et de même, la transformation T2 qui amène ces 3 vecteurs unitaires au deuxième ensemble de points est

     | xx1 xx2 xx3 |
T2 = | yy1 yy1 yy3 |
     | zz1 zz2 zz3 |

Par conséquent, la matrice qui amène les trois premiers points aux trois seconds points est donnée par T2 * T1-1.Si T1 n’est pas singulier, alors cette transformation est déterminée de manière unique, elle n’a donc aucun degré de liberté.Si T1 est une matrice singulière, alors il pourrait n’y avoir aucune solution, ou il pourrait y avoir une infinité de solutions.

Lorsque vous dites vouloir 7 degrés de liberté, c'est en quelque sorte un abus de terminologie.Dans le cas général, cette matrice est composée de 3 degrés de liberté en rotation, 3 degrés d’échelle et 3 degrés de cisaillement, soit un total de 9.Vous pouvez déterminer ces paramètres en effectuant un Factorisation QR.La matrice Q vous donne les paramètres de rotation et la matrice R vous donne les paramètres de mise à l'échelle (le long de la diagonale) et les paramètres de cisaillement (au-dessus de la diagonale).

Autres conseils

L'approche d'Adam Rosenfield est correcte.Mais la solution telle que T2 * Inv (T1) est fausse.Puisque dans la multiplication matricielle A * B != B * A :Le résultat est donc Inv(T1) * T2

Le transformation à sept paramètres dont vous parlez est appelée transformation conforme 3D, ou parfois transformation de similarité 3D étant donné que les deux nuages ​​sont similaires.Si les deux formes sont identiques, la solution d’Adam Rosenfield est bonne.Lorsqu'il existe de petites différences et que vous souhaitez obtenir le meilleur ajustement, la solution la plus couramment utilisée est un Transformation d'Helmert qui utilise une approche des moindres carrés pour minimiser les résidus.Les trucs de Wikipédia et de Google à ce sujet ne semblent pas géniaux en un coup d'œil.Ma référence à ce sujet est celle de Ghilani & Wolf calculs d'ajustement, p. 345.C'est également un excellent livre sur les mathématiques matricielles appliquées aux problèmes spatiaux et un bon ajout à la bibliothèque.

modifier:La version à 9 paramètres d'Adam de cette transformation est appelée une Transformation affine

Voici un exemple de calcul d'estimations par les moindres carrés des paramètres d'une transformation affine 2D dans R.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top