背景技术
视频监控是安全防范系统的重要组成部分,它是一种防范能力较强的综合系统。视频监控以其直观、准确、及时和信息内容丰富而广泛应用于许多场合。近年来,随着计算机、网络以及图像处理、传输技术的飞速发展,视频监控技术也有了长足的发展。目前根据监控系统使用的监控摄像机的种类不同,分为枪机(固定摄像机)监控和PTZ摄像机(球机)监控。由于PTZ摄像机相比于枪机,具有监控的场景更大、跟踪目标范围更广、焦距可变等优势,很多部门都在这一方向进行研究。
PTZ摄像机跟踪技术是一种利用图像处理技术,实现目标发现并控制PTZ摄像机对运动目标在一定场景范围内进行定位,跟踪和抓拍的监控技术。这种技术可以用于路况监控,公共场所安全监控等多个领域。
摄像机对于运动目标的跟踪技术是基于对监控场景的背景建模,从而发现进入场景中的目标,实现对目标在场景中的地位和跟踪。相对于单个固定摄像机,PTZ摄像机具有监控范围大,可变焦等多种优势,但也存在摄像机内参标定复杂,监控场景变化大等技术难点。目前,PTZ摄像机跟踪技术主要有两个发展方向:单个PTZ摄像机的监控,多个摄像机的监控系统。
对于多个相机的跟踪系统,基本的思想是一个固定摄像机(或者PTZ摄像机)作为主摄像机监控一个较大的场景,提供全局的信息,而作为辅助摄像机的一个或多个PTZ摄像机则是通过与主摄像机的定标来引导其进入相应的监控位置进行目标的跟踪及细节信息的提取。在2009年CVPR会议上“Cooperative Mapping of Multiple PTZ Cameras in Automated SurveillanceSystems”中就是这种方法。多摄像机系统的跟踪算法和背景建模在实现起来相对于单摄像机要容易,并且可以得到目标在监控范围内的位置信息;但是最大的技术问题在于主摄像机和辅助摄像机之间的定标问题,因为不同摄像机的内部参数存在差异,同时,辅助摄像机的参数在跟踪过程中还在变化,这个对摄像机之间的通信控制提出比较高的要求,另外多个摄像机监控系统的成本也会比较高,使得产品的价格相比于单个PTZ摄像机监控系统昂贵,不利干普及。
对于单个PTZ摄像机,由于缺乏全景的信息,多数算法则是根据当前帧和过去一帧或几帧的比较来判断目标并实现目标位置预测和跟踪。单个PTZ跟踪的优势在于安装和调试比较容易,成本也相对比较低廉;但是由于得到PTZ摄像机三个变量的信息需要依赖最近几帧图像之间的信息来计算,也就是完全依赖于跟踪算法,所以很难准确对PTZ摄像机控制,同时单个PTZ摄像机不包含全局信息,也不能提供目标运动的绝对信息和位置。而目前的单机全景跟踪主要是利用鱼眼镜头实现,但是这样的结果就是不能通过变焦获得目标的具体信息,如人脸,车牌等。鉴于目前的发展状况,对于单个PTZ摄像机跟踪系统的改进,则是要提供全局的信息来支持其跟踪算法,使得可以在跟踪的过程中得到全局信息和目标运动的绝对位置信息。
鉴于之前的介绍,我们发现目前的基于PTZ摄像机监控系统,存在主要两个方面的问题:对于多个PTZ摄像机的监控系统,相机之间的标定和通信是主要问题,而对于基于单个PTZ摄像机监控系统,如何提供全景式的场景信息是有待解决的核心问题。
具体实施方案
1.全景图的生成以及场景区域的划分
在系统中,我们采用Matthew Brown,David G.Lowe的“Auto matic Panoramic ImageStitching using Invariant Features”(IJCV 07)中提出的方法生成全景图。首先利用PTZ摄像机对监控场景拍摄一系列离散的图片,这些图片我们在后面的步骤中被称作关键帧(keyframe),对于关键帧的要求是两幅相邻的关键帧需要具有一定的重合区域。对这些图片提取SIFT特征点并对相邻的关键帧进行匹配寻找正确匹配点,利用得到的正确匹配点的坐标信息来计算这些图片在世界坐标系中的位置,这里为了消除累计误差,采用了一种称作Bundleadjustment的全局优化方法。利用得到的关键帧在世界坐标系中的坐标信息把图片投影到半径与其焦距相同的球面上,并对图片之间重合的区域进行图像融合,消除图像之间因为计算误差而产生的重影等现象,从而得到可视化的全景图(图2)。在生成全景图的过程中,每一张关键帧在世界坐标系中的坐标位置参数都将被保存下来,包括:焦距,图像中心的在水平方向和垂直方向上两个角度。
2.全景多层次背景模型的建立
在步骤1中,我们已经得到了PTZ摄像机监控场景的全景图,步骤2的任务是在全景图的基础上建立全景多层次背景模型,由于第一步生成的全景图尺寸很大,如果建立全尺寸的背景模型,每次搜索的过程将会需要遍历大量的数据,降低系统的实时性。所以我们在建立背景模型时采用对每个关键帧单独建立模型的方法,这样一方面可以减小每次监控视频与背景模型匹配时的计算量;另一方面,因为关键帧和监控视频的图像格式大小相同,也有利于后面的计算和坐标系的统一。
我们采用的是离线提取并储存场景中的SIFT特征点的方法来建立背景模型,因为SIFT特征点具有较强的尺度,光照不变性,对于PTZ摄像机工作的户外监控场景具有比较好的适应性。考虑到PTZ工作的任务不只是跟踪目标,还需要适时对目标细节进行抓取,比如人脸,车牌等,这就需要对相机进行大尺度的焦距变倍操作,由于SIFT特征点本身构建算法上的限制,在一些特定的焦距大变倍率条件下SIFT特征点就不能很好地工作,所以如果只建立单层尺度的SIFT特征点背景模型,其尺度适应性对于PTZ摄像机的大变焦特点就不能很好满足,在PTZ摄像机抓拍人脸或车牌的时候就不能在全景图上有效地定位,所以我们采用建立多层次背景模型的方法来解决SIFT特征点尺度不变性的局限性。
由于全景图的构成需要多张关键帧,每一张关键帧的多层次背景建模的方式基本一致,所以,这里我们就以一张为例介绍多层次背景建模的方法。
在这一步骤中,我们首先对步骤1中的关键帧进行SIFT特征点的提取和储存,每一个特征点的结构包括了特征点的坐标,所在的尺度层次和SIFT特征点本身的128维描述。在完成这一工作之后,实际上当前的关键帧已经可以支持一定尺度的变焦并准确定位当前帧在全景图上的位置。
前面我们已经完成了单张的关键帧的SIFT特征点的提取以及特征信息的储存任务。我们知道,对于每一张关键帧,随着PTZ摄像机焦距的变大,视频中出现的场景范围会越来越狭小,但同时视频中也获得了场景中在关键帧尺度条件下所不能够得到的信息,比如一些路边的标识牌上的文字等。我们从这些高倍的图像中提取出新的SIFT特征点,这些SIFT特征点可以在更高尺度层次上支持更高尺度适应性,这样通过不同尺度上SIFT特征点的累积,可以实现关键帧在一个较宽的尺度变化范围内都具有尺度不变性,从而满足PTZ摄像机在较大焦距段内的变化。
这里我们以建立3个尺度层次的背景模型为例(包括之前已经完成的关键帧所在的尺度),这是经过试验证明可以完成绝大多数场景的定位任务。下面就分别对两个尺度二的特征点如何储存在关键帧上进行介绍。
首先,对于第二个尺度,一般选择2倍到3倍于关键帧的焦距,这样选取的原因是SIFT特征点基本在这个范围内还比较稳定,超过这个尺度范围,就会出现不能正确匹配或找不到匹配点的情况。此时,大约需要4-6幅第二尺度的图片才能完全覆盖对应的关键帧的视场范围。下面要进行的工作就是把这些第二尺度上的SIFT特征点储存到关键帧上。由于SIFT特征点本身的特点,这些操作都是在亚像素级上完成的。
在SIFT特征点的转存过程中会遇到2种情况:
1.特征点在关键帧上有对应的匹配关系,即为关键帧上某些SIFT特征点的内点(正确的匹配点);
2.第二层中的SIFT点在关键帧中没有对应的匹配点;
对于第一种情况,因为在计算特征点的匹配时并不是要求两个特征点的特征描述完全相同,而是两个描述向量之间的距离小于一定的阈值就可以认为两者是同一个点,所以我们仍然需要把第二层中的关于特征点的特征描述也储存在第一层相匹配的特征点位置上,即该位置拥有两种不同尺度下的特征描述,当监控视频中的某一帧图像中存在一个点的描述和这两个描述中的任意一个描述距离小于一定的阈值时,就认为图像中的点和该点是相同的。
对于第二种情况,因为之前我们已经得到了第一种情况下的特征点匹配关系,因此我们可以得到两幅图像(关键帧和第二个尺度中的某一幅图片(图像1))的单应关系,也就是说此时我们可以把图像1的每一个点都对应到关键帧上并储存,但是在实际操作中我们只需要储存图像1上SIFT特征点的特征信息:坐标,尺度和特征描述。
当我们储存第二张第二尺度图片图像2上的SIFT特征点时,因为有一些点的坐标处在图像2和图像1的重合区域上,由于计算误差等原因,如果按照上面的方法,可能就会在一个小的范围内储存下两个相同的特征点,对后面的定位会造成一定的影响,所以在储存图像2上的特征点之前我们会用图像2与已经储存了图像1上SIFT特征点的信息的新关键帧计算单应关系,而不是和原始的关键帧计算,这样就可以避免上面的这种情况出现,同时还可以减少储存的信息量。后面的第二个尺度上的图片也就按照这样的方法把SIFT特征点信息储存在关键帧上。
此时在关键帧上存在两类特征点,实际可以提取出来的SIFT特征点(第一种情况),虚拟的特征点(第二种情况)。前一种特征点是可以有周边的图像信息支持,而虚拟特征点则是只有特征描述和坐标位置,支持它的信息则在第二个尺度的图片中,实际工作时,这些信息因为对于匹配定位是没有作用的,所以并不储存。
下面我们要进行第三个尺度上的特征点的储存工作,第三个尺度下的图片同样也是2-3倍于第二个尺度的焦距,此时相对于关键帧的焦距最大可以达到9倍,这样完全可以满足在一定的场景范围内PTZ摄像机焦距的变化。
由于此时的关键帧上实际已经有了两个尺度的SIFT特征点信息,对于第三层的坐标点的定位,也要面对两种情况:
1.与关键帧上已存的实际特征点和虚拟特征点存在有匹配关系的特征点;
2.与关键帧没有匹配关系的特征点;
实际的处理方法和前面介绍的第二尺度上的特征点向关键帧上储存的方法基本相同,只是第三个尺度上的图片数量更多,这也是为什么我们不采用构建多个全景图作为背景的原因,储存和调用这些图片会占用大量的内存。
在完成这两步之后,实际上我们存储的特征点数量很多,对于一张关键帧来说,特征点的数量越多,在匹配的过程中,消耗的时间也会越大,所以,需要通过一些方法来去除掉其中的一些对于下一步工作不是特别重要的特征点.。
舍弃特征点的工作和在关键帧上储存特征点同时进行,在舍弃特征点的过程中基于两个原则:1.对于包含多个描述的特征点(虚拟特征点),必须保留,因为两幅图之间的内点已经因为包含了2个(以上)的描述符而肯定得到了保存,尺度稳定性更好;2.单位面积上的特征点数量不能太多,否则会造成计算量的增加和精度分布不均,因此我们统计已经保存的特征点(虚拟特征点)的分布,找到在当前关键帧中SIFT特征点分布比较稀少的位置,在这些区域添加虚拟的特征点描述。
至此全景多层次背景模型建立完毕,这一步工作的目的有两个方面:第一,因为SIFT特征点虽然具有一定的尺度不变性,但是当场景尺度变化比较大的时候,这种尺度不变性就不能保持,储存多个尺度上的SIFT点特征表达就是解决这个问题;第二,因为随着全景图尺度的提高,需要的关键帧就会更多,这样给PTZ摄像机设定预置位也会出现困难,同时在下一步的定位过程中,不可能在多个尺度的全景图上切换,所以把所有的点投影在统一尺度的关键帧上,也有利于整体坐标系的统一。
3.基于关键帧的场景定位
单个PTZ摄像机的监控遇到的最大问题之一就是仅通过当前视频的图像信息不能得到目标在全局的坐标位置,在步骤3中,我们将利用在前面已经生成的多层次背景模型来实现对当前视频全局坐标信息的判定,即场景定位。
场景定位的基本原理是通过定位当前监控视频中背景的位置,从而再利用跟踪信息把前景(跟踪目标)的在全景图上的坐标位置显示在全景图上。
在步骤1中我们已经保存了用于图像拼接的关键帧的位置参数(焦距,水平旋转角,垂直旋转角);步骤2中,这些关键帧上又加入了一定数量的多个尺度下SIFT特征点(虚拟特征点),在步骤3中,将利用前两步已经保存的信息来计算当前监控视频中目标在全局的绝对位置。
当前监控视频中的第一帧图像为图像1,对图像1进行SIFT特征点的提取,将这些特征点与所有的关键帧比较,计算匹配程度,选出匹配程度最高的关键帧:关键帧1,由于一个关键帧包含的场景会在以后的一段时间内满足监控视频图像的特征点定位,在接下来的定位中先选择关键帧1为第一关键帧。下面介绍图像1如何定位到全景图坐标系上:
利用关键帧1上已经储存下的特征点和图像1上提取出来的SIFT点进行匹配。在进行匹配的时候,每一个图像1上的SIFT特征点都会遍历式地搜索关键帧1上所有的特征点,找到与其特征向量之间距离小于一定阈值的特征点并认为是正确的匹配点。前面的步骤中已经介绍了SIFT本身的尺度适应性的局限,当尺度变化较大的时候这种适应性就不能满足需要,因此我们在关键帧上又储存了一些大尺度图像上的特征点,增大背景模型的尺度适应范围。
在之前的多层次背景模型建立过程中,实际上已经把第二,第三个尺度上的特征点坐标统一到关键帧图像坐标系下,这使得在进行匹配运算的时候,可以把两个高尺度上的特征信息传递给关键帧上的某些坐标位置,并认为这些特征信息存在于关键帧上。在完成寻找图像1和关键帧1之间相互匹配的特征点(内点)后,我们可以得到每个特征点在关键帧1和图像1上的图像坐标对:X关键帧1和X图像1,这些内点虽然在两幅图像中的坐标位置不同,但是它们在实际的世界坐标系中具有相同的空间坐标Xw:
X关键帧1=P关键帧1*Xw (3.1)
X图像1=P图像1*Xw (3.2)
其中,P关键帧1和P图像1分别是关键帧1和图像1对应于世界坐标系的摄像机矩阵,也就是通过公式3.1和公式3.2可以将关键帧1和图像1上的图像点投影到世界坐标系中。
对于一幅图像的标准摄像机矩阵P,是一个具有11个自由度的3行4列矩阵,但是对于PTZ摄像机,在旋转、变焦过程中摄像机的光心位置实际没有发生偏移,摄像机的旋转也只在P,T两个方向上,同时摄像机拍摄图像的尺寸我们也可以预先得到,所以我们把PTZ摄像机的P矩阵简化为一个3自由度的3X3的矩阵,它只与PTZ摄像机的三个变化参数P转角,T转角和变倍率Z有关,即
P=K*R (3.3)
其中,H图像1-关键帧1是关键帧1和图像1之间的单应关系,也就是通过H图像1-关键帧1可以计算出图像1上的点在关键帧1上的图像坐标,即
X关键帧1=H图像1-关键帧1*X图像1 (3.4)
通过公式3.1和3.2,很容易得到
对于关键帧1,因为在之前拼接全景图的过程中,其焦距f,P转角和T转角已经得到,实际在计算过程中只需要求解图像1的三个参数即可,我们把通过匹配得到的内点对代入公式3.4,通过迭代的方式得到图像1的三个参数,这样就可以求解出图像1在全景图中的位置,从而实现背景的精确定位。
由于监控视频是一个连续的视频信号,所以不会出现大幅度的跳动,那么对于图像1以后的下一帧监控视频图像2,因为已经知道图像1的坐标,所以下一帧会去与图像1距离最近的关键帧匹配,如果认为匹配度不能达到准确计算出图像2的位置,就会去与图像1距离第二近的关键帧匹配,直到找到能够准确计算图像2位置的关键帧,同时再每次计算完一帧监控视频,就会把第一关键帧更新为与刚得到位置信息的监控视频距离最近的关键帧,下一帧视频信号则会首先与这一关键帧进行匹配计算,从而不需遍历所有的关键帧,使得计算速后的下一帧监控视频图像2,因为已经知道图像1的坐标,所以下一帧会去与图像1距离最近的关键帧匹配,如果认为匹配度不能达到准确计算出图像2的位置,就会去与图像1距离第二近的关键帧匹配,直到找到能够准确计算图像2位置的关键帧,同时再每次计算完一帧监控视频,就会把第一关键帧更新为与刚得到位置信息的监控视频距离最近的关键帧,下一帧视频信号则会首先与这一关键帧进行匹配计算,从而不需遍历所有的关键帧,使得计算速度提升。
在得到监控目标在全景图的每一时刻的位置后,系统可以拟合出目标的全局运动轨迹信息。