2. 西北民族大学 数学与计算机科学学院, 兰州 730000
2. College of Mathematics and Computer Science, Northwest Minzu University, Lanzhou Gansu 730000, China
近年来,随着人工智能的发展,机器视觉的研究越来越热门。从视频序列中检测出运动目标,也成了研究中的热点。目前常用的检测算法主要有帧间差分法[1]、背景减除法[2]和光流法[3-4]等。光流法利用序列图像中每一帧图像中各个像素的矢量特征来检测运动区域,当目标运动时,运动目标形成的光流矢量会发生变化,从而实现运动目标的检测。该算法能有效地提取和跟踪运动目标,但计算较为复杂,抗噪性能差,难以进行实时处理。此外,还有许多关于视频序列运动目标的算法,主要有:混合高斯模型(Gaussian Mixture Model, GMM)[5]、Codebook[6]、自组织背景检测(Self-Organization Background Subtraction, SOBS)模型[7]、样本一致性(SAmple CONsensus, SACON)背景建模[8]、ViBe[9]等背景建模算法。混合高斯模型能够在复杂场景下对目标检测,但是该算法对噪声敏感,且计算量大;基于Codebook的算法,虽然具有较好的效果,但是对光线的变化比较敏感;SOBS对光照有一定的鲁棒性,若输入图片较大时,计算量相应增大;SACON通过对每一个像素进行样本一致性计算估算背景模型,对噪声较为敏感;ViBe算法总体速度快,是目前应用较多的一种算法,但是该算法对光线敏感且噪声抑制能力较差。综合考虑现有算法的优缺点,本文采用背景减除法进行运动目标检测。
背景减除法所要解决的关键问题是建立高效的背景模型,通常在背景建模时要考虑光照强度的变化、噪声以及背景的及时更新等问题[10]。文献[9]通过建立背景样本模型,将当前像素随机的与背景像素样本集进行对比判断该像素的运动状态,缩减了对像素运动状态的判断时间;文献[11]通过连续两帧快速匹配确定初始候选背景像素点,候选的背景像素点通过稳定信号训练器,产生精确背景像素;文献[12]在Σ-Δ滤波的思想上,结合背景减除法和帧间差分法产生稳定的背景像素点;文献[13]通过背景减除法和帧间差分法产生运动差分图像,采用区域块熵可产生合适的阈值,进行像素点运动状态判断;文献[1]采用连续两帧同一位置像素的相关性来判断像素的状态,可以有效地平滑窗口区域的噪声。本文提出的基于背景减除法的视频序列运动目标检测算法,结合了帧间差分法和背景差分法,可以有效地获取像素当前的运动状态和抑制噪声,并能及时更新背景模型。
1 运动目标检测的基本算法 1.1 背景减除法背景减除法[1]是利用背景的参数模型来近似图像的像素值,将当前帧与背景图像作差分比较以实现运动目标的检测。该算法对运动目标的检测,重点在于建立一个鲁棒的背景模型,能够适应光照的变化、背景内微小目标的移动和噪声的影响等。背景减除法如式(1) 所示:
$ B{D_t}(x, y) = \left\{ \begin{array}{l} 255, \;\;\;\left| {{I_t}(x, y)-{B_t}(x, y)} \right| \ge {\tau _1}\\ 0, \;\;\;\;\;\;\left| {{I_t}(x, y)-{B_t}(x, y)} \right| < {\tau _1} \end{array} \right. $ | (1) |
式中:It(x, y)、Bt(x, y)分别表示当前帧与背景帧图像;BDt(x, y)表示背景差分图像;t表示帧数(t=1, 2, …, N);τ1为阈值。背景减除法能够有效地检测出完整的运动区域,但是对噪声和局部运动比较敏感。
1.2 帧间差分法帧间差分法[2]是基于视频序列中相邻帧图像具有强相关性而提出的检测方法,利用视频序列中相邻的两帧或者两帧以上作差分运算来实现运动目标检测。帧间差分法如式(2) 所示:
$ F{D_t}(x, y) = \left\{ \begin{array}{l} 255, \;\;\;\;\;\left| {{I_t}(x, y)-{I_{t-1}}(x, y)} \right| \ge {\tau _2}\\ 0, \;\;\;\;\;\;\;\;\left| {{I_t}(x, y)-{I_{t - 1}}(x, y)} \right| < {\tau _2}\; \end{array} \right. $ | (2) |
式中:It(x, y)、It-1(x, y)分别表示当前帧与前一帧图像;FDt(x, y)表示背景差分图像;τ2为阈值。帧间差分法对于动态场景具有较强的适应性,在检测运动目标时可以有效地检测出连续两帧图像中没有明显变化的像素点,并且能够适应光线的变化,但不能提取完整目标信息,对于运动过快的目标,会产生“鬼影”,对于运动过慢的目标会产生“孔洞”。
2 视频序列运动目标检测算法 2.1 背景初始化为了产生一个初始参照模型,本文采用改进的滑动均值模型[11],对视频序列取K帧来初始化背景模型,如式(3) 所示:
$ {B_t}(x, y) = {B_{t-1}}(x, y) + ({I_t}(x, y)-{B_{t-1}}(x, y))/t $ | (3) |
其中:t是选取视频序列的帧数;Bt-1(x, y)是前一帧背景。该背景模型只将当前帧和前一帧背景相关联,节省了内存空间,且基本保留了实际背景中的特征信息。
2.2 像素点估计在视频序列中,取连续两帧序列It-1(x, y)、It(x, y),以及前一帧背景Bt-1(x, y)与当前背景Bt(x, y),分别对当前帧使用式(1)~(2) 作背景减除和帧间差分,产生初始背景像素候选点。选择合适的阈值τ1和τ2,分别对两幅差分图像进行运动像素和静止像素的标记,用“1”表示运动像素,“0”表示静止像素,如式(4)、(5) 所示:
$ B{M_t}(x, y) = \left\{ {\begin{array}{*{20}{c}} {1, }\\ {0, } \end{array}} \right.\begin{array}{*{20}{c}} {\;\;\;{\rm{ }}{I_t}(x, y)是运动像素}\\ {{\rm{ }}\;\;\;{I_t}(x, y)是静止像素} \end{array} $ | (4) |
$ F{M_t}(x, y) = \left\{ {\begin{array}{*{20}{c}} {1, {\rm{ }}\;\;\;{I_t}(x, y)是运动像素}\\ {0, {\rm{ }}\;\;\;{I_t}(x, y)是静止像素} \end{array}} \right. $ | (5) |
为了尽可能避免漏检静止像素,对两幅标记图采用“或”运算,从而产生稳定的静止像素和估计运动的像素,如式(6) 所示:
$ FB{M_t}(x, y) = \left\{ {\begin{array}{*{20}{c}} {1, }\\ {0, } \end{array}} \right.\begin{array}{*{20}{c}} {\;\;\;F{M_t} \cup B{M_t} = 1}\\ {\;\;\;F{M_t} \cup B{M_t} = 0} \end{array} $ | (6) |
在得到像素的运动状态后,用当前帧It(x, y)和前一帧背景Bt-1(x, y)去更新背景模型,以此精确地逼近当前帧下的背景图像Bt(x, y)。对FBMt(x, y)中被标记为静止的像素点,使用当前帧It(x, y)中对应的像素点替换;FBMt(x, y)中被标记为运动的像素点,使用一个新的像素代替,如式(7) 所示:
$ {B_t}(x, y) = \left\{ {\begin{array}{*{20}{c}} {像素更新, }\\ {{I_t}(x, y), } \end{array}} \right.\;\;\;\begin{array}{*{20}{c}} {F{M_t} \cup B{M_t} = 1}\\ {F{M_t} \cup B{M_t} = 0} \end{array} $ | (7) |
一般情况下,运动区域的背景像素的更新,直接使用前一帧背景Bt-1(x, y)中对应的像素。当运动目标移动缓慢时可能会产生“鬼影”。为了能够迅速更新运动区域的背景像素,结合当前帧It(x, y)和前一帧背景Bt-1(x, y),使用滑动均值的思想来更新运动区域的背景像素,因此将式(7) 描述为如式(8) 所示:
$ \begin{array}{l} {B_t}(x, y) = \\ \;\;\;\left\{ \begin{array}{l} {B_{t-1}}(x, y) + ({I_t}(x, y)-{B_{t-1}}(x, y))/\alpha, \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;F{M_t} \cup B{M_t} = 1\\ {I_t}(x, y), \;\;\;\;\;F{M_t} \cup B{M_t} = 0 \end{array} \right. \end{array} $ | (8) |
式中:α为学习参数(又称速率参数),α的取值大小直接决定了背景的更新速率。依据不同场景,1/α的取值范围为0.012 5至0.125 0,在本文中取经验值0.012 5。
对当前帧It(x, y)和当前背景Bt(x, y)进行差分,得到差分图像Dt(x, y),如式(9) 所示:
${D_t}(x, y) = |{I_t}(x, y) - {B_t}(x, y)|$ | (9) |
式中Dt(x, y)为当前帧差分图像。
2.4 目标提取为了能精确、快速地提取运动目标,本文采用最大类间方差(Otsu)算法[14],对Dt(x, y)进行目标提取。算法步骤如下:
设一幅灰度图像的灰度级为L,ni表示灰度值为i的像素数,n代表图像总的像素数,pi代表图像中灰度值为i像素出现的概率,则pi=ni/n。若利用阈值t将图像中的像素按照灰度值分成目标C0和背景C1两类, 其中C0={1, 2, …, t}, C1={t+1, t+2, …, L-1}。
步骤1 C0和C1出现的概率;
$ {w_0} = \sum\limits_{i = 0}^t {{p_i}} = w(t) $ | (10) |
$ {w_1} = \sum\limits_{i = t + 1}^{L-1} {{p_i}} = 1-w(t) $ | (11) |
步骤2 C0和C1灰度均值分别为:
$ {\mu _0} = \sum\limits_{i = 0}^t {i\left( {{p_i}/{w_0}} \right)} = \mu (t)/w(t) $ | (12) |
$ {\mu _1} = \sum\limits_{i = t + 1}^{L - 1} {i\left( {{p_i}/{w_1}} \right)} = \left( {{\mu _T} - \mu (t)} \right)/\left( {1 - w(t)} \right) $ | (13) |
其中目标图像的平均灰度记为:
$ \mu (t) = \sum\limits_{i = 0}^t {i{p_i}} $ | (14) |
图像的总平均灰度记为:
$ {\mu _T} = \sum\limits_{i = 0}^{L-1} {i{p_i}} $ | (15) |
步骤3 目标和背景之间的类间方差用σβ2表示;
$ \sigma _\beta ^2 = {w_0}{({\mu _0}-{\mu _T})^2} + {w_1}{({\mu _1}-{\mu _T})^2} $ | (16) |
步骤4 求得阈值τ3;
$ {\tau _3} = \arg \max \sigma _\beta ^2 $ | (17) |
步骤5 使用阈值τ3对Dt(x, y)分割,得到二值图像掩模RMt(x, y);
$ R{M_t}(x, y) = \left\{ \begin{array}{l} 255, \;\;\;{D_t}(x, y) > {\tau _3}\\ 0, \;\;\;\;\;\;{D_t}(x, y) \le {\tau _3} \end{array} \right. $ | (18) |
为了去除噪声和冗余信息对目标提取的影响,采用形态学中闭运算对目标图像进行滤波,去除产生的噪声和冗余信息。
3 实验结果与分析为了验证本文算法的有效性,本文将该算法和一些典型的算法作实验对比。实验环境为Windows10操作系统、Intel i5处理器、8 GB内存,实验平台为Matlab R2014a。本文选取CV Datasets on the web的视频序列IBS、LAB、OCL、OSU1、OSU2。其产生环境、图像大小、背景属性、目标的大小和数量,如表 1所示。
本文利用不同算法对选取的5组视频序列进行实验,其部分视觉效果如图 1所示。
从图 1实验结果的视觉效果来看,ViBe、Codebook、GMM和本文提出的算法都能够较完整提取出运动目标信息,帧间差分法(inter-Frame Difference, FD)只提取了目标的轮廓。在对视频序列IBS、OCL和OSU1进行目标检测的时候,用本文所提算法基本提取出了目标的完整信息,虽然有局部的信息被丢失了,但是减少了噪声和局部运动的影响。而使用ViBe、Codebook、GMM算法进行目标检测,并不能很好地克服背景中的局部运动(如:树叶的摆动),且产生的目标都有欠分割现象,特别是GMM算法产生的结果,局部运动很明显,且对视频序列中所含的噪声很敏感,果对OCL序列的检测还产生了“鬼影”。IBS序列的初始就包含运动目标,使用ViBe和Codebook这两个算法进行目标检测的时候,不能很迅速地将背景信息更新,所以会产生“空洞”,且这两个算法并不能很好地克服局部运动,对噪声的抑制能力也比较差。对于光线突变,帧间差分法算法具有优势,ViBe、Codebook、GMM和本文所提算法对光线的突变都敏感。本文使用半径为1的圆形结构元素,对目标提取的结果进行形态学闭运算,从而去除目标提取产生的冗余信息。
在背景更新时,通常会有目标在背景中静止,这时的目标在一段时间之后将被更新为背景。另外一种情况是,原来在背景中静止的目标发生了运动,那么原来目标所在的区域则需要更新。IBS序列的初始化背景模型中包含了静止的目标,当目标在第60帧发生移动之后,原来目标所在的区域就产生了明显的“空洞”,如图 2所示。通过式(8) 对该区域的像素进行更新。第102帧时,“空洞”被完全更新为背景。背景更新的快慢取决于学习参数α。通常情况下,α越大背景更新越快,但由于目标运动速率不同,学习参数则需要根据不同场景选择。
本文提出的算法进行目标检测时,结合帧间差分和背景更新模型,将强度大小不连续变化的噪声视为运动目标点,在更新背景的时候将噪声去除。在不同的场景下,通过调节学习参数,使得背景更新速度符合场景的变化速率,避免了“孔洞”和“鬼影”的产生。该算法在光线突变的时候,具有更短的恢复时间。从视觉效果上来看,本文所提算法具有明显的优势。
3.2 实验结果评价为了表明该算法所得的运动目标检测结果的质量,本文采用Recall、Precision、F1和Similarity[11]等性能指标,并和其他算法所得结果进行对比分析。
Recall是检索出的相关信息量和相关信息的总量的比值,Precision是检索出的相关信息量和检索出的总量的比值,如式(19)~(20) 所示:
$ Recall = tp/(tp + fn) $ | (19) |
$ Precision = tp/(tp + fp) $ | (20) |
其中:tp(true positive pixels)表示检索出的相关信息量;fn(false negative pixels)表示未检索出的相关信息量;fp(false positive pixels)表示检索出的无关信息量。
由于Recall只反映丢失运动目标内部信息的相关性,Precision只反映丢失运动目标外部信息的相关性,因此利用Recall或Precision都不能充分衡量不同算法的有效性。一般情况下,Recall高则Precision低,Recall低则Precision高。在两者都要求高的情况下,引入F1和Similarity来度量,如式(21)~(22) 所示。
$ F1 = 2 \times Recall \times Precision/\left( {Recall \times Precision} \right) $ | (21) |
$ Similarity = tp/(tp + fp + fn) $ | (22) |
所有参数的值都在0到1之间,参数值越大,说明得到的结果越精确。对视频序列分别使用ViBe、Codebook、混合高斯模型(GMM)、帧间差分法(FD)、目标提取(Object Extraction)和本文所提算法(Proposed algorithm)进行实验,得出相关指标参数如表 2所示。
从表 2数据可以看出,Codebook、ViBe和GMM算法具有较高的Recall,最高达0.944 00,说明在进行运动目标检测时,这几种算法能够较完整地检测到目标的全部信息;三种算法的Precision最高为0.581 00,说明在进行运动目标检测时,算法对噪声敏感,易将噪声点误判为运动像素点;同时,三种算法的F1和Similarity整体偏低,说明在进行运动检测时,会丢弃部分目标信息。帧间差分法的平均Recall、Precision和F1均在0.630 00以上,说明该算法在进行目标检测时,能够较好地克服噪声,且能较为准确地提取目标信息,但Similarity的均值为0.462 75,说明进行运动检测时会丢失目标信息,这也说明该算法在检测运动目标时,得到了运动目标的轮廓信息。
表 2中给出了通过Otsu算法进行目标提取结果和本文所提算法(闭运算之后)的指标参数。从目标提取结果的指标参数来看,目标提取结果Recall的均值为0.746 25,高于帧间差分法,和Codebook接近,说明通过目标提取算法能够较完整提取目标的大部分信息;目标提取结果的Precision最高达0.760 00,均高于其他算法,说明通过目标提取算法能够精确提取信息;目标提取结果的F1和Similarity也具有较高的数值,说明通过目标提取算法能够有效地抑制噪声,摒弃冗余信息。由于闭运算修复了运动目标内部不连续的部分,所以闭运算之后的指标参数较未使用闭运算之前平均提高了2.96%。因此,从算法的性能参数来看,本文所提算法在目标像素点的精确提取方面,相比于其他算法优势更加明显。
4 结语本文在对背景减除法的研究基础上,结合帧间差分法和背景减除法,判断像素点的运动状态,分别对静止和运动的像素点替换和更新,产生与实际背景接近的背景模型。最后使用Otsu算法进行目标提取,并使用形态学中的闭运算去除噪声和冗余信息。实验结果证明,本文所提算法具有较高的Precision、F1和Similarity,相比于其他算法产生的结果精度高,而且能够很好地克服局部运动、抑制噪声、避免“孔洞”和“鬼影”等问题,有良好的视觉效果。
[1] | SPAGNOLO P, ORAZIO T D, LEO M, et al. Moving object segmentation by background subtraction and temporal analysis[J]. Image & Vision Computing, 2006, 24(5): 411-423. |
[2] | XUE G J, SUN J, SONG L. Background subtraction based on phase feature and distance transform[J]. Pattern Recognition Letters, 2012, 33(12): 1601-1613. doi: 10.1016/j.patrec.2012.05.009 |
[3] | LUCAS B D, KANADE T. An iterative image registration technique with an application to stereo vision[C]//IJCAI'81:Proceedings of the 7th International Joint Conference on Artificial Intelligence. San Francisco, CA:Morgan Kaufmann, 1981:674-679. |
[4] | 王晓卫, 宁固. 一种改进的基于光流的运动目标的检测算法[J]. 武汉大学学报(信息科学版), 2003, 28(3): 351-353. ( WANG X W, NING G. A modified object tracking algorithm based on optical-flow[J]. Geomatics and Information Science of Wuhan University, 2003, 28(3): 351-353. ) |
[5] | STAUFFER C, GRIMSON W E L. Adaptive background mixture models for real-time tracking[C]//Proceedings of the 1999 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Washington, DC:IEEE Computer Society, 1999:246-252. |
[6] | KIM K, CHALIDABHONGSE T H, HARWOOD D, et al. Real-time foreground-background segmentation using codebook model[J]. Real-Time Imaging, 2005, 11(3): 172-185. doi: 10.1016/j.rti.2004.12.004 |
[7] | MADDALENA L, PETROSINO A. A self-organizing approach to background subtraction for visual surveillance applications[J]. IEEE Transactions on Image Processing, 2008, 17(7): 1168-1177. doi: 10.1109/TIP.2008.924285 |
[8] | WANG H, SUTER D. Background subtraction based on a robust consensus method[C]//Proceedings of the 2006 18th International Conference on Pattern Recognition. Washington, DC:IEEE Computer Society, 2006:223-226. |
[9] | BARNICH O, VAN DROOGENBROECK M. ViBe:a universal background subtraction algorithm for video sequences[J]. IEEE Transactions on Image Processing, 2011, 20(6): 1709-1724. doi: 10.1109/TIP.2010.2101613 |
[10] | 苏延召, 李艾华, 姜柯, 等. 改进视觉背景提取模型的运动目标检测算法[J]. 计算机辅助设计与图形学学报, 2014, 26(2): 232-240. ( SU Y Z, LI A H, JIANG K, et al. Improved visual background extractor model for moving objects detecting algorithm[J]. Journal of Computer-Aided Design & Computer Graphics, 2014, 26(2): 232-240. ) |
[11] | HUANG S C. An advanced motion detection algorithm with video quality analysis for video surveillance systems[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2011, 21(1): 1-14. doi: 10.1109/TCSVT.2010.2087812 |
[12] | KUMAR S, YADAV J S. Segmentation of moving objects using background subtraction method in complex environments[J]. Radioengineering, 2016, 25(2): 399-408. doi: 10.13164/re |
[13] | KUMAR S, YADAV J S. Video object extraction and its tracking using background subtraction in complex environments[J]. Perspectives in Science, 2016, 8(C): 317-322. |
[14] | OTSU N. Threshold selection method from gray-level histograms[J]. IEEE Transactions on Systems, Man & Cybernetics, 1979, 9(1): 62-66. |