Domanda

Diciamo che ho 3 nuvole di punti: primo, che ha 3 punti {x1, y1, z1}, {x2, y2, z2}, {x3, Y3, Z3} e la seconda nuvola di punti che ha stessi punti come {XX1 , YY1, ZZ1}, {xx2, yy2, zz2}, {xx3, yy3, ZZ3} ... suppongo di allineare secondo nuvola di punti per prima devo moltiplicare la seconda di uno punti da T [3x3matrix].

1) Allora, come faccio a trovare questa matrice di trasformazione (T)? Ho provato a fare le equazioni a mano, ma non sono riuscito a risolverli. C'è una soluzione da qualche parte, perché io sono abbastanza sicuro che io non sono il primo a inciampare nel problema.

2) Suppongo che matrice potrebbe includere l'inclinazione e tranciatura. C'è un modo per trovare matrice con solo 7 gradi di libertà (3translation, 3rotation, 1scale)?

È stato utile?

Soluzione

La matrice T1 trasformazione che prende i versori {1, 0, 0}, {0, 1, 0}, e {0, 0, 1} per {x1, y1, z1}, {x2, y2, z2}, {x3, y3, Z3} è semplicemente

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

E similarmente T2 trasformazione che prende quei 3 vettori unitari per la seconda serie di punti è

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

Pertanto, la matrice che prende i primi tre punti per i secondi tre punti è data da T2 * T1 -1 . Se T1 non è singolare, allora questa trasformazione è univocamente determinato, quindi non ha gradi di libertà. Se T1 è una matrice singolare, allora ci potrebbero essere soluzioni, o ci potrebbero essere infinite soluzioni.

Quando si dice che si desidera 7 gradi di libertà, questo è un po 'un uso improprio della terminologia. Nel caso generale, la matrice è composta da 3 gradi di libertà rotazionali, 3 gradi proporzioni e 3 gradi di taglio, per un totale di 9. Si può capire questi parametri eseguendo una fattorizzazione QR . La matrice Q dà i parametri di rotazione, e la matrice R dà i parametri di scalatura (lungo la diagonale) ed i parametri di taglio (sopra la diagonale).

Altri suggerimenti

Approccio di Adam Rosenfield è corretta. Ma la soluzione, come T2 * Inv (T1) è sbagliato. Poiché in Matrix moltiplicazione A * B = B * A: Quindi risultato è Inv (T1) * T2

Il trasformazione a sette parametri che si sta parlando viene indicato come una trasformazione conforme 3d, o talvolta una somiglianza trasformazione 3d dato che i due nuvole sono simili. Se le due forme sono identici, soluzione Adam Rosenfields è buona. Dove ci sono piccole differenze, e si desidera ottenere un migliore adattamento, la soluzione più comunemente usato è una href="http://en.wikipedia.org/wiki/Helmert_transformation" rel="nofollow trasformazione di Helmert che utilizza un metodo di minimi quadrati per minimizzare i residui. La Wikipedia e Google roba su questo non sembra molto a colpo d'occhio. Il mio riferimento su questo è Ghilani & Wolf di calcoli di regolazione , P345. Questo è anche un grande libro su matrice di matematica applicata ai problemi spaziali e una buona aggiunta alla libreria.

modifica: la versione 9 parametro di Adamo di questa trasformazione è indicato come un trasformazione affine

Ecco un esempio di calcolare minimi quadrati stime dei parametri di una trasformazione affine 2D R.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top