海量监控视频快速回放与检索技术
2012-06-15周渝斌
周渝斌
(上海工程技术大学机械工程学院 上海 201620)
海量监控视频快速回放与检索技术
周渝斌
(上海工程技术大学机械工程学院 上海 201620)
为解决海量监控视频的快速浏览和检索,介绍了一种基于目标索引的视频摘要和检索方法。该方法在光流分析的基础上,在画面的静止区域更新背景,运动的区域利用差分法分割出运动目标图像。经过优化的快速特征匹配和建立运动跟踪模型后,根据目标运动轨迹,按照时空距离进行聚类。在以目标图像数据和运动参数进行XML结构化存储为索引的基础上,最后在检索时,将符合条件的所有目标图像按照其原有时间顺序逐帧贴到同一个背景图像中,形成动态的摘要视频。该方法剔除了背景中大量的时空冗余信息,可在较短回放时间内浏览全部有用目标,显著提高海量监控视频的查阅效率。
视频摘要 视频浓缩 视频检索 视频监控 目标跟踪
1 引言
遍布大街小巷的监控摄像头实时录制了海量的视频数据,不仅有效地遏制了一些犯罪隐患,同时也提供了犯罪的证据,给警方破案带来了很大的便利。然而,这些海量视频数据的查找、分析工作常常会耗用警方大量的时间和人力。例如2012年1月6日上午发生在南京的银行枪击杀人抢劫案,警方为尽快锁定劫匪在南京的活动轨迹,动用了500多名民警24小时不间断工作,对上万小时的视频断进行逐一甄别,终于找到了两段共14秒有用视频,为警方破案提供了宝贵的线索。由此可见,如何忽略监控视频中大量的无用信息而快速检索目标信息,是当前视频监控一种重要的研究课题。
传统的快速视频浏览技术有两种,一种是快放,即以正常速度的几倍至十几倍的速度回放原始视频,为快速解码,通常需要丢帧;另一种称为视频摘要,其实现方法是通过一定的规则提取关键帧或关键视频片段,来实现静态或动态的视频摘要。但这两种方法都以损失大量有用信息为代价来达到快速浏览的目的,也可以称之为有损视频摘要,不适合刑侦破案的需要。
本文介绍一种利用面向运动目标时空分析的技术来建立视频的摘要信息,将原本在不同时间出现的运动目标同时播放出来。这是一种面向目标的摘要提取方法,能同时实现快速视频检索切不损失有用信息,也可称为“视频浓缩”技术,或者称为“视频字典”。在提出利用时空分析浓缩视频形成摘要方法后,后来A.Rav-Acha和Y.Pritch等人开始将这种技术应用到单场景监控视频进行时间压缩摘要分析,2009年波斯顿大学的Z.Li又提出一种视频条带时空分析的摘要方法。这些方法都是以动态目标分析为基础,当目标静止后就不再跟踪。利用这种概念从原始视频中提取感兴趣运动目标后建立索引目录,可形成目标字典数据库,通过字典词条,快速检索到目标运动数据并定位到原始视频片段。查询摘要的时候,可根据用户输入的查询条件,如尺寸、速度、颜色等,过滤掉不符合条件的目标,剩下的目标在调整遮挡参数后,逐帧融合到背景画面中,形成一个全新的视频段,其长度也根据画面中目标的数量和密度而变化。一段监控视频通常可压缩成原始长度几十分之一的新视频。用户甚至可在短短几分钟内,就能浏览完十几个小时的监控视频。由于这种技术可以大大加快案件侦破中的海量视频检索,所以也是目前警方最迫切需要的一种新智能视频分析技术。本文提出了运动跟踪的目标提取方法,可解决对目标在运动过程中不断变化运动状态下仍然可以有效跟踪的问题;同时对实际应用中遇到的几个问题提出了解决方法,如快速检索的数据组织方法,多线程的同步等。
2 序列图像的运动估计与目标分割
2.1 时空图像体运动估计
由于监控相机绝大多数都固定不动,背景图像比较稳定,序列图像的变化主要来源于运动物体,因此,运动分析可以从时间相邻帧的像素梯度最小的方向获得,静止区域像素的梯度方向显然与图像平面法线平行,其他方向则为运动区域,如图1所示。
图1 序列图像的运动估计
定义运动目标在时空图像体中的速度v=(u,v,1),其中u、v分别为空间x、y方向的速度,时间轴方向速度为1。像素灰度值g(x,y)在轨迹s方向上变化为0,即dg(t)/ds=0,该方程即为运动约束方程:
由于光照变化、物体变形和噪声等影响,实际上为dg(t)/ds→0,找到最小误差即可:
上式最小值可以通过不同的测度达到,若以w(x,t)小窗口的图像差分为基准进行运动估计,上式最小值处即为最匹配位置,即计算:
窗函数缩写后,上式可简化成:
上式将运动变成张量J的特征值分析,减少了计算量,只要找到最小张量方向,即为运动方向。这种采用在时空图像体中计算运动光流后,其图像平面的光流F跟时空中的运动关系可定义为:
其中φx和φy分别为物体x、y运动方向与像法线的夹角,上式可用来计算时空图像序列中运动目标的速度,据此建立目标的运动模型,以提高跟踪的可靠性。
2.2 背景学习与更新
光流虽然可以分割出运动区域,但是不可能对每个像素进行计算,否则计算量太大,而且光流也会把目标的静止部分分割成背景。从背景分割出目标的方法很多,基本上都是基于图像差分法,经过优化后能有效分割出目标外形轮廓。帧间差分法可获得运动目标信息,但是无法分割静态目标。背景差分法能较完整地分割目标,本文采用两阶段背景差分法分割目标,并改进了学习策略。
背景学习的关键在于如何有效、快速的背景更新,特别在天气变化、车灯等原因导致画面亮度变化时,背景的更新速度要能跟进这种变化才能持续有效地使用差分法找到目标。当更新太快时,静态目标、树叶等小的目标会影响背景像素的灰度值,反而带来新的干扰。本文提出一种两阶段背景更新方法,在保证背景快速学习的同时,可有效消除光线突变、运动、静止目标等干扰。该方法在第一阶段学习过程中,每次记录下更新区域,当所有的区域都更新完毕后,进行第二阶段。经过第一阶段后,通过背景差分可提取出运动目标区域,第二阶段只更新非运动目标区域。当目标从运动变成静止时,可通过对运动目标的跟踪,判断出运动目标所在的区域,而这时目标还没被更新到背景中,该区域能够被差分出来,该部分也从背景可更新区域中扣除。第一阶段帧间差分得到静态区域,加上静止目标区域,剩下的区域像素才被更新。
背景差分后的像素灰度进行阈值分割可获得目标区域:
上述阈值取Thres=20时,可获得目标外形轮廓,分割出目标区域,但是当整幅画面的亮度都出现较大的变化时,阈值失效,如车灯或画面中进入较大的白色或暗色物体,相机的自增益会造成整个画面的亮度变化,导致差分结果异常。采用阈值随亮度自适应变化的分割方式,即差分后的阈值自动跟着当前图像亮度的变化自动调整,将差分图像的平均亮度加上20作为阈值:Thres=Avg(fdiff)+20,能适应多数情况下的亮度变化。这个方法虽然很简单,但是很多算法,如ViBe、OpenCV的codebook都没有这样做,导致实际测试效果较差。
3 目标跟踪
摘要重建是以每个运动目标为单位,将每个目标的全生命周期信息作为一个整体建立摘要索引,为此需要跟踪目标的运动轨迹,并根据运动参数和轨迹进行分类。
帧间目标的跟踪通过建立目标的运动模型后可实现。跟踪目标质心在序列图像中位置的运动,而不必对每一个特征点进行跟踪。帧间的立体运动信息包括速度和线性加速度,暂不考虑角加速度,将速度在两个方向上进行分解:水平vx和垂直vy,每个方向的当前运动速度都等于匀速和加速度之和,可得到:
由于帧间时间间为1,下一帧的水平方向速度vx就是当前帧跟前一帧间的运动矢量MV,加上当前帧运动矢量跟上一帧运动矢量的变化量,即加速度ax,垂直方向也是如此。于是每一点的运动矢量应该是包含两个方向的匀速运动和加速度:(vx,vy,ax,ay)。帧间运动速度的变化量,包括加速度ax、ay,可以用来预测目标质心点在下一帧中的位置。预测的位置可以缩小追踪匹配的范围,加快运算速度,目标每次初始进行跟踪时,(⊿x,⊿y)可取较大的范围,一旦跟踪确定后,新的(⊿x,⊿y)可以根据其帧间速度和加速度缩小为 xi±(vx+ax+εx),yi±(vy+ay+εy)。(εx,εy)为修正值,可取(εx,εy)=(0.1xi,0.1yi)。
运动预测的另一个好处是,当目标被遮挡后,要根据其原本的运动速度,预测其位置,特别是小目标被大目标挡住后,根据运动方程预测目标的位置,在重新出现后,能在小范围内继续跟踪。如行人被汽车完全挡住后,行人可能连续多帧从画面中消失,为了保证行人重新出现后继续跟踪,在遮挡发生后,根据行人遮挡前一刻的运动模型,继续预测其运动位置。
4 路径分类
对跟踪到的目标可计算出运动速度、加速度、行为模式、运动位置等多种参数,这些参数可以用来进一步进行异常行为判断,如徘徊、越界、逃跑等。但是,在视频浓缩中,主要满足用户的条件检索,将不同时间出现的多个符合条件的目标,同时显示在背景画面上,并保持各自原有的运动轨迹,以正常速度播放。如果不对目标的轨迹进行运算,在回放的时候,不同时间出现的运动目标可能出现在画面中的同一位置,导致目标图像层叠而无法分辨。
4.1 目标间的时空距离
运动目标的图像、参数按其原本的时间顺序存入数据文件,回放的时候,再按照原有的时间顺序保持其运动趋势,同时以目标像素替换背景中相应位置的像素,就可以动态地还原运动目标的空间和时间信息。为了提高回放效率,总是将多个不同时间出现的目标贴在同一背景上,经常会出现有的地方多个目标间相互遮挡,而有的地方却没有目标的现象。为了提高回放的可视性,需要根据目标的时间位置信息,即轨迹,来调整其在回放的时间顺序。
根据目标的轨迹调整目标的回放时间,要计算回放时目标间遮挡系数,据此定义两个目标在t时刻轨迹间的时空距离为:
其中li(t1)和lj(t2)分别为第i和第j个目标在t1和t2时刻的位置,t2=t1+△t,△t为目标j的调整时间。假设两个目标的半径分别ri、rj,可通过下式判断是否发生遮挡:
由于目标大小在不同时刻不断变化,ri、rj值也要更新。可以计算两目标发生遮挡总数为:
每设置一次时间调整值△t,可重新计算C,可找到最小遮挡次数时的值△t。
4.2 运动轨迹分类
由于画面中的目标很多,所有目标间都进行这种相关运算显然不合适,因此,需要对目标的轨迹进行分类,找到几条常用路径。当同一类目标同时出现时,才进行距离运算。在一般监控场景中的路径都不会很多,绝大多数只有5~8种主要路径。如图2中的厂区门口,可看出马路上运动目标的路径只有5种:机动车道、非机动车道和三条不同方向进出小区的路径。
图2 目标运动轨迹及区域分割
如果选择SVM方法对这些轨迹进行分类则需要大量数据进行训练,而实时监控中有多达成千上万个目标需要进行分类,显然不切实际。无监督k-medoids聚类方法对只有几种类别的路径分类比较有效,速度也较快。首先确定路径区域,将路径区域分割成大小相等的矩形,计算每个矩形中的目标出现的频次。然后对根据每个目标的起始和终点位置计算运动方向,将运动分为8个方向,根据运动方向进行初分类。搜索所有的矩形区域,当矩形中的运动方向满足g∈(-gr,gr),r=0,1,2,…,7,其中gr为8个方向的角度阈值。判断该区域属于某个方向后,统计该方向出现的频次,建立方向频次矢量参数P(X,Y,G,N),X,Y为矩阵的中心点坐标,G为方向,N为频次。根据该参数进行聚类,可以将所有的路径区域分开,同方向不同位置的机动车道和非机动车道由于空间位置X,Y不同,被分割在不同的路径类。经过分类后的轨迹不仅为检索回放时提供条件查询,同时可由时间调整以减少相互遮挡、提高渲染效果。
5 摘要重建
浓缩视频在检索的时候,根据用户输入的检索条件,将满足条件的多个不同时间出现的目标,按照它们的空间位置,调整时间差△t,以C→min最小遮挡的方式,同时显示在背景画面上,并保持各自原有的运动轨迹,以正常速度播放,同时满足慢放、快放等。将目标图像按照被调整的时间重新贴在背景上并实现实时回放,同时支持用户动态调整目标密度、播放速度,需要短时间内快速检索出这些数据,所以目标数据的存储方式必须有较高的效率。
5.1 数据存储
当动态的摘要视频按照时间顺序逐帧播放的时候,同时支持用户选择其中的目标,查看相应的参数,如时间、速度、原始视频,回放过程中每一个目标的参数和对应的图像数据要同时读出来,所以在摘要分析时,每个目标的参数和图像交叉存储在同一个文件中,如图3所示,d为参数,p为图像。确认目标消失后,将目标数据存入文件。由图3中可以看到,目标存储的顺序并没有按照其出现的时间顺序,而是按照消失的时间顺序。但这并不能影响回放,因为回放是按照目标时空遮挡来调整顺序的。
图3 目标数据队列n(1,2,3…):目标序号和统计参数;d:参数;p:图像
由于目标数据是按照一个整体存入文件,所以读出时也是按照一个整体读入内存。每个目标数据参数和图像数据全部读出后,在新目标加入前,所有的操作都是内存操作,节省了大量的磁盘文件操作。另外,为了加快目标检索速度,每个目标都建立一个检索数据结构,存入索引数据文件。由于每个目标数据在写入之前已经结束,数据长度已知,将目标数据的长度、目标路径类型、目标大小、平均速度等各种统计参数当作索引,用XML存储,根据目标的类型存入不同的节点。回放时通过目标起始位置的参数用文件定位的方式快速搜索到某一个目标数据的起始位置,均匀读出各类目标。用这种方式检索数据,在回放过程中使用很少的时间就可以通过索引读出大量的目标数据,实现快速实时摘要出视频的重建和回放。
5.2 目标队列调整
目标在背景上渲染的顺序按照先前的路径分类方式,经过调整时间差,计算时空距离后决定是否要渲染在背景上。将第一个目标贴在背景画面后,以后的每一个目标读出后,都要计算同类别目标间的时空距离,如果出现重叠遮挡,则将该目标的渲染时间往后移,直至不遮挡。如果某一段连续时间内同一路径上的目标很多,则读入内存的目标数量远远大于渲染在背景上的目标数量,所以在读入的时候,要有选择地读出在不同路径上的目标数据,对于相同路径上的目标数据达到一个最大值后,不再继续读入。这样虽然同时渲染在背景上的目标数量有可能少于设置定数量,即画面中的目标数量是随时间不断变化的,但是这样的变化并不会很大,在一个路径上的目标经过几帧后就会让出其位置空间,其他目标就会补上,从长期来看,背景中不同位置的目标大致总能被占满。图4a中没有做时间调整,许多目标叠加在一起,遮挡严重,经过时空距离运算后,将出现同一类相互遮挡的目标播放次序时间调整,目标间遮挡明显减少,提高了视觉清晰度,如图4b中所示。
图4 目标显示时间调整后的空间位置
5.3 多线程任务同步
摘要分析过程中,背景学习和目标跟踪同时进行,分析的目标要写入文件。回放过程中,从文件读入多个目标的参数和图像数据,然后根据路径调整时间后按次序贴到背景中,同时还要不断更新背景图像,响应用户操作等。这些不同的任务要同时并行处理,特别是回放摘要时,每帧重建的画面要等时间间隔匀速地渲染出来,多个任务之间不能相互等待数据,任务必须是非阻塞式的。结合当前的多核CPU采用多线程同步技术,可加快摘要数据的访问和回放。
回放中,负责数据更新的写线程不断检查和更新目标队列,负责渲染的读线程从队列中取数据。为防止访问冲突,同时考虑到时空遮挡而进行的时间调整,数据队列中的实际目标数量比可读数量多10~15个。队列是单链式,从前往后读目标数据,当目标最后一帧读完,从队列中清除,继续往后,一直到倒数第三个目标。更新线程,定时检查队列中的目标数量,当数量比预定值小时,开始读出新的目标数据,然后添加在队列尾部。由于添加新目标时,在读出新目标数据时不更新队列数据,只是在最后一个目标尾部添加链接地址,这时可锁定数据,由于锁定时间很短,可有效地避免访问冲突。在每次添加时,可一次性添加5~10个新目标,进一步降低访问频次。
5.4 目标检索与过滤
目标跟踪过程中,可以提取到多种类型的特征参数:速度、大小、颜色、区域等,这些参数写入数据库后,在回放过程中,可以用来进行目标过滤,实现条件查询。颜色和区域查询相对简单,对于速度和大小,由于镜头画面与真实空间的仿射变形,同一个匀速目标离镜头近时较大较快,逐渐远离镜头后,外形变小,速度也变慢,需要对查询参数进行修正,或者将不同空间位置的目标参数归一化,在统一的数据空间内进行目标过滤。
6 总结与展望
本文大致全面地介绍了一种面向目标的动态监控视频摘要实现方法,由于篇幅关系,还有很多的理论和技术无法详细论述,例如在目标分割中,被遮挡后跟踪方法中的特征更新、半遮挡后目标的分割、树叶等干扰目标的过滤等,还有海量摘要数据的存储与快速检索、实时动态摘要视频的重建,以及多场景关联的特征匹配和搜索等课题,都需要进一步深入研究去解决,而每一个课题都还有很多的理论和实际问题有待解决。希望更多的研究人员加入该课题的研究,发现和解决遗留问题,只有这样视频摘要才能早日形成一个满意的应用型技术,为刑侦人员提供完善的监控视频检索工具。
1.王毅,李弼程,彭天强.视频摘要技术[J].信息工程大学学报,2009,10(4)
2.陈宏.基于图像聚类与挖掘的视频摘要方法[J].视频应用与工程,2011,35(11)
3.姚彬,史萍,葛菲,等.监控视频的摘要提取方法研究[J].视频应用与工程,2010,34(4)
4.M.Irani, P.Anandan, J.Bergen, etal.Efficient representations of video sequences and their applications[J].Signal Processing:Image Communication,1996,8(4)
5.A.Rav-Acha,Y.Pritch,S.Peleg.Making a Long Video Short:Dynamic Video Synopsis,Proc.IEEE Conf[C].Computer Vision and Pattern Recognition,2006
6.Y.Pritch,A.Rav-Acha,A.Gutman,etal.Webcam Synopsis:Peeking Around the World,Proc.Int’l Conf[C].ComputerVision,2007
7.Z.Li,P.Ishwar,J.Konrad.Video conden sation by ribbon carving.IEEE Trans[C].Image Process,Nov.2009,18
8.B.Jahne.Spatio-Temporal Image Processing:Theoryand ScienticApplications[J].Computer Science,1993,751,(8)
9.熊亮,刘伟铭.基于背景Codebook模型的前景检测算法[J].科学技术与工程,2010,10(9)
10.高韬,刘正光,张军,等.基于特征点的多运动目标跟踪[J].电子与信息学报,2010,32(5)