刘志聪,陈德为,李鸿扬,李一杭,钟剑兵
(福州大学 机械工程及自动化学院,福建 福州 350116)
运动目标检测是视频监控领域研究的热点和难点之一,其难点在于如何克服复杂多变的背景环境,准确地提取出运动目标作为前景[1]。家居环境因其简单稳定的环境特点,计算量较小,一般采用嵌入式设备进行算法计算。
目前,检验算法可分为三类,分别是背景法、帧差法和光流法[2]。光流法由于其庞大的计算量,不适用于嵌入式设备,本文不作研究。帧间差分法有计算简单、反应迅速的优点,缺点是检测的前景易出现内部空洞,常作为辅助检验算法。背景建模法的算法较多,包括背景差分法、中值法、均值法、单高斯模型、混合高斯模型、ViBe算法、W4算法、CodeBook法等[3]。其中,背景差分法最简单,适合简单固定的背景环境;混合高斯模型法的总体检测效果优于其他大多数算法,作为运动目标的主流算法,不少改进的算法研究都是基于混合高斯模型建模[4];ViBe算法是由BARNICH O等人在2011年提出的有别于传统方法的算法[5],该算法在计算速度和内存占有方面优于混合高斯模型,并且有不错的检验效果。
背景差分法常出现以下三大问题[6]:
(1)“阴影”问题
这是几乎所有背景法公有的问题,背景法对阴影较为敏感,因而运动目标在光照下产生的阴影会被误检为前景,使检测的前景不够准确。
(2)Ghost区域
Ghost区域即“鬼影”区域,指的是原本背景中静止的物体开始运动以后,背景算法将物体静止时所处区域误检为前景目标,或者当运动目标静止一段时间后再运动,也会产生Ghost区域。尽快消除Ghost区域也是所有背景法的难点之一。
(3)光线突变问题
不适应光线突变环境是所有背景法的不足之处。当光线突变时,背景模型无法马上更新,当前帧和背景模型的亮度差异造成误检,出现大面积的前景目标,并将持续一段时间。
本文提出的算法是基于背景差分法和帧间差分法,主要致力于改善以上“阴影”问题、Ghost区域问题和光线突变这三大主要问题,并且尽可能减少计算开销和内存开销,以实现算法的实时性并适用于嵌入式设备。
本文的改进算法分为两部分,分别是日常检测部分和深度检测部分,如图1所示。由于在实际的应用中极少有运动目标出现的情况,若对每一帧图像都采用完整的检测流程,必然会造成较大的计算开销和资源浪费。因此,本文提出一种分阶段进行运动目标检测的方法,每一帧图像首先由背景差分法进行运动目标检测,若检测出的前景图像点数超过预设的阈值T1,再进入下一阶段的深度检测。
图1 改进的运动目标检测算法步骤
算法采用多阈值层层判定的设计方式,主要检测步骤如下:
(1)背景差分法检测
当无运动目标入侵时,算法仅在该步骤不断循环检测。输入的图像帧选择较为简单的图像预处理方式(灰度化+均值滤波),背景差分二值化得二值图像D1,采用均值法更新背景模型(学习率a设为0.003),再通过开运算形态学处理平滑图像边缘,最后通过计算得出前景点数目是否超过预设的阈值T1,若不超过T1,则读取下一帧循环计算;若前景点数超过T1,则读取当前帧开始的10帧图像进行深度检测。背景差分法计算简单迅速、对运动目标较为敏感,可满足日常检测的实时性要求。基于背景差分法自身算法缺陷引起的误检情况可由后续算法进行改进。
(2)帧间差分法并填补孔洞
触发阈值T1后,开始对当前帧开始的10帧图像进行帧间差分法计算,第一帧选取背景帧作为前一帧进行差分计算。帧间差分法最大的缺点是检测的前景图像内部有较大面积空洞区域,本算法采用以下步骤(如图2所示)填补这些空洞:
①对每一帧进行图像梯度化处理增强轮廓信息,使差分的结果更完整;
②帧间差分并二值化处理得二值图像D2;
③帧间差分完成后,对差分的二值化结果进行闭运算形态学处理,通过闭运算可填补小面积孔洞、裂缝;
④设定阈值T2,当二值图D2中的孔洞面积不大于T2时,通过查找外轮廓与内轮廓,循环填充封闭轮廓包围的孔洞区域。当运动目标移动较慢时,帧差法检测的轮廓局部区域会出现缺口,未封闭的轮廓将影响填充效果。因此本文的解决方式是通过将未填充图像缩小为1/2后进行填充,填充完成后再将图像放大2倍成原图大小。缩小图像的实质是像素点大小不变而相对的位置发生变化,这样的变化使得像素点之间更加紧凑,也使得小的轮廓断点连接到一起。这种方法造成填充后的前景图像较理想,前景图像较肥大且轮廓信息模糊,在后续算法中会消除这些影响。
图2 帧间差分与填补孔洞
(3)D1、D2与运算
帧间差分法填补孔洞后弥补了内部空洞的不足,填充后的D2图像虽然较理想前景图像较肥大且轮廓信息模糊,但在D1、D2与运算后,结果保留了D1较完整的图像轮廓信息(如图3所示)。由于帧间差分法基本不受光线变化、背景环境突变的影响,并且无Ghost区域和阴影产生,因而D1、D2与运算后,基本能够消除背景差分法受阴影、光线变化、Ghost区域的影响,效果较好。此时前景点数若超过预设阈值T3,则进行轮廓比例判断,否则记为无效报警,进入下一帧检测。
图3 D1、D2与运算
(4)运动目标轮廓矩形框标定
由于本算法应用于家居背景环境,考虑到消除家庭宠物引起的误检情况,采用了运动目标轮廓比例判断的方法来实现。通过查找轮廓的方法,首先摒弃面积较小的团块,其次根据轮廓绘制矩形框标定运动目标大小与位置(如图4(a)所示),最后根据矩形框高度与宽度比例是否位于预设阈值区间[T4,T5]内判断是否为有效报警。
实验时在画面右侧向左推入纸箱模拟宠物移动场景,由图4(b)、图4(c)可以看出,算法检测出入侵目标并判定为前景,但由于前景目标的高度与宽度比例不在[T4,T5]区间,不进行矩形框标定,记为无效报警。
图4 模拟宠物入侵实验
(5)报警判定
触发阈值T1后,连续检测10帧图像,若一帧图像同时满足阈值T1、T3、T4、T5的触发要求,则判定为有效报警,否则判定为无效报警。当10帧图像中累积有8帧图像判定为有效报警,则发出报警信息,若超过2帧无效报警,则算法重新进入背景差分计算循环。这种判断方法一定程度上能够减少其他外界干扰因素引起的误检情况(如镜头轻微抖动、光照突变瞬间的误检),增加报警准确度。
本文算法中各阈值的设定与摄像头的放置位置有关,其中,摄像头与监控最远位置的距离决定T1、T2、T3的设定,摄像头离地高度决定T4、T5的设定。本实验中,摄像头监控最远距离约5 m,离地高度约1 m。
阈值T1的设定取决于摄像头与监控最远位置的距离,距离越大,阈值设置越小。本实验的测试距离下,选取测试视频出现运动目标时的图像50帧,前景点数在(5 000,13 000)范围内,故预设阈值T1为3 000。
阈值T2用于填补大面积孔洞,可设定得较大。一般情况下,孔洞面积不大于前景目标面积,故本实验设置阈值T2为13 000。
阈值T3用于判定D1、D2与运算后的前景点数是否超标,由于与运算操作消除了D1中的阴影部分,同时几乎可以排除Ghost区域和光线突变带来的影响,因而其前景点数必然小于D1检测的前景点数,且趋近于理想状态下的前景点数,故设置阈值T3=T1=3 000。
阈值T4、T5用于设置运动目标轮廓比例区间,通过对测试视频总共828帧达到绘制矩形框要求的图像帧统计,矩形框比例(高度/宽度)分布如表1所示。
表1 矩形框(高度/宽度)比例分布统计
根据统计结果可知,位于(1.5,5]区间的帧数高达795帧,占总帧数96.0%,考虑被测人身高、体型的波动情况,故设置T4=1.3,T5=5。本测试视频由于被测人在右侧小部分区域活动时受遮挡物影响,部分前景图像被遮挡,故少部分帧数的运动目标轮廓比例位于(0,1.5]区间。正常情况下,监控区域无遮挡物且排除儿童独自在家的情况,检测的运动目标轮廓比例位于(0,1.3]区间可判定为宠物活动,记为无效报警。
实验基于OpenCV库函数进行运动目标检测,OpenCV库函数可移植至嵌入式设备,算法通过调用OpenCV库函数进行运动目标检测。为了直观比较几种主流算法与改进算法的测试结果,在Windows平台下的Microsoft Visual Studio 2010开发工具中进行仿真测试。VS2010已导入OpenCV库函数。
测试实验通过USB摄像头CMOS OV7725录制了3 000帧640×480像素的测试视频,测试范围约5 m,离地高度约1 m,被测人身高178 cm,中等身材。视频在室内背景环境下拍摄,模拟相对简单稳定的家居环境,在第938帧、第1 432帧、第2 641帧处分别测试了各算法处理“阴影”问题、Ghost区域问题、光线突变问题的能力,同时各帧也反映了各算法检验运动目标的优劣效果。
本节选取第938帧、第1 432帧、第2 641帧进行测试,分别测试了运动目标在正常背景下移动、短暂停留后移动、光线突变时各算法的检测情况。图5~9分别为各算法对所选3帧图像的检测结果。图10为本文算法对检测运动目标的位置标定结果。
图5 帧间差分法测试
图6 背景差分法测试
图7 ViBe算法测试
图8 混合高斯背景建模法测试
图9 本文算法测试
图10 运动目标位置标定测试
实验选取第401~750帧共350帧无运动目标出现的图像帧,以及第831~980帧共50帧有运动目标出现的图像帧,分别测试三种算法处理一帧图像的平均时间,如表2所示。该测试基于PC平台,采用Intel(R) Core(TM) i5-2410M处理器,最高频率为2.30 GHz。
表2 三种算法处理一帧图像的平均时间比较 (ms)
由表2数据可知,当无运动目标出现时,本文算法的计算优势明显,长时间运算可保证实时性和较低的CPU开销;当出现运动目标时,本文算法计算速度仅略差于速度较快的ViBe算法。
在实际应用中,无运动目标出现的概率较大,算法需长时间处理无运动目标出现的图像帧,因而本文算法相比与背景法中处理效果较好的混合高斯背景建模法和ViBe算法具有明显的速度优势。
本文提出了一种室内环境下基于帧间差分法和背景差分法改进的多阈值运动目标检测算法。通过仿真实验对比可以看出,本文算法相比四种经典算法,在消除阴影、光线突变、Ghost区域等不利影响方面的效果最优。同时,多阈值判定的方法不仅提升了算法检测的准确性,也提高了算法的运算效率,满足算法检测的实时性,较小的计算开销使其适用于家用安防嵌入式设备。