opencv学习笔记(3)背景分离-平均背景法

平均背景法

为达到前景目标的识别,譬如,交通路口对车辆的识别、监控器对行人的识别,常用的且较为有效的方法就是背景差分法(还有其他的方法,比如光流场法,帧差法),即用一张有要识别目标的图像减去相应的背景图像,那么所得的结果便是我们所要的目标。

然而,如何获取一个“美好”的背景图,是背景差分法的关键和难点。此处介绍一种最为简单的获取背景的方法——平均背景法。

顾名思义,其基本思想就是,将所采集到的背景图片叠加求和,而后求取平均值作为要求的背景。其大致算法流程如下:

1.将采集到的部分图片,利用opencv的cvAcc函数累加求和,并统计累加次数,累加完成后在用cvConvertScale函数求取平均值,记为A。(注意理解该平均值的意思是在(x,y)位置处,所有参与求和计算的图像在该点出的像素平均值,每一点的像素平均值是不同的)

2.前一帧图像和当前参与累加的图像求差的绝对值,利用cvAbsDiff函数,而后该绝对值图像也进行累加求平均值,记为D。(同理这是某点的差值平均值)它描述的是某点像素值得波动幅度。

3.那么有1和2便可以认为,图像某点的像素值P若满足A-D < P < A+D,则认为此点属于背景,然而由于前景目标的加入,可能对背景点的亮度有一定的影响,故对波动幅度D进行一定的放缩,若 A -KD < p < A + KD,便认为该点为背景点。自然在该范围外的点,便是我们需要的前景点。那么用cvThreshold函数完成二值化。我们的目的就达到了。

此为背景建模最简单的方法,在室内等干扰较少的环境下使用时,效果较好,一旦有些许干扰则效果严重下降。一种非常有效,不管是运行速度还是处理效果都非常好的算法是CodeBook算法,下篇博客中将会介绍。

欢迎大家学习交流。

你可能感兴趣的:(目标检测)