Pergunta

Vamos dizer que eu tenho 3 nuvens de pontos: primeiro, que tem 3 pontos {x1, y1, z1}, {x2, y2, z2}, {x3, y3, Z3} e segunda nuvem de pontos que tem mesmos pontos que {XX1 , YY1, zz1}, {XX2, yy2, zz2}, {xx3, yy3, zz3} ... Eu suponho para alinhar segunda nuvem de pontos para o primeiro eu tenho que multiplicar pontos segundo um por T [3x3matrix].

1) Então, como posso encontrar essa matriz de transformação (T)? Eu tentei fazer as equações com a mão, mas não conseguiu resolvê-los. Existe um lugar solução, porque eu tenho certeza que eu não sou o primeiro a tropeçar no problema.

2) Presumo que a matriz pode incluir distorcer e tosquia. Existe uma maneira de encontrar matriz com apenas 7 graus de liberdade (3translation, 3rotation, 1scale)?

Foi útil?

Solução

A matriz T1 transformação que leva os vectores de unidade {1, 0, 0}, {0, 1, 0}, e {0, 0, 1} a {x1, y1, z1}, {X2, Y2, z2}, {x3, y3, Z3} é simplesmente

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

E assim a transformação T2 que leva esses 3 vetores unitários para o segundo conjunto de pontos é

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

Portanto, a matriz que tem os primeiros três pontos para os segundos três pontos é dada por T2 * T1 -1 . Se T1 é não singular, então essa transformação é determinada exclusivamente, por isso não tem graus de liberdade. Se T1 é uma matriz singular, então poderia haver nenhuma solução, ou poderia haver um número infinito de soluções.

Quando você diz que quer 7 graus de liberdade, isto é um pouco de um desvio de terminologia. No caso geral, esta matriz é composta de 3 graus de liberdade rotacionais, 3 graus de escala, e 3 tosquia graus, fazendo um total de 9. Você pode descobrir esses parâmetros através da realização de um QR fatoração . A matriz Q lhe dá os parâmetros de rotação, e a matriz R lhe dá os parâmetros de escala (ao longo da diagonal) e os parâmetros de cisalhamento (acima da diagonal).

Outras dicas

Abordagem de Adam Rosenfield está correto. Mas solução como T2 * Inv (T1) está errado. Uma vez que em Matrix multiplicação A * B = B * A:! Daí resultado é Inv (T1) * T2

O sete transformação parâmetro que você está falando é referido como uma transformação conformal 3D, ou às vezes uma transformação de similaridade 3d dado que as duas nuvens são semelhantes. Se as duas formas são idênticas, solução Adam Rosenfields é bom. Onde existem pequenas diferenças, e você deseja obter um melhor ajuste, a solução mais comumente utilizado é um Helmert transformação que utiliza mínimos quadrados aproximar para minimizar os resíduos. A wikipedia e google coisas sobre isso não parece grande em um relance. Minha referência sobre isso é P345 do cálculos de ajuste , Ghilani & Wolf. Este também é um grande livro sobre matemática matriz aplicada a problemas espaciais e uma boa adição para a biblioteca.

edit: a versão 9 parâmetro de Adão desta transformação é referido como um afim transformação

Aqui está um exemplo de computação de mínimos quadrados estimativas dos parâmetros de uma transformação afim 2D em R.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top