【发布时间】:2016-05-17 14:34:37
【问题描述】:
[问题]
Q1:如何根据物体的视觉尺寸从相机图像序列中确定物体(平面)的速度
- 相机图像很少
- 相机的高度和角度已知
[备注]
- 这是对一个有趣但写得不好的问题的重写(目前暂停),所以我可以回答它。
- 原问题是here
- 还有许多其他方法,例如模糊分析等...
【问题讨论】:
[问题]
Q1:如何根据物体的视觉尺寸从相机图像序列中确定物体(平面)的速度
[备注]
【问题讨论】:
这个问题非常宽泛,所以我将只关注背后的数学/物理
垂直于相机轴的速度
图像显示了对象视觉大小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 将其投影到它上面
巡航速度
更好的方法是在“地面”方向拍照,这消除了场景中已知物体的需要,但您必须在特定方向安装相机,这并不总是可行的。还有飞机的pitch和roll对这个影响很大,需要修正。
这个想法很简单,在场景中找到任何不同的物体并测量它随时间移动的视觉距离。应用相机透视和已知的altitude,pitch 和roll 将像素转换为地面单位 [m]。透视方程和属性同上一期项目
v = dpos/dtime
您应该一次检查更多的物体,并排除所有以不同方向/速度移动的物体,以避免测量相对于某些移动物体(如汽车)的速度......
[备注]
对于相机,Zfar 是无穷大,Znear 取决于相机光学元件和芯片。您可以通过在已知距离处拍摄已知物体的图像来校准它,并从中计算出您需要的一切。 当然,如果你没有固定焦点,那你就有麻烦了
【讨论】: