opencv (opencv_contrib) 实现目标跟踪

本文介绍了在opencv中利用opencv_contrib模块进行目标跟踪的方法,强调了目标跟踪相对于检测的效率优势以及何时需要结合检测算法。文章详细讲解了opencv支持的8种跟踪算法,并推荐了在不同需求下选择的算法,如CSRT、KCF和MOSSE。同时,提供了参考代码和GOTURN模型的安装与使用说明。
摘要由CSDN通过智能技术生成

opencv (opencv_contrib) 实现目标跟踪

前提

需要安装 opencvopencv_contrib

请参考文章:linux 下 opencv_contrib 源代码编译方法

为什么需要跟踪?

通常跟踪比检测快

单目标检测速度可能为 100+ ms,而单目标跟踪的速度为 10+ ms。

目标跟踪可以基于前一帧检测的位置,运动方向,速度预测下一帧的位置。并围绕预期位置进行小范围搜索以准确定位物体。

比无依赖直接进行检测会快很多。

一个高效的系统应该通常会在 n 帧的第一帧进行使用检测算法进行目标检测,此后 n - 1 帧使用跟踪算法。

为什么不基于第一次检测结果的基础上,后续全部使用跟踪算法?

因为跟踪在遇到遮挡,运动方向和速度高速变化以致于跟踪算法跟不上时,可能会导致跟踪失败。

而且跟踪在一定程度上会有误差参数,误差一直积累下去时,会导致跟踪偏离原始目标。

所以需要检测算法对目标进行修正,一定程度上避免跟踪误差的积累。

当检测失败时,跟踪可以提供帮助

检测在目标被遮挡时,会检测失败。

而一个好的跟踪算法,还能依靠前面帧的位置,方向,速度信息,预测当前的目标。

一定程度上解决一些遮挡问题、

目标跟踪

opencv (opencv_contrib 模块) 目前支持 8 种跟踪算法。

跟踪算法 opencv 支持的最低版本 说明
Boosting opencv 3.0.0 比较古老的目标跟踪算法,速度慢
MIL opencv 3.0.0 速度快,但是失败率较高
KCF opencv 3.1.0 比 Boosting 和 MIL 快,但是遮挡情况下效果差
TLD opencv 3.0.0 (TLD 目前有 3 种版本算法。TLD 1.0,TLD 2.0,TLD 3.0。opencv 的 TLD 跟踪效果较差,怀疑是基于 TLD 1.0 算法实现的)
MedianFlow opencv 3.0.0 跟踪效果较好,但对于快速移动/跳动的物体容易失败。
GOTURN opencv 3.2.0 基于深度学习的目标检测器。需要额外的 GOTURN 模型,可以自行训练目标跟踪模型。
MOSSE opencv 3.4.1 速度比其它算法快,但是准确率比 CSRT 和 KCF 低。
CSRT opencv 3.4.2 准确率比 KCF 稍高,但速度不如 KCF。

建议:

  • CSRT:如果可以接受较慢速度下,追求高准确度。
  • KCF:速度要求稍高,准确度要求不高。
  • MOSSE:只要求高速,不要
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值