背景建模法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
背景建模算法(一)-------颜色背景模型 背景建模算法 1 基本原理
视频图像中运动目标检测的一种方法,其基本思想是对图像的背景进行建模。
一旦背景模型建立,将当前的图像与背景模型进行某种比较,根据比较结果确定前景目标(需要检测的运动目标)。
2 难点
(1) 环境光照的变化(光照突然性的变化和缓慢的变化)
(2) 背景的多模态性(背景中存在的细微的运动将影响前景目标检测的结果) (3) 运动物体的阴影 (4) 图像噪声
(5) 新的不动的物体进入到背景中(如何快速适应背景的变化) 3 分类
背景建模方法可以分为两类,颜色背景模型和纹理背景模型。
3.1 颜色背景模型
颜色背景模型其思想是对图像中每个像素的颜色值(灰度或彩色)进行建模。
如果当前图像坐标(x,y)上的像素颜色值与背景模型中(x,y)上的像素颜色值有较大差异时,当前像素被认为是前景,否则为背景。
颜色背景模型的一个最明显的缺点是对阴影敏感,即将阴影误检测为运动目标。
在特定场合下,需要在检测后对阴影进行抑制和消除。
3.1.1 平均背景模型
平均背景模型(Average Background Model)是一种简单、计算速度快但对环境光照变化和背景的多模态性比较敏感的一种背景建模算法。
其基本思想是:计算每个像素的平均值作为它的背景模型。
检测当前帧时,只需要将当前帧像素值),(y x I 减去背景模型中相同位置像素的平均值),(y x u ,得到差值),(y x d ,将),(y x d 与一个阈值TH 进行比较,那么得到输出图像output 的值如下:
),(),(),(d y x u y x I y x -=(3-1)
⎩⎨
⎧>=otherwise
TH
y x d y x output ,0),(&,1),( (3-2) 这里TH 可以采用自适应算法进行确定,需要计算每个像素的帧间差的平均值diff u 和标准差
std diff 。
公式如下:
令),(y x I t 代表t 时刻的图像中),(y x 处的像素值,inter 代表两帧之间的间隔,通常设置为3,令),(y x F t 如下:
)
,(),(),(inter y x I y x I y x F t t t --=
(3-3)
∑
+==
M t t diff y x F M
y x u 1
inter ),(1),(
(3-4)
∑∑
+=-=
M
t diff t std y x u y x F M
y x diff 1inter 2
)),(),(1),(( (3-5)
M 通常要足够大(>30+inter )来保证diff u 和std diff 的精确性。
得到了diff u 和std diff 后TH
可以这样确定:
std diff diff u TH ⨯+=β (3-6)
其中β一般设置为2。
为了提高算法的鲁棒性,可以在检测完之后要对背景模型进行更新,对于所有像素(x,y),令
),(y x u ,),(y x u diff ,),(y x diff std 更新后分别为),(y x u ',),(y x u diff
',),(y x f dif std ': ),(),()1(),(y x I y x u y x u ⨯+⨯-='αα (3-7)
),(),()1(),(y x F y x u y x u diff diff
⨯+⨯-='αα (3-8) ),(),(),()1(),(y x u y x F y x diff y x f dif diff std std
'-⨯+⨯-='αα (3-9) 这里α为学习率1)~(0,α越大,对背景变化的适应速度越快。
于是,平均背景建模算法的流程如下:
a. 计算M 帧图像的平均值建立一个初始背景BG 并计算diff u 和std diff 。
b. 将当前图像减去BG 得到差D ,通过公式(3-2)检测前景像素和背景像素。
c. 通过公式(3-7)、(3-8)、(3-9)对BG 、diff u 和std diff 进行更新。
d. 返回b 直至停止。
算法的改进:增加一个辅助背景SBG (Secondary Background ),将SBG 的初始值设置为BG ,即:
),(),(y x BG y x SBG = (3-10)
得到的新的输出图像s output _的值如下:
⎩⎨
⎧=>-==otherwise
y x output and THS y x I y x SBG x f y x s output ,01
),(),(),(,1)(),(_ (3-11) 其中:
std diff diff u THS ⨯-=β(3-12)
检测后通过下式对辅助背景进行更新:
⎩⎨
⎧==='otherwise y x SGB y x s output y x I x f y x G SB ),
,(0
),(_),,()(),( (3-13)
3.1.2高斯背景模型
单高斯背景模型(Single Gaussian Background Model )的基本思想是:将图像中每一个像素点的颜色值看成是一个随机过程X ,并假设该点的某一像素值出现的概率服从高斯分布。
令
),,(t y x I 表示像素点),,(t y x 在t 时刻的像素值,则有:
)21
,,()),,((222)(t
t u x t
t t e u x t y x I P σσπση--
=
= (3-14)
其中t u 和t σ分别为t 时刻该像素高斯分布的期望值和标准差。
简单来说,每一个像素点的背景模型包含一个期望值t u 和一个偏差t σ。
假设一个图像序列I 0,I 1,…,I n ,对于坐标为),(y x 的像素,它的初始背景模型的期望值),(0y x u 和偏差),(0y x σ,另外为了计算偏差,增加一个方差),(2
y x σ:
)0,,(),(0y x I y x u = (3-15)
init std y x _),(0=σ (3-16)
init std init std y x __),(20⨯=σ(3-17)
其中init std _通常设置为20。
对于t 时刻的像素值),,(t y x I ,按照下面的公式来判断它是否为背景像素,令output 为输出图像:
⎩⎨
⎧⨯<-=--otherwise y x y x u t y x I t y x output t t ,
1)
,(),(),,(,0),,(11σλ (3-18) 检测完毕后对那些被判定为背景的像素的背景模型进行更新:
),,(),()1(),(1t y x I y x u y x u t t ⨯+⨯-=-αα (3-19)
2212)),(),,((),()1(),(y x u t y x I y x y x t t t -⨯+⨯-=-ασασ(3-20)
),(),(2y x y x t t σσ=(3-21)
高斯背景建模算法的流程如下:
a. 用第一帧图像的数据通过公式(3-15)、(3-16)、(3-17)初始化背景模型
b. 通过公式(3-18)检测前景像素和背景像素。
c. 通过公式(3-19)、(3-20)、(3-21)对背景模型进行更新
d. 返回b 直至停止。
算法的改进:混合高斯背景模型(Gaussian Mixture Model)。
在单高斯背景模型中将单个高斯分布作为相应某一像素值的概率密度分布,混合高斯背景模型对其进行了扩展,通过多个高
斯概率密度函数的加权平均来平滑地近似任意形状的密度分布函数。
令),,(t y x I 表示像素点(x,y,t)在t 时刻的像素值,则有:
∑==K
i t i t i i t i u x t y x I P 1),,()),,((σηω(3-22)
其中K 为高斯分布的个数,称为高斯混合概率密度的混合系数。
t i ω为t 时刻第i 个高斯分量的加权系数,也即权重。
对于一个像素的K 个高斯分量,根据σω的值对它们从大到小进行排列,对于满足下式的
前B 个高斯分布被当作是背景模型。
}
{∑
=>=b k k b
T B 1
min arg ω(3-23)
其中T 是背景模型占有高斯分布的最小比例,通常为0.7,如果T 太小退化为单高斯,T 较大则可以描述复杂的动态背景。
对于当前像素),,(t y x ,如果它的值),,(t y x I 与它的背景模型中第)(B k k <=个高斯分布匹配,即),,(t y x I 在[
]
t
k t k t k t k u u σλσλ⨯+⨯-,范围之内,λ一般设置为2.5,那么该像素被认为是背景,否则是前景。
令输出图像为output ,公式如下:
⎩⎨
⎧≤⨯+≤≤⨯-=otherwise B
k and u t y x I u t y x output t
k t k t k t k ,
1),,(,0),,(σλσλ(3-24) 在检测完前景之后,若该像素被认为是前景,即前B 个高斯分布中没有一个与之匹配,则
用一个新的高斯分布取代权重最小的那个高斯分布。
新的分布的期望值即为当前的像素值,同时为它分配一个较大的初始偏差init std _和较小的初始权重值init weight _。
若该像素被认为是背景,则对该像素的各个高斯分布的权重做如下调整:
)()1(,1M i D t i t i t i ≤⨯+⨯-=-αωαω(3-25)
其中α为学习率,值在0~1之间。
如果第i 个高斯分布与当前像素匹配,则1,=t i D ,否则
0,=t i D 。
对于与当前像素匹配的高斯分布,更新它们的期望值和偏差值:
)()1(1t I u u t i t i ⨯+⨯-=-ββ (3-26)
2)1())(()1(22t i t i
t i u t I -⨯+⨯-=-βσ
βσ(3-27)
2
t i t i σσ=(3-28)
3.1.3非参数化背景模型
高斯背景模型对像素点值的概率密度分布做了假设,而这个假设不一定成立。
非参数化背景模型不对像素点值做出任何假设,而通过概率密度估计的方法建立像素的背景统计模
型。
其基本思想是:为被建模场景中的像素点保存一段时间内的一系列颜色样本值,并根据这些样本值来估计当前帧图像中每一个像素点的概率。
给定一维空间n 个数据点集合n i xi S ,,1}{ ==,它的未知概率密度函数为)(x P ,取核函数为)(x Kh ,那么在x 点处密度可用如下式估计:
∑=-=
n
i i h x x K n x P 1
)(1)((3-29) 这里h 是核函数的带宽,x 为核函数的中心点,核函数估计可以理解为:将在每个采样点为中心的局部函数的平均效果,作为该采样点概率密度函数的估计值,或是核估计器在被估计点为中心的窗口内,计算数据点加权的局部平均。
均值漂移(Mean Shift )算法是目前最流行的非参数化背景建模方法。
对于目标像素,将它建模为m u q q u ,,1},{ ==,m 为特征值的个数,在图像处理中为灰度等级划分的个数,也是灰度直方图的bins 值。
且有:
))(()()(12
u X b H
x x k C u q i n
i i --=∑=δ(3-30)
其中0X 为目标区域窗口的中心像素的坐标向量,i X 为窗口内第i 点的坐标向量,C 为归一化常数,使得
∑
==m
u u
q 11。
)(x k 为核函数,H 为核函数的带宽向量。
)(x δ为脉冲函数(当
x 不为0时,0)(=x δ)
,保证只有u 特征值的像素才对概率分布做出贡献。
函数}1{2:m R b →是位于i X 的像素向颜色索引的映像。
由于受到遮挡或者背景的影响,目
标模型中心附近的像素比其他像素更可靠,因此对于不同位置的像素赋予不用的权值,靠近中心的像素赋予一个较大的权值,远离中心的像素赋予一个小的权值。
因此引入)(x k ,其
中
H
x x i 0
-的作用是消除不同大小目标计算时的影响。
由∑==m u u q 11可以得到: ∑=⎪⎪⎭
⎫ ⎝
⎛-=
n
i i H
x x k C 12
01
(3-31)
匹配对象,也称为候选区域,也采用特征值加权概率分布。
匹配窗口的中心坐标为Y ,也是
核函数的中心坐标。
i X 为匹配窗口中第i 点的坐标向量,
Hh 为匹配窗口的核函数带宽向量。
Ch 为匹配窗口特征向量的归一化常数。
匹配对象的被描述为m u pu p ,,1},{ ==
∑=-⎪⎪⎭
⎫
⎝
⎛-=n
i i i h u u X b H x x k C Y p 12
))(()(δ(3-32)
匹配对象和目标模型的相似程度采用Bhattacharyya 系数进行描述。
∑==m
u u u q Y p q Y p 1)()),((ρ(3-33)
匹配过程就是寻找相似函数最大值的寻优过程,Mean-Shift 采用的是梯度下降法。
首先将
)(Y ρ在)(0Y ρ附近进行泰勒级数展开,取前两项。
即:
))()((d d )()(00Y p Y p p
Y Y -+
≈ρ
ρρ(3-34) 定义u u u q Y p Y )()(=ρ
从
而
)()(21)(21))()(()(2)()(0
0000Y p q Y p Y Y p Y p q Y p q Y Y u u
u u u u u u u u +=-+
=ρρρ
因此∑∑==+=
m u u u
u
m u u u Y p q Y p q Y p Y p 1010)
()(21)(21)( 要使得)(Y ρ向最大值迭代,只要Y 的搜索方向与梯度方向一致即可,通过求导可得到0Y 的梯度方向为:
202
100022
1
01()n i i i i n
h h i i i h h n i i i h Y X X g H C Y X Y g Y H H Y X g H ωρωω===⎡⎤⎛⎫
-⎢⎥ ⎪ ⎪⎡⎤⎛⎫⎢⎥-⎝⎭⎢⎥
⎪∇=-⎢⎥ ⎪⎛⎫⎢⎥⎢⎥-⎝⎭⎣
⎦ ⎪⎢⎥ ⎪⎢⎥⎝⎭⎣⎦
∑∑∑ 其中∑
=-=
m
u i u
i u X b Y p q 1
00))(()
(δω为权值,)()(x k x g '-=,因此如果如下确定1Y ,那01Y Y -将于梯度方向一致。
2
0112
01n i i i i h n i i i h Y X X g H Y Y X g H ωω==⎛⎫
- ⎪ ⎪
⎝⎭=⎛⎫
- ⎪ ⎪
⎝⎭
∑∑ (3-35)
根据上面的基础,mean shift 算法的过程如下:
(1) 计算目标模型的初始分布:m u q u ,,1}{ =,目标被估计位置为0Y 。
(2) 用0Y 初始化当前帧的候选区域位置,计算分布m u Y p u ,,1)}({0 =,估计Bhattacharyya 系数: ∑
==
m u u u q Y p q Y p 1
00)()),((ρ。
(3) 根据∑
=-=
m
u i u u
i u X b Y p q 1
0))(()
(δω计算得到权值n i i ,,1}{ =ω。
(4) 根据均值平移向量,计算目标的新位置:
2011201n
i
i i i h n i
i i h Y X X g H Y Y X g H ωω==⎛⎫- ⎪ ⎪
⎝⎭=⎛⎫- ⎪ ⎪
⎝⎭
∑∑
(5) 计算m u Y p u ,,1)}({1 =和∑
==
m u u u q Y p q Y p 1
11)()),((ρ。
(6) 如果)),(()),((01q Y p q Y p ρρ<,则2)(201Y Y Y +-<。
(7) 如果ε<-01Y Y 则停止,否则10Y Y -<,执行步骤(2)。
3.1.4 CodeBook 背景模型
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),否则结束。