【问题标题】:Tracking a multicolor object跟踪多色对象
【发布时间】:2012-11-11 16:12:23
【问题描述】:

我想跟踪一个多色对象(4 种颜色)。目前,我正在将图像解析为 HSV,并在相机馈送上应用多个滤色器范围,最后将过滤后的图像相加。然后我根据面积过滤轮廓。

这种方法在大多数情况下都很稳定,但是当外部光线有一点变化时,由于色调值混乱,难以识别对象,因此难以跟踪对象。

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

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

【问题讨论】:

  • 为什么这个标签是 Python? =)
  • 我正在使用 python 绑定来编码。我打算发布一些代码,并在期待它之前对其进行了标记。

标签: python opencv tracking


【解决方案1】:

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

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

    李>
  2. 从你的文章来看,我认为外部光线的变化程度较小......所以在此基础上,你可以使用 opencv 的 goodfeaturestotrack 功能并使用光流仅跟踪 goodfeaturestotrack 在下一帧中找到的那些 ponits视频

  3. 1234563快速简便的变化检测技术...
  4. 根据面积过滤轮廓是个好主意,但请尝试在过滤条件中添加更多特征...即您可以尝试根据椭圆率、边界框的纵横比等进行过滤...

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

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

    李>

【讨论】:

  • 1) 我不能相信模板匹配,因为颜色的顺序可能不一样而且速度很慢。 2)我正在考虑使用 calcbackproject 来查看直方图是否匹配。我无法让它工作。如果您有一个工作示例,我将不胜感激。 3)好主意会试一试。 4)我想要的是计算给定颜色在给定轮廓中所占面积的百分比,并据此对其进行过滤。我找不到一个很好的函数来计算这个。我想使用它,因为我知道每种颜色占用相同的区域并且有四种颜色。
  • 老实说,我认为 GMM 会有点矫枉过正。但我很想尝试,任何我可以学习的样本(我用谷歌搜索但找不到可以开始使用的东西)我打算使用简单的启发式方法,比如一个简单的测试来检查单个颜色的边界矩形的质心位于按区域过滤的轮廓中。我不知道它们是否会增加可靠性,但会尝试。(至少可以正确过滤火车轮廓,接下来我可以处理颜色变化)
【解决方案2】:

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

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

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

【讨论】:

  • 我明白这是一个难题,我相信没有单一的完美解决方案。但我想探索至少在某些参数固定的情况下可以达到的最佳效果。感谢您的指点,我一定会探索几乎所有的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 2019-12-07
  • 1970-01-01
  • 2018-09-01
  • 2020-02-02
  • 2017-04-25
相关资源
最近更新 更多