论文精读 MOG2系列 OpenCV源码提供的论文

news2024/11/27 2:40:55

本篇博客首先讲述Opencv库中MOG和MOG2的来源,然后对MOG2的一篇论文进行翻译。

图1. OpenCV官网 MOG 算法来自一篇论文:
An Improved Adaptive Background Mixture Model for Real-time Tracking with Shadow Detection.
一种用于阴影检测实时跟踪的改进自适应背景混合模型

图2. OpenCV官网 MOG2 算法来自三篇论文:
Improved Adaptive Gaussian Mixture Model for Background Subtraction.
 一种改进的自适应高斯混合背景相减模型 

Efficient Adaptive Density Estimapion per Image Pixel for the Task of Background Subtraction.
用于背景减法任务的每个图像像素的高效自适应密度估计
Recursive unsupervised learning of finite mixture models.
有限混合模型的递归无监督学习

  • MOG 算法:使用窗口化方法,但不使用阴影检测。
  • MOG2 算法:该代码非常快速,还可以执行阴影检测。

 

Improved Adaptive Gaussian Mixture Model for Background Subtraction

一种改进的自适应高斯混合背景相减模型 

摘要

背景减法是一项常见的计算机视觉任务。我们分析通常的像素级方法。我们使用高斯混合概率密度开发了一种有效的自适应算法。递归方程用于不断更新参数,而且还用于同时为每个像素选择适当数量的分量。

结论

我们提出了一种改进的GMM背景相减方案。新算法可以自动选择每个像素所需的分量数量,并以这种方式完全适应观察到的场景。处理时间减少,但分割也略有改进。

1. 介绍

静态摄像机观察场景是监控系统的常见情况。检测入侵物体是分析场景的重要步骤。一个通常适用的假设是,没有跋涉物体的场景图像表现出一些可以用统计模型描述的规则行为。如果我们有一个场景的统计模型,可以通过发现图像中不符合模型的部分来检测入侵物体。这个过程通常被称为“背景减法”。应用了一种常见的自下而上的方法,并且场景模型分别具有每个像素的概率密度函数。如果新图像中的像素的新值由其密度函数很好地描述,则将其视为背景像素。对于静态场景,最简单的模型可能只是没有入侵对象的场景图像。下一步将是例如估计来自图像的像素强度水平的方差的适当值,因为方差可以随像素而变化。[1]中使用了这种单一的高斯模型。然而,10的像素值具有复杂的分布,需要更精细的模型。[2]中提出了高斯混合模型(GMM)用于背景相减。[3]中介绍了更新GMM的最常用方法之一,[10]中对此进行了进一步阐述。这些GMM使用一定数量的组件。我们在[12]的最新结果的基础上提出了一种改进的算法。不仅参数,而且混合的分量数量都会不断地适应每个像素。通过在线过程中选择每个像素的分量数量,该算法可以自动完全适应场景。

本文组织如下。在下一节中,我们将列出一些相关的工作。在第3节中,回顾了[3]中的GMM方法。在第4节中,我们介绍了如何在线选择组件的数量以及如何改进算法。在第5节中,我们介绍了一些实验。

  • [1] C.R.Wren,A.Azarbayejani,T.Darrell,and A.Pentland,“Pfinder:Real-time tracking of the human body,”IEEE Trans.on PAMI,vol.19,no.7,pp.780–785,1997.
  • [2] N.Friedman and S.Russell,“Image segmentation in video sequences: A probabilistic approach,”In Proceedings ThirteenthConf.on Uncertainty in Artificial Intelligence,1997.
  • [3] C.Stauffer and W.Grimson,“Adaptive background mixture models for real-time tracking,”In Proceedings CVPR,pp.246–252,1999.(GMM)
  • [10] E.Hayman and J.Eklundh,“Statistical Background Subtraction for a Mobile Observer”,In Proceedings ICCV,2003.
  • [12] Z.Zivkovic and F.van der Heijden,“Recursive UnsupervisedLearning of Finite Mixture Models”,IEEE Trans.on PAMI,vol.26.,no.5,2004.

2. 相关工作

RGB或某些其他颜色空间中的像素在时间t的值由表示。基于像素的背景相减涉及决定像素是属于背景(background, BG)还是某个前景对象(foreground, FG)。贝叶斯决策 R 是通过以下方式作出的:

背景减法的结果通常被传播到一些更高级别的模块,例如,检测到的对象经常被跟踪。在跟踪对象时,我们可以获得一些关于被跟踪对象外观的知识,这些知识可以用于改进背景减法。例如在[7]和[8]中对此进行了讨论。在一般情况下,我们对可以看到的前景对象一无所知,也不知道它们何时以及多久出现一次。因此,我们设置,并假设前景对象外观的均匀分布。然后我们决定像素属于背景,如果:

其中 c_{thr} 是阈值。我们将把称为背景模型。背景模型是从表示为 X 的训练集来估计的。估计的模型由表示,并且取决于明确表示的训练集。我们假设样本是独立的,主要问题是如何有效地估计密度函数并使其适应可能的变化。[4]中使用了基于Ker-nel的密度估计,我们在这里对[3]中的GMM进行了改进。文献中有一些模型考虑了图像序列的时间方面,并且决策也取决于序列中先前的像素值。例如,在[5,11]中,像素值随时间的分布被建模为自回归过程。在[6]中使用了隐马尔可夫模型。然而,这些方法通常要慢得多,而且很难适应场景的变化。

另一个相关主题是阴影检测。侵入的物体会在背景上投射阴影。通常,我们只对物体感兴趣,并且应该检测与阴影相对应的像素[9]。在本文中,我们分析了唯一基于基本像素的背景相减。对于各种应用程序,上述的一些附加方面和一些后处理步骤可能很重要,并可能导致改进,但这超出了本文的范围。

3. 高斯混合模型

在实践中,场景中的照明可以逐渐变化(室外场景中的白天或天气条件)或突然变化(室内场景中的切换光照)。可以将新对象带入场景,也可以将当前对象从中移除。为了适应变化,我们可以通过添加新样本和丢弃旧样本来更新训练集。我们选择一个合理的时间段T,在时间T,我们有。对于每个新样本,我们更新训练数据集并重新估计。然而,在来自历史的样本中,可能有一些值属于前景对象,我们应该将该估计表示为。我们使用带有M个组件的GMM:

其中是高斯分布均值的估计值;是描述高斯分分布方差的估计值。假设协方差矩阵是对角的,并且单位矩阵 I 具有适当的维数。由表示的混合权重是非负的,并且加起来为1。给定在时间t的新数据样本递归更新方程如下:

其中,。这里的常数 α 描述了一个指数衰减包络,用于限制旧数据的影响,而不是上面提到的时间间隔 T。我们记住了相同的符号,大约 α = 1/T。对于一个新的样本,对于具有最大的“闭合”分量,所有权被设置为1,而其他分量被设置为0。例如,如果样品与组件的马氏距离小于三个标准偏差,则我们确定样品与组件“接近”。距离第m个分量的平方距离计算为:。如果不存在“闭合”分量,则生成一个新的分量,其中and,其中是一些适当的初始方差。如果达到分量的最大数量,我们丢弃具有最小的分量。

补充知识点: 包络是由许多椭圆形曲线交织而成的一种图形,外观看起来是包起来的一样。

该算法提出了一种在线聚类算法。通常,入侵的前景对象将由一些具有小权重的附加簇表示。因此,我们可以通过前 B 个最大的聚类来近似背景模型:

如果分量被排序为具有递减权重,则我们有:

其中 c_f 是在不影响背景模型的情况下可以属于前景对象的数据的最大部分的度量。例如,如果一个新对象进入场景并在一段时间内保持静止,它可能会生成一个额外的稳定簇。由于旧的背景被遮挡,新簇的权重 \pi _{B+1} 将不断增加。如果对象保持静止足够长的时间,其重量将大于 c_f,并且可以认为它是背景的一部分。如果我们看(4),我们可以得出结论,对于大约帧,对象应该是静态的。例如,对于 c_{f}=0.1\alpha =0.001,我们得到105帧。

4. 选择组件数量

权重描述了有多少数据属于GMM的第m个分量。它可以被视为样本来自第m个分量的概率,通过这种方式,定义了一个潜在的多项式分布。让我们假设我们有t个数据样本,每个样本都属于GMM的一个组件。我们还假设属于第m个分量的样本数量为,其中在前一节中定义。假设的的多项式分布给出了似然函数。混合权重被约束为总和为一。我们通过引入拉格朗日乘数 λ 来考虑这一点。最大似然(ML)估计值如下所示:。去掉 λ 后,我们得到:

我们表示为 t 样本的估计值为 ,它可以以递归形式重写为 t−1 样本的估计值和最后一个样本的所有权

如果我们现在通过将 1/T 固定为 α = 1/T 来计算新样本的影响,我们得到更新方程(4)。新样本的这种固定影响意味着我们更多地依赖新样本,并且旧样本的贡献以指数衰减的方式向下加权,如前所述。

多项式分布的先验知识可以通过使用其共轭先验引入,即狄利克雷先验。系数 c_{m} 有一个有意义的解释。对于多项式分布,c_{m} 表示类别的先验证据(在最大后验(MAP)意义上)m-先验属于该类别的样本数量。我们使用负系数 c_m=-c。负先验证据意味着,只有当数据中有足够的证据证明m类存在时,我们才会接受m类存在。这种类型的先验也与最小消息长度标准有关,该标准用于为给定数据选择适当的模型[12]。包括上述内容的MAP解决方案来自,其中。我们得到:

其中。我们将(11)改写为:

其中是来自(9)的ML估计,并且通过 c/t 引入来自先验的偏差。数据集越大(t越大),偏差越小。然而,如果一个小的偏差是可以接受的,我们可以通过将 c/t to c_T=c/T 与一些大的t相乘来保持它的恒定。这意味着偏差将始终与具有t个样本的数据集相同。很容易证明,具有固定 c_T=c/T 的(11)的递归版本由下式给出:

由于我们通常只期望几个分量 M 和 c_T 很小,我们假设 。如前所述,我们将1/t设置为 α,并得到最终修改的自适应更新方程:

使用该方程式代替(4)。每次更新后,我们需要对 进行归一化,使它们加起来为一。我们从 GMM 开始,其中一个成分以第一个样本为中心,并添加了新的成分,如前一节所述。具有负权重的狄利克雷先验将抑制数据不支持的分量,并且当分量 m 的权重变为负时,我们丢弃它。这也确保了混合权重保持为非负值。对于选定的 α=1/T,我们可以要求至少 c=0.01*T 个样本支持一个组件,我们得到 c_T=0.01

请注意,由以下公式给出的(11)的直接递归版本不是很有用:。我们可以从更大的t值开始,以避免对小t进行负更新,但随后我们抵消了先前的影响。这促使我们做出了重要的选择,以弥补先前的影响。

5. 实验

为了分析算法的性能,我们使用了三个动态场景。序列被手动分割以生成地面实况。我们将改进的算法与原始算法进行了比较,其中固定数量的分量 = 4。对于两种算法和不同的阈值(来自(2)的 c_{thr}),我们测量了属于正确分配给前景的入侵对象的像素的真阳性百分比和错误分类为前景的背景像素的假阳性百分比。在减少处理时间方面可以观察到很大的改进,如图2所示。报告的处理时间是在2GHz PC上测量的320×240幅图像。在图2中,我们还说明了新算法如何适应场景。右侧图像中的灰度值表示每个像素的组件数量。黑色表示每个像素一个高斯,如果最多使用4个分量,则像素为白色。例如,sequence“lab”是场景中具有滚动干涉条的监视器。现场的植物因风而摇曳。我们看到,动态区域是使用更多组件建模的。因此,处理时间也取决于场景的复杂性。对于高度动态的“三”序列,处理时间几乎与原始算法相同。侵入物体会产生新的组件,这些组件会在一段时间后被移除(见“raf fic”序列),这也影响了处理速度。

每帧平均处理时间:旧: 19.1ms  新: 13.0ms

每帧平均处理时间:旧: 19.3ms  新: 15.9ms

每帧平均处理时间:旧: 19.7ms  新: 19.3ms 

图2. 完全适应和处理时间 

致谢

本文所述的工作是在欧盟综合项目COGNIRON(“认知伴侣”)中进行的,并由欧盟委员会FP6-IST未来和新兴技术部门根据合同FP6-002020资助。

>>> 如有疑问,欢迎评论区一起探讨。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1604123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Crossref

https://baijiahao.baidu.com/s?id1766583173146005960&wfrspider&forpc https://zhidao.baidu.com/question/1796197318615421547.html

2024.4.14 机器学习周报

目录 引言 Abstract 文献阅读 1、题目 2、引言 3、过去方案 4、创新点 5、方法 6、混合CNN-LSTM模型 7、实验过程 8、实验结果与评价 深度学习 通过VGG实现图片分类 1.data.py文件,用于处理数据 2.txt.py 将指定文件夹中的特定类型的图片路径和对应的…

如何在 MySQL 中开启日志记录并排查操作记录

在数据库管理中,能够追踪和审查操作记录是至关重要的。这不仅有助于识别和分析正常的数据库活动,还可以在数据泄露或未经授权的更改发生时进行调查和响应。本文将介绍如何在 MySQL 中开启通用日志记录,并如何排查操作记录。 开启 MySQL 通用…

双臂复合机器人平台叠方块例程使用与自启设置

睿尔曼双臂升降复合机器人平台,旨在为机器人教育提供强大的实训平台,该平台全自主研发,实现机器人建图导航、路径规划,机械臂运动学、动力学、轨迹规划、视觉识别等算法和应用,提供开放式的软件框架,为教学…

使用rsync同步备份linux文件内容到windows客户端

把数据库文件、视频、图片文件同步备份到其他机器上是不可缺少的环节,没有备份机制就是耍流氓。 远程linux服务器端安装rsync debian | ubuntu 系统 sudo apt install rsynccentos系统 sudo yum install rsync创建rsync用户和组 sudo adduser --system --group…

读天才与算法:人脑与AI的数学思维笔记03_AlphaGo

1. 国际象棋 1.1. 1997年计算机“深蓝”(Deep Blue)击败了顶尖国际象棋手,但机器取代数学研究机构还言之尚早 1.2. 下国际象棋与数学的形式化证明颇有相似之处,但学者认为中国围棋的思维方式更能够体现数学家思考的创造性和直觉…

Vue_管道符“|”(单竖线)的用处

目录 1、管道符是什么 2、应用场景 背景:项目中偶遇在 {{ }} 插值表达式里用了 “|”此写法,一开始误以为是写错了,应该是写成 “||” 双竖线( 逻辑或运算符 ),结果询问…

Java基于SpringBoot+Vue的蜗牛兼职网系统的研究与实现

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

HTML学习笔记:(二)框架实例

2、 框架实例 注意&#xff1a;frameset不能和body标签共存 <frameset>元素是用于创建框架页面的&#xff0c;它允许在一个浏览器窗口中显示多个HTML页面。然而&#xff0c;<frameset>是一种较旧的方式来构建网页&#xff0c;它不符合现代Web标准&#xff08;比如…

vue 一键更换主题颜色

这里提供简单的实现步骤&#xff0c;具体看自己怎么加到项目中 我展示的是vue2 vue3同理 在 App.vue 添加 入口处直接修改 #app { // 定义的全局修改颜色变量--themeColor:#008cff; } // 组件某些背景颜色需要跟着一起改变&#xff0c;其他也是同理 /deep/ .ant-btn-primar…

气膜室内滑雪场:解决冬季运动难题-轻空间

在社会主义的旗帜下&#xff0c;人们对环境保护的意识不断增强&#xff0c;全民健身的倡导推动了体育事业的蓬勃发展&#xff0c;也为新建筑业带来了机遇。在环保气膜中进行运动&#xff0c;确实能够体会到许多优点&#xff1a;没有严寒酷暑、飞沙走石和雾霾的困扰。在这里&…

Halo自定义页面

在使用Halo后台维护项目&#xff0c;有的页面是固定的&#xff0c;但内容需要一些自定义样式&#xff0c;内容动态编辑生成&#xff0c;这个时候就需要自定义页面; Halo版本 版本&#xff1a;2.121.首先在theme.yaml中添加自定义页面并指定文件名 spec:customTemplates:page:…

HTML学习笔记:链接target属性

关于target的使用&#xff1a; <a href"https://www.baidu.com" target"_parent">网址链接</a>其中关于target四个特殊目标的理解&#xff0c;W3school上的解释为&#xff1a; HTML 标签的 target 属性 其中_black和_self两个属性很好理解&…

好用且免费的无需搭梯子的长文本场景对话大模型

这款ai工具最近爆火&#xff0c;Kimi支持200万字无损上下文&#xff0c;在长上下文窗口技术上再次取得突破&#xff0c;引燃人工智能领域新一轮投资热情。我也是支持国货&#xff0c;抱着试一试的心态使用&#xff0c;确实不错&#xff0c; China&#x1f402;&#x1f37a;

1分钟搞定NumPy对ndarray快速排序和文件IO操作

1.快速排序 np.sort() 与 ndarray.sort() 都可以&#xff0c;但有区别&#xff1a; np.sort()&#xff1a;不改变原数组&#xff0c;创建一个新的数组&#xff0c;开辟新的内存空间 ndarray.sort()&#xff1a;改变原数组&#xff0c;不多占内存空间 ​# 导包import numpy a…

移动端图片转表格文字的应用推荐

移动端的应用程序中&#xff0c;有许多可以识别图片中文字和表格的应用。以下是一些常见的&#xff1a; 1. **金鸣表格文字识别**&#xff1a;金鸣表格文字识别是一款专业的OCR应用&#xff0c;可以识别图像中的文字和表格&#xff0c;以及各类证件和票据的结构化识别&#xff…

PHP01——php快速入门 之 在Mac上使用phpstudy快速搭建PHP环境

PHP01——php快速入门 之 在Mac上使用phpstudy快速搭建PHP环境 0. 前言1. 下载小皮面板1.1 下载phpstudy&#xff08;小皮面板&#xff09;1.2 启动、简单访问1.2.1 启动Apache1.2.2 访问1.2.3 访问自定义文件或页面 2. 创建网站2.1 创建网站2.2 可能遇到的问题2.2.1 hosts权限…

Hbase的简单学习一

一 Hbase的搭建与安装 1.1 安装 1.准备好文件&#xff0c;上传到Linux上 2.解压文件 tar zxvf hbase-2.2.7-bin.tar.gz -C ../ ../是解压到的路径 1.2 配置文件 1.配置环境变量 去etc/profile目录下 export HBASE_HOME/usr/local/soft/hbase-2.2.7 export PATH$PATH:$H…

openlayers 入门教程(六):controls 篇

目录 一、常用的控件 二、使用控件方法 三、添加删除control 的基本方法 四、control示例 1 比例尺 - ScaleLine 2 鹰眼/缩小图 - OverviewMap 3 全屏 - FullScreen 4 版权信息 - Attribution 5 旋转地图 - Rotate 6 放大缩小 - Zoom 7 缩放滑块控件 - ZoomSlider …

数据库服务的运行与登录

打开数据库服务 数据库服务: SQL Server(MSSQLServer) 运行在服务器端的应用程序, 提供数据的存储 / 处理和事务等在使用DBMS的客户端之前必须首先打开该服务 客户端连接到服务器 关于客户端 / 服务器端的说明 客户端 : 数据库管理系统(DBMS), 应用程序服务器端 : 安装的数据…