背景建模算法--平均背景建模、单高斯背景建模C实现
1、背景建模
视频图像中运动目标的检测的一种基本思想是对图像的背景进行建模,既是将所有像素分为背景和运动前景两类。
背景建模方法可以分为两类 – 颜色背景建模和纹理背景建模。此文只涉及颜色背景建模。纹理背景建模可参考
颜色背景建模的基本原理:对图像中每个像素的颜色值(灰度或彩色)进行建模。若当前图像坐标(x,y)上的像素颜色值与背景模型中(x,y)处的像素颜色值有较大差异,当前像素被认为是前景,否则为背景。
2、平均背景建模(Average Background Model)
平均背景建模是一种简单,计算速度快但是对环境光照变化和背景的多模态性比较敏感的一种备件建模算法。
基本思想:
计算每个像素的平均值作为它的背景建模。检测当前帧时,只需要将当前帧像素值I(x,y)减去背景模型中相同位置像素的平均值u(x,y),得到差值d(x,y),将d(x,y)与一个阈值TH进行比较,大于阈值的就认为是前景,否则为背景。输图像为二值图像。
公式(3-5):
为了提高算法的鲁棒性可以在检测之后对背景模型进行更新。
这里α为学习率(0-1),该值越大,对背景变化的适应速度越快。
公式(3-9):
原始的算法流程:
1、计算M帧图像的平均值建立一个初始背景BG并计算平均值和标准差(公式3-4 及3-5)
2、将当前图像减去BG得到差值D,通过公式(3-2)检测前景像素和背景像素;
3、通过公式3-7,3-8,3-9对BG,平均值和标准差进行更新;
4、继续步骤2,3直到遍历完所有像素;
demo输出:
算法改进:
增加一个辅助背景SBG(Secondary Background),将SBG的初始值设置为BG,既是
SBG(X,Y) = BG(X,Y) (3.11)
得到的新的输出图像output_s的值如下:
其中
demo结果:
3、单高斯背景建模
单高斯背景建模能处理有微小变化与慢慢变化的简单场景。 当场景背景变化很大、发生突变或者背景像素为多峰分布(如微小的重复运动)时,背景像素变化较快,这事单高斯背景建模不适用,可以考虑使用GMM。
单高斯背景建模基本原理:该模型认为对一个背景图像,特定像素亮度的分布满足高斯分布,对背景图像B,每一个(x,y)的亮度满足B(x,y)~N(u,d):
既是每一个点(x,y)都包含了两个属性,均值u和方差d。
计算一段时间内的视频序列图像中每一个点的均值u和方差d,作为背景模型。对于一帧图像G,图片上每一个(x,y)计算,若:
(T为阈值常数)则认为该点是背景点,否则为前景点。接下来进行背景更新,每一帧图像的背景更新公式为:
其中P为一个常数,用来反映背景更新率,p越大,背景更新的越慢。(具体看公式,B,G的位置可能调换,demo实现的p越小更新越慢) 若P取1则退化为帧间差分法。
demo输出:(第一幅为一开始的输出,第二幅背景更新之后输出:)
3、demo
4、参考
https://blog.****.net/zzq060143/article/details/53736650
https://blog.****.net/shenziheng1/article/details/60881160