官洪运,井倩倩,王亚青,缪新苗,张抒艺
(东华大学 信息科学与技术学院,上海201620)
随着电子技术与计算机视觉技术的不断发展,视频监控被广泛地运用于各种场所。动态目标检测作为获取视频信息的重要技术,其实时性与准确性变得至关重要。常用的动态目标检测算法有帧差法、背景差分法以及光流法[1]。帧差法由于计算简单,算法运行速度快,光照突变也不会对其造成影响,但是当运动目标在相邻帧位置变化缓慢时,算法提取出的前景目标会出现空洞现象[2]。背景差分法的关键是背景建模及背景更新,其基本思想是利用背景的参数模型来近似真实背景,再用当前图像帧与背景模型进行差分,从而达到检测运动目标的目的[3]。但是由于背景无法做到实时更新且在摄像头运动的情况下算法的检测效果也会受到一定影响。光流法的基本原理是为图像中的每一个像素建立一个运动矢量,当图像中存在运动目标时,运动目标的矢量场会与背景的矢量场存在明显差异,由此来获取图像中的运动目标[4],但是无法同时保证光流法的时效性与准确性。
ViBe 算法由于思想简单、检测效果好且易于实现,被广泛运用于动态目标检测,但是算法自身也存在着局限性,会产生鬼影、空洞和阴影前景等问题[5]。文献[6]提出一种结合三帧差法的改进 ViBe算法,解决了ViBe 算法光适应性差的问题;针对传统ViBe 算法存在鬼影问题,文献[7]提出了一种V-ViBe 算法的改进方案;文献[8]为了解决阴影问题,结合色相和纹理特征对ViBe 算法做出了改进。
针对传统ViBe 算法的鬼影和阴影问题,本文提出了一种更加有效的目标检测算法,利用均值背景建模对传统ViBe 算法进行改进,消除鬼影现象,并且在此基础上进一步融合了混合HSV 色度空间与HSI 色度空间的阈值自适应阴影消除算法,消除了前景目标中包含的阴影区域。
2009 年 ,Olivier Barnich 和 Marc Van Droogenbroeck首次提出了ViBe 前景检测算法。ViBe 算法是一种鲁棒性强的随机背景建模的动态前景目标检测算法,其计算过程简单、实时性高、应用广泛。
ViBe 算法使用视频序列的第一帧图像进行背景模型初始化。在初始化过程中,对每个像素随机抽取邻域内的像素值生成样本集,构建背景模型。通常一个像素点在其8 邻域的范围内随机选取20个样本点来构建对应的背景模型。由于ViBe 算法只使用视频序列的第一帧来构建背景模型,背景模型初始化时间大大缩短,使得算法的实时性变得更好。但是当第一帧图像中存在运动目标时,这样的方法会使检测结果出现所谓的“鬼影”,经过一段时间背景更新后鬼影才会消除,动态目标检测的准确性会有所降低。
ViBe 算法根据二维空间中的欧氏距离来对像素点进行分类,从而分割前景与背景。记 v(x)为 x位置像素点的像素值,S(v(x))是以像素点为中心,R 为半径生成的圆形。以 v(x)与 x 像素点的背景模型中的所有样本点的欧式距离与半径阈值R 进行比较,小于阈值时则说明当前像素点与该样本点匹配。记 #min 为最小匹配次数,当前像素点与背景模型中的样本点的匹配次数大于#min 时,将该像素点分类为背景点,反之则分类为前景点。
ViBe 算法背景更新即对构成像素点背景模型的样本集的更新。当像素值被判断为背景点时,用当前像素的像素值替换样本集中的样本点的概率为 1/φ(一般 φ 取 16)。同时 根据邻域传播 原 则 ,该像素点邻域中的像素值也将以相同的概率被当前像素点的像素值替换,这种策略有效地保证了空间一致性,可以很快地恢复被误判为前景目标的背景像素。
在传统的ViBe 算法中使用第一帧来进行背景模型初始化,但是当视频第一帧存在运动目标时,初始背景模型的准确性会受到很大的影响,导致动态目标检测会出现鬼影现象。因此提高初始背景模型的准确性会消除前期检测的鬼影现象。本文利用均值背景建模构建了ViBe 算法的初始化背景。
均值背景建模是背景差分法的一种,其背景建模是基于统计滤波思想[9]。原理是将一段时间采集到的N 帧图像相加,求其平均值,计算出的图像作为参考背景模型。计算公式如式(1)所示:
其中,Bn为计算出的参考背景,N 为选取的帧数,(fn+fn-1+…+fn-N+1)为连续的 N 帧图像。根据式(1)对视频序列进行均值背景建模,获取的初始背景模型如图1 所示。
图1 数据集不同帧数获取的参考背景
从图1 可知,当计算均值背景选取的帧数越大,得到的背景就越贴近真实背景;选取的帧数越小,有前景目标经过的背景区域颜色会比真实背景相同的区域更深。
融合了均值建模的ViBe 算法在开始时就已经获得了较为准确的背景模型,所以前景提取不会出现鬼影现象,大大提高了动态目标检测的准确性。
传统的 ViBe 算法是在像素点 8 邻域的范围内随机选取20 个样本点构成背景模型,这样会导致背景模型中样本重复的概率增大,重复选取样本会增大背景点与前景点的误判概率,所以本文将像素点的 24 邻域作为背景模型样本选取范围,降低样本重复选取概率,从而降低误判概率。
改进的ViBe 算法选取了均值背景建模的结果作为背景初始化模型,有效地消除了鬼影现象。由于光照因素,视频序列中的动态目标会产生阴影,并且阴影的运动特性与真实目标相似,所以阴影也会被误检为前景目标,会对检测的准确性造成影响。
HSV 是根据颜色的直观特性由A.R.Smith 在1978 年创建的一种颜色空间,模型中的三个参数分别为色调(H)、饱和度(S)、明度(V)。相 较于 RGB 色度空间,HSV 更贴近于人眼感觉颜色的方式[10]。当阴影覆盖背景像素时,色度和饱和度基本不发生变化,只有亮度会明显降低。基于这一特性,根据式(2)来判断像素点是否为阴影点。
当 Sp(x,y)=1 时,当前位置的像素点判断为阴影 点 。其 中 IH(x,y)、IS(x,y)、IV(x,y)和 BH(x,y)、BS(x,y)、BV(x,y)分别是当前帧与背景图像在(x,y)位置的像素在HSV 色度空间的分量; 由于阴影点的像素亮度小于背景点像素,因此 0≤α≤β≤1;τS是饱和度参数的阈值;τH是色度参数的阈值。
HSI 色彩空间是从人的视觉系统出发,与HSV色度空间不同的是亮度分量。HSI 色彩空间可以用一个圆锥空间模型来描述,而HSV 色度空间相当于一半的圆锥空间模型。HSV 阴影消除也是根据亮度来区分阴影点。本文中主要使用了HSI 色度空间中的亮度参数来获取当前视频的亮度,从而动态设置判断条件的阈值。
阴影是由于物体遮挡光线而形成的,它会随着物体的运动而运动,所以会被误检为前景目标。对于视频序列中同一位置的区域,被阴影覆盖时的亮度相较于没有覆盖时会降低,但当运动目标经过时亮度一般会比真实背景区域的亮度要高[11]。本文基于这一特征进行阴影消除。
首先读取视频帧,此时读取的图像处于RGB 色度空间。进行阴影消除之前需要将图像转换至HSV色度空间。RGB 转换至 HSV 的公式如式(3)~式(5)所示:
运动目标阴影和背景相比较只有V 分量明显降低,在HSV 色度空间中,阴影像素点三个参数的向量和小于被覆盖的背景像素点的向量和,所以阴影判断公式如式(6)所示:
如果 Sp(x,y)=1,则像素点为阴影点;如果 Sp(x,y)=0,则像素点为前景点。其中 IH(x,y)、IS(x,y)、IV(x,y)和 BH(x,y)、BS(x,y)、BV(x,y)分 别 是 当 前 帧 与 背景图像在 (x,y) 位置的像素在HSV 色度空间的分量;α 和 β 分 别 为自 设阈值 。
在实际情况中,摄像头采集到的视频序列亮度会不断发生变化,为了达到最好的阴影消除效果,需要更改判断条件的阈值。所以考虑到算法的实用性,进一步对算法进行改进,使其可以根据当前检测视频亮度自动更改阴影判断阈值。将视频转换至HSI 色度空间,获取视频亮度分量如式(7)所示:
在当前图像随机选取一定数量的像素点计算HSI 色度空间的亮度分量,根据式(8)计算均值作为当前帧的亮度。
根据多次实验结果总结,自适应阈值更改公式如式(9)所示:
视频经过运动目标提取和阴影消除后,为进一步消除图像小部分区域残存的阴影,以防止提取到的车辆目标中存在空洞,利用图像处理中的膨胀、腐蚀、开运算与闭运算等形态学处理操作,去除未消除的小区域阴影像素点及噪声点,之后再对提取出的车辆前景进行孔洞填充,从而提取出完整的运动目标。
本文实验环境为1.4 GHz 4 核 Intel Core i5 处理器、8 GB 内存计算机,系统为 MacOS Mojave,运行环境为 PyCharm CE,结合开源 OpenCV 库。
为了验证本文提出的目标检测算法的有效性,采用国际上通用的标准数据集Highway I 和Highway II进行实验。分别对不同光照强度下的道路车辆进行检测及动态阴影消除。本文提出的 ViBe 改进算法实验结果与传统ViBe 算法实验结果进行比较,结果如图2 所示。其中图2(a)为 Highway I 和 Highway II视频序列的第 1 帧图像;图2(b)为 Highway I 视频序列的第 56 帧和 Highway II 视频序列的第 114 帧输入图像;图2(c)为传统 ViBe 算法对 Highway I 视频序列的第56 帧和 Highway II 视频序列的第114帧的实验结果;图2(d)为改进 ViBe 算法,即融合均值背景建模算法对Highway I 视频序列的第 56 帧和 Highway II 视频序列的第114 帧的实验结果;图2(e)为本文提出的基于ViBe 改进算法的阈值自适应阴影消除算法对Highway I 视频序列的第56帧和Highway II 视频序列的第114 帧的实验结果。
由于两个视频序列第一帧均存在运动目标,从图2(c)的实验结果可以看出,传统的 ViBe 检测算法存在严重的鬼影现象,在 Highway I 第 56 帧和Highway II 视频第114 帧中动态目标提取结果中仍存在明显的“鬼影”,并且视频中的运动阴影也会被当作前景提取出来。从图2(e)的实验结果可以看出,本文提出的算法有效地抑制了鬼影的产生和阴影像素点的错误提取,很好地提取出运动前景,并且经过形态学处理之后,运动目标更加清晰完整。
图2 实验结果
动态目标检测是获取视频序列中信息的关键步骤,保证目标检测的准确性十分重要。本文提出了一种融合改进的ViBe 和阈值自适应混合色度空间阴影消除的动态目标检测算法,该算法有效地抑制了传统ViBe 算法产生的鬼影,并且消除了动态目标产生的阴影。实验表明,本文提出的动态目标检测算法易于实现,具有很好的实时性及鲁棒性,且可以准确提取出运动目标,得到的目标完整且轮廓清晰。