使用开放CV进行对象跟踪
Object Tracking Using Open CV
我计划做一个项目,通过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。
- C++:跟踪类对象
- MATLAB:跟踪imufilter对象中的状态变化
- mingw32-make 使用"MinGW Makefiles"生成器跟踪 CMAKE 无法将可执行文件链接到对象库
- 内存分配究竟是如何发生的,Java和C如何交互以跟踪同一对象?
- 如何在类中声明一个变量,该变量将跟踪已创建 c++ 的对象计数
- 从实时摄影机馈送而不是图像中按形状跟踪对象
- 如何清理本地引用中跟踪C++对象<External>?
- 如何确定我跟踪的对象球是否越过我绘制的线
- 跟踪对象类型
- 丢失后再次找到的对象跟踪
- 使用本地二进制模式进行对象跟踪:更改检测ROI的大小
- OpenCV C++简单的对象跟踪
- opencv 卡尔曼滤波多对象跟踪错误
- 使用开放CV进行对象跟踪
- 增强序列化-启用对象跟踪
- 实现对象跟踪,如在 Boost::Serialization 中
- 如何在opencv中使用对象跟踪的概念移动鼠标
- Opencv对象跟踪和计数在视频帧中通过ROI的对象
- 使用OpenCV的对象跟踪脚本中的慢速视频
- OpenCV中鸟瞰中的实时对象跟踪