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
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 ... –
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
@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