【问题标题】:How would you find the height of objects given an image?给定图像,您将如何找到物体的高度?
【发布时间】:2011-02-21 01:34:25
【问题描述】:

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

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

我想知道你不必编码的方法。因此,您的答案是否含糊或非 DIP-ish 都没关系。

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

【问题讨论】:

  • 如果照片是您唯一的输入,则无法完成。考虑从近距离拍摄的盆景树,而不是从远处拍摄的全尺寸树......
  • 如果您从 exif 中获取日期和位置,那么您需要做的就是一些阴影检测。然后你就可以使用勾股定理计算高度了。
  • @Jim Lewis——照片是否有相关的元数据,比如镜头信息和焦距?因为如果你知道到树木的距离,以及像素到英寸(或英尺,或其他什么),那么这就是将树木与背景分开的问题。
  • 基本上你需要知道图像中物体的确切高度。然后从那里您可以使用该确切高度与树木进行比较。
  • 您需要在照片中添加一些可以相当准确地获得尺寸的东西。我不确定数学,但有一个 iPhone 应用程序使用图片中的信用卡来估计场景中对象的大小。也许这样的事情会帮助你......

标签: image-processing computer-vision photogrammetry


【解决方案1】:

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

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

以下是步骤:

校准相机

使用openCV校准相机。可以使用OpenCV calibrate.py工具和源码中提供的棋盘图案PNG生成校准矩阵。完成相机校准以找到相机参数。我用我的网络摄像头(为了校准我的网络摄像头)从多个角度拍摄了十多张棋盘照片。更多详情请查看openCV camera calibration

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

查看您拍摄的照片的详细信息,您会发现照片的原始分辨率(heightXwidth),并在它们的EXIF headers 中找到焦距值(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)

对象的实际大小

物体的实际大小可以用上面的数据来计算,

real_size = (dist*size_of_object_in_image_sensor)/focal_length

【讨论】:

    【解决方案2】:

    如果您的图像是 3*3 并且您想找出图像的大小(即 3x3..so 3x3 = 9),现在我们有 8 个像素,从 0 到 8。所以 9/8=(___) KB。

    如果您想以 MB 为单位查找图像的大小,就像上面的示例一样,只需执行 (9/8)/(1024)=(----)MB..

    所以你会得到 Mb 的结果。

    【讨论】:

      【解决方案3】:

      在这一领域进行了大量的计算机视觉研究。假设您不知道相机约束,您将不得不对场景和相机做出假设,以确定达到比例因子的高度。请注意,如果没有相机限制或图像中的参考高度,就无法区分从远处拍摄的高大树木和近距离拍摄的矮树之间的差异。 Criminisi 的 Single View Metrology 作品是一个很好的开始。

      【讨论】:

      • 谢谢。但是请参阅我不是在寻找确切的高度或任何东西。我只想要物体的相对高度。相对于任何你想要的东西。我如何在图片中测量它?
      • 你看我引用的文件了吗?它有那个确切的应用程序。
      【解决方案4】:

      是的,这是可能的。你所描述的是围绕它的整个行业,称为Photogrammetry

      【讨论】:

      • 我看不出这与答案很接近。这是一个很好的链接...
      • 不,我没有。仅仅是维基百科文章的链接不是答案
      【解决方案5】:

      我会依赖一个已知尺寸的物体出现在图片中。例如,一个男人。

      或者,也许我们可以使用 EXIF 数据根据相机的传感器尺寸、镜头和使用的焦距对对象的大小进行逆向工程。这又取决于角度。当相机垂直于拍摄对象时,我们应该会得到最准确的结果。

      【讨论】:

      • 一个人的尺寸未知。除非你知道他站着和站着的高度。
      • 听起来不错。但是你将如何隔离每个对象?背景中的物体等。
      【解决方案6】:

      假设它们的距离都相同,都是按比例计算的,您会希望找到一个可以保证的单一测量单位。例如,如果照片中有一个人,同样比例相同,并且您知道他们正好有 6 英尺高,您可以使用它作为衡量标准。然后你拿它,计算有多少堆叠成树。比如你需要这个人的3.5,那么:

      3.5 * 6 = 21
      

      给你一棵 21 英尺高的树。

      如果所有事物都没有单一的参考点,或者如果它们都在不同的尺度上,那么您需要的信息比您不去那里容易获得的信息要多得多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-25
        • 2019-12-25
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        相关资源
        最近更新 更多