CV-视频分析:静态背景下的运动检测
ref :
Chapter 2 Motion Detection in Static Backgrounds. [ Github :…… ]
------------------------------------------------------------------------------------------------------------------------------
静态背景下的运动检测
运动检测在任何物体跟踪或视频监控算法中起着重要作用,几乎所有这些算法都以运动检测开始的。实际上,运动中潜在前景物体的可靠性可以被识别到,通过跟踪和/或对象识别的后续处理阶段可以直接影响效率和性能水平。
然而,检测相同场景的图像变化的区域不是简单的任务。因为它不仅取决于前景元素的特征,而且也会被背景元素特征所影响,比如,摇摆元素的存在。
因此,在此情境中,我们将重点放在基本情况下的运动检测问题上,即当所有背景元素都不动时(静态背景)。
我们的目标是解决涉及到的如下的几个不同问题:
1、不同成像传感器的使用 ,
2、不同环境的适应性,
3、不同的运动速度,
4、目标的形状变化
5、某些不受控制的动态因素(例如逐渐或者突然的照明变化)
因此,首先,我们通过分析可能导致系统故障的因素,对以往的相关方法进行简要概述。然后,我们提出一种成功处理所有出现问题的运动分割算法。 最后,进行绩效评估、分析和讨论。
2.1 State of the Art
以静态背景作为起点的话,那么,任何检测到的改变的像素将被视为前景对象的一部分。 因此,基于时间信息的技术 可以使用阈值帧差来拟合。 通过依赖于差异中隐含的帧之间的时间关系,可以采用两种不同的方法 来定义。
其一,背景(帧)减法使用一个参考帧来表示场景背景。 该帧通常设置为第一个捕获的图像。 因此,如果像素的当前值与参考帧中的值相差很大,则像素被分类为前景。虽然它似乎是完美的解决方案,值得注意的是,在真实的环境中可能发生以下两种不同的情况(见图2.1):
1、理想情境:参考帧中没有前景对象。 在这种情况下,所得到的图像将与所需的分割结果相同。
2、一般情境:参考帧中有前景对象。在这种情况下, 由于它们在参考帧中的位置,它们的存在使得背景(帧) 减法失败,进而展现出错误的前景提取结果。(也就是重影)
其二,可以考虑基于时间上相邻的帧的技术。基本上,这种时间差异的方法表明,如果像素的亮度(强度)在当前帧和前一帧之间显着变化,则像素正在移动。也就是说,像素 x 是一个移动的物体一旦它满足: | It ( x ) − It − 1 ( x )| < τ (2.1)。其中,It ( x ) 表示 t 时刻的像素位置 x 处的亮度(强度) 值,而 t 则是对应于描述有显著强度变化的阈值。
尽管如此,尽管这是一种提供了容易又快速的移动物体检测方法,但它只适用于物体速度和帧速率的特定条件,因为它们产生了两个众所周知的不同缺点:
1、重影 。
2、前景孔径。
所以,如图2.2所示,前一帧对象存在使得产生了虚假警报(重影),而当物体的速度太低或者变得不动时,像素之间的相似性会使分割结果产生“孔洞”(前景孔径)。
因此,作为一种解决方案,Kameda和Minoh [2]提出了这种方法的变体:双差图像。该方法通过将它们与逻辑与(如图2.3)组合,从而在时间t和t-1的帧之间以及在时间t和t + 1的帧之间操作阈值差。 然而,因为物体的位置不能实时估计,如果移动物体没有足够的质感,则不能进行精确的运动检测,并且在此种情境中不考虑目标静止的情况。
在VSAM项目中,Collins等 [1]描述了运动检测的不同混合算法。 基本上,基于图像的三帧差分操作 在时间t和t-1之间的帧之间的差异以及t和t-2之间的差异被执行以确定合法运动的区域并擦除重影问题。
然后,Kanade等人提出的自适应背景( - 帧)减法 [3],用于解决前景孔径问题。 尽管如此, 尽管所提出的算法解决了图像差异的问题,并且在运动检测中给出了良好的结果,但是当对象开始或结束运动和/或场景中存在亮度变化时,背景更新过程失败。 此外,由于广泛应用于场景图像深度低的户外环境,因此在可变深度拍摄方面存在一些缺点。
为了解决这些问题,已经开发出许多用于正确背景更新的技术。最简单的技术是通过时间 t-1 的背景像素和时间t的凸组合更新背景,使得背景像素的更新权重最终随着像素分类(背景像素的轻权重和前景像素的重权重)而变化。
相反,Migliore等 [4]声称可以获得鲁棒的像素前景分类,而不需要先前的背景学习。 为此,他们利用联合背景减法和逐帧差分法来适当地对像素进行分类(参见算法1)。 然后,根据Wren等人指出的这种分类选择性地更新背景模型。 [5]通过使用以下公式:
其中α值根据像素分类而不同。因此,如果通过避免背景损坏将像素分类为前景,则将其设置为0; 使用低,非零值来缓慢更新模型; 最后,在任何背景元素开始移动的情况下,高的α值将允许快速恢复 背景模型。
然而,尽管表现良好,但它有两个重要的缺点。 一方面,当目标停止或速度较慢时,此方法将失败。 另一方面,考虑到对于整个图像建立差异阈值,诸如非平稳和相关噪声,环境照明,对比度不足和/或与场景不相称的对象尺寸等各种因素也将使得 方法失败。
2.2 差异法的结合
我们在这个阶段的贡献是为鲁棒运动检测提供实时算法。 为此,提出了差异法(CoD)组合技术,因为此技术证明了它们提供了良好的性能。 正如Migliore et al等人所说 [4],可以通过使用背景( - 帧)减法来克服相邻的差异问题。
要解决的第一个问题是如何正确选择阈值,因为它是分段过程中的关键参数,它可以严重影响连续步骤的性能。 虽然用户可以手动设置阈值,但是当设计自主系统时,这不是有效的解决方案。 在这种情况下,一个常见的解决方案是使用自动计算该值的阈值算法。
Sezgin和Sankur [6]根据他们正在利用的信息对自动阈值法进行了分类:
1、基于直方图形状的方法,其中例如峰,谷和 分析平滑直方图的曲率。
2、基于聚类的方法将灰度级样本分为两部分(背景和前景),或者交替地被建模为高斯混合。
3、基于熵的方法导致使用前景和背景区域的熵的算法,原始和二值化之间的交叉熵 图像等。
4、基于对象属性的方法搜索灰度级和二值化图像之间的相似度测量,如模糊形状相似性,边缘符合等。
5、空间方法使用较高阶概率分布和/或相关性 像素之间
6、本地方法将每个像素的阈值适应局部图像特征。
尽管存在各种可能性,但是只有当阈值的图像满足其关于图像上的灰度值分布的假设时,现有的方法才能很好地工作。 所以,有关兴趣对象的形状变形,前景对象的大小与背景关系 ,或背景和目标灰度分布的重叠,都将使它们失败。 所有这一切,有必要设计一种新的方式来自动获取 阈值。
我们在这一点上的贡献是一种自适应动态阈值法,使其能够适应不均匀分布的分辨率,场景中不充分的照明梯度,阴影以及照明的渐变以及突然的变化。 主要思想是将区域中的每个拍摄图像划分,以便为每个描述的区域获得阈值。 一个关键问题是区域定义的方式,因为它依赖于分辨率,因此依赖于摄像机。 在这份手稿中,考虑了两种不同类型的相机:
1、透视相机
2、鱼眼相机
……
no :
一旦确定了图像区域的形状,就会出现一个新的问题:它们的大小。 该参数在噪声影响以及照明和灰度均匀性方面非常重要。 它主要取决于摄像机相对于场景的位置,使得当摄像机进一步放大时,必须定义较小的区域。 这是因为场景元素的大小与相机和这些元素之间的距离成正比。
请注意,每个区域都应该通过允许正确选择阈值的唯一值进行识别。特别是常用的统计功能。最合适的统计量在很大程度上取决于输入图像,尽管简单快速的函数包括局部强度分布的最小值和最大值的平均值,中值或平均值。 在我们的例子中,我们用平均值来描述每个图像区域。
下一步是确定正确的CoD技术来实现我们的目标,即准确的细分。 如图2.8所示,并在算法2中绘制,已经研究了不同的情况:
1、理想的情境。背景( - 帧)减法的参考帧是 没有前景对象。 因此,相邻的帧差异可能会面临三种不同的情况:
1)前一帧中没有前景对象。 在这种情况下,当相邻差异和背景( - 帧)相减大于或等于其对应阈值时,像素被分类为前景。
2)前一个对象出现在前一帧中。因此,可能发生相邻差异缺点之一或两者均发生。通过考虑到背景( - 帧)减法不会将这些像素识别为前景来解决重影问题。关于前景孔径的缺点,将被这样来解决,当前景对象具有相似的纹理时,它们通过背景(-frame)减法正确识别,而不是相邻差分法。我们解决这种情况的方式是考虑在这种情况下像素是什么。 因此,一方面,它们必须满足灰度相似关系,因为它们属于同质纹理。另一方面,另一个需求是指在前一帧中被分类为前景对象的那些像素。 因此,有必要使用两个约束来获得成功的结果,因为只使用相似性标准,可能会产生许多虚假警报 。
3)最后一种情况发生在前景对象停止移动时。 再次,这种情况已经通过相似性标准来解决了。
2、一般的情境。在参考框架中会出现前景对象 。 这种情况与前一种情况的区别在于,最初被视为背景元素的元素可以随时变成前景。 因此,当它开始移动时,会留下一个会被错误分类的孔径作为前景。
Now:
需要注意的是,在图2.8中输入的是彩色图像。 然而,为了获得能够在彩色和灰度级图像上运行的一般解决方案,需要进行预处理。……
另外,考虑到从分割过程得到的二进制图像上应用两个连续的形态学操作,以抑制背景/前景分类方法中的小错误。 因此,首先,使用3×3的滤波器来擦除由不同的动态因素引起的孤立点或线,例如传感器噪声,不均匀的衰减或灯的闪烁。 然后,通过3×3扩展滤光片实现前景区恢复。 由于捕获和/或分段错误,同一兴趣对象的两个不同部分会分开,因此特别有用。
另一个重要的问题是突然间的、全局的照片变化。解决这种情况的一个常见方法是在相当大部分的图像(通常是图像的三分之二)发生变化时产生报警,即已经被分类为前景。 虽然在大多数情况下效果很好,但是当这种变化是由于目标物体与摄像机的接近程度而失败的。 通过比较当前帧和前一帧中检测到的前景像素的数量已经解决了这种情况。因此,假设当超过三分之二的图像被分类为前景并且当前帧中检测到的地心像素的量大于前一帧中检测到的量的1.5倍时,发生全局照明。注意,这种照明改变需要为背景( - 帧)减法技术设置新的参考帧。 此外,一些照明源需要几毫秒来稳定。 因此,当检测到全局照明变化时,系统会在重置所有参数之前等待一些帧(通常在我们的实验中通常是五帧)。
算法2 : COD
CV-视频分析:静态背景下的运动检测的更多相关文章
- vs2015+opencv3.3.1+ c++实现 静态背景下多运动目标提取,检测
静止背景下运动物体的提取,跟踪出运动轨迹 下载地址 https://download.csdn.net/download/li_haoren/10761361 1.两遍扫描法得到第n帧的连通域,分离出 ...
- 背景建模技术(四):视频分析(VideoAnalysis)模块
视频分析模块主要包含两个函数,一个是VideoAnalysis::setup(....),其主要功能就是确定测试的视频是视频文件或摄像头输入亦或是采用命令行参数:第二个函数是VideoAnalysis ...
- [OpenCV-Python] OpenCV 中视频分析 部分 VI
部分 VI视频分析 OpenCV-Python 中文教程(搬运)目录 39 Meanshift 和 和 Camshift 目标 • 本节我们要学习使用 Meanshift 和 Camshift 算法在 ...
- OpenCV图像处理与视频分析详解
1.OpenCV4环境搭建 VS2017新建一个控制台项目 配置包含目录 配置库目录 配置链接器 配置环境变量 重新启动VS2017 2.第一个图像显示程序 main.cpp #include< ...
- 背景建模技术(二):BgsLibrary的框架、背景建模的37种算法性能分析、背景建模技术的挑战
背景建模技术(二):BgsLibrary的框架.背景建模的37种算法性能分析.背景建模技术的挑战 1.基于MFC的BgsLibrary软件下载 下载地址:http://download.csdn.ne ...
- 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇)
系列文章 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇) 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇) 扫码体验,先睹为快 可以扫描下微信小程序的 ...
- NVIDIA DeepStream 5.0构建智能视频分析应用程序
NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...
- nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容
1.nodejs获取客户端真实的IP地址: 在一般的管理网站中,尝尝会需要将用户的一些操作记录下来,并记住是哪个用户进行操作的,这时需要用户的ip地址,但是往往当这些应用部署在服务器上后,都使用了ng ...
- 中国将有可能在全球化的背景下收获新的人口红利:3星|《<财经>2019:预测与战略》
<财经>2019 :预测与战略 <财经>杂志的年刊.内容是针对2019年的预测分析.我认为<财经>的调查报告比较有深度,分析则不是我爱看的类型. 总体评价3星,有参 ...
随机推荐
- 【图论】The Bottom of a Graph
[POJ2553]The Bottom of a Graph Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 11182 ...
- Erlang学习记录(三)——表达式大集合
Erlang中的表达式必须以.结束才会去执行.如果不加.你在编译环境下按多少次Enter,表达式都不会执行,表达式之间可以用,分隔,以.结尾后所有的表达式都会执行,但是只有最后一个以.结尾的表达式会在 ...
- 最近公共祖先 LCA 倍增法
[简介] 解决LCA问题的倍增法是一种基于倍增思想的在线算法. [原理] 原理和同样是使用倍增思想的RMQ-ST 算法类似,比较简单,想清楚后很容易实现. 对于每个节点u , ancestors[u] ...
- [转]servlet配置中init-param
需要初始化的参数比如你的servlet里面有个属性为int total=0默认是0,你想让他初始时50则用init-param 给他赋值 init-param面对应的参数名和值,是给servlet在初 ...
- 8VC Venture Cup 2016 - Elimination Round D. Jerry's Protest 暴力
D. Jerry's Protest 题目连接: http://www.codeforces.com/contest/626/problem/D Description Andrew and Jerr ...
- UI Watcher 解决不定时弹窗问题
缘来是你: 在基于UI谷歌库的测试系统对第三方APK测试例,存在不定时弹窗问题,对测试例的健壮性和稳定性产生了很大影响. 为了解决这个问题,谷歌开源了UIwatcher 类来解决此问题. 附谷歌官网类 ...
- linux svn 配置
#svnadmin create projectname #vi projectname/conf/svnserve.conf anon-access = noneauth-access =write ...
- [典型漏洞分享]YS VTM模块存在格式化字符串漏洞,可导致VTM进程异常退出【高危】
YS VTM模块存在格式化字符串漏洞,可导致VTM进程异常退出[高危] 问题描述: YS VTM模块开放对外监听端口(8554和8664),此次使用sulley fuzzing框架对监听在8664端口 ...
- 如何通俗理解——>集群、负载均衡、分布式
转自:周洲 (Julie) 在“高并发,海量数据,分布式,NoSql,云计算......”概念满天飞的年代,相信不少朋友都听说过甚至常与人提起“集群,负载均衡”等,但不是所有人都有机会真正接触到这些技 ...
- MYSQL LIMIT 用法详解
在mysql的limit用法中,网上有这样的论述: "//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql>SELECT * FROM tab ...