移动物体检测和跟踪算法的实现_第1页
移动物体检测和跟踪算法的实现_第2页
移动物体检测和跟踪算法的实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

...wd......wd......wd...移动物体检测与跟踪算法的实现移动物体检测算法已经在带LCD的IntelXScale270平台上实现,效果如以下列图所示。这个界面是在Linux操作系统下利用QT库采用C++开发的。如果在MicroBlaze上移植Linux成功的话,可能会出现不能支持QT的情况,那我们将舍弃用QT做出来的控制界面,而将图像视频直接显示在VGA显示器上。接下来我将介绍一下实现这个效果我们所采用的算法和程序的流程:一、算法1、基于灰度图像的检测算法为了完成实时目标检测,需要一系列的操作,所以就需要对目标的特征进展提取,包括目标的形状和颜色分布。由于人体是非刚性的,外在的障碍物和自身的噪声可能给建设唯一的模型带来困难。为了减小这些影响我们把摄像头观察点放置在人群的正上方,这样几乎不会有重叠的现象而且每个目标占用图像的面积很小。我们采用基于灰度直方图的方法简化目标模型,由于系统只需识别出有物体的存在并进展跟踪,所以要求的精度不需要很高,因此在该系统只识别人体的大体外形及所处的位置而忽略身体的细节局部,使算法更加简化。为了突出目标本文采用相邻帧差法去除不变的局部〔比方背景、身体的一些局部〕,通过分析剩下的局部我们可以定位目标所在的位置。简单的帧差法并缺乏以到达检测的精度,这里采用相差后图像的水平和垂直投影完成检测功能。下面给出这个算法的过程:(1)相邻图像相差后得到M*N的图像I,如图1所示。非零的那些像素大局部是头部的运动边缘,通过对差分图的分析就可以定位运动目标。图1相邻帧相减后的图像(2)求出差分图像I的水平及垂直投影分别用H和V表示。如图2显示了两相邻帧和差分后的水平投影值的分布。水平投影的计算如下: (1)图2两相邻帧以及差分后的水平投影从图中可以很明显地看出,在人体头部周围跟随两个峰值。这里我们利用这个特征来检测定位目标。为了最小化噪声的扰动和摄像机抖动的影响我们采用对V进展中值滤波来保持边缘并滤除孤立脉冲噪声和胡椒噪声。(3)如果运动物体存在,那么在向量V中肯定存在具有足够多的灰度值大于分割阈值的像素点的段。我们将图像I分成n个域〔n就是段数〕,每一个域都位于相应段的中心并且具有一定的宽度。那么这就检测出具有n个运动目标。(4)假设每个域有一组纵向目标。对每个域进展水平投影得到然后进展中值滤波,如果在第i个域中存在m个目标,那么在中一定具有m个显著的值〔峰值〕。再进展中值滤波并且利用另外一个阈值将域中的一组目标分割开。这样就得图3目标分割到了当前帧中可能的目标的坐标值,然后用外接矩形画出运动目标的边界,如图3所示。以上使用的阈值具有很大的范围,但是它们的成分大体是固定的。通过系统训练和结果分析我们发现了阈值T和图象的平均灰度值之间具有如图4所示的关系。因此,系统引进通过连续帧的平均灰度值表述的阈值自适应模型。图4阈值与平均灰度值的关系2、基于一个新的评价函数的跟踪算法在图像帧中可能发生目标的出现和消失,这就需要将最近检测到的目标和以前检测过的目标进展匹配。基于模板匹配的算法被广泛采用但是它们的搜索空间会随图像大小和模板的增大而急剧增大。所以较难到达实时处理的目的,而且也不可能在人群中提取到所有的模板。这里采用一种新的基于颜色直方图的算法,认为同一物体的直方图是在帧间是相对不变的。但是这种方法无视了自身的误差,因此还需要做相应地处理来尽可能减小误差的影响。该系统采用改良的一种新的评估函数来解决匹配问题。此算法将最近相邻算法、速度相关性和单一化灰度直方图结合在一起。由于帧间的时间间隔很短,所以人体特征如质心、边界矩形和速度不会发生突然地变化,在实验中我们得到了质心位移的上限。假设分别表示某物体水平方向和垂直方向的速度,那么用分别表示在第K帧的第C个目标和第K+1帧的第S个目标。两向量规格化的关系定义为(2)其中表示内积,。、分别表示向量的模。根据施瓦兹不等式有。帧间物体的彩色直方图相对稳定而且在检测处理过程中本文关注的是加了边界的那些区域,然后计算它们的灰度直方图。这里关心的是所有灰度值的一小局部而其中的大局部都不关心,于是为减轻处理的负担简化后的直方图H是必须的。这里采用了第K帧的第C个目标和第K+1帧的第S个目标灰度直方图的相似度计算,匹配程度的计算公式如下:(3)设d(C,S)表示它们之间的欧几里得距离,建设一个新的评价函数如下:(4)其中表示两帧间任意两目标之间的欧几里得距离,的取值都在0到1之间。这样就将三个重要特征联合在一起作为匹配规则对运动目标进展跟踪。下面给出跟踪算法的流程:(1)所有在第一帧中出现的目标都标记为新目标,并且为了以后的匹配为每个目标建设一条空链。(2)当接收到第k帧图像时,计算当前帧第j个可能目标(,m表示当前帧中出现的目标数)和以前检测过的第i个目标(,n表示以前检测过的总的目标数)之间的G(k,S,C)和。①如果第j个可能目标具有最大的G(k,S,C)且满足,就把这个目标认为时第i个目标的后续,它们属于同一个物体,并且将它添加到相应的链中同时标记为已匹配。②如果所有以往检测到的目标都满足,那么就认为第i个目标在第k帧没有后续。这暗示这个目标已经在视窗范围之外或者暂时静止不动。如果链的长度超过给定的值就进展一次统计。被噪声淹没的目标即使在视窗范围内可能也会检测不到,但我们不能停顿对它的跟踪,这里我们采用名为“等待N帧重新匹配〞的算法:如果在当前帧没有发现以前检测到的目标,我们不立即将它丢弃,接着处理接下来的N帧,如果该目标在接下来的N帧中都没有检测到,那么就放弃对它的跟踪,并且去除相应的链表同时进展计数,否则,恢复跟踪处理。(3)如果所有的目标都匹配并且都做过已匹配标记,意味着所有可能的目标都和以前检测到的目标有联系。如果存在没有做过已匹配标记的目标,那么为该目标新建一条空链。(4)接收第K+1帧图像,重复第(2)(3)步,直到图像采集完毕。程序流程(1)系统类图系统实现由前台界面显示、后台的图像处理、目标检测和跟踪计数局部组成,完成这一系统本文定义了MainWin、Process、Tracker、Target四个类:①MainWin类:如图5所示,该类利用Qt图形库绘制主界面,在控件img(QImage)上实时显示处理后的视频。主界面如以下列图所示。Qt中消息映射是通过“消息—槽〞的机制实现,在这里时间信号每50毫秒触发timeoutslot()函数,timeoutslot调用Process的InputNewFrame方法检测和跟踪目标,也就是说每秒处理20帧图像。主界面的布局如图4所示。图5MainWin类 图6Process类②Process类:如图6所示,该类实现图像处理和目标检测。目标检测的核心算法在ProcessNewFrame()方法中实现,主要包括相邻帧作差、计算水平方向和垂直方向的阈值、分割并标记目标等操作。③Tracker类:如图7所示,该类实现了对运动目标的跟踪和计数。目标跟踪的核心算法在InputNewPosition()方法中实现,主要包括计算距离、判别新目标等操作。图7Tracker类 图8Target类④Target类:如图8所示,该类主要是描述图像中的运动目标的属性、判别目标是否消失等操作。(2)程序流程与框架系统采用C++语言实现,程序的流程与框架及调用过程如图9所示。图中给出了系统实现的每个类中的函数执行过程。①MainWin类执行摄像头初始化,绘制图形界面,从摄像头中读取图像帧交给Process类进展处理,然后将处理后的结果绘制出来。②Process类执行RGB图转换成灰度图之后,计算算法中说明的动态阈值,根据水平和垂直的阈值计算出目标的个数和所处的位置,然后用红色矩形框进展标记,登记存在的T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论