C++ 中多个帧的 Blob ID 匹配(图像分析)
我正在用 C++ 开发一个 Blob 匹配和跟踪库。目前,我正在使用 OpenCV 来检测斑点,并尝试通过检查斑点的位置、速度和大小来匹配新帧中的斑点。这工作得很好,我收到了很高的斑点匹配率(95% 或更高)。
有时斑点会从图像中掉出或出现新的斑点。现在我需要为匹配的 blob 提供与之前相同的 ID。我想知道是否有典型或常用的技术可以做到这一点。甚至一些我可以用来谷歌的关键词。
谢谢
I'm working on a blob matching and tracking library in C++. Currently I'm using OpenCV to detect blobs and try to match blobs in a new frame by checking the position, velocity and size of the blob. This works quite okay and I'm receiving a high blob match rate (95% or higher).
Sometimes blobs fall out of the image or new blobs appear. Now I need to give matched blobs the same ID as they had before. I'm wondering if there are typical or commonly used techniques for doing this. Or even some keywords I can use to Google on.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
http://en.wikipedia.org/wiki/Blob_extraction
我假设你的 blob 位于一个二值图像,只需用不同的颜色/id 填充每个 blob,并在具有相同 id 的帧之间注册重叠的 blob。
http://en.wikipedia.org/wiki/Blob_extraction
I assume you have your blobs in a binary image, simply floodfill each blob with a different color/id, and register overlapping blobs between frames with the same id.
CCV 用于多点触摸环境的多手指跟踪。查看他们的 跟踪代码。它使用了一个使用 k 最近邻算法的函数
trackKnn
。如果斑点相互碰撞,您还可以使用卡尔曼滤波器。查看这个SO
CCV is used for multiple finger tracking for multi-touch environments. Check out their tracking code. It uses a function
trackKnn
which uses k nearest neighbour algorithm.You can also use
Kalman Filter
if blobs collide each other. Check out this SO