Dado el tamaño de un objeto conocido en la imagen, ¿cómo podemos calcular el tamaño de otros objetos en la misma imagen?

La pregunta considera un escenario muy específico en el que tenemos una imagen con, digamos, dos objetos rectangulares. Conocemos el ancho y la altura de un objeto. ¿Cómo podemos calcular las dimensiones del otro objeto?

Supongamos que el plano correspondiente a la cámara (esa es la orientación en la que se hace clic en la imagen) no es paralelo a la superficie de los objetos de la imagen.

Idealmente, planeo construir algo como esto: https://www.youtube.com/watch?v=jmoPCN2NM78

Tengo la intuición de usar fórmulas trigonométricas para calcular la proyección de la imagen en la superficie paralela a la cámara. Pero, no pude llegar a ninguna conclusión concreta y convincente.

Cualquier tipo de ayuda para proporcionar fórmulas, trabajos de investigación o información detallada sobre cómo puedo lograr esto, será muy apreciada.

¿Se toma más de una foto (desde diferentes posiciones, para que uno pueda hacer fotogrametría)? ¿Obtienes información de rango? ¿Utiliza iluminación 3D estructurada ? Tendrá que decir un poco más acerca de los datos exactos que toma, porque necesita inferir la información del rango de alguna manera para que este tipo de idea funcione.
Bueno. Entonces, tendré solo una foto, no más de una. Probablemente no tenga ningún dato como tal, ya que el caso es el mismo que tomar una foto desde un teléfono móvil por ejemplo. Y no estoy usando iluminación 3D estructurada. Solo me preocupan dos dimensiones (alto y ancho). Tampoco tengo objetos esféricos. Creo que el enlace que proporcioné puede ayudarlo a comprender mejor la declaración del problema.
Quieres lo contrario de lo que hacen los artistas si quieren las proporciones correctas eprints.fortlewis.edu/27/1/…

Respuestas (1)

Este tipo de problemas son muy comunes en gráficos por computadora. Lo que explicaré solo funciona si la distancia que desea medir y su objeto de referencia están en el mismo plano (por ejemplo, una hoja de papel sobre la mesa que desea medir).
Si supieras cómo se encuentra este plano en la imagen, así es como los puntos del plano se asignan a los puntos de la imagen, entonces sería fácil. ¡Afortunadamente esta tarea ya tiene una buena respuesta aquí ! Apliquemos esto para medir la distancia de dos puntos en la imagen. Toma esta captura de pantalla de tu video como ejemplo:

la mesa

Las esquinas de la hoja de papel son pag 1 = ( 496 , 255 ) , pag 2 = ( 607 , 224 ) , pag 3 = ( 508 , 171 ) , y pag 4 = ( 405 , 194 ) y las esquinas de la mesa son q 1 = ( 7 , 244 ) , q 2 = ( 654 , 389 ) , q 3 = ( 860 , 47 ) , y q 4 = ( 511 , 23 ) (todo en píxeles). Las esquinas de un papel DIN A3 son mi 1 = ( 0 , 0 ) , mi 2 = ( 0.3 , 0 ) , mi 3 = ( 0.3 , 0.42 ) , y mi 4 = ( 0 , 0.42 ) (todo en m).
Ahora construya las matrices de transformación de acuerdo con la referencia . Para nosotros la "imagen de destino" es la hoja de papel, y la "imagen de origen" es la dada de la tabla. Las matrices de transformación son:

A = ( 400.027 530.049 377.977 134.686 172.899 212.787 0.806505 0.873228 0.933278 ) ,
B = ( 0. 0.3 0. 0. 0. 0.42 1. 1. 1. ) ,
C = B A 1 = ( 0.00218481 0.00325931 1.62797 0.00145442 0.00520777 0.148304 0.0000581739 0.00284785 1.74436 ) .
La matriz C se transforma de coordenadas de píxeles a coordenadas de "hoja de papel". Presta atención al hecho de que estamos usando coordenadas homogéneas . Para transformar las esquinas de la mesa en coordenadas de hoja, primero aplicamos C : C ( q 1 , 1 ) = ( 1.03252 , 0.768499 , 1.23704 ) , C ( q 2 , 1 ) = ( 0.0915473 , 0.927641 , 1.61234 ) , C ( q 3 , 1 ) = ( 1.47321 , 0.553807 , 0.62639 ) , y C ( q 4 , 1 ) = ( 0.788933 , 1.18639 , 0.578344 ) . Y luego realizar la deshomogeneización para obtener q 1 = ( 0.834672 , 0.621241 ) , q 2 = ( 0.0567792 , 0.575339 ) , q 3 = ( 2.35191 , 0.884125 ) , y q 4 = ( 1.36412 , 2.05135 ) . A partir de esto podemos calcular directamente las distancias (en m) y encontrar d ( q 1 , q 2 ) = 1.43 (debiera ser 1.53 ), d ( q 2 , q 3 ) = 2.82 (debiera ser 2.73 ), d ( q 3 , q 4 ) = 1.53 (debiera ser 1.53 ), y d ( q 4 , q 1 ) = 2.62 (debiera ser 2.73 ). Estos valores no son perfectos. Las posibles razones son que no elegí los puntos de la imagen con la suficiente precisión. Pero, como se señaló en el video, es crucial que elija los puntos de referencia con la mayor precisión posible. Jugar con esos valores muestra que tienen un gran efecto en el resultado final. Este método tampoco tiene en cuenta la distorsión de la lente.