VSAM(VideoSurveillance and Monitoring)视频监控系统
Robotics Institute CMU
1:引言
2:试验床介绍
3:基本的视频分析算法:运动目标检测,跟踪,分类,简单行为识别
4:地理空间模型,感知网络标定,三维地理位置估计,目标图形显示
5:多摄像机协作
6:成果展示及未来的研究计划
VSAM可自动解析场景中的人和车,检测目标并按语义分类,如人、人群、车,以及在此基础上的行为分析,如走动、奔跑。利用VSAM,单个人即可监控复杂区域,跟踪多个人、车以及识别其活动。
SPU分析视频中出现的实体和事件,符号化后传给OCU,可兼容不同类型的传感器,无缝集成到系统中,在SPU上处理减少了网络负载,不需要传输全部视频数据。系统可处理不同类型的传感器,包括带云台控制的彩色摄像机,固定视角的单色相机,热成像传感器,全景相机,车载移动摄像机,机载移动摄像机。例如在车载相机系统中,目标检测和跟踪是在车内系统中完成的,结果通过无线网以符号数据的形式传给OCU,车载移动相机的问题在于如何快速调整摄像机姿态。
OCU接受各个SPU传回来的处理结果,将信息集成后推断出用户可能感兴趣的事件,图形化的呈现给用户。OCU需要保证各个传感器都被充分使用,OCU一个由用户指明的任务列表,任务类型包括跟踪指定目标、监视指定区域、检测指定事件等等,这些任务会被分配给指定的传感器。传感器的分配采用一个代价函数进行评定,可计算出将某传感器分配给某项任务的代价,评价指标包括任务的优先级、传感器的负载、传感器对目标的可见度等等,通过贪心算法最优化系统性能。
VSAM提供一个可交互的图形用户界面,包含监控区域的合成地图,在其中标出人和车,而不直接显示原始画面,这样可大大节省带宽,只有当用户主动选择时才显示某传感器的原始画面。
(1)跟踪目标,显示轨迹
(2)显示传感器画面,云台控制,抓图
(3)区域监控,创建ROI,设定触发事件的目标类型(人或车)、事件类型(进入、通过、驻留)
使用两种通信协议
(1) CMUPA(Carnegie Mellon UniversityPacket Architecture)
6个数据域封装成一个包:命令,传感器,图像,目标,事件,兴趣区,头部中指明6个数据域中哪几个可用。
(2) DIS(Distributed InteractiveSimulation)
用于在可视化终端上输出检测结果。
共14台摄像机,10台通过光纤接入,3台通过无线接入,1台便携型通过无线接入。其中有6台有可控云台,莱卡自动跟踪经纬仪。
VSAM可自动解析场景中的人和车,检测目标并按语义分类,如人、人群、车,以及在此基础上的行为分析,如走动、奔跑。目标具有地理位置信息,可用来进行更高级别的跟踪,如多摄像机联合跟踪同一目标。
运动目标检测可为后续的识别、分类、行为分析提供便利。
常用的几种方法:
(1)帧差法[1],简单快速,可适应动态背景,但不够准确,不能分割出完整的运动目标。
(2)背景减除法[13,29],不能适应动态背景以及光照变化。
(3)光流法[3],可检测出独立的运动目标,但计算复杂,无法实时应用。
VSAM系统实现了三种方法:第一种是自适应背景减除和三帧差的混合方法,此方法速度快并且效果好(3.1.1)。第二种方法会保存检测出的目标,这样对于短时间静止不动或被遮挡之后继续运动的目标有较好的表现(3.1.2)。第三种方法可适应持续移动的摄像机(3.1.3)
自适应背景减除算法[18]和三帧差算法的混合方法。
自适应背景减除算法的一个缺点是场景中的固定目标移动出去后会留下空洞,此后背景需要一段时间来适应此空洞。
而帧差法往往无法提取运动目标的完整形状,因为目标内部具有相同灰度值的像素点经过帧间差后为0,被排除在前景之外。
所以我们先用三帧差法检测合法运动区域,然后用背景减除法提取整个运动区域。
三帧差法:连续的三帧:I1、I2、I3,只有当(I3-I1) 和(I3-I2) 都大于阈值时才认为此点是运动目标。
将运动区域形成连通域,连通域内部的像素填充为前景像素。
分层检测基于两点:像素分析和区域分析。
像素分析:通过一段时间对像素灰度值进行观察,决定其是固定不变的还是临时存在的。
区域分析:决定一块区域是运动区域还是静止区域。
通过观察得出像素点的灰度值变化的三个特点:
(1) 有运动目标通过的像素点,在目标到达时有灰度值阶跃,然后有一段不稳定期,目标通过后再次阶跃到初始值。
(2) 有运动目标到达并停留的像素点,在目标到达时有灰度值阶跃,然后有一段不稳定期,目标停留下来后会达到一个新的较稳定点。
(3) 由光照、气象变化引起的灰度值改变趋向于平滑变动,没有阶跃。
为了找出这些变化的本质,两个因素很重要:一是是否发生灰度值的阶跃,二是经过一段时间的不稳定后稳定下来的灰度值。为了解释这些阶跃的意义,需要观察阶跃发生之后的灰度值变化曲线图,这会带来一定的时延。
It:在时间t时的像素灰度值,t距当前有k帧间隔。
触发值T:当前灰度值与过去5帧灰度值差的绝对值的最大值。
稳定度度量S:从时间t到当前的灰度值变化的方差
对于像素点M
if((M == 背景点或目标停留点) and (T >threshold) )
M= 运动点
else{
if((M == 运动点) and (S <threshold) ) {
if(稳定的灰度值 == 背景灰度值 )
M= 背景点
else
M= 目标停留点
}
}
所有非背景的像素点M(运动点、目标停留点)被聚合成连通域R
if(R == 运动点 ) //R中的所有点都是运动点
R是运动目标
elseif( R == 目标停留点 ) { //R中的所有点都是目标停留点
R= R – ( L(0) + … + L(j) ); //减去所有已指定为其他层的像素点
if(R != 0 ) { //若R中还有剩下的像素
新建一个层L(j+1) = R
R是停留目标
}
else{ //R中既有运动点又有目标停留点
对于R – ( L(0) + … + L(j) )进行空间聚类
对于每一个子区域SR {
if(SR == 运动点 )
SR是运动目标
if(SR == 目标停留点 ) {
新建一个层L(j+1) = SR
SR是停留目标
}
if( SR == (目标停留点 + 运动点) )
SR是运动目标
}
}
所以,每个停留目标被看做背景之上的一个层,并且所有停留目标层和背景都用IIR( Infinite Impulse Response 无限脉冲响应)滤波进行更新,以适应光照变化和噪声。
一般背景减除算法不适用于云台摄像机的运动目标检测。
提出一个全球面的背景模型,在其上可以使用背景减除法,
(1) 背景更新:当摄像机巡视球面模型不同区域的时候,背景必须跟着更新,而这依赖于必须精确知道摄像机的视角,也就是当前画面在整个球形背景中的位置。虽然可以读取摄像机的平移和倾斜角度,但这要求摄像机时固定的,并且由于通信延时,无法实时的精确的获取相机的视角信息。我们的解决方法是保存球形背景的多张图片,借此推断摄像机的视角。
(2) 背景减除:当摄像机移动的时候,球形背景的不同部分被检索并与当前画面相减来获得独立的运动目标。
主要的问题是,如何将当前帧与对应的背景图片实时关联起来,大多数图像配准技术都无法实时应用。我们提出了一种新的配准方法,只使用包含关键信息的像素子集进行配准,使得处理速度大大加快,可以实时应用,详情见[8]。
1)当前视频帧;2)最相近的背景图;3)将当前帧变换到背景图坐标;4)与背景图做绝对差
许多目标跟踪系统基于Kalman滤波,但纯粹的Kalman滤波方法有缺陷,因为他是基于高斯滤波的,不支持同时多目标。我们扩展了基本的Kalman滤波方法,使得可以跟踪多个目标。
预测目标位置
预测目标位置可减少需要检测的运动区域个数
P:目标在当前图像中的位置,δP:位置误差,V:速度,δV:速度误差
Δt时间之后的位置:Pn+1 = Pn + Vn*Δt,误差:δPn+1 = δPn +δVn*Δt
目标匹配
然后通过用当前帧中的目标在将来帧中做模版匹配,找到误差度量函数值最小的区域作为预测区域。
目标跟踪
目标跟踪的很大一部分工作是匹配。有以下五种方案:
1) 已存在的运动区域不匹配任何已知目标,此时应新生成一个目标,其置信度设为较低级别。
2) 已知目标不存在于任何运动区域中,表明或者目标已离开视场,或者被遮挡,或者未被检测到,这时应降低目标的置信度,如果置信度低于一个阈值则将此目标删除。
3) 一个已知目标唯一匹配一个运动区域,这是最好的一种情况,目标的轨迹将被更新,置信度增加。
4) 一个已知目标匹配多个运动区域,这种情况发生是因为一个目标分裂为多个独立目标,例如人群分裂为单个人或人从车中出来,或者是由于同一目标的像素点未被聚类在一起。这时最佳匹配区域被选为新的目标位置,其他运动区域作为新的目标。
5) 多个目标匹配同一个运动区域,这可能由于两个目标相互遮挡,或两个目标融合在一起(例如多人融合为人群)。这时,合并后的多个目标被分别跟踪,如果他们以同一速度维持一段时间,则认为他们已合成为单个目标,否则继续分别跟踪。
一般来说,匹配后目标的模版会作为运动区域的模版,并增加置信度,但如果有多目标匹配同一运动区的情况,可暂时不更新。
未匹配的目标保持当前的位置、速度和图像模版,其置信度下降,当低于阈值时,丢弃此目标,从目标列表中删除。高置信度的目标(表明已跟踪了很长一段时间)在置信度低于阈值时暂时不删除,多保留一段时间,以防止临时被遮挡后找不到。
消除误报
摇动的树,移动的影子,以及视频信号中的噪声都可能被检测为运动目标。合法的运动目标的特点之一是持续性,另一特点是移动轨迹的目的性(树的摇动轨迹是无目的性的,人和车的移动轨迹是有目的性的)
目标的运动显著性(salience)检测。
显著性检测算法基于光流(opticflow)的累积,然而,当流的方向改变时,累积值被置为0,所以,对于摇动的树这类目标,其累积值一直不会很大,而有目的性运动目标的累积值将很大,可用来区分这两类目标。
VSAM的最终目的是为了能是被单个实体,例如联邦快递卡车、下午4:15去奥克兰的巴士。系统中使用了两种分类算法,第一种是基于视觉的神经网络分类器,可识别三类目标:单个人、人群、车辆;第二种方法使用线性判别分析(LDA),可区分车辆类型(箱车、轿车、卡车)和颜色,并且此方法还可以通过训练来识别一些特别车辆,如UPS卡车和校园警车。
神经网络的输入特征是基于图像和场景的目标参数:周长的平方/面积,面积,目标包围盒的长宽比,摄像机缩放级别。有三种输出类别:人、车、人群。
在视频的每一帧图像上,对于运动目标都进行分类,分类结果保存在一个直方图中,每过一个时间段,具有最大概率的类标被描述为此目标的类别(详见[20])。
实验结果:
同时还使用了其他特征进行分类实验,例如根据目标的地理位置信息以及摄像机参数,可大体估计出目标的真实宽度w和高度h,然后根据长宽比例可准确的估计出目标的类别。
另一个分类特征是根据目标是否刚体,通过检测其外表变化来判断是否刚体详见[28],
这种方法用来区分汽车(刚体)和行人(非刚体)非常有效。
系统中的LDA方法有两个子模块:一个用来对形状分类,另一个用来对颜色分类。每个子模块在独立的判别空间中进行分类,使用K近邻(KNN)算法计算最可能的类别。
LDA的原理是,将高维特征空间中的带上标签的数据(点),通过投影的方法,投影到维度更低的空间中,使得投影后的点,会形成按类别区分,一簇一簇的情况,相同类别的点,将会在投影后的空间中更接近,即使得投影后类内距离最小,类间距离最大。
在对目标的特征向量x进行分类的时候,首先将x转换为判定空间中的一个点y,然后计算y到每个带类标的样本点的距离,选择k个距离最近的样本点(KNN)。根据KNN分类规则,根据这k个样本的类别来决定目标的类别,k个样本到y点的距离做权重。
形状分类,离线处理部分
基于形状的监督学习目标分类方法分以下几步:
(1) 人工收集形状图片并打上类标,这里我们指定了六种形状:人(单个以及群体)、轿车、箱车、卡车、高尔夫球车、其他(噪声),以及三个特殊类别:联邦快递车,UPS快递车,警车。总共有大约2000个样本图片。
(2) 系统计算每个样本图片中目标区块的面积、重心、长宽、以及沿x轴和y轴的1阶、2阶、3阶矩,构成11维的图像特征向量。
(3) 系统使用LDA计算一个形状的判定空间。
形状分类,在线处理部分
在线部分全部自动执行,包括:
(1) 计算输入图像的面积、重心、长宽、以及沿x轴和y轴的1阶、2阶、3阶矩,构成11维的特征向量。
(2) 将特征向量投影到判定空间。
(3) 计算距离特征点最近的10个样本点,为目标的类别进行投票。
颜色分类,离线处理部分
目标的主体颜色同样使用LDA进行分类,由于观察到的颜色会随着光照、天气等原因发生变化,所以使用一些离散的颜色集来适应这些变化。
(1) 人工从训练图片中分割颜色,将他们分为六类:
①红-橙-黄
②绿
③蓝-淡蓝
④白-银-灰
⑤深蓝-深绿-黑
⑥深红-深橙
总共收集了天气状况良好情况下的1500张图片,和多云天气下的1000张图片。
(2) 在每张样本图片上,采样25个像素点的RGB灰度值,然后系统使用以下公式将RGB值映射为(I1,I2,I3)颜色空间:
然后对所有计算出的(I1,I2,I3)值取平均得到一个三维颜色特征向量。
(3) 系统使用LDA计算一个颜色的判定空间。
颜色分类,在线处理部分
在线部分全部自动执行,包括:
(1) 系统对输入区块的RGB灰度值每隔一个像素进行一次采样。
(2) 将RGB值转换为(I1,I2,I3)颜色空间,得到特征向量。
(3) 将特征向量投影到判定空间,计算到每个样本的距离,找到10个最近的样本点,为目标的颜色类别进行投票。
实验结果
实验精度大约为90%,但遇到下雨、下雪、清晨、夜间、背光、车体反光等情况时结果不理想。
每个车辆的样本图片,都要分为车头向左和车头向右分别训练,所以也只能检测车辆的侧面照片,如果出现正对车头或者车尾视角的图片,就无法识别。
目标检测并分类为人和车之后,我们更想知道这些目标在做什么。行为分析是视频理解领域的一个重要的开放问题。我们开发了两个原型方法:第一种方法根据目标的几何形状改变对行人的走和跑进行步态分析。第二种方法使用马尔科夫模型学习分析多目标的简单交互,例如两个人碰面,或者一辆车开入画面并放下一个人。
在视频中实时检测并分析人的行为在最近才变得可行(指2000年),如[29]中的Pfinder和[13]中的W4,这些算法完成了人的识别和分析中的一些初步工作,但还有很多不足。通常来说,这些方法都是首先检测人的手、脚、头,然后跟踪,再和预先设定的模型进行匹配,例如cardboard模型[16]。
我们提出了一种分析行人步态的星型骨架方法,通过检测目标轮廓上的极值点来构成星型骨架。具体来说,首先找到目标轮廓的几何中心(centroid),然后计算轮廓上所有点到几何中心的距离,形成一个距离分布函数,经平滑后求得所有极大值点即为骨架的外端点,如下图:
分析行人步态的一种方法是分析关节位置的周期运动,但本系统中检测出的行人太小,无法实时监测出关节位置。另一个与行人步态相关的是其姿势,通过基于星型骨架的分析,可以判定行人的姿势:
骨架的最上面部分代表人体的躯干,下面两个分叉代表人的一双腿。
θ:左腿的垂直夹角
φ:躯干的垂直夹角
下图展示了行走和跑动的人体骨架序列,以及θ和φ两个角度值的变化统计,数据取自8fps的视频。
可以看出,根据φ的平均值,可以区分出走和跑,同样,根据θ值的变化频率也可以区分出走和跑。
首先检测出的目标属性,设定几个行为标签,目标的行为是可以最大化观察到指定属性的概率的那个标签,使用马尔科夫模型来判定属性和行为间的概率关系。
测试场景中包含人和车的交互,分为以下几个属性集:
目标类别:人、车、人群;
目标行为:出现、移动、停止、消失;
交互:近邻、远离、靠近、无交互;
要识别的行为有:
(1) 人进入车中,(2) 人从车中出来,(3) 人离开建筑物,(4) 人进入建筑物,(5) 车停下,(6) 人碰面
前端设备采集的所有数据,包括目标图像、日期、时间、天气信息、温度、轨迹、摄像机参数、目标分类信息,通过一个基于web页面的系统都可以随时随地查看。用户可得到场景内所有人和车的行为报告,并可通过点击超链接查看详细记录和截图。
在移动摄像机中跟踪运动目标具有很大难度,主要是要克服相机的自移动。当新的一帧到达时,系统将其变换到参考图像的坐标系中,然后再进行运动目标的检测。
在移动平台上,人工操作摄像机来跟踪目标很容易使操作者疲劳,Sarnoff通过图像校准技术可固定摄像机视角,自动跟踪目标,或者使摄像机瞄准某一静止目标不动[4,12,27]。
机载摄像机资源宝贵,经常用来跟踪多目标,但多目标不移动一起出现在同一视野中,所以要求机载摄像机可周期性的转换视野来监视多个目标区域。
在户外环境中,单个摄像机不可能一直盯住某个目标,目标可能被环境中的树木、建筑物等的物体遮挡,而单个摄像机的视野有限。解决办法是使用多个摄像机联合跟踪目标,系统中使用两种摄像机协作方式:第一种是多摄像机接力跟踪,第二种是主从摄像机协作,即广角摄像机跟踪大范围内的多个目标,然后控制云台摄像机来具体跟踪需要要特别关注的目标。
假设在时间t0,一个pan和tilt值为(θ0, φ0)的摄像机被命令跟踪一个目标,此目标所在位置为X0,速度为 。设函数G(X)可以将目标的位置X转换成pan-tilt值(根据摄像机标定信息确定),则可将目标的位置X0转换为想要的pan-tilt值:
(θd,φd) = G(X0),
pan-tilt系统使用一个线性函数进行估计:
将目标的pan-tilt值(θd, φd)带入上述公式左边,求得(t-t0),即云台设备需要多长时间把镜头对准目标。然而,目标是不断运动的,目标的新位置预测值是:
这个新的位置值被转换为pan-tilt值,继续转动云台设备,不断迭代,直到收敛(t-t0很小)
缩放等级可根据想要的目标大小进行调节。
当摄像机指向感兴趣的目标并调节好缩放等级后,就需要在新的场景中匹配目标,而只适用于特定场景的目标特征显然已不能继续使用,因为不同摄像机的场景可能有很大不同,所以需要使用独立于特定场景的识别特征,系统中使用归一化的颜色直方图在不同场景中进行目标匹配。
另一种摄像机协作方式是主从摄像机:使用广角摄像机控制一个云台摄像机来跟踪指定目标以获得更好的视觉效果。目的是为了能在全景中跟踪所有的摄像机,同时可以获得选中目标的高分辨率图像。
对于已在3D场景中标定好的摄像机,此任务就变得相对简单。主摄像机获得目标在3D场景中的位置信息后,很容易将位置信息转换为从摄像机的pan-tilt值,从而控制云台摄像机。
现在的VSAM试验床和配套的视频分析技术是三年来累积的成果,虽然现在此项目已结束,VSAM系统仍具有研究和测试价值。
后续工作目标:
1) 人的行为理解
2) 多目标交互行为分析
3) 系统的改进
论文下载地址:http://download.csdn.net/detail/masikkk/6328043