我想跟踪视频中的一些交通标志。我在这里找到了解决问题的好方法:Link
我现在的问题是:我应该如何处理新传入的 blob?我的意思是对于 Blob 可以定义一个搜索区域,但也许在下一帧中还会出现第二个东西?我该如何处理?
最佳答案
根据我从您提供的论文中了解到的情况,该系统已经可以同时跟踪多个标志,出现和消失。参见 §2 的末尾:
the latest tracked blobs are stored in a temporary memory. Blobs in frame (t+1) are matched with those in the temporary memory (...) thus, when a sign disappears in particular frames, it could be tracked in the next frame when it appears again.
下一个 §(3 - blob 匹配)解释了你如何“识别”你正在从一帧到另一帧跟踪的标志。但是如果你能匹配它们(识别它们),这也意味着你也可以不识别它们,这意味着有新的标志:然后必须将它们添加到内存中。
我认为(但我可能是错的)误导您的是“搜索区域缩减”。我认为这个区域缩减是针对每个符号/ Blob 独立完成的(参见§2,“边界框是确定的”)。所以有多少标志并不重要。
算法如下:
- 对于每一帧:
- 使用卡尔曼滤波器检测“ Blob ”(= 交通标志候选项)
- 对于每个 Blob :
- 使用第 3 节中描述的环分区方法将此 blob 与已知的 blob 匹配
- 如果 blob 不匹配,将其添加到内存中作为一个新的 blob
本文未涵盖何时从“最新已知 blob”内存中删除 blob。由于即使 Blob 丢失几帧然后重新出现(例如被卡车或电线杆隐藏)并且无论运动如何(所以我们不能推断标志会消失到图片或变大之后),我认为(我的意见)我们可以同时使用时间限制和“区域碰撞”检测。如果一个新的 blob 出现在我们期望已知 blob 但不匹配的区域,则意味着旧 blob 不再相关。
祝你项目顺利!
关于c++ - 多 Blob 跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7821514/