1 votos

Obtener la matriz de transformación afín a partir de dos posiciones del objeto

Tengo un objeto en el espacio 3d que está representado por el conjunto de vértices. Entonces escalo este objeto, lo roto y lo traslado. Después de estas operaciones obtengo el segundo conjunto de vértices con nuevas coordenadas. Conozco la correspondencia entre el antiguo conjunto y el nuevo.

¿Es posible obtener valores de rotación, escala y traslación a partir de la comparación de estos dos conjuntos de vértices?

EDITAR: ¿Y cómo estimar estos valores si la transformación no fue precisamente afín, por ejemplo mi estimación de coordenadas de vértices tiene un error por lo que no puedo resolver el sistema de ecuaciones para todos los vértices de mi objeto para obtener los elementos de la matriz?

3voto

Susan L Smith Puntos 6

Es posible calcular la transformación combinada. Puesto que usted está permitiendo la posibilidad de una traducción, voy a trabajar en coordenadas homogéneas . Como tal, escribiré el punto $P(x,y,z)$ como el vector $p=(x,y,z,1)^T$ . Dado que también conoce el punto de la imagen $P'$ (o vector $p'$ ), es posible calcular la matriz de transformación $A$ tal que $p'=Ap$ . La matriz $A$ es $4\times4$ por lo que necesitaremos $4$ puntos, en general, para determinar la matriz.

Como sólo tenemos una escala, rotación y traslación, nuestra matriz $A$ será de la forma $$ A=\begin{bmatrix}RS&c\\0^T&1\end{bmatrix}, $$ donde $S$ es el $3\times3$ matriz de escala, $R$ es el $3\times3$ matriz de rotación y $c$ es el vector por el que nos trasladamos. Esto significa que sólo hay be $12$ incógnitas en $A$ por lo que sigue siendo necesario $4$ puntos a determinar.

Si no puede resolver las ecuaciones anteriores exactamente, una opción es resolverlas en el sentido de mínimos cuadrados, de forma que esté minimizando $$ F(A)=\sum\limits_{i=1}^n \left\|p_i'-Ap_i\right\|^2 $$ con respecto a $A$ .

Dada la matriz de transformación $A$ es mucho más difícil determinar la matriz de escala $S$ y la matriz de rotación $R$ . La traslación es sencilla, ya que se trata de la última columna de la matriz. Una matriz de escala general puede escribirse como $S=I-knn^T$ donde las componentes en la dirección del vector unitario $n$ se escalan por $k$ . Se puede encontrar una forma genérica para una matriz de rotación ici que depende explícitamente del eje de rotación y del ángulo. Para calcular realmente $R$ et $S$ Sospecho que será difícil.

1voto

wcc Puntos 11

Pista: Como la transformación es afín, entonces para el vector original $\vec{x}$ y su imagen $\vec{y}$ existe una matriz $A$ y un vector $\vec{b}$ tal que $$\vec{y}=A\vec{x}+\vec{b}$$

Un truco habitual es transformarlo en coordenadas homogéneas: $$\begin{pmatrix}\vec{y}\\1\end{pmatrix}=\begin{pmatrix}A&\vec{b}\\0&1\end{pmatrix}\begin{pmatrix}\vec{x}\\1\end{pmatrix}$$

$A$ et $\vec{b}$ son iguales para todos los vértices de su conjunto. Observa que se trata de un problema de la forma $\vec{Y}=H\vec{X}$ .

Como hay errores, pero el problema es lineal, la mejor forma de resolverlo es mediante mínimos cuadrados. En este enfoque, usted está encontrando la matriz H tal que la norma de $\vec{Y}-H\vec{X}$ se minimiza (existe abundante literatura sobre este enfoque en la web, incluida wikipedia).

Una vez encontrado H, es posible recuperar la matriz de rotación, la escala y la traslación.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X