Transformaciones geométricas

Transformaciones geométricas

Una vez detectado el cuadrado que encierra la marca en nuestro entorno, es necesario detectar la posición de la cámara respecto a éste en función de la distorsión por perspectiva a que está sujeto. Para ello vamos a hacer uso de las llamadas transformaciones proyectivas u homografías.

Entenderemos como homografía una transformación invariable h que mapea elementos de un espacio P hacia otro P' de forma que tres puntos colineales en el primero lo sigan siendo en el segundo. En términos matemáticos, esto supone que para cualquier vector x del primer espacio se cumple que x'= H x, siendo H la matríz que representa la homografía.

A nivel práctico, se puede observar mejor en la figura que la homografía (flechas azules) es la base para deshacer las distorsiones por perspectiva en las imágenes, entre otras muchas cosas:

Imagen tomada de Rodrigo's blog

Si trabajamos con una imagen digital 2D, una homografía del tipo que nos interesa se traduce en una tranformación lineal no singular seguida de una traslación, de forma que dado el punto original en una imagen (x,y), el punto (x´,y´) de la otra se calcula como:

o, lo que es lo mismo, en coordenadas homogéneas:

La matriz A, correspondiente a la transformación lineal, siempre se puede expresar en términos de una rotación y un escalado de la siguiente forma:

donde Rq y Rf son dos matrices de rotación con ángulos q y f, respectivamente, y D es una matriz de escalado.

La matriz que nos interesa, H, puede estimarse conociendo en dos imágenes equivalentes las posiciones de al menos 3 puntos característicos. En nuestro caso, los puntos serán las esquinas del cuadrado que forma la marca en la imagen patrón original (plano del cuadrado perpendicular al eje de visión y a una distancia conocida) y en la imagen que capta la cámara. Una vez establecida la correspondencia entre los 4 puntos, se tiene la posición de la cámara en el momento de captura respecto a la imagen capturada.

Una vez se dispone de la matriz H, se puede deshacer la transformación por perspectiva, como se ve en la figura superior. Cuando disponemos del patrón tal cual se vería en la marca conocida, se reduce su resolución y se procede a su reconocimiento. La idea es que los patrones que van a compararse no tengan un número de pixeles muy elevado a efectos de facilitar la comparación, por lo que la complejidad del patrón no debe ser muy elevada.

Para efectuar la comparación, lo único que necesitamos es tener la cámara calibrada, para evitar deformaciones debidas a efecto de lente, y preentrenar la marca, que equivale a decirle al sistema que memorice una versión de dicha marca a baja resolución en todas las orientaciones posibles. Así, cuando llega el patrón que se ha normalizado y submuestreado, sólo necesitamos evaluar la diferencia con las versiones almacenadas del patrón (template matching) y escoger la versión cuya diferencia sea menor. Esto nos da simultaneamente el reconocimiento del patrón y su orientación, mientras que el cuadrado detectado nos devuelve la posición relativa de la cámara.

 

Obra publicada con Licencia Creative Commons Reconocimiento 2.5