【问题标题】:Calculate distance between 2 objects in a picture with a variable scale计算具有可变比例的图片中2个对象之间的距离
【发布时间】:2017-01-09 16:19:54
【问题描述】:

我正在尝试使用图片计算 2 点之间的距离。

上面的空中飞人代表一个 100 米乘 50 米的矩形(空中飞人是由于我拍摄照片的角度——实际上是一架无人机)。

所以使用这张图片我想计算左角(0,0)和红十字(654,96 - 像素坐标)之间的距离。 我的第一个想法是创建一个比例像素/米,但正如您所见,矩形的长度具有不同的比例:900 像素(顶部)为 100 米,1400 像素(上图)为 100 米。

因此,计算比例和计算距离非常复杂。

然后当我成功时,我会尝试计算许多不同的距离(红十字会改变位置)。

有人有想法吗? 谢谢!

【问题讨论】:

  • 1400 像素(100 米)绝不等于 900 像素(100 米)。请重新考虑/重新构建您的问题。您必须为一个像素固定一定数量的米,然后才能继续。在您的情况下,如果1400 px = 100 m,则在900 px MUST BE < 100 m 上方的行中。
  • 你有无人机拍摄照片的高度吗?使用它,您实际上可以计算一个像素所覆盖的距离,并找到到现实世界维度中 (x,y) 坐标的近似距离。
  • @JeruLuke - 由于斜视图,我有 100m = 1400px 和 100m = 900 px。这就是我问这个帖子的原因......
  • @AtifAnwer 是的,我有图片的高度。你知道我如何计算地面上的距离吗,知道 1 个像素并不总是等于相同的距离...?

标签: math image-processing computer-vision photo parallax


【解决方案1】:

您需要校正图像,即撤消投影变换。 Math SE 上的This post of mine 或 Stack Overflow 上的this post 描述了如果您知道四个点的坐标及其图像,如何计算这种变换。正如你所做的那样:你有图片中的坐标,你有真实世界的尺寸,所以你可以选择任何你喜欢的真实世界坐标系。然后计算投影变换,将其应用于红点的图片坐标,得到它的真实坐标。

【讨论】:

  • 感谢您的回答!其实我知道四个点的坐标(在matlab上使用impixelinfo)。知道这4张图片是什么意思? @MvG
  • 您有一个将一个点映射到另一个点的转换。输入称为原像,结果称为图像。这与“图片”意义上的“形象”关系不大。
  • 好的,所以我有原像,我会使用你给我的帖子计算图像,对吧? @MvG - 谢谢!
【解决方案2】:

除了@MvG 发布的内容之外,如果您知道拍摄图像的高度,那么您可以计算每个像素所覆盖的距离(并在像素中加入线性透视),然后简单地将它们相加使用以下公式以实际单位找到像素的确切距离:

由于线性透视,场景的面积 在一个像素中捕获的距离与距离成正比 从相机的对象。因此,像素更接近 与 代表物体的像素更远捕捉 更大的区域 'b' ,如下图所示。

更多详情可以查看论文here(或here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多