Aforge Blob检测

如何从video中检测非移动Blob?

让我们考虑一下我有一个video和一个初始背景帧位图。 是否可以检测到没有移动的斑点/物体? 并在该对象周围绘制一个矩形?

这让我想起了一种检测地铁上被遗忘物体的算法。 如果我没有错,你想检测那些没有移动的物体,而这些物体不在初始背景上吗? 您可以应用此方法:

像这样的初始图像(找不到真正空的地铁图像):

在此处输入图像描述

并且添加了静态物体(废物jar),地铁移动和等待的人的图像可能会移动一点:

在此处输入图像描述

在Image> ThresholdDifference( http://www.aforgenet.com/framework/docs/html/322123cf-39df-0ae8-6434-29cceb6a54e1.htm )之后,我们会得到类似的结果:

在此处输入图像描述

请注意废物如何与其他不存在的物体一起出现。 如果你多次应用这个类似的过程,那就让我们说每10秒然后一个Image> Intersect( http://www.aforgenet.com/framework/docs/html/7244211d-e882-09b1-965d-f820375af8be.htm )你几分钟后会以这样的结尾:

在此处输入图像描述

您可以使用图像>连接组件标签轻松获取此对象的坐标( http://www.aforgenet.com/framework/docs/html/240525ea-c114-8b0a-f294-508aae3e95eb.htm

这种方法的缺点:

  • 需要一些时间(如果你每隔10秒拍摄一次快照,几分钟就可以获得更频繁的快照),以检测物体。
  • 将需要更多的时间来检测具有与背景相似的颜色的物体,您可以很容易地注意到jar头上部的这个缺点,这也是白色的,就像墙壁一样。

这是我脑海中的解决方案,我不确定是否正常工作:

  1. 运行任何预先要求的filter和算法,以准备blob检测。
  2. 运行blob检测算法并将所有blob保存在数组中。
  3. 找到中心,以及每个blob的面积大小。
  4. 将当前帧blob的数据与之前的blob(它们的中心和大小)进行比较
  5. 如果变化在可接受的范围内,则它们是无动于衷的blob。