2012-03-30 6 views
17

Tengo que hacer una aplicación móvil que calcule el tamaño real de un objeto en una imagen.¿Cómo obtener el tamaño de la vida real de un objeto a partir de una imagen, cuando no se conoce la distancia entre el objeto y la cámara?

me han hecho algunas investigaciones sobre ella y se encontró útil [pregunta]: How would you find the height of objects given an image?

La relación de la distancia del tamaño de la cámara y la vida real del objeto no es en realidad tan compleja, la relación entre el tamaño del objeto en el sensor y el tamaño del objeto en la vida real es el mismo que la relación entre la distancia focal y la distancia al objeto.

distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels) 
          --------------------------------------------------------------------------- 
          object height (pixels) * sensor height (mm) 

Pero, ¿cómo obtener el valor de la altura real del objeto si no se conoce la distancia?

¿Las herramientas que crean modelos 3D a partir de imágenes tienen dimensiones de la vida real?

Respuesta

25

La respuesta simple es no se puede.

Por cierto, esta es la razón por la cual los humanos tienen dos ojos. Si quiere juzgar el tamaño sin una distancia conocida, necesitará al menos dos puntos de referencia. Esto le permite triangular la posición del objeto, obtener una distancia y usar su distancia focal conocida para calcular el tamaño.

La respuesta más compleja es hay formas de evitar este por ejemplo:

  1. trucos mediante el uso de una referencia conocida:

    Por ejemplo, si tiene un objeto de tamaño conocido , puedes inferir la distancia. Esto es similar a lo que NASA does para calibrar sus cámaras, por ejemplo.

    Puede hacer suposiciones seguras si está tratando con objetos comunes, como la altura de una planta al analizar la imagen de un edificio.

  2. mueva la cámara en torno a:

    Esto le permite obtener más de un punto de referencia con la misma cámara.

    Supongo que podría usar el acelerómetro para medir con precisión la relación de posición entre la imagen capturada en el punto T1 en el tiempo y el punto T2. Esto le daría dos imágenes del mismo sujeto con una distancia conocida entre ellas. Esto luego te permite triangular como si tuvieras dos ojos.

    Si los temblores normales de la cámara de mano serán suficientes para la triangulación, o si el acelerómetro será lo suficientemente preciso como para colocar el teléfono inercialmente, no lo sé.

  3. asumir una distancia:

    Si su aplicación está diseñada para comparar algo en la escala de una mano humana (o de otro poco de la anatomía humana), es probable que pueda asumir con seguridad una distancia sobre la base de lo que la gente lo hará naturalmente. Los límites de enfoque de la cámara también proporcionarán un rango superior e inferior de cuán lejos puede estar un objeto y aún así estar enfocado.Esto probablemente estará dentro de un margen de error tolerable.

Como se menciona en su pregunta, hay toda una subfield dedicada a esta pregunta, y es un active research area.

+0

Bueno, no puedo tener ningún objeto de referencia en una imagen, pero puedo tener la opción para que el usuario haga clic en varias imágenes de un objeto desde diferentes ángulos. –

+0

¿Las herramientas que crean modelos 3D a partir de imágenes tienen dimensiones de la vida real o dimensiones proporcionales? [Ejemplo] (http://www.123dapp.com/catch) –

+3

"Tome fotografías digitales múltiples de personas, lugares o cosas estacionarios". usan el método n. ° 2, luego usan el procesamiento de imágenes para recuperar la diferencia de posición entre las dos imágenes. – brice

Cuestiones relacionadas