您将如何找到给定图像的对象的高度?
computer-vision
image-processing
4
0

这完全不是编程问题。我只想知道您对数字图像处理中的常见问题所采取的方法。

假设您有几棵树的图像,例如jpg格式。您将如何查找每棵树的高度?照片是您唯一的输入。

我想知道您不必编写代码的方法。因此,答案是否含糊不清或不符合DIP要求都无关紧要。

小校正:高度不必是树的实际高度。高度可以采用任何比例。但是应该与图片中的所有对象保持一致。

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

是的,有可能。您所描述的内容围绕着整个行业,称为摄影测量

收藏
评论

在这方面有大量的计算机视觉研究。假设您不知道摄影机的约束,则必须对场景和摄影机进行假设,以确定不超过比例因子的高度。请注意,没有相机约束或图像中的参考高度,就无法分辨远距离拍摄的高大树木与近距离拍摄的短大树木之间的区别。 Criminisi的Single View Metrology工作是一个很好的开端。

收藏
评论

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

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

步骤如下:

校准相机

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

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

查看所拍摄照片的详细信息,您将找到照片的原始分辨率(heightXwidth),并在其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 / focal_length_of_camera

插入图片

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

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

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

以较低的分辨率转换px / mm

pxpermm_in_lower_resolution =(width1 * m)/ width

图像传感器中物体的尺寸

size_of_object_in_image_sensor = object_size_in_pixels /(pxpermm_in_lower_resolution)

物体的实际尺寸

对象的实际大小可以通过上述数据找到,例如:

实际大小=(dist * size_of_object_in_image_sensor)/ focal_length

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号