问题
Q1:如何根据物体的视觉尺寸从摄像机图像序列中确定物体(平面)的速度
备注
发布于 2014-06-16 14:16:13
这个问题是非常广泛的,所以我将只关注数学/物理。
图像显示对象视觉尺寸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秒拍摄一张照片,因此:
t1-t0=1
t2-t1=1
t2-t0=2
这稍微简化了一些事情:
v=(l1-l0)
v=(l2-l1)
v=(l2-l0)/2
现在的问题是我们不知道物体的距离。上面的方程不会导致解(至少我看不到任何).对于这个任务,我们必须在场景中找到一些已知的对象(等等),并从视觉距离z1
和已知尺寸的h1
中计算出它的真实距离h1
。小心这些h0,h1
不是来自上面的h0,h1
..。这只是对这幅画的尊重
z1 = (h1/h0)*z0
这样我们就可以及时找到物体的真实距离,(l0,l1,l2)
2就足够了,速度就简单了。
v = (l1-l0)/(t1-t0)
这是垂直于摄像机轴的速度,所以如果你想要某一方向的速度,只需通过矢量的标量乘或sin
将它投射到它上。
pitch
和roll
对此有很大的影响,需要加以纠正。这个想法很简单,在场景中找到任何不同的物体,并测量它随时间移动的视觉距离。应用摄像机透视和已知的altitude,pitch
和roll
将像素转换为地面单位m。透视方程和属性与前一颗子弹相同。
V= dpos/dtime
你应该一次检查更多的物体,并消除所有在不同方向或速度上移动的物体,因为大多数是为了避免测量相对于汽车这样的运动物体的速度。
Notes
对于摄像机来说,Zfar
是无穷大的,而Znear
则依赖于摄像机光学和芯片。你可以通过在已知距离上拍摄已知物体的图像来校准它,并从它中计算出你所需要的一切。,当然,如果你没有固定的焦点,那么你就有麻烦了,
https://stackoverflow.com/questions/24245775
复制相似问题