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头上部的这个缺点,这也是白色的,就像墙壁一样。
这是我脑海中的解决方案,我不确定是否正常工作:
- 运行任何预先要求的filter和算法,以准备blob检测。
- 运行blob检测算法并将所有blob保存在数组中。
- 找到中心,以及每个blob的面积大小。
- 将当前帧blob的数据与之前的blob(它们的中心和大小)进行比较
- 如果变化在可接受的范围内,则它们是无动于衷的blob。