首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从视觉尺寸看特效速度

从视觉尺寸看特效速度
EN

Stack Overflow用户
提问于 2014-06-16 14:16:13
回答 1查看 457关注 0票数 0

问题

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

  • 只有很少的相机图像
  • 摄像机的高度和角度是已知的。

备注

  • 这是重写一个有趣但写得不好的问题(目前搁置),这样我就可以回答它了。
  • 最初的问题是here
  • 还有很多其他的方法比如模糊分析等等..。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-16 14:16:13

这个问题是非常广泛的,所以我将只关注数学/物理。

  1. 垂直于相机轴的速度

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

l0=(h1/h0)*l1 l0=(h2/h0)*l2 l1=(H0/H1)*10 l1=(h2/h1)*l2 l2=(H0/H2)*10 l2=(h1/h2)*l1

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

V=(L1-10)/(T1-t0) v=(l2-l1)/(t2-t1) v=(L2-10)/(T2-t0)

其中:

  • v是摄像机和物体之间的相对速度。
  • t0,t1,t2是拍照片的时候
  • l0,l1,l2是相机和物体之间的距离,有时是t0,t1,t2
  • h0,h1,h2是对象的可视大小,有时是t0,t1,t2

为了简单起见,我们可以每隔1秒拍摄一张照片,因此:

代码语言:javascript
运行
复制
    t1-t0=1
    t2-t1=1
    t2-t0=2

这稍微简化了一些事情:

代码语言:javascript
运行
复制
    v=(l1-l0)
    v=(l2-l1)
    v=(l2-l0)/2

现在的问题是我们不知道物体的距离。上面的方程不会导致解(至少我看不到任何).对于这个任务,我们必须在场景中找到一些已知的对象(等等),并从视觉距离z1和已知尺寸的h1中计算出它的真实距离h1。小心这些h0,h1不是来自上面的h0,h1 ..。这只是对这幅画的尊重

代码语言:javascript
运行
复制
    z1 = (h1/h0)*z0

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

代码语言:javascript
运行
复制
    v = (l1-l0)/(t1-t0)

这是垂直于摄像机轴的速度,所以如果你想要某一方向的速度,只需通过矢量的标量乘或sin将它投射到它上。

  1. 巡航速度 更好的方法是在“地面”方向拍摄照片,这消除了场景中已知物体的需要,但你必须在特定的方向安装相机,这并不总是可能的。另外,飞机的pitchroll对此有很大的影响,需要加以纠正。

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

V= dpos/dtime

你应该一次检查更多的物体,并消除所有在不同方向或速度上移动的物体,因为大多数是为了避免测量相对于汽车这样的运动物体的速度。

Notes

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24245775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档