您的位置:首页 > 编程语言 > Go语言

Foreground Detection: A Fast Self-tuning Background Subtraction Algorithm

2015-12-30 13:19 399 查看

reference

A Fast Self-tuning Background Subtraction Algorithm

关键思想

背景模型的有效性检测,本文同样基于像素(相对于基于区域,基于帧),通过K个背景像素样本进行背景提取,但不同于VIBE类算法(PBAS,VIBE+,Subsense)等的随机更新策略,此方法通过对背景像素样本的有效性进行排序,及时剔除没什么用的像素样本,一般而言,这些被剔除的样本就是一些背景像素边沿点或者前景像素,剔除它们可以提高召回率及精确率。

主要变量

T: 背景像素样本,它包含着B和C,B即背景像素值,C为对应的有效值。文中含K个背景像素样本T0,T1,...,TKT_0,T_1,...,T_K,对应着(B0,C0),(B1,C1),...,(BK,CK)(B_0,C_0),(B_1,C_1),...,(B_K,C_K)。

B: 背景像素值,更新方式:Bj=(1−α)Bj+αIB_j=(1-\alpha )B_j + \alpha I, 这里II为当前输入帧。

C: 有效性,当CjC_j匹配到当前输入像素时,使其加1,同时使其它Ci,i≠jC_i,i \neq j 减1。每次C更新后都要进行再次排序,除C0C_0外,C1到CKC_1 到C_K 按值从大到小排列。

前景检测:对当前输入帧 II ,匹配序列Cj,其中Cj>0,即Cj=0不参与匹配,即为无效模板,匹配顺序按Cj的值从大到小C_j, 其中C_j>0,即C_j=0不参与匹配,即为无效模板,匹配顺序按C_j的值从大到小 当没有一个匹配时(当前像素与背景样本的距离 > ε\varepsilon ),可以得到 FG1。对当前输入帧和模板进行均值过滤,得到相应的区域前景FG2,最终的前景为FG1与FG2的交。据说这样可以过滤前景噪声!

长期模板:有一个特殊的模板,C0C_0,它只有C1>θL且C0<θLC_1> \theta _L 且C_0< \theta _L 时参与排序。当C1成功取代C0C_1 成功取代 C_0 后,再进行排序时,令C0=γθL C_0 =\gamma \theta _L 以保证长期模板的稳定性。

模板替换:当输入像素被认为是前景F时,如果CA=0C_A=0,则新的模板TA=(BA,CA)T_A=(B_A,C_A)则被设置,初始化为CA=1,BA则对应前景像素值C_A=1,B_A则对应前景像素值,。当然,CAC_A>0时,如果匹配distance(BA,I)<εdistance(B_A,I)< \varepsilon 时,且当前像素为前景像素时,C_ACAC_A加1,否则减1。当C_A> \theta _ACA>θAC_A> \theta _A 时,且该当像素的领域与B_ABAB_A接近时(distance(BA,Bneighbor)<εdistance(B_A,B_{neighbor})< \varepsilon ,至于取B0,B1,还是遍历,原文没提B_0,B_1,还是遍历,原文没提),将TAT_A替换到T的序列中,当然是取有效性最低的那个样本。

噪声控制与距离阈值控制,与其它方法无太大差别。具体实现看代码即可。

效果

CDNet benchmark 前几名

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: