一种多运动目标检测跟踪方法研究与实现Word文档下载推荐.docx
《一种多运动目标检测跟踪方法研究与实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《一种多运动目标检测跟踪方法研究与实现Word文档下载推荐.docx(5页珍藏版)》请在冰豆网上搜索。
已有的解决方法有:
用多个摄像机构建系统来处理多个运动目标相互遮挡的问题[1];
用EM算法将被跟踪人体依据颜色信息建立跟踪[2];
基于区域的跟踪[3]、基于模型的跟踪[4]、基于活动轮廓的跟踪[5]等。
为了提高跟踪实时性,降低算法复杂度,本文采用将运动目标符号化的方法[6],即对检测出的目标用其外接矩形框标注,目标跟踪建立在矩形框层次上,从而提高了算法的实时性,改进了文献[7]中提出的通过建立帧间矩阵实现目标匹配的方法,将跟踪情况分为五种状态分别进行处理,并且引入Kalman滤波器实时预测目标外接矩形框参数,在目标暂时消失、相互遮挡等复杂情况下可恢复其运动信息。
1检测运动目标
目标检测流程如图1所示。
图1运动目标检测流程图
根据不包含目标的一段时间内的背景帧得到背景图像中每个像素的均值、方差参数,建立背景模型[8]:
模型参数分别为R,G,B通道的均值和方差。
假设光线变化相对于物体运动为缓慢变化。
背景模型中均值和方差用递归算法更新,并只用于非目标区域中,目标区域对应到背景模型中的区域其均值、方差参数不变。
已知在t+1时刻的背景中某像素值zt+1,则
场景中由于光线变化引起阴影变化被视为目标区域,从而影响目标的正确检测。
根据阴影区域在亮度上的变化大于色度,则任何亮度突变而色度无突变的情况都是由阴影引起的。
像素色度计算如下:
分割前景目标时,当背景色度与前景目标色度差别不大时,前景目标内会出现空洞或目标碎片,影响下一步的聚类分析。
在这种情况下,不能基于零阶、像素级上检测目标,而需要结合一阶图像梯度信息得到较为准确的目标分割。
本文采用基于色度、梯度建立背景模型检测目标,如像素的梯度或色度信息满足式(6)或式(7),则像素标记为前景点。
背景减除后的图像采用3×
3中值滤波器、形态学闭运算去噪声及连通像素区域标记法,得到目标个数及其外接矩形框参数;
然后计算目标间中心点的欧式距离,若X,Y方向的距离均小于阈值Td(实验中设Td=15),则目标合并;
将得到的目标依次判断它的面积是否小于阈值Tarea(实验中设Tarea=20),如小于面积阈值则丢弃。
通过目标检测,可得到目标的个数,及其外接矩形框的中心点、左上点坐标和长、宽。
目标检测结果如图2所示,视频序列中取a=2。
图2(a)是视频序列中某帧图像;
图2(b)是对图2(a)的检测结果,背景模型采用像素RGB值建立,无法消除阴影;
图2(c)是对图2(a)的检测结果,背景模型采用像素的梯度、色度值建立,可有效消除阴影,从而分割出前景目标,如图2(d)所示。
检测出的目标用不同颜色矩形框标注,基本上达到目标检测的要求。
图2目标检测
2运动目标跟踪
跟踪等价于在连续的图像帧间创建基于位置、速度、形状、纹理、色彩等有关特征的对应匹配问题。
对于单个目标,可以通过获得目标在每一帧中的位置得到运动轨迹,即建立跟踪;
但对于多个目标,情况较为复杂,在运动目标遮挡、暂时消失等情况下目标信息丢失使跟踪失败。
目标跟踪流程如图3所示。
本文采用Kalman滤波器预测目标在下一帧中的参数,以此合并目标碎片,建立目标匹配,确定当前帧中的目标所属序列,从而得到运动轨迹,实现多运动目标跟踪。
图3多目标跟踪流程图
下面将分别阐述利用Kalman滤波器预测目标参数,根据预测参数聚类(进一步合并目标碎片)及建立相邻帧间目标匹配。
2.1基于Kalman滤波器的运动目标参数估计及预测
本文将Kalman滤波器应用于预测目标在下一帧中的参数,算法如下:
对于实时视频序列,每两帧时间间隔Δt比较小,可以认为目标在相邻帧间运动变化缓慢,近似为匀速运动,由动力学公式可得
2.2基于预测参数的目标聚类
目标正确分割是建立目标匹配、实现目标跟踪的基础,基于像素梯度、色度的背景模型能有效地分割出前景目标。
由于目标位置引起目标内部部分空洞(如被背景物体遮挡)造成目标碎片,从而在目标检测模块标记为不同目标,影响后续处理,因此必须在当前帧中识别目标碎片属于哪个运动目标。
本文利用Kalman滤波器得到的当前帧目标预测参数,将预测范围内的目标碎片合并,从而得到完整的外接矩形框来标志目标。
假设运动目标在最初两帧内未发生相互遮挡,并且目标出现的第一帧未被背景物体遮挡,即能分割出完整目标。
该假设是符合实际情况的,则可获得目标状态,即外接矩形框大小和位置,由Kalman滤波器得到其在下一帧中的预测值。
在当前帧中得到可能包含有目标碎片的多个目标外接矩形框,将读取的上一帧目标在当前帧中的预测值(目标预测大小、位置),依次与当前帧中每个目标求交集。
如果相交面积大于目标面积的80%,则认为该目标与预测参数对应的目标属同一目标序列,可基本识别出碎片所属目标,得到运动目标外接矩形框,并得到初匹配结果,即当前帧目标已与上一帧目标建立对应标号,但对于出现目标遮挡、消失等复杂情况需要进行后续匹配以实现跟踪。
实验结果如图4所示。
图4(a)为当前帧图像;
图4(b)的背景模型准确度不高,提取的目标1断裂为两个目标,检测出有三个运动目标;
图4(c)在图4(b)的结果上标注目标,目标1由于断裂,被认为发生分离,算法判断跟踪状态错误;
图4(d)根据上一帧分割出的完整的目标1得到的预测参数,合并其碎片,得到正确的检测结果;
图4(e)虚线矩形框代表当前帧检测出的三个目标,实线矩形框是上一帧中目标1在当前帧中的预测位置;
当前帧目标1,2与其相交面积达到阈值,则判断是目标1在当前帧中的目标碎片,合并后得到外接矩形框如图4(f)中的目标1,以及目标2在当前帧中的实际位置(虚线矩形框)、预测位置(实线矩形框)所示。
图4根据预测参数合并目标碎片
2.3目标匹配及跟踪算法
2.3.1目标跟踪算法
跟踪即为在相邻帧间建立目标匹配的过程,本文引入Kalman滤波器预测目标参数,建立匹配矩阵以实现相邻帧间的目标匹配。
跟踪算法如下:
(1)在当前帧中检测目标,结构数组Objects_info将每个目标用四个域值描述:
State,Label,Retangle,Special。
其中State表示目标匹配状态,分为Old(一般情况),Merged(遮挡),Split(分离),New(出现新目标),Disappear(目标消失);
Label为目标标号,同一目标序列应具有相同标号;
Retangle存储目标外接矩形框参数;
Special为目标遮挡时各个目标标号或目标分离时的分离目标标号。
(2)如果为目标运动的第一帧,则转到(4)执行;
如果为后续帧则读取当前帧的预测参数,即目标外接矩形框的大小和位置,合并目标碎片,完成初匹配,得到更新后的Objects_info,Label为匹配的上一帧目标标号。
(3)将当前帧目标(Objects_info)和上一帧目标(Objects_infoo)建立匹配矩阵(2.3.2节阐述矩阵建立及匹配过程),判断目标匹配的五种状态,得到匹配后的当前帧目标(Info_new)和上一帧目标(Info_old):
①如Info_new(i).State=Merged,则当前帧第i个目标为目标遮挡形成,Info_new(i).special中存储遮挡目标标号,并且在第i个目标的状态变为Split前,其State,Special域值不变。
根据标号记录遮挡目标在后续帧中的预测参数(目标外接矩形框中心点坐标X,Y值及宽度、高度预测参数数组Preonex,Preoney,Preonew,Preoneh),便于为目标分离时建立匹配。
②如果Info_old(i).label=Spilit且Info_new(i).label=Old,表明上一帧第i个目标在当前帧中分离,Objects_infoo中第i个目标由分离目标参数代替,从Preonex,Preoney,Preonew,Preoneh中读取其参数,再通过建立与当前帧目标Objects_info的匹配矩阵,确定Objects_info中每个目标的匹配情况,即得到更新后的Info_new,并使Objects_infoo=Info_new(存储当前帧信息以便下一帧建立匹配)。
(4)由Kalman滤波器得到当前帧目标外接矩形框在下一帧中的预测参数,得到预测数组Prex(左上点X坐标),Prey(左上点Y坐标),Prew(宽度),Preh(高度),程序转到
(1),直到视频图像序列结束。
2.3.2目标匹配
文献[7]只根据匹配矩阵确定了当前帧的目标运动情况,并未更新上一帧的目标运动情况,无法判断是否出现上一帧目标消失、分离成新目标的情况。
因此,本文改进了文献[6]提出的匹配矩阵算法。
多目标在视场中的运动可分为五种情况:
出现新目标、目标遮挡、目标消失、遮挡目标分离和除此以外的一般情况下的目标匹配。
本文分两步扫描匹配矩阵以确定当前帧目标和更新上一帧目标的运动状态。
(1)按列扫描匹配矩阵(确定当前帧目标匹配状态),可合并成三种情况处理,具体判断准则如下:
①若第k列的每个元素都为0。
当前帧的第k个目标为新出现目标,State更新为New。
②第k列中只有第h行一个元素非零。
当前帧中的第k个目标与上一帧中的第h个目标匹配,加入第h个目标的目标链,赋予与上一帧中第h个目标相同的标号,State更新为Old;
但如上一帧中的第h个目标为遮挡情况下形成的合并矩形框,即Objects_infoo(h).State=Merged,则State,Special域值不变。
③第k列中有多个元素非零(如第h行、第h+1行非零)。
上一帧中第h和h+1个目标在当前帧中发生遮挡,记录下发生遮挡的目标标号(目标分离时的匹配需要此信息),并把最小的目标标号作为当前帧遮挡目标的标号,将State更新为Merged。
(2)再按行扫描关系矩阵(更新上一帧目标状态):
①若第K行每个元素都为0,上一帧中的第K个目标消失,删除目标链,State更新为Disappear。
②若第K行中有多个元素非零(如第h列、第h+1列非零),则上一帧中目标K在当前帧发生分离,为避免误判,需满足条件:
目标K在匹配前的State为Merged,则表明确为遮挡目标分离,应将State更新为Split。
跟踪结果如图5所示。
场景中有三个运动目标,分别为目标1(实线矩形框标注)、目标2(虚线矩形框标注)、目标3(点划线矩形框标注),目标分别用不同标号对应到不同矩形框识别。
表1给出了目标1在一般情况下(状态为Old)、遮挡情况下(状态为Merged)及被遮挡后分离情况下(状态为Split)的跟踪数据。
第472~476帧数据表明实际值、预测值间误差较小,Kalman算法预测参数是可靠的。
第477帧原目标1被遮挡,其参数丢失,跟踪过程则建立在预测值上。
第514帧目标1分离出,根据预测参数和实际值识别目标1。
第470帧为一般情况下的跟踪,即目标未发生遮挡、消失等情况。
第477帧目标1,2部分遮挡,检测到两个目标,目标1由原目标