C# 大斑点检测

C# 大斑点检测,c#,blob,aforge,C#,Blob,Aforge,如何从视频中检测不移动的斑点 让我考虑我有一个视频和一个初始的背景帧位图。是否有可能检测到一个不移动的水滴/物体?然后在那个物体周围画一个矩形?这是我脑海中的一个解决方案,我不确定是否能正常工作: 运行任何预先要求的过滤器和算法,以准备blob检测 运行blob检测算法并将所有blob保存在一个数组中 找到每个水滴的中心和面积大小 将当前帧blob的数据与以前的blob(其中心和大小)进行比较 如果更改在可接受的范围内,则它们是未移动的blob 这让我想起了一种检测地铁上被遗忘物体的算法。如果我

如何从视频中检测不移动的斑点


让我考虑我有一个视频和一个初始的背景帧位图。是否有可能检测到一个不移动的水滴/物体?然后在那个物体周围画一个矩形?

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

  • 运行任何预先要求的过滤器和算法,以准备blob检测
  • 运行blob检测算法并将所有blob保存在一个数组中
  • 找到每个水滴的中心和面积大小
  • 将当前帧blob的数据与以前的blob(其中心和大小)进行比较
  • 如果更改在可接受的范围内,则它们是未移动的blob

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

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

    还有一张图片,上面有一个附加的静态物体(垃圾桶),地铁在移动,还有一个人在等待,可能移动了一点:

    在图像>阈值差异()之后,我们将得到如下结果:

    请注意废物如何与其他不存在的对象一起出现。如果您多次应用类似的过程,比如说每10秒一次,然后出现一个图像>Intersect(),几分钟后您将以类似的方式结束:

    您可以通过图像>连接组件标签()轻松获取此对象的坐标

    这种方法的缺点:

    • 需要一些时间(如果每10秒拍摄一次快照,则需要几分钟;如果拍摄更频繁的快照,则需要几秒钟)来检测对象
    • 如果要检测颜色与背景相似的对象,需要花费更多的时间,您可以很容易地注意到罐子上部的这个缺点,它也是白色的,就像墙壁一样