una trigonometria triangulos sombra resueltos que proyectos proyectada proyecta procesamiento problemas poner pimage persona paralaje objeto mueva mosaico manipular las invertir introduccion imagenes imagen hacer geometricas fotogrametrico fotogrametria fotografias elementos edificio deformaciones deagostini daniel computacional como calcular artificial arbol analogica altura aereas aerea image-processing computer-vision photogrammetry

image processing - trigonometria - ¿Cómo encontrarías la altura de los objetos dados una imagen?



proyectos de vision computacional (6)

Esto no es exactamente una pregunta de programación exactamente. Solo quiero saber cuál sería su enfoque ante un problema común en el procesamiento de imágenes digitales.

Digamos que tienes una imagen de unos pocos árboles en formato jpg. ¿Cómo irías para encontrar las alturas de cada uno de estos árboles? La foto es la única entrada que tienes.

Quiero saber los enfoques que no tienes para codificar. Por lo tanto, no importa si sus respuestas son vagas o no DIP-ish.

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


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

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

Los siguientes son los pasos:

Calibrar la camara

Use openCV para calibrar la cámara. Puede usar la herramienta OpenCV calibrate.py y el patrón de tablero de ajedrez PNG que se proporciona 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é una docena de fotos de las fotos del tablero de ajedrez desde muchos ángulos como pude con mi cámara web (para calibrar mi cámara web). Para más detalles verifique la calibración de la cámara openCV .

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

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

Píxeles por milímetro

Necesitamos conocer los píxeles por milímetro (px / mm) en el sensor de imagen.

f_x = f * m_x

f_y = f * m_y

Ya que tenemos dos de las variables para cada fórmula, podemos resolver m_x y m_y. Acabo de promediar f_x y f_y para obtener f_xy.

m = f_xy / focal_length_of_camera

Inserte la imagen

Inserte su imagen de la cual necesita encontrar el tamaño real de la imagen. Debes saber la distancia entre el objeto y la cámara. Encuentra la dimensión de la imagen (height1Xwidth1)

Encuentra el tamaño del objeto en píxeles

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

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

pxpermm_in_lower_resolution = (width1 * m) / width

Tamaño del objeto en el sensor de imagen.

size_of_object_in_image_sensor = object_size_in_pixels / (pxpermm_in_lower_resolution)

Tamaño real del objeto

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

real_size = (dist * size_of_object_in_image_sensor) / focal_length


Me basaría en un objeto de dimensiones conocidas para estar presente en la imagen. Por ejemplo, un hombre.

O tal vez, podríamos usar los datos EXIF ​​para aplicar 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 depende nuevamente del ángulo. Deberíamos obtener resultados más precisos cuando la cámara se ha mantenido perpendicular al sujeto.


Sí, es posible. Lo que estás describiendo tiene toda una industria a su alrededor, llamada Photogrammetry


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

Si desea encontrar el tamaño de la imagen en MB, como en el ejemplo anterior, simplemente haga lo mismo (9/8) / (1024) = (----) MB ..

Así obtendrás el resultado en Mb.


Suponiendo que todos estén a la misma distancia, todos a escala, desearía encontrar una sola unidad de medida que pueda garantizar. Por ejemplo, si hay una persona en la foto, de nuevo, en la misma escala, y sabes que tienen exactamente 6 pies de altura, la usas como medida. Luego tomas eso y cuentas cuántos apilados forman el árbol. Por ejemplo, si necesita 3.5 de esta persona, entonces:

3.5 * 6 = 21

te da un árbol de 21 pies de altura.

Sin un punto de referencia único para todo, o si están todos en diferentes escalas, necesitaría mucha más información de la que podría obtener fácilmente sin haber estado allí.


Hay una buena cantidad de investigación en visión artificial 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 cámara o una altura de referencia en la imagen es imposible distinguir la diferencia entre un árbol alto fotografiado desde una distancia o un árbol corto fotografiado de cerca. Un gran comienzo es el trabajo de Metrología de vista única de Criminisi.