Pregunta

Vamos a decir que tengo 3 nubes de puntos: en primer lugar que tiene 3 puntos {x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3} y la segunda nube punto que tiene mismos puntos que {XX1 , YY1, ZZ1}, {xx2, YY2, zz2}, {XX3, yy3, ZZ3} ... I asumir para alinear segunda nube de puntos a primero tengo que multiplicar los puntos segundo de uno por T [3x3matrix].

1) Entonces, ¿cómo puedo encontrar esta matriz de transformación (T)? Traté de hacer las ecuaciones a mano, pero no pudo resolver ellos. ¿Hay una solución en alguna parte, porque estoy bastante seguro de que no soy el primero en tropezar con el problema.

2) Asumo que la matriz podría incluir sesgando y cizallamiento. ¿Hay una manera de encontrar la matriz con sólo 7 grados de libertad (3translation, 3rotation, 1scale)?

¿Fue útil?

Solución

La matriz T1 transformación que tiene los vectores unitarios {1, 0, 0}, {0, 1, 0} y {0, 0, 1} a {x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3} es simplemente

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

Y del mismo modo el T2 transformación que tiene esas 3 vectores unitarios para el segundo conjunto de puntos es

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

Por lo tanto, la matriz que lleva los tres primeros puntos a los segundos tres puntos viene dada por T2 * T1 -1 . Si T1 es no singular, a continuación, esta transformación se determina de forma única, por lo que no tiene grados de libertad. Si T1 es una matriz singular, entonces podría haber soluciones, o podría haber un número infinito de soluciones.

Cuando usted dice que quiere 7 grados de libertad, esto es algo de un mal uso de la terminología. En el caso general, esta matriz se compone de 3 grados de libertad de rotación, 3 grados de escala, y 3 grados de cizallamiento, haciendo un total de 9. Puede averiguar estos parámetros mediante la realización de un QR factorización. La matriz Q le da los parámetros de rotación, y la matriz R le da los parámetros de escala (a lo largo de la diagonal) y los parámetros de cizallamiento (por encima de la diagonal).

Otros consejos

Enfoque de Adam Rosenfield es correcta. Pero la solución como T2 * Inv (T1) es incorrecto. Dado que en la multiplicación de matrices A * B = B * A:! Por lo tanto resultado es Inv (T1) * T2

El de siete parámetros de transformación que está hablando que se conoce como una transformación conforme 3d, o, a veces una similitud transformación 3d dado que las dos nubes son similares. Si las dos formas son idénticas, solución Adam Rosenfields es buena. Donde hay pequeñas diferencias, y que desean obtener un mejor ajuste, la solución más comúnmente usada es una href="http://en.wikipedia.org/wiki/Helmert_transformation" rel="nofollow transformación Helmert que utiliza un enfoque de mínimos cuadrados para minimizar los residuos. La Wikipedia y Google cosas en esto no parece grande en un solo vistazo. Mi referencia es en este Ghilani & Wolf de cálculos de ajuste , P345. Esto también es un gran libro sobre matemáticas matriz tal como se aplica a los problemas de espacio y una buena adición a la biblioteca.

editar: Versión 9 parámetro de Adán de esta transformación se denomina transformación afín

Aquí es un ejemplo de calcular mínimos cuadrados estimaciones de los parámetros de una transformación afín 2D en R.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top