8 votos

Rectificar la imagen a partir de objetos de forma plana congruentes

Estoy implementando un algoritmo para eliminar las distorsiones proyectivas en la siguiente imagen.

The image shows two irregular shapes which will be subject to projective distortions

Entiendo que esto es posible aplicando la siguiente transformación:

$$ \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ l_1 & l_2 & l_3 \\ \end{matrix} $$

Dónde $$ l_\infty=(\begin{matrix}l_1 & l_2 & l_3 \end{matrix})^T $$ es la línea en el infinito. En una imagen en perspectiva de un plano, la línea en el infinito en el plano del mundo se imagina como la línea de fuga del plano.

La línea de fuga puede calcularse mediante la intersección de dos puntos de fuga que pueden calcularse de las siguientes maneras:

  1. A partir de la intersección de dos conjuntos de líneas paralelas de imágenes. Pero parece que no hay dos conjuntos de líneas paralelas en la imagen.
  2. Dados dos intervalos en una línea de imagen $$\lt0,a^\prime,a^\prime+b^\prime\gt$$ con una relación de longitud conocida $$ d(0,a^\prime):d(a^\prime,a^\prime+b^\prime)=0:a^\prime $$ Dónde tengo que resolver el sistema (a escala) $$\left(\begin{matrix}0 \\ 1\end{matrix}\right)=\left(\begin{matrix}h11 & h12 \\ h21 & h22\end{matrix}\right) \left(\begin{matrix}0 \\ 1\end{matrix}\right)$$ $$\left(\begin{matrix}a \\ 1\end{matrix}\right)=\left(\begin{matrix}h11 & h12 \\ h21 & h22\end{matrix}\right) \left(\begin{matrix}a^\prime \\ 1\end{matrix}\right)$$ $$\left(\begin{matrix}a+b \\ 1\end{matrix}\right)=\left(\begin{matrix}h11 & h12 \\ h21 & h22\end{matrix}\right) \left(\begin{matrix}a^\prime+b^\prime \\ 1\end{matrix}\right)$$ Y calcular el punto de fuga como $$x^\prime=\left(\begin{matrix}h11 & h12 \\ h21 & h22\end{matrix}\right) \left(\begin{matrix}0 \\ 1\end{matrix}\right)$$ Pero no entiendo este planteamiento ya que no tengo los puntos mundiales $$\lt0,a,a+b\gt$$ y no sé qué me sirve para conocer la relación de longitudes.
  3. Usando la relación cruzada. Lo que no entiendo en absoluto cómo podría ser posible utilizar en este caso.

Agradecería cualquier idea al respecto.

Editar: no es necesario seguir ningún enfoque en particular sólo recordar que los objetos planos son irregulares (no hay ángulos ortogonales en el mundo real) formas congruentes (tienen la misma forma en el mundo real)

2voto

gagneet Puntos 4565

Supondré que los dos polígonos brillantes representados son congruentes en el plano del mundo. Si no lo son, entonces supongo que no tendrás suficiente información para reconstruir nada.

El primer paso es encontrar una transformación proyectiva que mapee uno de los polígonos sobre el otro. Esa transformación se define de forma única utilizando cuatro puntos y sus imágenes, y he descrito este cálculo en detalle en otro puesto . Por lo tanto, la elección de cualquier par de esquinas coincidentes le dará esa matriz. Originalmente había asumido que esta era la transformación que te interesaba, pero no había leído la pregunta con suficiente atención. La transformación que acabas de encontrar describe la rotación de un polígono sobre otro en el plano de la imagen.

A continuación, se buscan los puntos fijos de la transformación. Se encuentran como vectores propios de la matriz de transformación. En $\mathbb C\mathrm P^2$ deberías obtener tres puntos fijos, uno de ellos real y dos complejos y conjugados entre sí. El real es tu centro de rotación. Los puntos fijos complejos corresponden a los puntos del círculo ideal $I=(1,i,0)^T$ y $J=(1,-i,0)^T$ que permanecen fijos bajo cualquier transformación de similitud.

Por cierto: La unión de los dos puntos complejos corresponde a la línea de fuga. Que en su imagen es camino fuera del área de la imagen. Pero conocer la línea de fuga es menos útil que conocer las ubicaciones de $I$ y $J$ como nosotros, ya que estos puntos se pueden utilizar para definir ángulos, por lo que le ayudarán a evitar la inclinación.

Ahora puedes volver a elegir cuatro puntos y sus imágenes para definir una transformación proyectiva. Esta vez, se mapean los puntos fijos complejos a $I$ y $J$ y asignas el centro de rotación a cualquier lugar que quieras que esté en tu imagen reconstruida, por ejemplo, el origen. Todavía tiene un punto que puede elegir arbitrariamente. Su imagen fijará la escala y la orientación de la imagen reconstruida. Estrictamente hablando, tampoco tiene que tomar el centro de rotación como un punto de preimagen: siempre que mapee correctamente $I$ y $J$ de las coordenadas de la imagen a las coordenadas del mundo, puede elegir dos pares cualesquiera de puntos reales para definir de forma única la transformación proyectiva.

Contando los grados de libertad, los dos puntos elegidos arbitrariamente arriba suman cuatro grados de libertad reales, que coinciden con los cuatro grados de libertad de una transformación de similitud. Todo lo demás es fijo. En particular, no sólo se reconstruyen las líneas paralelas, sino también los ángulos.


Acabo de implementar la descripción anterior como prueba de concepto utilizando Cenicienta . El centro de rotación, dibujado en verde, parece coincidir con el límite superior de su imagen. Los puntos P1 , P2 y R2 fueron elegidos arbitrariamente.

Original and reconstructed image

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