基于OpenCV的运动目标检测跟踪实验平台_第1页
基于OpenCV的运动目标检测跟踪实验平台_第2页
基于OpenCV的运动目标检测跟踪实验平台_第3页
全文预览已结束

下载本文档

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

文档简介

1、基于OpenCV的运动目标检测跟踪实验平台王力超,陈熙,陆起涌(复旦大学电子工程系,上海 200433)摘 要:运动目标的检测跟踪在机器人视觉、监控测量和视频压缩编码等等方面有着广泛的应用,是近年来的一个研究热点。本文设计了一个基于OpenCV软件的运动目标检测跟踪实验平台,对摄像头视野中的运动目标进行实时检测和跟踪,并留下编程和硬件接口,为利用运动目标跟踪而进行机器人视觉和基于计算机视觉的测量监控研究打下基础。关键词:目标跟踪;OpenCV;实验平台;编程接口中图分类号:TP391.41 文献标识码:A 1 引言目前,数字图像处理在国民生产中起到日益重要的作用,对其的研究也日益广泛和深入。O

2、penCV程序库作为数字图像研究的软件助手,具有简单易用、功能强大、移植方便等优越性能。本实验设计了一个基于OpenCV的运动目标检测跟踪实验平台,对从摄像头采集来的图像数据进行实时的分析,从而实现对运动物体的检测与跟踪。本实验旨在引导学生了解OpenCV的性能,学习OpenCV的使用方法;尝试并逐渐熟悉图像处理,特别是运动目标跟踪方面的知识;以及进一步提高Windows操作系统下使用C语言和C+编程的能力。2 OpenCV简介OpenCV是Intel开源计算机视觉库(Open Computer Vision)的简称。它由一系列 C 函数和少量 C+ 类构成,实现了图像处理和计算机视觉方面的很

3、多通用算法。OpenCV 拥有包括300多个C函数的跨平台的中、高层API。它不依赖与其它的外部库,尽管也可以使用某些外部库。OpenCV具有以下特点:1.开放源码2.基于Intel处理器指令集开发的优化代码3.统一的结构和功能定义4.强大的图像和矩阵运算能力5.方便灵活的用户接口6.支持MS-Windows和Linux操作系统由于有了以上性能特点,OpenCV函数库功能强大,简单易用,移植也很方便,不失为学生和科研人员进行数字图像处理方面学习和研究的好工具。3 运动物体的检测和跟踪数字图像处理中,运动物体的检测和跟踪在机器人视觉、监控测量和视频压缩编码等方面有着广泛的应用,是近年来的一个研究

4、热点。随着研究的深入,应用于运动物体跟踪的算法也越来越多:从最简单的“帧差法”,到“背景消减法”到“模板匹配法”,到带有预测功能的“卡尔曼滤波”和“粒子滤波”等算法,都在不断地提高对运动目标检测和跟踪的准确性和高效性。本平台在进行运动物体检测跟踪时所采用的算法是:首先利用“帧差法”检测出初始的运动目标;一旦认为此目标合法,便根据目标在HSI(色调、饱和度、强度)空间中H通道的色调特性,利用“连续适应性均值移动算法(CamShift)”,对目标进行跟踪。CamShift算法简述如下:首先,在图像HSI空间中计算H通道(色彩通道)分量的1D直方图;接着,利用此1D直方图将原图改建成2D概率分布图;

5、第三步,计算出目标区域的重心;第四部,利用经典的“Mean Shift”算法,不断平移调整窗口中心到与目标重心重合;第五步,将上一帧的窗口大小和中心,作为下一帧Mean Shift算法搜索窗口的初始值,在下一帧中继续Mean Shift运算。图1.CamShift流程上述运动物体检测和跟踪的算法运算量小,跟踪效果好。只要初始抓取目标无误,并且在色彩空间上目标与背景有一定偏差,视频跟踪便能够达到相当的准确度。更好的一点是,此算法在跟踪同一场境内多个运动目标其中的一个时的效果,是其它同样计算复杂度的算法所难以比拟的。4 Windows多线程编程为了达到良好的实时性能,充分利用CPU资源,本平台采用

6、多线程并发处理模式进行编程。在Windows操作系统下,线程与进程调度都有着一套封装好的方法,各线程轮流占用CPU资源。既然没有多个CPU进行真正的程序“并发”执行,多线程编程要做的就是如何利用线程的“休眠”事件,合理充分地使用资源,以达到提高程序运行效率的目的。本平台中,程序由两个线程组成:main线程和GetImage线程。Main线程作为主线程,它启动了GetImage线程;除此之外main 图2.GetImage线程图3.主线程线程的主要功能就是利用OpenCV函数库,对从摄像头获取的图像数据进行分析处理;此外main线程还负责获取用户输入信息。GetImage线程的主要工作就是循环地

7、从摄像头读取数据放到缓存中,以供main线程分析。在这当中,GetImage线程往缓存中写数据与从缓存中读数据将不可避免地操作同一块缓存;为防止数据读写冲突出错,两线程在操作这块缓存时都必须上锁。这在本平台程序中是通过“互斥量”来实现的。另外,为防止main线程重复地分析同一帧图像,要求main线程必须等待GetImage线程的一个信号才能进行数据读取和分析,这在平台程序中是通过Wait/Object的方式来实现的。程序流程图如图2、图3所示。5 实验结果经过实验证明,基于OpenCV的运动目标检测跟踪实验平台可以在实时显示图像的基础上,实时检测和跟踪运动目标,并且检测和跟踪具有较高的鲁棒性。

8、在跟踪过程中,即时目标保持静止,程序也不会丢失对目标的跟踪。检测跟踪结果如图4所示:图4.检测跟踪结果上述稳定的目标检测与跟踪结果,是实现基于全地图路径规划的机器人算法的前提。实际上图4也正是一种基于此平台的视频智能吸尘器的软件工作界面。实践表明,OpenCV使得在PC机上的数字图像处理变得更加简单便捷、优化高效。平台实时性的要求,使得本实验对于引导学生学习和掌握OpenCV的性能和使用方法,让学生熟悉图像处理,特别是运动目标跟踪方面的知识,提高PC机Windows操作系统下的C+编程能力,能够起到相当大的作用。6 展望本实验设计的基于OpenCV的目标检测、跟踪平台,由于其较低的计算复杂度和

9、较高的鲁棒性,不仅可用于智能吸尘器的控制;也可用于其它基于全地图路径规划的机器人领域,比如:收割、搜救、测绘、探伤等等场合。因此本平台具有广泛的应用前景。参考文献:1Hieu T.Nguyen, Arnold W.M. Smeulders, Fast Occluded Object Tracking by a Robust Appearance Filter, 2004 IEEE.2冈萨雷斯,数字图像处理M, 电子工业出版社, 2005, 40112.3Gary R. Bradski, Microcomputer Research Lab, Santa Clara, CA, Intel Cor

10、poration, Computer Vision Face Tracking For Use in a Perceptual User Interface.4张春田,苏育挺,数字图像压缩编码M, 清华大学出版社, 2006, 2023.5Jeffery Richter, Windows核心编程M, 2000, 121287.6钱能. C+ 程序设计教程M. 清华大学出版社,1999,4,1134.7,OpenCV说明文档.A Platform for Moving Object Tracking based on OpenCVWANG Li-chao, CHEN Xi, LU Qi-yong

11、(E. E. Department, Fudan University, Shanghai 200433, China)Abstract:As an active research area in these years, moving objects tracking is becoming more and more important in robot vision, monitoring, measurement and compressive coding of videos. A platform for moving objects tracking based on OpenCV is designed, which could perform real time moving objects detecting and tracking. There are also programming and hardware interfaces reserved, which can be used for future resea

温馨提示

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

评论

0/150

提交评论