5.5.3 运动目标检测
本系统运动目标检测实质上是一个小目标——液体外来异物的检测过程,小目标检测的难点主要存在以下几个方面:①由于目标图像无形状、尺寸和纹理信息,可供处理算法利用的信息量小;②低信噪比,目标极易被噪声所淹没,单帧处理不能保证对目标的可靠检测;③实时性要求高,对算法的运算速度有较高要求。尽管如此,仍有两个重要的信息可作为检测小目标的必要条件:目标的灰度与背景有一定的差异,目标运动轨迹有连续性。
运动目标检测是视频运动目标检测与跟踪的第一部分,它就是从实时被监视的场景中检测运动目标,并将其提取出来。运动目标检测有四种常用方法:连续帧间差分法(2 帧或3 帧)、背景差分法、光流法和运动能量法[9][10][11]。连续帧间差分法对于动态环境有很好的适应性,但却不能够很好地分割运动对象,不利于进一步的对象识别与分析;背景差分法是将当前帧每个像素与背景图像逐一比较,能够较完整地提取目标点,却又对光照和外部条件造成的动态场景变化过于敏感;光流法的优点是能够检测出独立运动的对象,不需要预先知道场景的任何信息,而且可以应用于背景整体运动的情况,但是大多数光流方法的计算复杂,除非有特殊的硬件支持,否则很难实现实时检测;运动能量法适合于复杂变化的环境,能消除背景中振动的像素,使按某一方向运动的对象更加突出地显现出来,但运动能量法也不能精确地分割出对象[12]。下面重点介绍一下几种常用的背景差分法和连续帧间差分法,最后提出改进的三帧差分法。
(1)背景差分法
背景差分法的实质是通过输入图像与背景图像进行比较从而分割出运动目标[13][14]。背景差分法的基本操作是:首先需要有一张背景图像,然后对视频图像和此背景图像进行差分运算,用一张新的图像保存差分结果的绝对值。由于背景差分法具有实现简单,运算速度快,在大多数情况下检测结果完整的突出优点,背景差分法成了运用最广泛的算法。在背景差分法中最重要的是背景模型,如何建立这个背景模型是相当重要的。建立背景模型的方法有如下几种:
1)自适应背景建模法
许多学者提出了自适应背景建模法来适应周围环境的暂时变化。首先从第一帧图像那里统计直方图得到一个阈值,用这个阈值将前景和背景图像区分开来。然后当输入图像发生变化时就把输入图像和当前背景进行有权重的相加,最后得到新的背景。它的系统框图见图5.19。

图5.19 自适应背景建模图
图5.19用公式描述为:
![]()
其中,image是新采集的图像,bkgrd是生成的背景图像,a 是每一帧的权值(这里的a取值为0.003)。测试效果如图5.20~图5.22所示。

图5.20 由于是第一帧,所以背景就是输入图像
通过图像我们可以看出这样的效果不是很好,同时这也是这种建模方法的缺陷,就是当运动物体与背景相差较小时,这种检测的效果是不好的。然而在我们这个系统中很有可能会满足这种情况,所以这个建模方案对于我们这个系统来说肯定是不行的。

图5.21 后续帧,经过一定时间的积累,背景中已经没有杂质

图5.22 有部分颗粒停下,经过一段时间的背景积累,这些颗粒成为背景的一部分
2)基于数理统计的背景估计法
该方法中运用多幅图像计算图像的平均值和方差,如果当前输入图像大于方差的λ倍,则该像素被认为是运动目标,否则,则视为背景[15]。该方法中,图像的均值与方差随当前输入图像动态更新。

此方法虽可以精确估计出背景模型,但主要应用于背景随环境变化的情况下。背景的精确估计依赖于输入图像的帧数,在通常情况下,要求输入帧数大于30帧。但对于实时系统,应力争能用最小的图片数得出最为可靠的检测结果,以提高整个系统的运行效率,降低后期处理的负担。在采集的透明药剂图像中,尽管可见异物的运动有时会遮挡住瓶身的静态缺陷,但对整个成像背景并无大的影响。此外,从运算量考虑,运动检测是运动跟踪的前项环节,算法复杂度必须尽可能小,才能保证整个算法的实时性。这种方法不太可行。
(2)连续帧间差分法
基本的帧间差分法也是一种基于像素的运动检测方法[16][17][18],它通过对视频图像序列中相邻的两个或三个图像进行差分运算来获得运动物体轮廓。从理论上看,相邻两帧或者相邻三帧的差分运算实际上是一种动态的边缘提取运算,从实际效果上看,帧间差分法能够检测出运动对象的部分轮廓信息。帧间差分法对动态环境有很强的自适应能力,但是在检测结果中,却不能完全提取出所有的属于运动对象的特征像素点,在运动物体内部容易产生空洞,这样的检测结果对随后的操作很不利。由此很多人对这种普通帧间差分法提出了改进,它的改进有如下几种:
基于三帧差分图像运动目标检测。使用相邻帧间差分法提取运动目标的关键在于准确地定位目标和噪声之间的差别,从而准确地提取分割阈值[19]。视频序列的图像信噪比(噪声污染情况)不同,对其帧差图像使用的分割阈值也应不同,基于固定阈值的视频图像分割方法不具备自适应性。由于监控系统所处环境的复杂性,图像采集中必然引入的量化噪声以及可能的摄像头光圈自动调节等因素的影响,直接使用差分图像难以有效地提取出运动目标。如果在提取图像的梯度信息之后,利用图像的梯度不受亮度、量化噪声影响的特点来提取运动目标,则可以大大减少这方面的影响[20]。
由于运动目标边缘与帧差图像中运动区域的边缘存在强相关性,由当前帧的梯度图d1(x,y,t)和前、后两帧的梯度图d1(x,y,t+1)、d2(x,y,t-1)的重合部分可以确定中间帧运动目标的边缘,从而有效地解决运动目标的遮挡和重现纹理的背景问题[21]。
此算法处理流程见图5.23所示,测试效果如图5.24~图5.26,详述如下:
第一步,对输入f(x,y,t-1)、f(x,y,t)、f(x,y,t+1)的三帧图像,分别求梯度(包括水平和竖直),可以使用Sobel算子。得到三帧的梯度图像d1(x,y,t-1)、d1(x,y,t)、d1(x,y,t+1)。
第二步,对得到的梯度图像进行滤波得到了d2(x,y,t-1)、d2(x,y,t)和d2(x,y,t+1)。
第三步,求三帧梯度图D(x,y,t)。具体求法公式如下:

第四步,通过对得到的D(x,y,t)图像进行阈值设定,阈值是通过求出D(x,y,t)图像的方差来定的,然后就可以区分前景与背景图。
(https://www.daowen.com)
图5.23 基于三帧差分图像运动目标检测的算法
通过目标检测后的效果发现运动物体基本上都已经跟踪到了,问题就是运动物体之间有空洞,这是阈值问题,可是当阈值太小时,噪声会比较多。有关阈值设定,后面会有详细介绍。
基于二次差分与能量积累相结合方法。这也是基于帧间差分法的改进算法。它是通过先求出三帧的二次差分和累积图像相减得到上一帧的运动物体信息[22]。算法流程如图5.27所示,算法过程详述如下:

图5.24 第15帧的目标检测效果

图5.25 第19帧的目标检测效果

图5.26 第23帧的目标检测效果
第一步:设每隔时间t获取3帧溶液序列图像F(x,y,t-1)、F(x,y,t)、F(x,y,t+1)。由下式计算相邻两帧的绝对差分图像:
![]()
第二步:由于目标图像较小,能量相对较低,因而利用图像本身的灰度差异乘以增强常数A,使目标具有更高的能量。

图5.27 基于二次差分与能量积累的算法流程图
![]()
并且P(x,y)>255或P(x,y)=255。
第三步:对增强后的差分图像进行二次差分。

第四步:如图5.28所示,计算两幅差分图像的能量累积,以增强运动微粒对应像素的能量。

第五步:如图5.29所示,最后将D(x,y)和E(x,y)相减,便可以得到微粒的灰度图像。
![]()

图5.28 第4帧源图像及它的二次差分图像和能量累积图像

图5.29 第6帧源图像及它的二次差分图像和能量累积图像
二次差分后的图像它提取出了两个重影目标,分别是第t-1和t+1帧的图像中相应的目标。能量积累图像提取了三个重影目标,分别是第t-1、第t帧和第t+1帧的图像中相应的目标。而且能量积累的图像在第t帧图像更大。图像差分导致“鬼影”的产生,它是一组被检测为运动的相连像素组成的集合,但不对应于任何真实的运动目标,是虚假目标[23]。
(3)改进的三帧差分法
基于改进的二次差分方法,实验发现二次差分的图像在上述几种算法中是图像处理最干净、噪声最少的图像处理方法。噪声的产生源自图像获取和传输的过程。图像获取过程中产生的噪声来自CCD成像器件工作电路、传感器温度、采集卡信号电路、A/D转换等;图像传输过程中产生的噪声来自线路之间的电磁干扰、传输信道干扰、外界电磁波干扰等。尽管图像噪声不可避免,但可以采取一定的方法和手段,使其减少或降低。
仔细分析后发现运动物体出现重影是有规律的,当前帧的二次差分图像包含的是当前帧的运动物体和它前两帧的运动物体,第5帧产生出来的二次差分图像包含了第5帧和第3帧的运动物体,第7帧产生出来的二次差分图像包含了第7帧和第5帧的运动物体。如果累积连续三帧图像的二次差分图像,假如说我们有了第5~7帧二次差分图像,又因为第5帧二次差分图像和第7帧二次差分图像都含有第5帧图像的运动物体,在第7帧的二次差分中删除与第5帧的二次差分图像中相同的物体,那么在最后的第7帧的二次差分就只含有第7帧图像的运动物体了。这样小的检测噪声可以减轻后期处理的负担。它的具体流程图见图5.30。

图5.30 改进的二次差分算法流程图