如何在给定图像的情况下找到物体的高度?

Laz*_*Laz 20 image-processing computer-vision photogrammetry

这不完全是一个编程问题.我只是想知道你的方法对于数字图像处理中的常见问题.

假设您有jpg格式的几棵树的图像.你会如何找到这些树木的高度?照片是您唯一的输入.

我想知道你没有编码的方法.因此,如果您的答案含糊不清或非DIP-ish无关紧要.

小修正:高度不必是树的实际高度.高度可以达到任何比例.但应该与pic中的所有对象保持一致.

Nei*_*l N 8

对的,这是可能的.你所描述的是整个行业,称为摄影测量

  • 不,我没有.仅仅是维基百科文章的链接不是答案 (3认同)

小智 5

使用摄影测量从图像中找到物体的大小很简单。摄影测量是根据照片进行测量的科学。为此我们需要知道两件事,

  • 相机与图像平面之间的距离(相机到物体的距离)。
  • 焦距(以毫米和每毫米像素为单位)或图像传感器的物理尺寸。

以下是步骤:

校准相机

使用openCV对相机进行标定。可以使用OpenCV calibrate.py工具和源码中提供的棋盘图案PNG生成标定矩阵。进行相机标定以找到相机参数。我用网络摄像头从多个角度拍摄了大约十几张棋盘照片(以校准我的网络摄像头)。有关更多详细信息,请查看openCV 相机校准

我们将从校准矩阵中得到f_x,f_y,c_x,c_y。

检查您拍摄的照片的详细信息,您将找到照片的原始分辨率(高度X宽度),并且在其EXIF标题中您可以找到焦距值(f)。这些项目可能会因您的相机而异。

每毫米像素数

我们需要知道图像传感器上每毫米的像素数 (px/mm)。

f_x=f*m_x

f_y=f*m_y

由于每个公式都有两个变量,因此我们可以求解 m_x 和 m_y。我只是对 f_x 和 f_y 进行平均以获得 f_xy。

m=f_xy/相机焦距

插入图像

插入您需要从中查找图像实际尺寸的图像。您应该知道物体和相机之间的距离。求图像的尺寸(高1X宽1)

查找对象大小(以像素为单位)

确定对象的大小(以像素为单位)。我只是使用距离公式来查找所选线的长度。您可以采用任何其他方法。

以较低分辨率转换 px/mm

pxpermm_in_lower_resolution = (width1*m)/宽度

图像传感器中物体的尺寸

图像传感器中对象的大小 = 像素中对象大小/(较低分辨率中的 pxpermm_)

物体的实际尺寸

根据以上数据可以求出物体的实际尺寸:

real_size = (dist*size_of_object_in_image_sensor)/focal_length