跟踪多色对象

时间:2012-11-23 09:57:30

标签: python opencv tracking

我想跟踪多色物体(4种颜色)。目前,我正在将图像解析为HSV并在相机源上应用多个滤色镜范围,最后添加滤镜图像。然后我根据区域过滤轮廓。

这种方法在大多数情况下都非常稳定,但是当外部光稍微变化时,由于色调值变得混乱并且跟踪对象变得困难,因此无法识别对象。

此外,由于我根据区域过滤轮廓,因此我经常会出现误报,并且有时无法正确跟踪对象。

你有什么建议摆脱这些问题。我可以使用其他方法来跟踪它而不是单独过滤颜色然后将图像相加并搜索轮廓吗?

2 个答案:

答案 0 :(得分:0)

对于完整的校样轨道,您需要结合多种方法......以下是一些提示......

  1. 如果您事先了解对象,那么您可以使用模板匹配...但模板匹配过程很少...如果您使用的是GPU,那么您可能会有一些好处

  2. 从你的写作中我认为外部光的变化程度较小......所以在这个基础上你可以使用opencv的goodfeaturestotrack函数并使用光流来跟踪goodfeaturestotrack在下一帧中发现的那些ponits视频

  3. 如果背景是稳定的,除了一些亮度变化并且物体移动比背景更大,那么你可以从当前帧中减去前一帧以获得移动物体的位置......这是一种快速简便的变化检测技术...

  4. 根据区域过滤轮廓是个好主意,但尝试在过滤标准中添加更多功能...即。您可以尝试基于椭圆,边界框的宽高比等进行过滤...

  5. 最后......如果您对物体的运动路径有任何先验知识,可以使用卡尔曼滤波器......

  6. 如果背景是最不变形的或在某种程度上变化,那么你可以尝试高斯混合模型来模拟背景......而变化的球是你的前景......

答案 1 :(得分:0)

根据可用的光源,您可以尝试使用多个或无限数量的对象模型,然后将对象分类为具有一个光源的对象或不是对象。注意:这是解决问题的机器学习型方法。

使用卡尔曼,扩展卡尔曼滤波器或粒子滤波器(取决于您的应用)进行过滤将是一个好主意,这样您就可以拥有最近跟踪功能的“记忆”并对下一个跟踪颜色有所期望/短期内的特征(即如果你刚看到物体,它很可能在下一帧中没有消失)。

总的来说,这是一个很难解决的问题,我曾经多次参与机器人研究。唯一可靠的解决方案是学习模型并使用系统实际看到的内容来确认或拒绝它们。任何数量的机器学习方法都应该有效,但最简单的可能是支持向量机。最强大的可能就像高斯过程(如果你想做无限数量的模型)。祝你好运,不要太沮丧;这不是一个容易的问题!