3 votos

Separación correcta de los coeficientes de escala, rotación y giro en este caso

Esta pregunta es la continuación de ¿Corregir la transformada de Fourier de una imagen distorsionada por el cizallamiento? ( $x_{new} = x + \alpha y$ ) . Tengo un grupo de distorsionados $x, y$ puntos y han encontrado una matriz $A$ que corrige sus posiciones:

$$ \begin{bmatrix} x' \\ y' \\ \end{bmatrix} = \begin{bmatrix} a_{xx} & a_{xy} \\ a_{yx} & a_{yy} \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ \end{bmatrix} $$

Ahora quiero dividir esto en tres términos separados, uno para la escala pura o el aumento $M$ uno para la rotación pura $R$ y una para la cizalla $S$ . Creo que se verán así:

$$M = \begin{bmatrix} m_x & 0\\ 0 & m_y \\ \end{bmatrix} $$

$$R = \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \\ \end{bmatrix} $$ $$S = \begin{bmatrix} 1 & s_{xy} \\ s_{yx} & 1 \\ \end{bmatrix} $$

Veo que hay respuestas a

y reconozco que esas respuestas pueden aplicarse a mi problema, pero están más allá de mí; necesito una respuesta más sencilla y aplicada, o al menos ayuda para llegar a ella.

Q1: Puedo imaginarme la configuración $A$ igual al producto, pero me preocupa si el orden es importante. ¿Funcionará este orden? ¿Funcionaría igualmente cualquier orden?

$$A = R \ S \ M $$

Q2: Ahora tengo cinco parámetros en lugar de cuatro. Como he separado la rotación, ¿debo utilizar ahora sólo una cizalla, es decir, tengo que elegir sólo una de $s_xy$ o $s_yx$ y poner el otro a cero? O simplemente utilizar $s_{xy} = s_{yx} = s$ ?

$$S = \begin{bmatrix} 1 & s \\ s & 1 \\ \end{bmatrix} $$

2voto

David K Puntos 19172

Ya ha observado el mal efecto si utiliza $-s$ y $s$ en los términos no diagonales de su matriz de "cizallamiento" (haciendo una matriz antisimétrica) -- la matriz no sólo mira como una matriz de rotación, en realidad es una rotación y un escalado combinados.

Cambiar la forma de la matriz a una matriz simétrica no ayuda porque $$ \begin{bmatrix} 1 & s \\ s & 1 \end{bmatrix} = \begin{bmatrix} \cos\left(-\frac\pi4\right) & -\sin\left(-\frac\pi4\right) \\ \sin\left(-\frac\pi4\right) & \cos\left(-\frac\pi4\right) \end{bmatrix} \begin{bmatrix} 1 - s & 0 \\ 0 & 1 + s \end{bmatrix} \begin{bmatrix} \cos\left(\frac\pi4\right) & -\sin\left(\frac\pi4\right) \\ \sin\left(\frac\pi4\right) & \cos\left(\frac\pi4\right) \end{bmatrix}. $$ Es decir, el efecto de la matriz simétrica es el que obtenemos al girar $\frac\pi4$ radianes en sentido contrario a las agujas del reloj, dilatando en un factor $1-s$ en la dirección de la $x$ eje y $1+s$ en la dirección de la $y$ eje, y girando hacia atrás por $\frac\pi4$ radianes en el sentido de las agujas del reloj. Equivalentemente, es una dilatación por $1-s$ en la dirección del vector $[1,-1]^T$ y una dilatación por $1+s$ en la dirección del vector $[1,1]^T.$

Como forma más concreta de verlo, basta con observar lo que la transformación hace al cuadrado unitario: lo deforma en un rombo para cualquier valor de $s.$ Se trata simplemente de estirarla, comprimirla o incluso reflejarla a lo largo de sus dos diagonales; no hay ningún cizallamiento.

Por otro lado, si se observa el efecto en el cuadrado unitario de una transformación por la matriz $$ \begin{bmatrix} 1 & s \\ 0 & 1 \end{bmatrix}, $$ es claramente una transformación de cizalla: los vértices $(0,0)$ y $(1,0)$ no se ven afectados, mientras que los vértices $(0,1)$ y $(1,1)$ se mueven ambos $s$ unidades a la derecha.


Ahora vamos a ver cómo podemos descomponer un $2\times2$ en matrices para la rotación, la escala y el cizallamiento. Comenzamos con $$ A = \begin{bmatrix} a & b \\ c & d \end{bmatrix}. $$ (Como sólo hay cuatro entradas, me parece bastante sencillo seguirlas por su nombre en lugar de por subíndices, y las fórmulas estarán menos "ocupadas" de esta manera). Obsérvese lo que ocurre si aplicamos una rotación de $\theta$ radianes a esta matriz: $$ \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} a & b \\ c & d \end{bmatrix} = \begin{bmatrix} a \cos\theta - c \sin\theta & b \cos\theta - d \sin\theta \\ c \cos\theta + a \sin\theta & d \cos\theta + b \sin\theta \end{bmatrix}. $$ Dejemos que $\theta = -\operatorname{atan2}(c, a)$ donde $\operatorname{atan2}$ es la función de arco tangente de dos parámetros (véase esta respuesta para una definición). A continuación, $\sin\theta = -\frac{c}{\sqrt{a^2+c^2}}$ y $\cos\theta = \frac{a}{\sqrt{a^2+c^2}}$ , así que $c \cos\theta + a \sin\theta = 0.$ Definir una matriz de rotación $Q$ (no $R$ ; reservemos el nombre $R$ para más tarde) por $$ Q = \begin{bmatrix}\cos\theta & -\sin\theta \\ \sin\theta & \cos\theta\end{bmatrix}. $$ Entonces $$ Q A = \begin{bmatrix} a \cos\theta - c \sin\theta & b \cos\theta - d \sin\theta \\ 0 & d \cos\theta + b \sin\theta \end{bmatrix}. $$ Supongamos que $a \cos\theta - c \sin\theta \neq 0$ y $d \cos\theta + b \sin\theta \neq 0.$ (La alternativa es que la matriz $QA$ es una proyección y, por tanto, también lo es la matriz original $A$ .) Definir una matriz de escala $N$ (guardando el nombre $M$ para más tarde) por $$ N = \begin{bmatrix} \frac{1}{a \cos\theta - c \sin\theta} & 0 \\ 0 & \frac{1}{d \cos\theta + b \sin\theta} \end{bmatrix}. $$ Entonces $$ NQA = \begin{bmatrix} 1 & \frac{b\cos\theta - d\sin\theta}{a\cos\theta - c\sin\theta}\\ 0 & 1 \end{bmatrix}. $$ Esto es una cizalla. Así que dejemos $NQA = S$ y multiplicar ambos lados de la ecuación por $Q^{-1}N^{-1}$ Entonces $$ A = Q^{-1} N^{-1} S = RMS $$ donde \begin{align} R &= Q^{-1} = \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \end{bmatrix} = \begin{bmatrix} \frac{a}{\sqrt{a^2 + c^2}} & \frac{-c}{\sqrt{a^2 + c^2}} \\ \frac{c}{\sqrt{a^2 + c^2}} & \frac{a}{\sqrt{a^2 + c^2}} \end{bmatrix} , \\ M &= N^{-1} = \begin{bmatrix} a \cos\theta - c \sin\theta & 0 \\ 0 & d \cos\theta + b \sin\theta \end{bmatrix} = \begin{bmatrix} \sqrt{a^2 + c^2} & 0 \\ 0 & \frac{ad-bc}{\sqrt{a^2 + c^2}} \end{bmatrix} , \\ S &= \begin{bmatrix} 1 & \frac{b\cos\theta - d\sin\theta}{a\cos\theta - c\sin\theta}\\ 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 & \frac{ab + cd}{a^2 + c^2} \\ 0 & 1 \end{bmatrix} . \Fin

Esto es bueno para todas las matrices $A$ excepto en el caso de que $a = c = 0,$ que es una proyección y, por lo tanto, presumiblemente no es lo que se utilizaría para "corregir" las posiciones de los puntos. Sin embargo, para completar, si $a = c = 0$ y $b^2 + d^2 \neq 0$ podemos escribir $$ A = \begin{bmatrix} 0 & b \\ 0 & d \end{bmatrix} = \begin{bmatrix} \frac{d}{\sqrt{b^2 + d^2}} & \frac{b}{\sqrt{b^2 + d^2}} \\ \frac{-b}{\sqrt{b^2 + d^2}} & \frac{d}{\sqrt{b^2 + d^2}} \end{bmatrix} \begin{bmatrix} 0 & 0 \\ 0 & \sqrt{b^2 + d^2} \end{bmatrix} \begin{bmatrix} 1 & s \\ 0 & 1 \end{bmatrix} $$ donde $s$ es lo que quieras, es decir, $A=RMS$ donde $R$ es una rotación, $M$ es una matriz de escala (donde $m_x = 0$ ) y $S$ es una cizalla.

Y en el caso final, $a = b = c = d,$ Obviamente, se puede establecer $M$ a la matriz cero (es decir, $m_x = m_y = 0$ ) y utilizar la cizalla y la rotación que desee.

Así que, efectivamente, siempre es posible descomponer $A$ en un producto de la forma $RMS,$ incluso en los casos que probablemente no le interesen.


Esto sugiere que es posible utilizar otra secuencia como $RSM,$ y, efectivamente, esa secuencia concreta es posible. En el $RMS$ el siguiente paso después de poner a cero la esquina inferior izquierda (a través de la rotación) fue escalar para que las diagonales sean $1$ (lo que da inmediatamente una matriz de cizallamiento); para $RSM,$ utilicemos una cizalla para producir una matriz diagonal. Es decir, construyendo $Q$ como antes tenemos $$ Q A = \begin{bmatrix} a \cos\theta - c \sin\theta & b \cos\theta - d \sin\theta \\ 0 & d \cos\theta + b \sin\theta \end{bmatrix}. $$ Una cizalla paralela a la $x$ no afectará a la primera columna de esta matriz, pero el efecto sobre la segunda columna puede verse en $$ \begin{bmatrix} 1 & t \\ 0 & 1 \end{bmatrix} \begin{bmatrix} b \cos\theta - d \sin\theta \\ d \cos\theta + b \sin\theta \end{bmatrix} = \begin{bmatrix} t(d\cos\theta + b\sin\theta) + b\cos\theta - d\sin\theta \\ d \cos\theta + b \sin\theta \end{bmatrix}. $$ Necesitamos $t(d\cos\theta + b\sin\theta) + b\cos\theta - d\sin\theta = 0,$ que obtenemos fijando $t = \frac{d\sin\theta - b\cos\theta}{d\cos\theta + b\sin\theta}.$

pero la derivación podría ser un poco más difícil de encontrar (no lo he intentado) y deberíamos esperar que las fórmulas resultantes sean bastante diferentes. Entonces $$ TQA = \begin{bmatrix} a \cos\theta - c \sin\theta & 0 \\ 0 & d \cos\theta + b \sin\theta \end{bmatrix} $$ donde $T$ es la matriz de cizallamiento $$ T = \begin{bmatrix} 1 & \frac{d\sin\theta - b\cos\theta}{d\cos\theta + b\sin\theta}\\ 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 & -\frac{ab + cd}{ad - bc} \\ 0 & 1 \end{bmatrix} $$ Vemos que $M = TQA$ es una matriz de escala, por lo que tenemos $A = RSM$ donde \begin{align} R &= Q^{-1} = \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \end{bmatrix} = \begin{bmatrix} \frac{a}{\sqrt{a^2 + c^2}} & \frac{-c}{\sqrt{a^2 + c^2}} \\ \frac{c}{\sqrt{a^2 + c^2}} & \frac{a}{\sqrt{a^2 + c^2}} \end{bmatrix} , \\ S &= T^{-1} = \begin{bmatrix} 1 & \frac{ab + cd}{ad - bc} \\ 0 & 1 \end{bmatrix} , \\ M &= \begin{bmatrix} a \cos\theta - c \sin\theta & 0 \\ 0 & d \cos\theta + b \sin\theta \end{bmatrix} = \begin{bmatrix} \sqrt{a^2 + c^2} & 0 \\ 0 & \frac{ad - bc}{\sqrt{a^2 + c^2}} \end{bmatrix} . \Fin Es decir, el $RSM$ La descomposición es igual que la $RMS$ descomposición, excepto el factor de cizallamiento.

0voto

A. Prasad Puntos 498

La respuesta propuesta, que se dice que es no es correcto por otra respuesta pero aún no estoy convencido.


Comentario de user619894 me ha servido de ayuda.

En 2d, el cizallamiento tanto en x como en y, con términos "antisimétricos" fuera de la diagonal es una rotación y una escala isotrópica, así que en realidad, el cizallamiento subsume a la rotación, a menos que se defina que el cizallamiento es sólo en la dirección x (y). El orden sí importa, así que establezca una convención y aténgase a ella.

Originalmente había escrito

$$\begin{bmatrix} 1 & -s \\ s & 1 \\ \end{bmatrix} $$

para el cizallamiento, pero los términos "'antisimétricos' fuera de la diagonal" se parecen a los términos fuera de la diagonal en una matriz de rotación.

Así que tenemos

$$S = \begin{bmatrix} 1 & s \\ s & 1 \\ \end{bmatrix} $$

y

$$M = \begin{bmatrix} m_x \\ m_y \\ \end{bmatrix} $$

Optar por corregir el cizallamiento primero, antes de escalar:

$$MS = M_S = \begin{bmatrix} m_x & s m_x \\ s m_y & m_y \\ \end{bmatrix} $$

y luego sólo usar o bien

$$A = R M_S $$

o

$$A = M_S R $$

sin olvidar la precaución

El orden sí es importante, así que establezca una convención y cúmplala.

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