目录
① 光流法
② 帧差法
③ 背景差分法
④ 混合高斯模型法
⑤ 总结
运动目标检测技术的应用十分的广泛,尤其是在智能视频监控领域。运动目标检测为后续的图像处理等操作提供了基础,在某种程度上,决定了整个系统的性能。运动目标检测(Moving Object Detection)就是要判断视频序列中运动目标是否存在,若存在的话,要确定运动目标的位置。运动目标检测的目的是从视频序列中将变化区域(前景目标区域)从背景中提取出来,运动区域的有效分割对于目标分类、跟踪和行为分析等后期的处理是非常重要的。
运动目标检测根据图像传感器是否运动可以分为两种情况。第一种情况是在静态背景下的运动目标检测。在这种情况下,图像传感器相对于它的视场是静止的。第二种情况是在动态背景下的运动目标检测。在这种情况下,图像传感器会根据需要跟随运动目标运动或者转动。
对于固定视频图像传感器的这种情况,背景建模是解决检测运动目标的有效方法。由于获取背景图像最简单的方法就是在场景没有运动目标存在的情况下进行,但在某些实际应用场合中无法满足这种要求。背景中可能含有轻微扰动的对象,比如树枝、树叶的摇动现象,光线的变化,室内开灯和关灯的操作等都会对运动目标检测的结果产生一定的影响,前景目标的阴影也可能被检测为运动目标的一部分等一系列的问题,使得背景建模成为一项非常困难的工作。运动目标的检测方法有光流法、帧差法、背景差分法、单高斯模型法和混合高斯模型法。
① 光流法
光流法(optical flow)是三种传统的运动目标检测算法之一。光流有运动(速度场)、带光学特征的部分和成像投影三个要素,其中运动是形成光流的必要条件。
在物体运动的时候,在图像上对应物体的亮度模式也随之运动,所以称光流是图像亮度模式的视在运动。光流描述了相邻帧之间的变化信息,它能准确的定位出图像传感器与前景目标之间的位移信息。光流法分为基于频域的方法、基于能量的方法、基于匹配的方法和微分法四种。微分光流法包括光流基本方程和光流计算方法两个部分,其中,光流基本方程是微分光流法的基础。
光流场法用于运动目标检测的基本思路是:首先从图像传感器收集到视频序列中选择相邻的两帧作运动估计,得出两帧中存在的运动矢量。然后通过上述得到的运动矢量进行目标的分割,并且对上述分割的结果进行相应的后期处理,包括去噪处理和小区域融合等等。接着计算出融合后的区域数量。如果存在不同的区域,可以判断出序列中存在着运动的目标;如果没有不同的区域,则说明场景中不存在运动的目标。
假定表示t时刻像素点的灰度值,、表示点在水平方向上和垂直方向上的速度分量,用表示光流场,时刻,处的灰度值为,根据连续不变性,则有如下公式:
将上述的公式用泰勒公式展开,可得出如下的公式。
忽略二阶无穷小项,可得出公式,如下所示。
将,带入上述公式,可得到如下公式。就是著名的光流场约束方程。
光流场中包含两个未知量,所以还需要一个方程才能求出这两个变量。于是引入了另一个约束条件来帮助求解,这个约束条件称为全局平滑约束假设条件,假设条件为光流在整个图像上光滑变化(速度的变化率为零)。在1981年也引入了一个约束条件来帮助求解,这个约束条件称为局部平滑性约束。由于引入的约束条件不同,所以产生的光流分析法则是不同的。上述的两种典型的算法分别为H.S算法和L.K算法。
得到运动目标的光流(速度)是光流法的核心。光流法的优点在于检测精度高,适合做精确分析。能检测出独立的运动目标,而不需预知场景的任何信息,并且对变化的复杂背景的情况有较好的适应能力,对目标的颜色信息不敏感。同时,缺点也很明显,因为引入了光流方程、约束条件、一阶偏导等多个复杂的方程式,导致光流法计算量庞大,计算速度慢,对处理机等硬件要求就会相应地提高。另外,由于该算法中采用了假设的局限性,所以光流法对背景中存在的噪声较为敏感,容易出现误检等现象。
对光流法的改进主要有对光流法本身的改进和将光流法与其他的方法相结合的改进两种。
② 帧差法
帧差法(frame difference)是传统的运动目标检测算法之一。帧差法的基本思想是:利用视频序列图像的相邻帧间的强相关性,将当前帧图像与参考图像(前一帧序列图像)的差别来获得运动目标的方法,如相邻帧差法、帧间差分法。
帧差法最简单的就是相邻帧差法,做差分的量可以为灰度、饱和度、亮度等等。基本算法是将前一帧图像作为参考图像,假设t时刻的图像帧灰度图像为,它的前一帧图像的值为,定义两帧图像之间的差为,如下公式所示。
然后设置一个阈值T,该值的选定直接决定着检测结果的好坏。接着对进行二值化处理,如下所示, 对应的像素点为前景点,否则为背景点。
通过帧间差分法将图像中的运动目标和背景区域分开来,阈值的选取很重要。
如果阈值选择的过大,就有可能将属于运动目标的像素错误地划分为背景像素进而造成漏检,并且检测出的运动目标实体内很可能会有很大的“空洞”。反之,如果阈值选择的过小,就有可能将属于背景的像素点错误判别为运动目标的像素点从而造成误检,并且检测结果中会有大量的噪声出现。因此,应该通过多次地进行实验进而来选择和确定合适的阈值。
帧差法具有较低的时间复杂度,运算简单等特点,但是它也存在一定的局限性。例如,提取出的运动实体内部会产生“空洞”现象,这种方法检测出来的运动区域大小与运动目标的速度有有一定的关系。当运动目标匀速运动的时候,帧间差分法检测的结果会与实际相一致。当物体运动缓慢的时候,相邻帧间的运动目标移动的距离就会较小,检测结果和实体差不多,但是如果慢到一定程度的话,就会检测不到运动目标。相反,如果物体运动的速度很大,检测到的运动区域相应的就会变大,进而造成误检,影响最终运动目标的检测的结果。
帧差法的优点在于对场景中的光线渐变不是很敏感,适用于动态变化的环境中,实时性能较好,并且运算量小,则计算速度快。同时,帧差法的缺点是无法检测静止不动的物体,一般不能完整地提取出运动目标区域,在运动实体内容易产生“空洞”的现象,从而不利于下一步的分析和处理。
针对帧间差分法的不足之处,有很多的改进和优化的算法被提了出来,如三帧图像差分法、四帧差法和多帧差法等等。其中,三帧差分法充分地考虑了运动像素在时间上的相关性,该方法对随机噪声有很好的抑制作用和效果,对动态检测较为灵敏,但是也有差分图像检测的阈值需要手动进行预先设定好的缺陷。
③ 背景差分法
在背景静止不变的情况下,背景差分法是目前应用最广泛最常用的一种算法。背景差分法利用当前视频帧与背景建模图像进行差分并通过选取设定合适的阈值来进行二值化处理,进而得到前景目标。优点是能较完整的提取出运动目标,缺点是对光照和外部条件造成的环境变化等过于敏感,常常会将运动目标产生的阴影错误地检测为其自身的一部分从而造成误检。由于时间的流逝,实际场景的多种因素都会在一定程度上发生了变化,比如停留物的出现、光线等的变化、开灯和关灯、运动目标对背景的遮挡等等,因此背景需要得到实时而准确地更新,这是影响背景差分法检测效果的一个非常重要的因素。
虽然背景差分法背景建模方法各异,但是进行运动目标检测的流程大致是相同的,主要有图像的预处理,背景建模,前景目标的检测和图像的后处理等几个步骤。
- 图像的预处理,对图像进行包括频域变换或者滤波处理等操作用以衰减图像的噪声,在某些特殊的情况下,还要对图像进行格式转换,进而为后续的操作做准备;
- 背景建模和模型的更新,根据某一个背景建模的原理进行背景建模。由于场景不是静止不变的,所以需要对背景模型进行相应地更新,以保证背景模型能在运动目标检测过程中一直是准确有效的。因此,背景模型的更新在整个运动目标检测过程中有着很重要的地位;
- 运动目标的检测,利用输入的图像和背景模型的差异来判断所输入的图像中是否存在运动目标。输入的图像与背景模型差别较大的像素点被判定为前景点,而差别较小的像素点被判定为背景点;
- 图像的后处理,上述处理后的结果中一般会存在噪声和阴影等不被期待的区域,为了得到准确的运动目标区域,所以进行相应的后处理操作。
背景差分法的基本思想是:首先利用不包含运动目标的图像帧来建立背景模型,然后利用包含运动目标的当前图像帧和事先得到的不包含运动目标的背景模型来进行差分运算,得到的差分图形用预先设定好的阈值进行二值化处理,进而就可以得到运动目标区域。差分的结果大于预先设定好的阈值的像素点置为“255”,即为前景点。否则,差分结果小于设定的阈值,则像素点置为“0”,即为背景点。
假定是背景图像,是当前帧图像,为预先设定好的阈值,该阈值的选定直接决定着检测结果的好坏。是进行差分后的结果图像,则背景差分法的数学表达式如下述公式所示。
经典的背景模型可以分为两类:一类为单背景模型(用一个概率分布表示背景此刻所处的状态),。另一类为多背景模型(使用多了分布表示背景所处的不同模态),如混合高斯模型、非参数内核模型等方法。
(1)统计平均法
统计平均法是通过对连续的图像序列进行平均来获得背景图像的。首先初始化一个背景模型,该背景模型的尺寸大小均与视频帧的尺寸大小相同。背景模型中的初始像素值均设置为0,然后对视频的前若干帧中所处相同位置的像素值加和之后求均值,将这个求得的平均值赋给背景模型中相应位置上的像素点,公式如下所示。
式中,L为进行平均的图像帧数,通常,L的值越大,得到的背景图像则更接近实际背景的估计值。
因为单高斯模型法的运动目标检测的快速性和相对准确性,所以被广泛采用。单高斯模型是一种比较经典的基于概率分布,并且适用于背景单一不变的场合的背景提取的方法。单高斯模型的建模过程包括建立背景模型、运动目标检测、更新模型三个方面。
(2)单高斯背景模型
单高斯背景模型的基本思想: 模型认为视频图像序列中背景的各个像素点所对应的像素值会随着时间的推移而发生一些变化,这个变化与扰动仍然近似地满足高斯分布。当有运动目标出现的时候,像素点的像素值会发生很大的变化,并且这个变化不服从高斯分布。因此可以根据某时刻某个像素点的像素值是否满足高斯分布来判定该像素点是背景点还是前景点。
对于随机的变量,由正态分布可以得出概率密度函数,则高斯分布的表达式如下述公式所示。
将背景图像中的每一个像素点用单个高斯分布模型来表示,则表达式如下述公式所示。
其中,是变量的期望,是变量的标准差,表示当前帧中时刻像素点的像素值,
为当前帧中时刻像素点的均值,为当前帧中时刻像素协方差矩阵。
- 初始背景模型的确定
传统的单高斯模型中,通常选取视频图像序列的第一帧来建立背景。首先对图像中的所有像素点的均值和方差进行初始化,进而为每个像素点建立一个背景高斯模型。为每个像素点的均值,为每个像素点的方差,由均值和方差组成的具有高斯分布的图像则为单高斯模型的初始背景模型估计。
- 运动目标检测
在背景模型确定之后,对后续的视频帧进行运动目标检测。将后续的图像帧中的各个像素点与所确定的背景模型进行匹配,从而确定该像素点是否符合已建立的背景模型。如果该像素点符合背景模型,则可判定该像素点是背景点,否则判定为前景点。判断表达式如下述公式所示。
其中,为预先设定好的阈值,阈值,为固定值,为标准差。“0”代表背景像素点,“1”代表前景像素点,也就是运动目标。
- 模型的更新
由于视频图像序列不是随着时间的推移而静止不变的,所以背景也会在一定的程度上发生变化。因此,引入背景学习率对所建立的背景模型进行更新,相应更新表达式如下所示。
其中,表示当前帧,表示的是前一帧。学习率是决定着背景更新速度的重要参数,它体现了单高斯模型对实际背景的变化的响应能力。模型学习率是在背景模型的初始化中设定的,越大,则表示更新的速度越快,反之,越小,则表示更新的速度越慢。若模型的学习率较大的话,就会很快适应背景所发生的变化。在背景模型的更新中,学习率通常取值为0.05。
单高斯模型的优点是运算量小,计算的复杂度较低,检测效果较完整、准确、理想。如果在背景模型初始化的时候,输入的图像是没有运动物体出现的纯背景图像,运动目标的检测结果是非常不错的。但是,如果输入的图像中存在运动目标、其他的干扰(树枝和树叶的摇动或者水的波纹)或者场景中光照突变的时候,运动目标的检测效果会大大地降低,甚至造成严重的误检。总而言之,单高斯背景模型只适用于呈单峰分布的背景图像,不适用于复杂场景和会发生较大变化的场景中。对于呈多峰分布的复杂的背景图像,可以选择用混合高斯模型来进行建模。
④ 混合高斯模型法
混合高斯模型(Gaussian Mixture Model)是法使用K(一般为3到5)个高斯模型来表征图像帧中每一个像素点的特征。在混合高斯模型中,对图像中每个像素点建立K个高斯模型,对于t时刻像素点X的概率密度函数如下所示。
式中,表示单高斯概率密度函数,表示时刻第个高斯模型的权值大小,其中
,。表示时刻第个高斯模型的均值向量。表示时刻第个高斯模型的协方差向量,其中(为单位矩阵)。为时刻第个高斯模型的标准差。表示的是高斯分布的数量,一般在3到5之间取值,就可以满足需要。在背景建模的过程中,模型数量的值越大,则模拟的背景的效果越好、更真实。混合高斯模型不但可以模拟更为复杂的背景,而且能更好的适应场景中发生的实时变化。但是,随着值的增大计算量也有所会增加,进而会对硬件的要求有所提高。
- 模型的初始化
在混合高斯模型法中,可以以每个像素点在某时刻(如时刻)的像素值作为第一个高斯分布的均值,并且给这个高斯分布设置一个较大的方差。与单高斯模型法有区别的是,混合高斯模型法要为高斯分布函数设定一个权值。权值越大的高斯分布更新速度反而越慢,反之,权值越小,则更新的速度却越快。在模型初始化的时候,给第一个高斯分布设置的的权值较小,而其他的几个高斯分布函数的均值、方差和权值都设置为零。
- 背景的选取
首先,按的比值将每个像素点的个高斯分布由大到小进行排序,然后从中选择出最能表征背景的高斯分布。的值越大,则表示像素值的波动越小,而权重则越大,这些正是背景像素值的特性。因此,描述背景可能性越大的分布越靠前,描述背景可能性越小的分布则越靠后。所以选择前个分布作为最终表征背景的高斯分布,余下的高斯分布则认为是前景。公式如下所示。
其中,是一个门限阈值,一般在0.5至1之间取值,其决定了拟合背景所需要的高斯模型的个数。如果的值偏小,就会导致混合高斯模型所模拟的背景相对简单化,但是好处是计算量会有所降低。反之,如果的值过大,不但会使计算量有所增加,而且会在一定程度上导致前景目标的漏检。在上述公式中,H取最佳的经验阈值为0.75。
- 参数的更新及前景目标的提取
对获取的当前帧的每一个像素点分别与已经存在的个高斯分布进行匹配,如果满足如下公式,则该像素点与高斯分布匹配成功。如果不满足公式,则说明匹配不成功。
匹配成功,则对第一个相匹配的高斯分布的参数进行更新,如下述公式所示。
对于不匹配的K-1个高斯分布的权值进行衰减处理,如下述公式所示。
如果获取的当前帧的像素点与个高斯分布都匹配不成功,则用一个新的高斯分布代替权值最小的那个高斯分布,新的高斯分布以当前像素点的像素值为均值,并且给新的高斯分布初始化一个较大的方差(例如30)和一个较低的权值(例如0.02)。
当前帧的像素值与个高斯分布模型都不匹配,则判定该像素点为前景点(运动目标),否则为背景点。
以上的公式中,为权值更新率。为模型学习率,一般在0.001至0.01之间取值,是决定着背景更新速度的重要参数。如果的值越小,则更新的速度就会越慢,反之,如果的值越大,则更新的速度就会越快。如果模型学习率较大,混合高斯模型就会很快适应背景的变化和干扰,同时也有可能将缓慢运动的前景目标“学习”为背景,造成漏检。如果模型学习率较小,则在检测的前期阶段可能会存在检测效果上的不准确的问题,但是随着模型的不断更新,背景模型的准确性是最终会趋于稳定的。混合高斯模型的原理图如下图所示。
与单高斯模型相比,混合高斯模型检测的效果更好。混合高斯模型对存在小幅度运动变化的背景有较好的抗干扰能力,缺点是速度慢,计算量大。虽然混合高斯模型引入了多个高斯模型,但是仍然无法解决对背景中光照突变敏感的问题,从而容易造成误检,并且对阴影的抑制效果较差,从而影响运动目标检测的结果。
⑤ 总结
光流法的优点在于能检测出独立的运动目标,而不需预知场景的任何信息,并且对变化的复杂背景情况有较好的适应能力。缺点也很明显,计算量特别大,所以除非有特殊的硬件支持,否则很难实现实时检测。
帧差法的优点在于对场景中的光线渐变不敏感,适于动态变化的环境,并且运算量相对较小。缺点是一般不能完整的提取出运动目标,并且在运动实体内易产生“空洞”现象,从而不利于下一步的分析和处理。
背景差分法的优点是能完整的提取出运动目标,缺点是对光照和外部条件造成的环境变化过于敏感,常会将运动目标的阴影错误的检测为其自身的一部分。同时由于时间流逝,实际场景的多种因素都会发生一定的变化,背景需要得到实时地更新,这是影响其检测效果的一个重要因素。
单高斯分布模型的优点是运算量小,复杂度较低。单高斯背景模型适用于呈单峰分布的图像,对于复杂的场景和变化较大的场景,单高斯模型则难以表达背景,从而检测结果不理想。
混合高斯模型对存在小幅度运动的背景有较好的抗干扰能力,缺点是速度慢,计算量大,对光照突变较敏感,从而很容易造成误检,并且对阴影的抑制效果较差,影响运动目标检测的结果。