背景建模--Vibe 算法改进

一、概述

针对鬼影问题,提出一种了基于前景区域与邻域背景区域直方图相似性度量的判别方法,检测并消除鬼影;针对静止目标问题,改进了Vibe背景模型的更新策略,有效抑制静止目标被吸收为背景;针对阴影前景问题,在Vibe算法中增加一个阴影检测器模型,检测并消除阴影。针对目标不完整问题引入抠图技术。

二、鬼影检测

针对鬼影问题,本文提出了一种基于前景区域与邻域背景区域直方图相似性度量的判别方法,可从Vibe检测到的运动目标区域中检测出鬼影区域。目前有多篇文献给出了鬼影检测方法,梁华提出了基于内外边缘直方图匹配的鬼影检测方法,金标提出了基于边缘相似性函数的鬼影检测方法,Dedeoglu Y提出了基于前景平均亮度和背景平均亮度差异性的鬼影检测方法。受到上述三种鬼影检测方法的启发,本文提出了一种基于前景和邻近背景区域直方图相似性度量的鬼影检测方法。

基本思想如下:如3.8所示,用R表示包含该运动目标区域的最小外接矩形区域(如图(f)的蓝色矩形框),用RF表示Vibe检测到的运动目标区域(如图(f)的黄色区域),用RB表示矩形框内的背景区域(如图(f)蓝色矩形框内的黑色区域),RB=R-RF,计算运动目标区域RF对应的直方图HF和邻近背景区域RB对应的直方图HB,比较HF和HB两个直方图的匹配程度,如果是鬼影,RF和RB的颜色分布相近,HF和HB相匹配,如果是运动目标,RF和RB的颜色分布相差较大,HF和HB不相匹配。则鬼影判别准则如下:

Dist(HF,HB) 表示前景与邻近背景区域直方图的匹配程度,采用直方图互相关系数计算得到,T表示阈值。

图3.9对应的是3.8图(f)中标注的鬼影1、鬼影2和运动目标的前景与邻域背景的直方图。如图3.9所示,鬼影1和鬼影2的前景和邻域背景的直方图分布相似,如图(a)、(b)所示,而运动目标的前景和邻域背景的直方图分布相差较大, 如图(c)所示,据此,可区别鬼影和运动目标。采用本文提出的鬼影检测方法之后,其实验结果如图3.10所示。

三、静止目标检测

针对静止目标问题,本文改进Vibe背景模型的更新策略,当像素点被判断为前景时,不进行背景模型的更新,数学表达式如下:

Mi(x)表示第i帧像素x的Vibe背景模型,pi(x)表示第i帧像素x的颜色值,当像素x被判断为前景时,不更新像素x的背景模型,当像素x被判断为背景时,更新x的背景模型。当运动目标长时间静止时,该运动目标区域的背景模型不更新,背景差分后,能检测出静止运动目标。改进更新策略能有效抑制静止的目标前景被背景吸收,其实验结果如图3.11所示:

四、阴影检测

针对阴影前景问题,本文在Vibe算法中增加一个阴影检测器模型,检测并消除阴影。目前有基于HSV颜色空间和RGB颜色空间这两种常见的阴影消除法。虽然HSV颜色空间能分离出亮度和色度,但是颜色空间之间的转换非常耗时,因此,本文引用基于RGB颜色空间的阴影检测器。

本文引用的是基于无监督的投射阴影检测器模型。根据前景的亮度高于背景与背景的亮度和背景一致这个特点,丢弃不属于阴影的背景和前景样本,选择可能的阴影样本建立一个阴影检测器模型。如图3.12所示,其中BG表示背景值,SD表示可能的阴影,用向量vt(p)表示背景BG到其对应阴影SD的值,由于阴影的亮度比相对应的背景暗,所以矢量vt(p)应落在如图3.12所示的圆锥体内。如果像素的颜色值在灰色圆锥区域内,被认为是可能的阴影样本,利用这些可能的阴影样本建立全局场景的阴影模型和局部像素的阴影模型,从而检测出阴影。

其具体实现过程如下:如图3.13所示,图(b)是用Vibe算法对图(a)检测到运动目标区域,根据图(b),找出背景帧中相应的运动目标区域(如图(c)红框标注区域)和当前帧中相应的运动目标区域(如图(d)红色标注区域),其中,图(d)红色区域内的黄线以下为阴影区域,黄线以上主要是运动目标前景区域,本文引入一个阴影检测圆锥模型来区分运动目标区域中的阴影区域和运动目标前景区域。如图3.12所示,矢量BG表示运动目标区域中某一像素p在背景帧中的值,矢量SD表示运动目标区域中某一像素p在当前帧中的值,矢量Vt(p)表示p从BG到SD的值,通过计算矢量Vt(p)的值是否落在灰色圆锥区域内来判断像素p是否是阴影。加入阴影检测模型之后,检测出阴影区域并去除阴影,其实
验结果如图3.14所示。

五、目标不完整

将Vibe算法的检测结果作为trimap图给抠图算法提供初始化信息,然后,利用抠图技术不完全标号和高精度分割的优点提取出完整的运动目标前景,基于此思路,本文提出了一种将改进的Vibe算法和抠图技术相结合的新策略来解决运动目标不完整问题,基于这种新颖的结合策略提出了两种新运动目标检测算法:GVibe算法和CVibe算法。其中,GVibe算法是改进的Vibe算法和Grabcut算法相结合的运动目标检测算法的简称,CVibe算法是改进的Vibe算法和Closed-form算法相结合的运动目标检测算法的简称。这两种算法都是基于改进的Vibe目标检测算法之上的,用改进Vibe算法先过滤掉无效背景,锁定包含运动目标前景的有效前景区域,然后再分别对每个前景区域进行抠图操作,提取出完整的运动目标前景。

我们利用改进的Vibe算法快速检测到运动目标区域,找到该运动目标区域的最小外接矩形框,将该矩形框设定为可能前景,再根据垂直投影直方图设定部分背景信息,剩余部分设置为未知区域,根据这些初始化信息,Grabcut就能准确地从图像中分割出完整的前景目标。因此,将改进的Vibe算法和Grabcut算法相结合使用提取完整运动目标是可行的。

GVibe算法主要分为三个处理模块:改进的Vibe背景建模,寻找潜在前景区域和执行Grabcut分割。首先,为每个像素点建立Vibe背景模型,用当前帧减去背景帧,再阈值化,检测出视频图像序列的运动目标;然后,采用平滑技术过滤检测结果,对于当前运动目标存在小空洞等残缺情况,利用数学形态学的膨胀处理,扩展前景区域,对于当前运动目标存在大面积残缺的情况,找出所有目标前景区域的边缘轮廓线,根据区块的边缘轮廓线等得其最小外接矩形,合并任意两个矩形中心两线与垂直方向夹角小于一定阈值,且垂直距离也小于一定阈值的矩形;随后,在RGB颜色空间,分别对每个矩形框内的图像,给出Grabcut的初始化信息,执行分割,获取到完整的运动目标前景。

其中Grabcut算法主要为初始化、迭代学习和训练高斯参数,得到收敛的背景、前景高斯参数之后,再对原图像进行目标提取,即进行最后一次的切割提取操作。

背景建模--Vibe 算法改进相关推荐

  1. 背景建模--Vibe 算法优缺点分析

    背景建模--Vibe 算法优缺点分析 一.Vibe 算法的优点 Vibe背景建模为运动目标检测研究邻域开拓了新思路,是一种新颖.快速及有效的运动目标检测算法.其优点有以下两点: 1.思想简单,易于实现 ...

  2. 背景提取算法——帧间差分法、背景差分法、ViBe算法、ViBe+算法

    背景提取是在视频图像序列中提取出背景,背景就是场景中静止不动的景物.因为摄像机不动,因此图像中的每个像素点都有一个对应的背景值,在一段时间内,这个背景值是比较固定的.背景提取的目标就是根据视频图像序列 ...

  3. ViBe背景建模算法

    ViBe算法:ViBe - a powerful technique for background detection and subtraction in video sequences 算法官网: ...

  4. 基于高斯核密度估计的背景建模和改进的五帧帧差法相融合的运动目标检测算法

    上篇文章所指定的是对一个不包含动态背景的监控视频进行前景提取,用基于改进的五帧帧差和混合高斯模型相融合的前景提取算法是可以很好实现前景提取的.但本文中要求在包含动态背景的监控视频提取前景目标,虽然上篇 ...

  5. 【背景建模】VIBE

    ViBe是一种像素级的背景建模.前景检测算法,该算法主要不同之处是背景模型的更新策略,随机选择需要替换的像素的样本,随机选择邻域像素进行更新.在无法确定像素变化的模型时,随机的更新策略,在一定程度上可 ...

  6. ViBe(Visual Background extractor)背景建模或前景检测

    ViBe算法:ViBe - a powerful technique for background detection and subtraction in video sequences 算法官网: ...

  7. 论文翻译:ViBe+算法(ViBe算法的改进版本)

    论文翻译:ViBe+算法(ViBe算法的改进版本) 原文地址: <Background Subtraction: Experiments and Improvements for ViBe> ...

  8. OpenCV中高斯混合背景建模算法汇总

    2019独角兽企业重金招聘Python工程师标准>>> 引用地址:http://blog.csdn.net/chuhang_zhqr/article/details/51060745 ...

  9. 混合高斯背景建模算法GMM

    高斯混合模型介绍 高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法,该方法使用了高斯分布作为参数模型,并使用了**期望最大(Expectatio ...

最新文章

  1. Squid access.log 转发到其他syslog服务器(OSSIM)
  2. 通过VNC Viewer使用VMware虚拟机的远程桌面连接
  3. java 之 模板模式(大话设计模式)
  4. PHP从远程mysql下载文件_PHP下载远程文件到指定目录
  5. C#实现的【阿拉伯数字转换成中文大写金额】
  6. jdk7启动时报“java.lang.VerifyError:Expecting a stackmap frame at branch target”
  7. 开源项目管理软件 禅道
  8. java本地连接zk集群
  9. python运行原理_Python线程池及其原理和使用(超级详细)
  10. roadhog不是内部或外部命令_git:git 不是内部或外部命令,也不是可运行的程序
  11. 我需要一个高并发的架构,我的系统要改造成微服务吗
  12. mysql event 变量_mysql 中event的用法
  13. 如何使用消息队列,Spring Boot和Kubernetes扩展微服务
  14. RabbitMQ(四) Work模式下的消息产生以及消费代码实现示例
  15. python opencv天空提取_python利用opencv实现印章的提取
  16. C/C++通过WMI和系统API函数获取获取系统硬件配置信息(转)
  17. 田野调查手记·浮山摩崖石刻(七)
  18. nRF53832开发环境搭建
  19. 手机号时间戳加密传到前端_如何在不到一个小时的时间内加密您的一生
  20. linux mailxdingding机器人报警

热门文章

  1. 闲话WPF之十五(WPF的数据处理 [2])
  2. 一个关于重定向的问题研究,应该具有实用性
  3. 清华大学计算机系人机交互,喻 纯 - 清华大学 - 《自然人机交互中的智能输入》(47页)-原创力文档...
  4. Shell 条件判断汇总
  5. Android 设计模式 - 观察者模式
  6. kafka之Producer同步与异步消息发送及事务幂等性案例应用实战
  7. JavaScript函数的各种调用模式
  8. CrazyWing:Python自动化运维开发实战 四、Python变量
  9. 基于图结构的计算分析和实现
  10. Git record