24 votos

La descomposición de una transformación Afín

Una transformación afín se compone de rotaciones, traslaciones, escalado y corte.

En 2D, esta transformación puede ser representada mediante una matriz ampliada por $$ \begin{bmatrix} \vec{y} \\ 1 \end{bmatrix} =\begin{bmatrix} A & \vec{b} \ \\ 0, \ldots, 0 & 1 \end{bmatrix} \begin{bmatrix} \vec{x} \\ 1 \end{bmatrix} $$

el vector b representa la traducción. Bu ¿cómo puedo descomponer Una en la rotación, escalado y corte? Estoy tratando de "interpolar" una transformación afín de modo que, si tengo puntos en un fotograma 1 y en un marco de 3 tales que una transformación $T$ se lleva los puntos del cuadro 1 para los puntos en el cuadro 3, a continuación, interpolada transformar tomaría mis puntos del fotograma 1 al fotograma 2. Si, por ejemplo, una de 60° de rotación es necesario para ir desde el fotograma 1 al fotograma 3, luego de 30° uno se utilizaría para ir desde el fotograma 1 al fotograma 2.

Gracias por su ayuda.

19voto

gagneet Puntos 4565

Estoy tratando de "interpolar" una transformación afín [...]

Estoy sugiriendo un enfoque diferente, el cual debe ser adecuado a la interpolación, aunque no dependen de la división de la transformación en distintos elementales operaciones de la manera en que su pregunta sugiere. En su lugar, me gustaría uso de fracciones de potencias de una matriz, como voy a describir ahora.

Supongamos $A$ es diagonalizable (que será el caso para la mayoría de las transformaciones), entonces existe una matriz ortogonal $P$ y una matriz diagonal $D$ tal que $A=P\,D\,P^{-1}$. Las entradas de $D$ son los autovalores de a $A$, que voy a llamar a $\lambda_1$$\lambda_2$. Ahora usted puede definir $A$ elevado a la $t$-ésima potencia como este:

$$ A^t = P\,D^t\,P^{-1} = P\,\begin{pmatrix}\lambda_1^t&0\\0&\lambda_2^t\end{pmatrix}\,P^{-1} $$

Ahora si cambio $t$ continuamente de$0$$1$, la matriz $A^t$ va a cambiar a partir de la identidad a la matriz $A$. Así que esta es tu interpolación.

Una cosa que tienes que tener cuidado es el hecho de que el $\lambda_k$ es muy probable que sea un par conjugado de un número complejo. Usted puede expresar como $\lambda_k=e^{z_k}$ donde $z_k=\log\lambda_k$, pero el logaritmo de un número es definido sólo hasta múltiplos de $2\pi i$. Así que en este caso, usted debe asegurarse de que la parte imaginaria no sea demasiado grande, es decir, desea $-\pi\le\operatorname{Im}(z_k)\le\pi$. Esto asegura que la interpolación no tomar más vueltas para una rotación que realmente se requiere. Además, usted debe mantener el $z_2=\bar{z_1}$ para asegurarse de que las matrices de interpolación será real así. Con esta elección, $\lambda_k^t=e^{t\cdot z_k}$ está bien definido y se comporta como se describe para el caso de la rotación.

He creado una prueba de concepto de la aplicación que puede utilizar para experimentar, en orden a decidir si esto es lo que usted desea. Aquí está una foto de la clase de interpolación de este modo se creará:

Interpolation snapshot

Con ese experimento, me di cuenta de que uno debe incluir la translative parte en la matriz así, de la manera para la que compuso una matriz incluida $A$ $b$ en su pregunta. De lo contrario, las posiciones de los fotogramas interpolados dependerá de la localización de la definición de triples en el avión, que me consideran indeseables.

13voto

m0j0 Puntos 181

Si usted escalar, inclinar y girar (en ese orden), entonces usted tendrá:

$$\begin{bmatrix} A_{11} & A_{12} \ \\ A_{21} & A_{22} \end{bmatrix} = \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} 1 & m \\ 0 & 1 \end{bmatrix} \begin{bmatrix} s & 0 \\ 0 & s \end{bmatrix}.$$

Entonces

$$\begin{align*} A_{11} &= s \cos \theta\\ A_{12} &= s m \cos \theta - s \sin \theta\\ A_{21} &= s \sin \theta\\ A_{22} &= s m \sin \theta + s \cos \theta\\ \end{align*} $$

De la primera y tercera ecuaciones,

$$s = \sqrt{A_{11}^2 + A_{21}^2},$$

y

$$\theta = \tan^{-1}\left( \frac{A_{21}}{A_{11}} \right).$$

Por último, la sustitución de la primera y la tercera en el segundo y el cuarto,

$$m = \frac{A_{12} + A_{21}}{A_{11}} = \frac{A_{22} - A_{11}}{A_{21}}.$$

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