c++ - 多 Blob 跟踪

标签 c++ opencv computer-vision tracking

我想跟踪视频中的一些交通标志。我在这里找到了解决问题的好方法: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,“边界框确定的”)。所以有多少标志并不重要。

算法如下:

  • 对于每一帧:
    1. 使用卡尔曼滤波器检测“ Blob ”(= 交通标志候选项)
    2. 对于每个 Blob :
      • 使用第 3 节中描述的环分区方法将此 blob 与已知的 blob 匹配
      • 如果 blob 不匹配,将其添加到内存中作为一个新的 blob

本文未涵盖何时从“最新已知 blob”内存中删除 blob。由于即使 Blob 丢失几帧然后重新出现(例如被卡车或电线杆隐藏)并且无论运动如何(所以我们不能推断标志会消失到图片或变大之后),我认为(我的意见)我们可以同时使用时间限制和“区域碰撞”检测。如果一个新的 blob 出现在我们期望已知 blob 但不匹配的区域,则意味着旧 blob 不再相关。

祝你项目顺利!

关于c++ - 多 Blob 跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7821514/

相关文章:

c++ - 在 STL 容器中存储 OpenCV Mat 对象时避免内存泄漏

matlab - 如何鲁棒地分割图像以正确计算模糊的 Blob ?

matlab - 在均匀强度图像中检测物体

python - 着色问题 - open cv 与 matplotlib legend 的结合

c++ - 多个 QApplication 实例

c++ - c++中倒数计算的性能

c++ - vector::erase 和 std::remove_if 的奇怪行为,其结束范围不同于 vector.end()

opencv - 在图像opencv中检测对象

opencv - 图像显示 VS2010 中的结果,但未显示使用 OpenCV 在 Android 中的输出

c++ - C++ 中的abs() 错误