Con ese sencillo algoritmo he escrito una función que, a partir de cualquier imagen de una escena donde aparezca algún objeto rectangular, pero que presente en sus dos ejes fugas derivadas de la perspectiva, es posible obtener tanto las proporciones reales del objeto en el mundo real como la distancia focal con que se hizo la foto.
PRUEBAS CON IMÁGENES SINTÉTICAS
Unos ejemplos sintéticos (he usado Rhinoceros) con los que probar la precisión del algoritmo: "fotografías" de un ortoedro a 50mm y 24mm, usando los rectángulos que forman sus caras para estimar tanto la focal como sus relaciones de aspecto:


Los cálculos salen muy precisos, el error aquí es debido a que las posiciones de las esquinas de los trapezoides usados (proyecciones de rectángulos del objeto real) se han medido redondeando manualmente a píxeles enteros. Si se hubieran usado las coordenadas exactas de la proyección el error debería ser 0.

APLICACIÓN A FOTOGRAFÍA REAL
Aplicamos el método a una escena interesante porque está llena de rectángulos fugando (los cuadros), pudiendo calcular la focal con que se generó la imagen a partir de cualquiera de ellos. Todos los cuadros arrojan distancias focales muy próximas, solo alejándose claramente el cuadro más pequeño. Esto tiene lógica pues cuando más pequeño es el rectángulo usado para hacer el cálculo se tiene más error. El objetivo que se usó en la toma fue un zoom 14-28mm en su extremo de 14mm, pero a la vista de los cálculos se debe perder algo de ángulo de visión tras hacer las correcciones de distorsión (algo bastante habitual), ya que todas las estimaciones salen por encima de los 14mm.

En breve escribiré un artículo sobre esto porque tiene bastante miga que rascar.
Salu2!
PD: gracias Chemax, no me acordaba del maravilloso comando rimg! he editado tu post para que quede más limpio



