注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

王小二的博客

勤俭以修身,淡泊以明志

 
 
 

日志

 
 

[转]背景建模(三)——以像素值为特征的方法(2)  

2013-05-01 16:55:15|  分类: 专业相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转自:http://blog.sciencenet.cn/blog-722391-571816.html

上一篇介绍混合高斯模型(GMM)http://blog.sina.com.cn/s/blog_631a4cc40100wxyz.html
不过还有几篇比较经典是在GMM上的改进:
1.An Improved Adaptive Background Mixture Model for Realtime Tracking with Shadow Detection 其实OpenCV实现的是这篇文章。他的创新点就是用EM初始化每个高斯模型的参数;
2.Effective Gaussian mixture learning for video background subtraction 这篇文章的创新点是对混合高斯模型参数更新的方式
3.Improved Adaptive Gaussian Mixture Model for Background Subtraction这篇文章的创新点是:把混合高斯模型数量K变成自适应的了,而不像以前是一个固定值(一般3-5个)。
如果你还想了解更多关于混合高斯的改进可以看一篇综述:Background Modeling using Mixture of Gaussians for Foreground Detection A Survey 读完这篇文章你会发现GMM挖了一个多大坑呀!
以像素值为特征的背景建模方法还有一类是codebook的方法,文章是Background Modeling and Subtraction by Codebook Construction,这篇文章是马里兰大学发表的,而马里兰大学最大的特点是不公开代码,每年灌水无数但是无论哪个课题组都不公开代码,我真是怀疑他们是商量好的了~~~
之后还有一些文章是在这篇codebook上面的改进,是国立台湾科技大学Jing-Ming Guo做的,文章题目:1)Hierarchical Method for Foreground Detection Using Codebook Model,2)Cascaded Background Subtraction Using Block-Based and Pixel-Based Codebooks 3)Hierarchical Method for Foreground Detection Using Codebook Model这三篇文章是同一个写的,第一篇是期刊,第二和第三篇是ICPR2010和ICIP2010,但是这三篇非常非常非常相似,不过后两篇在作者主页已经找不到了,可以到google学术上去下载。
--------------------------------------------------------------------------------------
下面介绍一下传统codebook的方法:http://hi.baidu.com/lin65505578/blog/item/a03ae693c1fa6096a877a437.html
CodeBook算法的基本思想是得到每个像素的时间序列模型。这种模型能很好地处理时间起伏,缺点是需要消耗大量的内存。CodeBook算法为当前图像的每一个像素建立一个CodeBook(CB)结构,每个CodeBook结构又由多个CodeWord(CW)组成。CB和CW的形式如下:

CB={CW1,CW2,…CWn,t}

CW={lHigh,lLow,max,min,t_last,stale}

其中n为一个CB中所包含的CW的数目,当n太小时,退化为简单背景,当n较大时可以对复杂背景进行建模;t为CB更新的次数。CW是一个6元组,其中IHigh和ILow作为更新时的学习上下界,max和min记录当前像素的最大值和最小值。上次更新的时间t_last和陈旧时间stale(记录该CW多久未被访问)用来删除很少使用的CodeWord。

假设当前训练图像I中某一像素为I(x,y),该像素的CB的更新算法如下,另外记背景阈值的增长判定阈值为Bounds:

(1) CB的访问次数加1;

(2) 遍历CB中的每个CW,如果存在一个CW中的IHigh,ILow满足ILow≤I(x,y)≤IHigh,则转(4);

(3) 创建一个新的码字CWnew加入到CB中, CWnew的max与min都赋值为I(x,y),IHigh <- I(x,y) + Bounds,ILow <- I(x,y) – Bounds,并且转(6);

(4) 更新该码字的t_last,若当前像素值I(x,y)大于该码字的max,则max <- I(x,y),若I(x,y)小于该码字的min,则min <- I(x,y);

(5) 更新该码字的学习上下界,以增加背景模型对于复杂背景的适应能力,具体做法是:若IHigh < I(x,y) + Bounds,则IHigh 增长1,若ILow > I(x,y) – Bounds,则ILow减少1;

(6) 更新CB中每个CW的stale。

使用已建立好的CB进行运动目标检测的方法很简单,记判断前景的范围上下界为minMod和maxMod,对于当前待检测图像上的某一像素I(x,y),遍历它对应像素背景模型CB中的每一个码字CW,若存在一个CW,使得I(x,y) < max + maxMod并且I(x,y) > min – minMod,则I(x,y)被判断为背景,否则被判断为前景。

在实际使用CodeBook进行运动检测时,除了要隔一定的时间对CB进行更新的同时,需要对CB进行一个时间滤波,目的是去除很少被访问到的CW,其方法是访问每个CW的stale,若stale大于一个阈值(通常设置为总更新次数的一半),移除该CW。

综上所述,CodeBook算法检测运动目标的流程如下:

(1) 选择一帧到多帧使用更新算法建立CodeBook背景模型;

(2) 按上面所述方法检测前景(运动目标);

(3) 间隔一定时间使用更新算法更新CodeBook模型,并对CodeBook进行时间滤波;

(4) 若检测继续,转(2),否则结束。



  评论这张
 
阅读(239)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017