2010-05-18 14 views
14

Heyguys .. Esta no es exactamente una pregunta de programación exactamente. Solo quiero saber cuál sería su enfoque para un problema común en el procesamiento digital de imágenes.¿Cómo encontrarías la altura de los objetos a los que se les da una imagen?

Digamos que tiene una imagen de algunos árboles en formato jpg. ¿Cómo vas a encontrar las alturas de cada uno de estos árboles? La foto es la única entrada que tienes.

Quiero saber los enfoques que no tiene el código. Entonces no importa si sus respuestas son vagas, o no DIP-ish.

pequeña corrección: La altura no tiene que ser la altura real del árbol. La altura se puede tomar a cualquier escala. Pero debe ser consistente con todos los objetos en la imagen.

+3

Si la foto es la única entrada que tiene, no se puede hacer. Considere un árbol bonsai fotografiado desde una distancia cercana, frente a un árbol de tamaño completo fotografiado desde más lejos ... –

+1

Si obtiene la fecha y la ubicación del exif, todo lo que necesita hacer es detectar algunas sombras. Entonces tendrás todo para calcular la altura usando el teorema de Pitágoras. – zaf

+0

@Jim Lewis-- ¿Tiene la foto metadatos asociados, como la información del objetivo y la distancia focal? Porque si conoce la distancia a los árboles desde allí, y el píxel a pulgadas (o pies, o lo que sea), entonces se trata de separar los árboles del fondo. – mmr

Respuesta

6

Sí es posible. Lo que usted describe tiene toda una industria alrededor de ella, llamado Photogrammetry

+0

interesante. ¡gracias por eso! – Laz

+0

No veo dónde viene eso ni siquiera cerca de una respuesta. Tengo miedo. aunque es un buen enlace ... –

+0

@ Daij-Djan: ¿Supongo que lees una pregunta diferente? –

0

Suponiendo que estén todos a la misma distancia, todos a escala, querrá encontrar una única unidad de medida que pueda garantizar. Por ejemplo, si hay una persona en la foto, de nuevo, la misma escala, y usted sabe que mide exactamente 6 pies de altura, la usa como medida. Luego toma eso, y cuenta cuántos apilados hacen el árbol. Por ejemplo, si necesita 3.5 de esta persona, entonces:

3.5 * 6 = 21 

le da un árbol de 21 pies de altura.

Sin un solo punto de referencia para todo, o si están todos en diferentes escalas, lo que se necesita mucha más información que se puede llegar fácilmente sin haber estado allí.

0

Confío en que un objeto de dimensiones conocidas esté presente en la imagen. Por ejemplo, un hombre.

O tal vez, podríamos utilizar los datos EXIF ​​de ingeniería inversa al tamaño del objeto en función de las dimensiones del sensor de la cámara, la lente y la distancia focal utilizada. Esto nuevamente depende del ángulo. Deberíamos obtener resultados más precisos cuando la cámara se haya mantenido perpendicular al sujeto.

+0

Un hombre no es de dimensiones conocidas. A menos que sepa que está de pie y su estatura de pie. – mmr

+0

suena bien. ¿Pero cómo aislarías cada objeto? el objeto del fondo, etc. – Laz

4

Hay una buena cantidad de investigación de visión por ordenador en esta área. Suponiendo que no conoce las limitaciones de la cámara, tendrá que hacer suposiciones sobre la escena y la cámara para determinar las alturas hasta un factor de escala. Tenga en cuenta que sin restricciones de la cámara o una altura de referencia en la imagen es imposible distinguir la diferencia entre un árbol alto fotografiado a distancia o un árbol corto fotografiado de cerca. Un gran comienzo es el trabajo Single View Metrology de Criminisi.

+0

gracias por eso. Pero mira que no estoy buscando la altura exacta ni nada. Solo quiero alturas relativas de los objetos. Tomado en relación a cualquier cosa que desee. ¿Cómo lo mido en una foto? – Laz

+0

¿Miraste el documento al que hacía referencia? Tiene esa aplicación exacta. – jeff7

-4

Si su imagen es 3 * 3 y desea conocer el tamaño de la imagen (es decir, 3x3 ... así 3x3 = 9) ahora tenemos 8 píxeles comenzando desde 0 hasta 8. Entonces 9/8 = (___) kb.

Si usted quiere encontrar el tamaño de la imagen en MB, como hacer el ejemplo anterior, sólo lo hacen así (9/8)/(1024) = (----) Mo ..

Por lo que obtendrá el resultado en Mb.

2

Es fácil encontrar el tamaño de un objeto a partir de imágenes usando Photogrammetry. La fotogrametría es la ciencia de hacer mediciones a partir de fotografías. Para ello necesitamos saber dos cosas,

  • la distancia entre la cámara y el plano de la imagen (distancia de la cámara al objeto).
  • Distancia focal (en mm y píxeles por mm) o tamaño físico del sensor de imagen.

Los siguientes son los pasos:

calibrar la cámara

Uso OPENCV para calibrar el camera.You puede utilizar la herramienta de OpenCV calibrate.py y el patrón de tablero de ajedrez PNG previstas en el código fuente para generar una matriz de calibración. La calibración de la cámara se realiza para encontrar los parámetros de la cámara. Tomé alrededor de una docena de fotos de las fotos de tablero de ajedrez desde muchos ángulos como pude con mi cámara web (para calibrar mi cámara web). Para más detalles, consulte openCV camera calibration.

Obtendremos f_x, f_y, c_x, c_y de la matriz de calibración.

Al verificar los detalles de las fotos que tomó, encontrará la resolución nativa de las fotos (heightXwidth) y en su EXIF headers puede encontrar el valor de la distancia focal (f). Estos artículos pueden variar dependiendo de su cámara.

píxeles por milímetro

que necesitamos saber los píxeles por milímetro (píxeles/mm) en el sensor de imagen.

f_x = f * m_x

f_y = f * m_y

Puesto que tenemos dos de las variables para cada fórmula podemos resolver para m_x y m_y.I simplemente promediaron f_x y f_y para obtener f_xy.

m = f_xy/focal_length_of_camera

insertar la imagen

insertar la imagen de la que se necesita para encontrar el tamaño real de la imagen. Debe conocer la distancia entre el objeto y la cámara. Encuentra la dimensión de la imagen (height1Xwidth1)

Encontrar el tamaño del objeto en píxeles

Determinar el tamaño del objeto en píxeles. Simplemente uso la fórmula de distancia para encontrar la longitud de una línea seleccionada. Puede adoptar cualquier otro método.

Convert px/mm en la resolución más baja

pxpermm_in_lower_resolution = (Width1 * m)/anchura

tamaño del objeto en el sensor de imagen

size_of_object_in_image_sensor = object_size_in_pixels/(pxper mm_in_lower_resolution)

del tamaño real de objeto

El tamaño real de objeto se puede encontrar con los datos anteriores como,

real_size = (dist * size_of_object_in_image_sensor)/FOCAL_LENGTH

Cuestiones relacionadas