OpenCV连续使用相机进行速度测量

时间:2012-09-16 08:20:03

标签: opencv camera tracking

我是OPENCV的新手,所以如果我在这里缺少简单的事情,请耐心等待。

我正在尝试制作一个基于摄像头的系统,该系统可以通过以下假设连续输出车辆的速度: 1.摄像机水平放置,车辆经过相机镜头3到5英尺附近。 2.速度不会超过30KM /小时

我希望从光学鼠标的概念开始,它检测表面图案中的位移。但是我不清楚当车辆开始进入车架时如何处理背景。

我对实验感兴趣的方法有两种,但我正在寻找进一步的输入。

  1. 在车辆进入车架并与背景分离时检测车辆。
  2. 使用cvGoodFeaturesToTrack查找车辆上的点。
  3. 跟踪下一帧的点。 &安培;使用Lucas_Kanade金字塔函数计算光流的水平速度。
  4. 重复
  5. 请提出更正和修正建议。 另外,我请求更有经验的成员帮助我有效地编写这个程序,因为我不知道哪个是最正确的函数在这里使用。

    提前致谢。

1 个答案:

答案 0 :(得分:5)

希望你能使用20 fps到30 fps的简单相机,你的相机垂直于道路放置但远离它...对象即你的车在图像中的最大速度为8 ms-1飞机...借助您正在使用的镜头计算图像平面中的汽车速度......

  ( speed in object plane / distance of camera from road ) = ( speed in image plane / focal length )

如果你知道每个像素的测量值,你应该以每秒像素为单位...

步骤...

  1. 您可以使用帧差异...即从前一帧中减去当前帧并获取绝对差值...阈值差异...这会将您的移动车从后方分割出来.. .remember这会分割所有移动的物体...所以如果你想要一辆汽车而不是一个动人,你可以使用高度与宽度比的形状特征......在分段的部分和每个框架中做一个矩形吗同样的步骤。因此,在每个框架中,您可以记录边界框前缘的坐标...当汽车进入视图时,直到它从视图中消失,您知道汽车持续了多长时间...使用帧数,帧速率和边界框前沿的坐标来计算速度......

  2. 你可以使用goodfeaturestotrack和open cv的光流...这样你就可以区分快速移动和慢速移动的物体......但是要保持清醒那些goodfeaturestotrack给你的点或者任何新车来进入相机视图将不会更新...记录每个帧中goodfeaturestotrack拾取的点集的位移..这是移动物体的位移...以相同的方式计算速度... 计算速度的基本思想是记录物体在相机视野中持久存在的帧数 ......如果你的相机是固定的,那么你的视野...... 因此重要是你能捕捉到多少帧? ... 请记住.... opencv的光流用于跟踪慢速移动的物体或理论上更多的特征点(由良好的特征确定跟踪..)在两个连续帧之间的位移较小,以使算法工作...大位移将有算法的一些错误预测......这就是为什么图像平面中的速度很重要......至少在质量上你应该对它有所了解......

  3. 注意:这两种方法都适用于单个对象跟踪..对于多个对象跟踪,您需要进行一些修改...但是您可以从任何一种方法开始......我认为它会起作用..