使用光流计算实际速度
我该如何利用从两张图片中获得的光流信息,来找出一个物体在现实世界中的实际速度呢?有没有人能帮我一下?
2 个回答
这个方法有点复杂,但简单来说就是:
你可以设置一个值,来指定物体离相机的距离。
然后先拍一张第一帧的照片,并把它保存到某个地方。
接着拍最后一帧的照片,也保存到某个地方。
对这两张照片进行阈值处理。
把第一帧左边的所有像素剪掉,然后对第二帧也做同样的处理。
如果你想要更详细的教程,我觉得这篇文章可能会对你有点帮助。
http://morefunscience.blogspot.in/2012/05/calculating-speed-using-webcam.html
正如评论者们所说,我们需要更多关于你问题的信息。基本上:是的,从图像中计算实际速度是可能的
但这一切都取决于以下几点:
- 你的相机是固定的,还是可能在移动?
- 你是想计算场景中任何物体的速度,还是有一个固定的车道,比如用固定相机拍摄的街道,物体(汽车)总是沿着一条车道移动?
- 如果是后者,你能在现实世界中对街道进行测量吗?比如在步道上标记点(可以是永久性的,也可以是临时的),以便了解现实中x米的距离在你的相机图像中会显示成多少像素?
- 如果你无法在现实场景中进行这些测量,你需要提供相机与场景/地面水平的角度、相机与场景的距离,以及相机的参数。
要计算场景中任何被追踪物体的速度,你可能需要上述所有信息,才能真正计算出场景中的距离。但这会更复杂。
如果你有一个固定的车道,比如想测量一辆车的速度,我更倾向于使用在现实世界中测量或标记点的方法。
因为如果你有这些信息:
x m = y px
而且一个物体在t
时间内移动了y px
(你可以通过计算的刷新率得到这个时间),你就可以计算它在1秒内移动了多少像素。既然你知道多少像素等于一米,你就能知道它的速度是每秒多少米(或者你喜欢的其他单位)。
你也可以在场景中设置两个标记,简单地测量物体从一个标记移动到另一个标记需要多少帧(因此需要多少时间)。这样可以给你一个更平均的速度,因为如果你在很短的时间间隔内进行计算,可能会因为分割问题或变化很小而得到噪声结果。
对于分割问题,你可以尝试一种减法方法。将两到三帧相减。移动的物体(因此变化的图像部分)会产生非零值,而静止图像部分的颜色值应该相减到接近0。
也许这能帮助你解决问题……但当然这取决于你的设置和期望目标……你需要提供更多信息……