当前位置: 首页 > article >正文

机器视觉基础系列四—简单了解背景建模算法

机器视觉基础系列四—简单了解背景建模算法

首先我们应该了解的是背景建模的定义是什么?又有哪些应用场景呢?

背景建模是指通过分析视频序列中的像素值变化情况,从中提取出静态背景部分,并将其用于目标检测、运动跟踪等计算机视觉任务中。在实际应用中,背景建模常用于视频监控、行人检测、车辆识别等领域。

在视频中,背景通常被定义为相对稳定的部分,例如墙壁、地面或天空等。背景建模的目标是将动态的前景对象与静态的背景进行分离,以便进一步分析和处理。

帧差法—背景建模

背景建模最简单的一种方法就是使用帧差法进行背景的建模。

帧差法实际上也是一种传统的目标跟踪算法有有一定的优点和缺点。

  • 优点是算法实现简单,程序设计复杂度低;对光线等场景变化不太敏感,能够适应各种动态环境,有着比较强的鲁棒性。

  • 缺点是不能提取出对象的完整区域,对象内部有“空洞”,只能提取出边界,边界轮廓比较粗,往往比实际物体要大。对快速运动的物体,容易出现鬼影的现象,甚至会被检测为两个不同的运动物体,对慢速运动的物体,当物体在前后两帧中几乎完全重叠时,则检测不到物体。故该方法一般适用于简单的实时运动检测的情况。

在这里插入图片描述

由于场景中的目标在运动,该类算法对时间上连续的两帧图像进行差分运算,不同帧对应的像素点相减,判断灰度差目标的影像在不同图像帧中的位置不同。,当绝对值超过—阈值时,即可判断为运动目标,从而实现目标的检测功能。

其对应的公式表示为:

D n ( x , y ) = ∣ f n ( x , y ) − f n − 1 ( x , y ) ∣ R n ′ ( x , y ) = { 255 , D n ( x , y ) > T 0 ,  else  \begin{array}{l} D_{n}(x, y)=\left|f_{n}(x, y)-f_{n-1}(x, y)\right| \\ R_{n}^{\prime}(x, y)=\left\{\begin{array}{l} 255, D_{n}(x, y)>T \\ 0, \text { else } \end{array}\right. \end{array} Dn(x,y)=fn(x,y)fn1(x,y)Rn(x,y)={255,Dn(x,y)>T0, else 

我们对这一个公式简单的来进行一下解读,fn代表的是第n帧图像(x,y)位置处的像素点。fn-1代表的是该像素点在上一帧的像素值。

如何其值为0代表该点没有在视频中发生运动可以视为背景,若发生变化则表示的是该物体进行运动。255白色保留

帧差法非常简单,但是会引入噪音和空洞问题这个算法实际上更像说是一种背景消除的操作,我们对背景的信息进行了过滤。

混合高斯模型—GMM

GMM的公式推导

这里的Gmm高斯混合模型实际上也就是对应机器学习中的高斯混合聚类的推导过程。

定义:

P ( x ) = ∑ i = 1 k α i ⋅ ϕ ( x ∣ μ i , Σ i ) P(\boldsymbol{x})=\sum_{i=1}^{k} \alpha_{i} \cdot \phi\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{i}, \boldsymbol{\Sigma}_{i}\right) P(x)=i=1kαiϕ(xμi,Σi)

该模型由K个混合成分组成,每个混合成分为一个高斯分布,其中x属于Rn而a i是混合系数。

α i ≥ 0 , ∑ i = 1 k α i = 1 , ϕ ( x ∣ μ i , Σ i )  为多元高斯分布  \alpha_{i} \geq 0, \sum_{i=1}^{k} \alpha_{i}=1, \phi\left(x \mid \boldsymbol{\mu}_{i}, \boldsymbol{\Sigma}_{i}\right) \text { 为多元高斯分布 } αi0,i=1kαi=1,ϕ(xμi,Σi) 为多元高斯分布 

ϕ ( x ∣ μ i , Σ i ) = 1 ( 2 π ) n 2 ∣ Σ i ∣ 1 2 exp ⁡ ( − 1 2 ( x − μ i ) T Σ i − 1 ( x − μ i ) ) \phi\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{i}, \boldsymbol{\Sigma}_{i}\right)=\frac{1}{(2 \pi)^{\frac{n}{2}}\left|\boldsymbol{\Sigma}_{i}\right|^{\frac{1}{2}}} \exp \left(-\frac{1}{2}\left(\boldsymbol{x}-\boldsymbol{\mu}_{i}\right)^{\mathrm{T}} \boldsymbol{\Sigma}_{i}^{-1}\left(\boldsymbol{x}-\boldsymbol{\mu}_{i}\right)\right) ϕ(xμi,Σi)=(2π)2nΣi211exp(21(xμi)TΣi1(xμi))

其生成数据的方式为:首先,依概率ai:选择第i个高斯混合成分。接着根据该混合模型的概率分布

ϕ ( x ∣ μ i , Σ i ) \phi\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{i}, \boldsymbol{\Sigma}_{i}\right) ϕ(xμi,Σi)

来生成样本。

已知数据集D={x1,x2,···xm}中的样本中的样本均由某个高斯混合模型生成,而每个样本是由哪个高斯混合成分生成的是未知的,属于一个隐变量,我们令其为zj∈{1,2,.,k}表示生成样本xj的高斯混合成分,结合高斯混合模型生成数据的方式易知的分布律为P(zj=i)=ai

可以用EM算法来进行求解。

GMM背景建模应用

在进行前景检测前,先对背景进行训练,对图像中每个背景采用一个混合高斯模型进行模拟,每个背景的混合高斯的个数可以自适应。然后在测试阶段,对新来的像素进行GMM匹配如果该像素值能够匹配其中一个高斯,则认为是背景,否则认为是前景。由于整个过程GMM模型在不断更新学习中,所以对动态背景有一定的鲁棒性。最后通过对一个有树枝摇摆的动态背景进行前景检测,取得了较好的效果。

在视频中对于像素点的变化情况应当是符合高斯分布背景的实际分布应当是多个高斯分布混合在一起,每个高斯模型也可以带有权重

在这里插入图片描述

学习步骤:T至少也要是200

  1. 首先初始化每个高斯模型矩阵参数。
  2. 取视频中T帧数据图像用来训练高斯混合模型。来了第一个像素之后用它来当做第一个高斯分布。
  3. 当后面来的像素值时,与前面已有的高斯的均值比较,如果该像素点的值与其模型均值差在3倍的方差内,则属于该分布,并对其进行参数更新。
  4. 如果下一次来的像素不满足当前高斯分布,用它来创建一个新的高斯分布。

在这里插入图片描述

在测试阶段,对新来像素点的值与混合高斯模型中的每一个均值进行比较,如果其差值在2倍的方差之间的话,则认为是背景,否则认为是前景。将前景赋值为255,背景赋值为0。这样就形成了一副前景二值图。


http://www.kler.cn/news/360320.html

相关文章:

  • AI 通俗解读统计学和机器学习的主要区别
  • [AWS]RDS数据库版本升级
  • idea和webstorm性能优化
  • uniapp开发钉钉小程序踩坑记录...
  • Qt设置浏览器为父窗口,嵌入播放器窗口
  • 【Linux】进程信号(上)
  • Centos7安装Docker保姆级
  • PHP 表达式 Exception::__toString
  • 登录校验JWT令牌
  • 《API数据的“速递员”:您的代码快递已到达》
  • 基智科技CEO张文战:探索火山引擎数据飞轮模式下的大模型应用新机会
  • 大模型微调教程-学大模型必看!手把手带你从零微调大模型!
  • 软件质量管理体系,软件评审资料,资质认证资料,安全建设,数据安全及项目管理全套资料(原件参考)
  • ARM64 Linux块分配器
  • Debian 11 裸机初始化与环境配置指南
  • 深入理解new Function
  • redis的配置文件解析
  • Python轴承故障诊断 (11)基于VMD+CNN-BiGRU-Attenion的故障分类
  • Spring Boot技术栈的电影评论网站构建
  • Oracle数据库存储更换,更改文件路径(停机和在线两种方式)