背景建模或前景检測之PBAS
申明,本文非笔者原创,原文转载自:http://blog.csdn.net/kcust/article/details/9931575
Pixel-Based Adaptive Segmenter(PBAS)检測算法,从思路和框架上看,该算法是结合了SACON和VIBE两个算法的优势,并进行了一些细微的改进而成的,算法在检測性能上优于SACON和VIBE。可能有些朋友对SACON和VIBE不熟,以下首先分别简介下SACON和VIBE算法。
(1)SACON算法
SACON算法通过保存视频序列的前N帧作为背景模型,对于newly coming像素,则依据式(1)与背景模型比較:
当中, Tr是一个阈值,用于表示像素值间的差异,c表示通道,对于三通道,则表示(r,g,b)。然后,进一步通过式(2)来推断是前景还是背景:
当中,Tn是阈值,一般取值2/3N*Tr就可以。以上即为SACON算法的基本思想,而对于背景更新等其它细节,能够參考文献:Background subtraction based on a robust consensus method。
(2)VIBE算法
採用了一种全新的思想来进行目标的检測,将随机原理引用到目标检測。其基本思想是对于每一个像素,在半径为R的范围内进行随机採样,作为该像素点的背景模型,默认採样点为20。接着,对于新进来的像素,将其值与背景模型比較,假设下式大于或等于#min(默认取值为2):
则将该像素判为背景像素,否则为前景。
而在背景模型更新方面,VIBE採用随机选取背景模型中的一个像素点,以一定的概率用当前帧的像素值来替换,并将当前帧的像素值以一定的概率融入到背景模型的邻域中。实验表明,VIBE算法不仅计算复杂度低、速度快、并且准确率高,尤其是作者提出VIBE+后,VIBE算法的性能得到了进一步的提高。更具体的内容请參考论文Background Subtraction:
Experiments and Improvements for ViBe或http://blog.csdn.net/stellar0/article/details/8777283。
有点跑题,还是回到正题来。为了对PBAS有一个正题的印象,我们来看PBAS算法的diagram,例如以下图所看到的:
图的左边各自是像素分类的决策阈值更新、背景模型更新率的更新;图的右边是背景模型及背景模型邻域的更新。在背景建模阶段,PBAS算法採用类似SACON算法背景建模的方法,收集前N帧像素以及梯度幅值作为背景模型。新来像素与背景模型比較,比較方法例如以下式:
当中Bk(xi)表示背景模型中的像素,R(xi)表示像素阈值,#min表示最小的匹配数目,F(xi)=1表示前景。
以下重点来介绍下R(xi),这也是本文的一个重点。
跟传统的全局阈值不一样,在PBAS算法中,每一个像素的阈值都是像素相关的,不同位置的推断阈值可能不一样。PBAS算法通过计算前N帧的前N个距离的最小值的平均值来决定各个像素的阈值。详细来说,就是用D(xi)={ D1(xi),D2(xi),...Dn(xi)}表示最小距离矩阵,当中D(xi)= Min( dist(I(xi),Bj(xi))), j=1,2...N。 则对于每一个像素来说,其N个最小值的平均值为:
相应的推断阈值R(xi)则通过下式来计算:
当中Rinc/dec和Rscale都是预先定义的常量。
而背景更新部分,对于不同的像素,背景更新率也不同,作者通过下式来自适应调节背景模型的更新率:
当中Tinc和Tdec也是预先定义的常量。
除了更新率外,论文另一点须要提下,作者在论文中也採用了邻域更新,可是与VIBE不同。在VIBE中,背景模型中邻域的像素值是採用当前像素来更新的;而PBAS算法中,背景模型中的邻域值是採用当前像素的邻域值来更新的。
通过上面两个像素推断阈值的自适应和背景模型更新的自适应,整个算法基本实现了non-parameter的运动目标检測。在站点http://www.changedetection.net/上,该算法的综合性能排名第三,其性能这里不再细叙,详细的能够參考相关文献。而依据changedetection上提供的測试环境和结果:~48
fps (average on the whole database) with a C++ implementation running in three threads on a core i7 3.5 GHz,在I7(8核啊,算法也採用了多线程技术)上能够达到48fps,个人也測试了下,算法的检測结果比較优秀,并且对缓慢的光照变化具有较强的鲁棒性,环境适应能力也比較强,可是处理速度上还是不太理想,通过优化能够达到16fps左右,当然公司的电脑比較落后,话说是2007年左右的,详细配置没查看。
整体来说,PBAS算法是一种性能比較优越算法,该算法本身结合了SACON和VIBE算法的优势,兼具两者特性,值得进一步关注。
背景建模或前景检測之PBAS的更多相关文章
- ViBe(Visual Background extractor)背景建模或前景检测
ViBe算法:ViBe - a powerful technique for background detection and subtraction in video sequences 算法官网: ...
- 目标检测之vibe---ViBe(Visual Background extractor)背景建模或前景检测
ViBe算法:ViBe - a powerful technique for background detection and subtraction in video sequences 算法官网: ...
- [MOC062066]背景建模资料收集整理
一.相关博客 背景建模相关资料收集,各个链接都已给出. 资料,不可能非常完整,以后不定期更新. -----------------切割线----------------- 这个哥们总结的非常好啊,看完 ...
- 【背景建模】VIBE
ViBe是一种像素级的背景建模.前景检测算法,该算法主要不同之处是背景模型的更新策略,随机选择需要替换的像素的样本,随机选择邻域像素进行更新.在无法确定像素变化的模型时,随机的更新策略,在一定程度上可 ...
- 【背景建模】PBAS
Pixel-Based Adaptive Segmenter(PBAS)检测算法,是基于像素的无参数模型,该算法结合了SACON和VIBE两个算法的优势,并在这两个算法的基础上改进而来,SACON和V ...
- 【计算机视觉】背景建模之PBAS
本文是根据M. Hofmann等人在2012年的IEEE Workshop on Change Detection上发表的"Background Segmentation with Feed ...
- 目标检測的图像特征提取之(一)HOG特征
1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检測的特征描写叙述子.它通过计算和统计图像局部区 ...
- 【背景建模】SOBS
SOBS(self-Organizing through artificial neural networks)是一种基于自组织神经网络的背景差分算法,主要是借鉴神经网络的特性,一个网络输入节点,对应 ...
- 【背景建模】PbModel
PbModel是基于概率模型的背景差分算法,其基本思想是像素点会因光照变化.运动物体经过产生多种颜色值,但是一段时间内,像素点处于静止状态的时间会比处于运动状态的时间长.因而一段时间内,像素点某个颜色 ...
随机推荐
- 树莓派指定静态IP
1.备份并清空 interfaces 文件 cp /etc/network/interfaces /etc/network/interfaces.bak vi /etc/network/interfa ...
- opencv之dft及mat类型转换
跑实验时用到dft这个函数,根据教程,需要先将其扩充到最优尺寸,但我用逆变换后发现得到的mat的维数竟然不一样.因此还是不要扩展尺寸了. 参考:http://www.xpc-yx.com/2014/1 ...
- HDU 4763 Theme Section(KMP+枚举公共前后缀)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4763 题目大意: 给你一个字符串s,存在一个子串E同时出现在前缀.中间.后缀,即EAEBE这种模式,A ...
- C++ 实现memcpy和strcpy
/** * @Method: Memcpy * @Access: public * @Return: void * * @Param : dst - 目的起始地址 * @Param : src - 源 ...
- SQL Server中删除表中重复数据
方法一:利用游标,但要注意主字段或标识列 declare @max integer,@id integer open cur_rows fetch cur_rows into @id,@max beg ...
- MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系
MS SQL2005对2000进行了很大的改进,而用户关系这部分也变得相当复杂了,很多朋友都对此一知半解!下面,我将把我应用中总结的和大家分享下,先从概念入手,希望对不理解的朋友有点提示. 今天我们要 ...
- 编译原理之正则表达式转NFA
本文转载自http://chriszz.sinaapp.com/?p=257 输入一个正则表达式,输出一个NFA. 我的做法:输入一个字符串表示正则,输出则是把输出到一个.dot文件中并将dot文件编 ...
- C#socket编程序(三)
private void ReceiveData() { bool keepalive = true; Socket s = clientSocket; Byte[] buffer = new Byt ...
- 转发:RocketMQ与kafka的对比
淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kaf ...
- xtrabckup备份报错:Failed to connect to MySQL server: Can't connect to local MySQL server through socket '/data/mysql/mysql.sock' (2).
1.做软连接 [root@xxxxxx:/data/backup/log]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock [root@xxxxxxx ...