1 votos

Asignar los puntos xy predichos a los puntos xy medidos

Tengo un conjunto de predicciones $xy$ pares de coordenadas que se refieren a las ubicaciones de los fenómenos físicos, y puedo medir un pequeño conjunto de esos fenómenos físicos para obtener su $xy$ coordenadas. Lo que me gustaría hacer es encontrar un mapeo, una proyección u otro método a través del cual pueda introducir una predicción $xy$ coordinar y sacar un ajustado $xy$ coordenada basada en los valores medidos anteriormente.

He intentado utilizar el método descrito aquí Encontrar la matriz de transformación a partir de 4 puntos proyectados (con Javascript) y descubrí que funcionaba bien para los puntos utilizados en la definición de la matriz de transformación y las áreas circundantes, pero bastante mal lejos de ellos. ¿Es posible ampliar este tipo de método para utilizar más puntos con el objetivo de mejorar la precisión global?

Mi siguiente idea fue intentar utilizar algún tipo de regresión multivariante que me permitiera utilizar tantos puntos como pudiera medir, pero los métodos básicos con los que estoy familiarizado asignan múltiples variables de entrada a una variable de salida, que no es lo que quiero aquí. Estoy seguro de que hay una manera de hacer esto, pero se me escapa.

1voto

gagneet Puntos 4565

Transformaciones lineales

Con una transformación lineal se tiene

$$\begin{pmatrix}x'\\y'\end{pmatrix}= \begin{pmatrix}a&b\\c&d\end{pmatrix}\cdot \begin{pmatrix}x\\y\end{pmatrix}$$

y quieres encontrar $a,b,c,d$ . Se pueden establecer un montón de ecuaciones para esto:

$$\begin{pmatrix} x_1 & y_1 & 0 & 0 \\ 0 & 0 & x_1 & y_1 \\ x_2 & y_2 & 0 & 0 \\ 0 & 0 & x_2 & y_2 \\ \vdots & \vdots & \vdots & \vdots \\ x_n & y_n & 0 & 0 \\ 0 & 0 & x_n & y_n \end{pmatrix}\cdot \begin{pmatrix}a\\b\\c\\d\end{pmatrix}\approx \begin{pmatrix}x_1'\\y_1'\\x_2'\\y_2'\\\vdots\\x_n'\\y_n'\end{pmatrix}$$

Utilice aproximación lineal por mínimos cuadrados para determinar $a$ a través de $d$ y ya está.

En realidad, también podría determinar los parámetros para $a,b$ y $c,d$ por separado, ya que las ecuaciones correspondientes son independientes. La vista combinada anterior es beneficiosa en los casos en los que se desean restricciones adicionales. Así, por ejemplo, podría querer $a=d$ y $b=-c$ para aplicar las transformaciones de similitud que preservan el ángulo. De este modo, se tiene un único sistema de ecuaciones en dos variables.

Transformaciones afines

Aquí está su mapa

$$\begin{pmatrix}x'\\y'\\1\end{pmatrix}= \begin{pmatrix}a&b&c\\d&e&f\\0&0&1\end{pmatrix}\cdot \begin{pmatrix}x\\y\\1\end{pmatrix}$$

por lo que tienes dos parámetros más para afinar, y dos columnas más en tu matriz. Sólo tienes que rellenarlas con $1$ , como $c$ y $f$ se añadirán al resultado tal cual.

Transformaciones proyectivas

Sinceramente, no tengo una solución sencilla y genérica para esto. El problema es que se obtiene algo como

$$\begin{pmatrix}x'\\y'\\1\end{pmatrix}= \lambda\begin{pmatrix}a&b&c\\d&e&f\\g&h&k\end{pmatrix}\cdot \begin{pmatrix}x\\y\\1\end{pmatrix}$$

y no sabes que $\lambda$ o bien. Puede utilizar la última fila para eliminar el $\lambda$ pero entonces se obtienen ecuaciones como estas:

\begin{align*} (gx+hy+k)x' &= ax+by+c \\ (gx+hy+k)y' &= dx+ey+f \end{align*}

Expresado en forma de matriz se podría escribir como

$$\begin{pmatrix} x_1 & y_1 & 1 & 0 & 0 & 0 & -x_1x_1' & -y_1x_1' & -x_1' \\ 0 & 0 & 0 & x_1 & y_1 & 1 & -x_1y_1' & -y_1y_1' & -y_1' \\ x_2 & y_2 & 1 & 0 & 0 & 0 & -x_2x_2' & -y_2x_2' & -x_2' \\ 0 & 0 & 0 & x_2 & y_2 & 1 & -x_2y_2' & -y_2y_2' & -y_2' \\ \vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\ x_n & y_n & 1 & 0 & 0 & 0 & -x_nx_n' & -y_nx_n' & -x_n' \\ 0 & 0 & 0 & x_n & y_n & 1 & -x_ny_n' & -y_ny_n' & -y_n' \end{pmatrix}\cdot \begin{pmatrix}a\\b\\c\\d\\e\\f\\g\\h\\k\end{pmatrix}\approx \begin{pmatrix}0\\0\\0\\0\\\vdots\\0\\0\end{pmatrix}$$

Pero si aplicas la optimización estándar de mínimos cuadrados a esto, acabarás poniendo todas tus variables a cero, ya que al utilizar la matriz cero como matriz de transformación se eliminarán todos los errores. Para evitar esto, es posible que tenga que añadir algo para forzar una matriz distinta de cero. Por ejemplo, en la mayoría de las situaciones su matriz de transformación tendrá una matriz no nula $k$ y, por lo tanto, puede elegir que esa entrada sea igual a $1$ .

$$\begin{pmatrix} x_1 & y_1 & 1 & 0 & 0 & 0 & -x_1x_1' & -y_1x_1' \\ 0 & 0 & 0 & x_1 & y_1 & 1 & -x_1y_1' & -y_1y_1' \\ x_2 & y_2 & 1 & 0 & 0 & 0 & -x_2x_2' & -y_2x_2' \\ 0 & 0 & 0 & x_2 & y_2 & 1 & -x_2y_2' & -y_2y_2' \\ \vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\ x_n & y_n & 1 & 0 & 0 & 0 & -x_nx_n' & -y_nx_n' \\ 0 & 0 & 0 & x_n & y_n & 1 & -x_ny_n' & -y_ny_n' \end{pmatrix}\cdot \begin{pmatrix}a\\b\\c\\d\\e\\f\\g\\h\end{pmatrix}\approx \begin{pmatrix}x_1'\\y_1'\\x_2'\\y_2'\\\vdots\\x_n'\\y_n'\end{pmatrix}$$

Ahora puedes resolver esto. Si tienes cuatro puntos obtendrías exactamente la transformación proyectiva de ese post al que haces referencia. Si tienes más y se ajustan a una transformación proyectiva común, deberías obtener esta transformación. Si no se ajustan exactamente a una transformación proyectiva, tienes que tener cuidado con los errores que realmente estás minimizando. Ya no está minimizando la suma de las distancias al cuadrado entre los puntos predichos y los reales. Eso es porque la forma en que el sistema de ecuaciones se establece, usted está utilizando las posiciones reales transformadas en el lado izquierdo de la ecuación, así, pero si usted calcula los errores al cuadrado que se utiliza las coordenadas previstas allí. Si tu transformación proyectiva es casi afín, es decir, si $\lvert g\rvert,\lvert h\rvert\ll1$ entonces es probable que esto no importe demasiado.

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