使用开放CV进行对象跟踪

Object Tracking Using Open CV

本文关键字:对象 跟踪 CV      更新时间:2023-10-16

我计划做一个项目,通过CCTV摄像机的视频输入跟踪各种物体(包括人、车辆等)。我打算使用OpenCV。该实现应该能够容忍遮挡,并且应该能够识别并继续跟踪对象,即使它们退出帧并在一段时间后重新进入。此外,帧中的新条目应该被自动识别和跟踪,我需要提取对象随时间的位置。由于有很多选择,我实际上很困惑。有人能提出最好的前进道路吗。我已经尝试过以下内容:

  • 我尝试使用Open CV的跟踪API,并尝试了以下所有算法:MIL、TLD、BOOSTING、MEDIANFLOW。但它们似乎都不够准确
  • 我也知道卡尔曼滤波器。但它无法处理识别从不同位置重新进入帧的先前对象的问题。我更喜欢包含此功能的解决方案
  • 我试过Camshift。但它需要指定强度范围。由于CCTV安装的实际设置尚不清楚,因此这也不是一个选项
  • 我还查了HOGDescriptionr类。但它并没有提供直接跟踪的设施,对吗?我的意思是只进行检测

有没有比上面提到的更好的解决方案更适合眼前的问题?有什么方法可以提高跟踪算法的准确性吗?有没有办法改进我已经考虑过的解决方案?请帮我解决困惑。

您基本上是在寻找完美的跟踪算法:)如果您想知道哪种算法最适合您的需求,可以查看Visual Object tracking Challenge、Visual Tracker Benchmark等基准测试。不过,这可能很难实施。

另一方面,我想你想要实时的表演。在这种情况下,你也应该检查我的这个答案。

我也知道卡尔曼滤波器。但它无法处理识别从不同位置重新进入帧的先前对象的问题。我更喜欢包含此功能的解决方案。

没有这样的预测算法。你必须检查每一个可能的边界位置才能再次找到目标。

我试过Camshift。但它需要指定强度范围。由于CCTV安装的实际设置尚不清楚,因此这也不是一个选项。

既然你实际上想要最好的算法,也许你不会喜欢camshift。基于直方图的算法对相似的目标(或任何具有相似颜色的对象)都不具有鲁棒性,有一些算法是基于直方图的,并试图处理形状(fragTrack就是一个很好的例子)。然而,我认为这不会让你满意。)

我还查了HOGDescriptionr类。但它并没有提供直接跟踪的设施,对吗?我的意思是只进行检测。

实际上,要检测目标,需要首先对其进行训练(或者(例如)可以使用对象性算法来检测场景中的显著对象)。这意味着你必须针对每一个可能的目标进行训练。因此,如果你检测到之前训练过的目标之一,你可以尝试在每一帧中检测到同一个目标。你可以使用卡尔曼滤波器缩小搜索范围,得到更好的结果。

总之,从基准开始。找到最适合你的算法。

顺便说一句,深度学习是当今计算机视觉算法的发展趋势。也许最好的方法包括以某种方式进行深度学习。

希望这能有所帮助,
Gokhan。