多个Blob跟踪

时间:2011-10-19 12:44:04

标签: c++ opencv computer-vision tracking

我想跟踪视频中的一些交通标志。我在这里找到了解决问题的好方法:Link

我现在的问题是:我应该如何处理新传入blob的情况?我的意思是一个Blob可以定义一个搜索区域,但也许在下一帧中还会出现第二个问题?我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

从我提供的论文中我所理解的,这个系统已经被制作成一次跟踪几个标志,出现和消失。见§2的结尾:

  

最新跟踪的blob存储在临时内存中。帧(t + 1)中的Blob与临时存储器(...)中的Blob匹配,因此,当某个符号在特定帧中消失时,可以在下一帧再次出现时跟踪它。

下一个§(3 - blob匹配)解释了如何“识别”从一帧到另一帧的跟踪符号。但是如果你可以匹配它们(识别它们),这也意味着你也可以不识别它们,这意味着有新的迹象:它们必须被添加到内存中。

我认为(但我可能是错的)误导你的是“搜索区域减少”。我认为这个区域缩减是针对每个sign / blob 独立完成的(参见§2,“边界框 确定”)。所以有多少迹象并不重要。

该算法如下:

    每个框架
    1. 使用卡尔曼滤波器检测“blobs”(=交通标志候选人)
    2. 每个blob
      • 使用§3
      • 中描述的环分区方法将此blob与已知的blob匹配
      • 如果blob不匹配,请将其作为新blob添加到内存

本文未介绍何时从“最新已知blob”内存中删除blob。由于算法即使在几帧中丢失一个斑点然后重新出现(例如被卡车或电线杆隐藏)以及任何运动(因此我们无法推断出标志将消失到两侧)我认为(我的观点)我们可以使用时间限制和“区域碰撞”检测。如果新blob出现在我们预期已知blob但与之不匹配的区域中,则表示旧blob不再相关。

上帝祝你好运!