如何使用视频对对象进行运动跟踪?

时间:2011-01-15 20:36:48

标签: matlab opencv computer-vision video-processing

有人可以指导我阅读教程或指导我如何跟踪用6自由度移动的物体的运动。我计划使用移动玩具车的视频流。我想计算玩具车的位移和旋转角度。我发现了一些研究论文,但找不到任何图书馆。

有没有办法使用OpenCV或Matlab或其他一些免费提供的软件?

谢谢

6 个答案:

答案 0 :(得分:21)

跟踪是一个经典的计算机视觉问题,研究仍然用于计算机科学;通过查看accepted papers {年度最佳计算机视觉会议中的CVPR 2010列表,您可以快速了解该领域的最新技术,您将看到仍然有关于该主题的正在发表的工作(在列表中搜索“跟踪”一词)。

跟踪问题解决方案的标准处理流程如下:首先解析图像以提取有意义的描述符,捕获图像的相关角落和其他显着特征。这些描述符后来被提供给在线分类器,该分类器经过培训,可以检测每个帧中您感兴趣的特定对象的可能实例。对象的描述符可以从先前的对象外观示例中先验地知道(即离线计算),但通常在每个帧中根据系统随时间变化的内容进行更新,以使检测自适应到动态对象的外观。最后,为了从每个帧中的可能候选者池(从检测到的那些)中进行选择,使用顺序相对于先前帧的对象的位置和速度等参数估计统计模型。

有关于良好图像描述符的大量计算机视觉文献,但一些最受欢迎的文献是SIFTSURFHOG。对于分类,两个最成功的方法是support vector machinesclassification ensembles(例如boostingrandom forests),对于估算部分,大多数人仍使用{{3} }(这是一种顺序Kalman filters),Markov model或更常见的particle filters

您所描述的特定情况比在自然室外场景中任意相机和物体运动的更一般和困难的物体跟踪问题更容易一些,因此您可能能够在线找到一些可立即使用的代码设置,但我对此表示怀疑。正如其他人指出的那样(并且据我所知),没有现成的库可以立即用于各种对象,背景和运动空间。也就是说,您可以在线找到我上面描述的标准通用管道的各个组件的代码(分类器,过滤器/功能组,马尔可夫估计模型)。

我的建议是,如果您有兴趣建立一个好的系统(即实际工作的系统),那么请查看顶级年度计算机视觉会议中最新论文作者的网站,例如density estimation modelsCVPRICCVECCV。他们倾向于使用一些视频示例在线编写最近的工作代码,这可以帮助您了解他们的方法在真实环境中的工作方式。

答案 1 :(得分:3)

我怀疑有一个程序准备好用于此...至少你将不得不得到几个方法或库,并使用没有那么简单的数学来做到这一点。人们就此发表论文!

这是我最近阅读的一篇论文:

http://cobweb.ecn.purdue.edu/RVL/Research/ModelBasedTracking/index.html

如果你认为不是你想要的东西,那么只参考参考文献以获得更多的想法;)

答案 2 :(得分:3)

也许KLT Tracker(Kanade Lucas Tomasi)可以帮到你。它会告诉您检测到的点在图像之间移动的位置。 OpenCV库包含一个版本的KLT Tracker,但没有仿射一致性检查(如KLT主页所述)。

答案 3 :(得分:3)

如果您想尝试一些现成的代码,OpenCV附带一个示例文件。在OpenCV 2.1中,它位于samples / c / blobtrack.cpp和OpenCV 2.2中,位于samples / c / blobtrack_sample.cpp中。两者都带有.exe文件,因此您可以立即尝试这些示例,以防您碰巧使用Windows。有一个旧的网站The OpenCV Video Surveillance / Blob Tracker Facility,记录代码的工作原理。

blobtrack.cpp中的跟踪器分为三个阶段(从上一个链接复制):

  1. 前景/背景鉴别器,将每个像素标记为前景或背景。
  2. 一个blob探测器,它将相邻的“前景”像素分组为blob,泛洪填充样式。
  3. 一个blob跟踪器,它将ID编号分配给blob并跟踪它们的帧到帧运动。
  4. blobtrack.cpp实际上为每个阶段实现了几种方法,因此您可以尝试不同的组合来查看哪种方法效果最好。

    最后一个阶段意味着您可以同时实际跟踪多个对象。我已经在使用静态相机拍摄的高速公路上的车辆视频上进行了测试,如果使用最好的方法有点慢的话,它的效果非常好。

    此外,如果您的视频背景是静态的,也就是说,如果帧与帧之间的唯一变化是玩具,您可以使用一种称为背景减法的简单技术。汽车本身。但我认为这只会帮助你定位对象,而不是估计它的姿势。

    注意:我无法获得OpenCV 2.2附带的示例。 OpenCV 2.1附带的那个对我来说很好。

答案 4 :(得分:2)

看看TLD(显然是Matlab):

  

TLD是一种屡获殊荣的实时算法,用于跟踪视频流中的未知对象。感兴趣的对象由单个帧中的边界框定义。 TLD同时跟踪对象,了解其外观并在视频中出现时检测它。结果是实时跟踪,通常会随着时间的推移而改进。

没有亲自使用,但演示视频非常棒。

答案 5 :(得分:1)