Har*_*tin 5 matlab opencv computer-vision matlab-cvst
我正在研究基于无人机的视频监控项目.我需要在同一个实现对象跟踪.我尝试过传统方法,但由于非静态环境,这些方法似乎失败了.
这是 我想要实现的一个例子.但这使用背景减法,这是非静态相机无法实现的.
我也尝试过使用SURF功能进行基于特征的跟踪,但是对于较小的对象,它会失败,并且容易出现误报.
在这种情况下实现目标的最佳方法是什么?
编辑:对象可以是定义的感兴趣区域内的任何内容.物体通常是人或车辆.这个想法是用户将创建一个定义感兴趣区域的边界框.无人机现在必须开始跟踪这个感兴趣区域内的任何东西.
跟踪本地功能(如 SURF)在您的情况下不起作用。训练分类器(例如使用 HAAR 功能的 Boosting)也不起作用。让我解释一下原因。
您要跟踪的对象将包含在边界框中。在这个边界框内可以有任何物体,而不是一个人、一辆汽车或其他你用来训练分类器的东西。
此外,在物体附近的边界框中,即使目标物体的外观没有改变,背景噪声也会随着目标物体的移动而改变。此外,物体的外观会发生变化(例如,一个人转身,或脱下夹克,车辆反射阳光等),或者物体(部分或完全)被遮挡一段时间。因此跟踪局部特征很可能很快就会丢失跟踪对象。
因此,第一个问题是,您必须处理潜在的许多不同对象(可能是先验未知的)才能进行跟踪,并且您无法为每个对象训练分类器。
第二个问题是您必须跟踪一个外观可能会发生变化的对象,因此您需要更新您的模型。
第三个问题是你需要一些逻辑来告诉你你丢失了跟踪的对象,并且你需要在场景中再次检测它。
那么该怎么办?嗯,你需要一个好的长期跟踪器。
(据我所知)最好的之一是Kalal 等人的跟踪学习检测(TLD)。等人。。您可以在专用页面上看到很多示例视频,并且您可以看到它对于移动摄像机、改变外观的物体等效果非常好......
幸运的是,OpenCV 3.0.0 有TLD的实现,您可以在这里找到示例代码(上述站点中还有一个 Matlab + C 实现)。
主要缺点是这种方法可能很慢。您可以测试一下这对您来说是否有问题。如果是这样,您可以对视频流进行下采样、升级硬件或切换到更快的跟踪方法,但这取决于您的要求和需求。
祝你好运!