对于运动物体的检测和跟踪技术,我们知道由于理论方法和应用场合的限制,现在还没有很通用的成型系统,只有一些针对具体问题和应用场合的系统。我们用自己的方法研制了几个运动物体检测和跟踪的原型系统。
通过设计和实现这些原型系统,在检验了我们的理论方法的同时,也帮助我们发现了其中存在的实际问题,并不断加以改进和完善。同时,原型系统的设计和实现也是我们对运动物体检测和跟踪技术的有益探索和实践。
1.原型系统简介
(1)原型系统的运行环境
操作系统 Microsoft Windows 2000中文版
处理器 Intel PentiunⅢ,1.7GHz
内存 128MB
磁盘可用空间 40GB
编程语言 Microsoft Visual C++6.0
(2)原型系统的结构 如图5-19所示,实现的原型系统包括两大部分:一个是运动物体的检测部分;另一个是运动物体的跟踪部分。每个部分又分为两个模块,分别为多目标检测与识别模块、车流量检测模块、单人跟踪模块和多人跟踪模块。
2.多目标检测与识别模块
为了验证区域标识和目标提取算法的可靠性,选用了包含有不同运动目标的图像对其进行处理,同时也验证算法的实用性。
我们选择主要包含两个目标的图像序列:一个目标是行人;另一个目标是篮球。由于接下来的部分要专门对人体进行检测和跟踪,所以在这里以篮球为检测的目标。多个运动物体的检测以简单的背景差和区域标识为基础,进行识别和检测,目标特征主要是物体的形状信息。其系统实现框图如图5-20所示。
其中,为了体现区域标识算法的适用性,在背景差方法中,只选择一帧图片作为背景,如图5-21所示。在这个系统中,选择的篮球特征是它的面积S,篮球的区域面积S应满足:200像素<S<350像素,如图5-22所示。
图5-19 原型系统的结构
图5-20 目标检测系统的结构框图
图5-21 背景图像
图5-22 当前图像
图5-23所示为黑白二值化处理后的检测结果图像。
图5-23 检测的结果图像
图5-24所示为多目标检测与识别模块的程序主界面。
3.单人跟踪模块
人体跟踪是目前比较前沿的科研课题,国内外从事这方面研究的人员和机构很多。我们用自己研究的运动物体检测和跟踪算法实现了单人运动检测和跟踪的模块,实现的方法主要是运用了区域标识和运动搜索。
(1)模块总体设计 实现单人的跟踪时,首先要考虑的问题就是运动人体的检测问题。如果我们选用一个非常复杂的场景,比如机场、公路和码头等,由于场景复杂,检测的效果十分不好,而且经常出现误检和漏检现象,这样使下一步的跟踪基本无法进行,也就无从验证我们提出方法的效果,所以选用了只包含单人运动的场景,虽然场景简单,但足以说明问题。
图5-24 多目标检测与识别模块程序主界面
这个模块主要包括两个部分:一个是运动物体的检测与识别;另一个是运动物体的跟踪。
(2)模块算法设计 本模块的实现包括运动区域的检测、区域标识、人体识别和人体运动区域搜索等算法。
1)运动人体检测算法:对于人体运动检测的方法,应用了第4章中提出的运动物体检测方法。从实验的结果可以看出,这种运动物体检测的方法,能够有效检测出场景中的运动物体,并能够有效处理运动物体的影子问题。(www.daowen.com)
2)区域标识和人体识别:检测出运动的物体后我们发现,场景中的运动物体,不仅仅有要跟踪的人,还有一些其他的运动点,比如枝条的摆动、比较大的光线变化等。为了对场景中的人体进行跟踪,我们采用了区域标识的方法。
区域标识的结果:
①场景中的运动区域总数;
②每个运动区域的准确位置;
③每个运动区域的面积;
④标识哪些运动区域是人体运动区域。
可以看出,区域标识的结果使我们知道场景中所有检测出来的运动区域的信息。在提取哪些区域是运动人体时,给出了人体区域的特征经验值,并简单地选择了区域像素点的面积area、区域长度H和区域宽度W作为识别人的区域特征。
由于无法从当前帧图像中获取前一帧图像或者后一帧图像中的信息,所以我们建立了一种数据结构,用以保存每一帧图像中的运动区域的基本信息。这样就在相邻帧图像中建立了联系。运动区域的相关数据结构定义如下:
区域标识的结果就是用上面的数据结构记录该帧图像中的运动物体信息。
3)人体运动区域搜索:为了记录人体的运动特性,定义了如下的数据结构:
我们首先对前一帧图像中人体区域的中心坐标点的值(x,y)用卡尔曼滤波器的量测方程Zx,k=HXx,k+Vx,k在X方向和Y方向上预测区域中心坐标在下一帧图像中的位置,记为(x′,y′)。人体区域的中心坐标如图5-25所示。
图5-25 人体区域中心坐标表示
卡尔曼滤波器的量测方程Zx,k=HXx,k+Vx,k的矩阵形式为
可以看出,这种形式比较好理解,并且发现一个新的人体后,人体中心点的最初速度的确定对我们使用卡尔曼滤波器效果的好坏起关键作用。我们发现一个人体后用前n帧来确定物体的初始速度vx0和vy0,取n为偶数。最初确定物体初始速度vx0的方法如下式所示:
同理可以确定vy0。
在人体的运动方向上,我们以两倍的人体宽度为搜索范围,当人体中心点超出此范围时就要更新搜索速度。当得到运动人体中心的预测坐标后,用此坐标与下一帧图像中的运动人体的中心坐标进行匹配,如果和下一帧中某个运动人体的距离小于2倍的物体当前速度的值,则认为这两个区域对应同一个人,人体跟踪完成。单人跟踪模块主界面如图5-26所示。
4.多人跟踪模块
在运动物体跟踪领域,多目标的跟踪是个非常有挑战性的课题。这一课题涉及到的理论知识深而广,我们用前面提出的运动物体检测和跟踪方法建立了一个多人跟踪的模块。
图5-26 单人跟踪模块主界面
图5-27 多人跟踪模块主界面
多人跟踪模块的设计和单人跟踪有很多相似之处,其中对运动区域检测、区域标识和人体识别,我们继承了单人跟踪的方法,具体方法参见单人跟踪模块。
和单人跟踪不同的是运动搜索部分。在场景中,两个物体没有相遇时,算法和单人跟踪完全相同。但是,我们的搜索算法同时搜索到两个运动人体时,也就是当场景中两个人相遇时,单人跟踪的算法就会失效。
我们设计了一个分类器来解决场景中多个人相遇情况。分类器中记录着每个运动人体的形状特征的信息,并且赋予每个形状特征一个权值。两个运动人体重合后,当再次分开时,就要用分类器对两个人体运动区域进行分类。分类时,对人体形状的每个特征进行判别,然后用判别的权值总和来确定人体的类别。
由于我们选用的场景中没有和人体形状信息接近的运动干扰区域,因此选用了人体区域面积area、区域的宽度W、区域的高度H、区域宽度高度的比值K和人体中心在X方向的运动速度vx为分类器的特征。多人跟踪模块主界面如图5-27所示。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。