【问题标题】:Specifiyng speed from visual size从视觉尺寸指定速度
【发布时间】:2016-05-17 14:34:37
【问题描述】:

[问题]

Q1:如何根据物体的视觉尺寸从相机图像序列中确定物体(平面)的速度

  • 相机图像很少
  • 相机的高度和角度已知

[备注]

  • 这是对一个有趣但写得不好的问题的重写(目前暂停),所以我可以回答它。
  • 原问题是here
  • 还有许多其他方法,例如模糊分析等...

【问题讨论】:

    标签: math physics


    【解决方案1】:

    这个问题非常宽泛,所以我将只关注背后的数学/物理

    1. 垂直于相机轴的速度

      图像显示了对象视觉大小h 与视图距离l 的相关性。物体越远,它的视觉尺寸就越小。双倍距离有一半大小,所以我们可以这样写:

      l0=(h1/h0)*l1
      l0=(h2/h0)*l2
      l1=(h0/h1)*l0
      l1=(h2/h1)*l2
      l2=(h0/h2)*l0
      l2=(h1/h2)*l1
      

      现在我们知道图像不是在同一时间拍摄的,所以如果我们假设速度是恒定的(对于我们正在测量的时间),那么图像 0,1,2 有时会拍摄 t0,t1,t2 所以对于恒定速度 @987654329 @我们知道:

      v=(l1-l0)/(t1-t0)
      v=(l2-l1)/(t2-t1)
      v=(l2-l0)/(t2-t0)
      

    地点:

    • v 是相机和物体之间的相对速度
    • t0,t1,t2是拍照时间
    • l0,l1,l2 有时是相机和物体之间的距离t0,t1,t2
    • h0,h1,h2 有时是对象的视觉尺寸 t0,t1,t2

    为简单起见,我们可以以 1 秒为间隔拍摄照片:

        t1-t0=1
        t2-t1=1
        t2-t0=2
    

    这简化了一些事情:

        v=(l1-l0)
        v=(l2-l1)
        v=(l2-l0)/2
    

    现在的问题是我们不知道物体的距离。上面的方程不会导致解决方案(至少我没有看到任何)......对于这个任务,我们必须在场景中找到一些已知的对象(etalone)并从视觉距离 h0 和对象计算它的真实距离 z1已知大小h1。请注意,这些h0,h1 不是上面的h0,h1 ......这只是对这张图片的尊重

        z1 = (h1/h0)*z0
    

    这样我们可以及时找到物体的真实距离(l0,l1,l2)两个就够了,速度就简单了

        v = (l1-l0)/(t1-t0)
    

    这是垂直于相机轴的速度,所以如果你想要某个方向的速度,那么只需通过向量的标量乘法或sin 将其投影到它上面

    1. 巡航速度

      更好的方法是在“地面”方向拍照,这消除了场景中已知物体的需要,但您必须在特定方向安装相机,这并不总是可行的。还有飞机的pitchroll对这个影响很大,需要修正。

      这个想法很简单,在场景中找到任何不同的物体并测量它随时间移动的视觉距离。应用相机透视和已知的altitude,pitchroll 将像素转换为地面单位 [m]。透视方程和属性同上一期项目

      v = dpos/dtime
      

      您应该一次检查更多的物体,并排除所有以不同方向/速度移动的物体,以避免测量相对于某些移动物体(如汽车)的速度......

    [备注]

    对于相机,Zfar 是无穷大,Znear 取决于相机光学元件和芯片。您可以通过在已知距离处拍摄已知物体的图像来校准它,并从中计算出您需要的一切。 当然,如果你没有固定焦点,那你就有麻烦了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 2013-04-15
      • 2019-09-01
      • 2019-12-04
      相关资源
      最近更新 更多