首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Aforge中跟踪blobs

在Aforge中跟踪blobs
EN

Stack Overflow用户
提问于 2010-08-23 22:32:16
回答 1查看 5.7K关注 0票数 0

我看了又看。有人知道怎么追踪Aforge的斑点吗?我知道他们没有实现它,但我真的需要使用Aforge,因为我正在使用其余的代码。我看到了一些关于卡尔曼滤波的参考,但我需要一些实现,而不是理论。

tnx,v.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-23 22:52:09

AForge.NET BlobCounter将提供blob查找,尽管它相当简单,并且不支持“损坏的”blob。如果你想实现一些简单的斑点跟踪,你可以考虑一些事情:

  1. 如果您的斑点偶尔会碎片化,则可能需要执行一些聚类(查找重心位置组以组合较小的碎片),以获得位置的良好估计。在分析多个帧时,这会增加遇到边界条件(如破碎的斑点)的机会,因此需要考虑这一点。或者,如果您能够很好地控制条件(例如照明),这可能就足够了。在斑点找到之前,可以通过重复的膨胀/侵蚀操作来解决微小的(只有几个像素)中断,尽管这也会放大噪声并降低位置精度。
  2. 对于实际的跟踪,您有几种方法。卡尔曼滤波可以提供非常好的精度(亚像素),因为它集成了来自多个帧的信息。如果你不需要这样的精确度,你可以考虑一个非常简单的算法,比如总是选择最接近最近位置的足够大的斑点。如果对象移动速度不是很快,并且您没有在被跟踪的对象附近弹出其他斑点,则可以使用此方法。如果你需要更好的分析性能,你也可以估计最后两帧的速度,并用它来限制你在搜索斑点时必须考虑的区域。
  3. 如果你需要跟踪一个高速物体,这就变得更具挑战性了。这里有一个例子,您可以尝试将blob查找与模板匹配结合起来。您可以基于斑点创建模板-查找模板并将其与后续斑点进行匹配,以根据其模式而不仅仅是其大小/位置对其进行评分。这要求斑点在一段时间内看起来相当一致,这意味着模型的物理形状和照明条件必须保持固定。

更新以回答您的问题:

今天早上只有几分钟,所以没有实际的代码,但基本的想法是这样的:

  1. 只考虑大于可配置大小的斑点(您可能必须确定有关找到的最后两个斑点位置的empirically.)
  2. Retain信息以及对它们进行采样的时间)。让我们在R2,p1和p0中调用这些向量,在时间t1和t0。,

  1. ,如果你假设速度是缓慢变化的,那么在时间t2,新位置的初步估计p2 = p1 + (t2-t1)*(p1-p0)/(t1-t0)。这可能是一个好的假设,也可能不是一个好的假设,所以你会想要通过捕捉所需运动范围下的对象来验证这一点。
  2. 你可以选择使用这个估计来将你的斑点搜索区域限制在以估计位置为中心的子图像中。执行blob查找后,将最接近估计位置的blob作为新位置measurement.

上面的一个副作用是,如果由于某种原因,斑点查找在一帧期间失败,您可以使用估计值。允许这种外推太长时间是危险的,但它可以让你对轻微的噪声尖峰有一定的容忍度。

您可能会看到如何进一步包含最近帧的加速度估计,或者集成多个帧的速度/加速度,以便更好地推断下一个样本的可能位置。您还可以开始相信估计(具有来自当前和先前帧的累积数据)比实际测量更精确(可能也更准确)。最终你会得到类似卡尔曼滤波器的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3548534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档