首页 基于Mean-Shift算法的运动目标跟踪毕业设计

基于Mean-Shift算法的运动目标跟踪毕业设计

举报
开通vip

基于Mean-Shift算法的运动目标跟踪毕业设计基于Mean-Shift算法的运动目标跟踪毕业设计 湖南工学院(本科)毕业设计论文 2014届毕业设计说明书 基于Mean-Shift算法的运动目标跟踪 院 、 部:电气与信息工程学院 学生姓名: 方挣挣 指导教师:夏鑫 职称(学位)硕士 专 业: 电子信息工程 班 级: 电子1004班 完成时间: 2014年5月31日 湖南工学院(本科)毕业设计论文 摘 要 作为计算机视觉的一个重要部分,智能视频监控技术不仅在政府和企业的广泛应用,随着社会的进步,家庭也在很大程度上离不开它,而智能视频监控方面的核...

基于Mean-Shift算法的运动目标跟踪毕业设计
基于Mean-Shift算法的运动目标跟踪毕业 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 湖南工学院(本科)毕业设计论文 2014届毕业设计 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 书 基于Mean-Shift算法的运动目标跟踪 院 、 部:电气与信息工程学院 学生姓名: 方挣挣 指导教师:夏鑫 职称(学位)硕士 专 业: 电子信息工程 班 级: 电子1004班 完成时间: 2014年5月31日 湖南工学院(本科)毕业设计论文 摘 要 作为计算机视觉的一个重要部分,智能视频监控技术不仅在政府和企业的广泛应用,随着社会的进步,家庭也在很大程度上离不开它,而智能视频监控方面的核心技术是运动目标的跟踪,从21世纪以来,伴随着信息科学技术的飞速发展,越来越多的研究者开始关注智能化视频监控系统中的移动目标跟踪算法的研究。尽管人们在20世纪就已经提出了很多有效的运动目标跟踪算法,但事实上,运动目标的跟踪技术在实现的过程中仍然是困难重重,例如背景的不稳定、目标跟踪过程中被遮挡、目标跟背景颜色相似等因素,都会很大程度上破坏跟踪效果,因此,要想设计出跟踪效果好的均值漂移算法仍然具有很大挑战性。 在本篇论文中,简要的介绍了一下运动目标跟踪技术的发展史(从第一次被提出,一直到该项技术应用到各个领域),运动目标跟踪技术经历了一个漫长的过程。本论文还提到了视频监控系统的结构框架,并分析了每一部分的原理;同时也研究了图像处理技术在智能化视频监控体系中的应用,主要包含数学形态学理论、图像的预处理和目标模型描述等。 对于智能化视频监控体系在实践中的应用,本论文采用的是Mean-Shift(均值漂移)跟踪算法,该算法是一项先进的运动目标跟踪技术。还详细分析了基于均值漂移算法在运动目标跟踪方面的应用,而且验证了Mean-Shift算法在实际应用中的收敛性【】1。对于均值漂移算法易出现的缺点,对其一一攻破,并且进行了多次仿真实验,结论表明:该算法的跟踪效果较好。 关键词:智能视频监控;视频图像处理;背景差分法;运动目标的跟踪;Mean-Shift算法 I 湖南工学院(本科)毕业设计论文 ABSTRACT As an important part of computer vision, intelligent video surveillance technology, not only in government and enterprises a wide range of applications, with the progress of society, the family also largely inseparable from it, and intelligent video surveillance technology is a moving target core the track, from the 21st century, with the rapid development of information science and technology, more and more researchers began to focus on research in intelligent video surveillance system moving target tracking algorithm. Although people in the 20th century has been proposed many effective moving target tracking algorithm, but in fact, moving target tracking technology is still in the process of realization is difficult, such as unstable background, target tracking process is blocked, the target the background color is similar with other factors, will largely destroyed tracking results, therefore, in order to design a good effect mean shift tracking algorithm still has a great challenge. In this paper, a brief introduction about the history of the moving target tracking technology ( from the first to be made until the technology applied to various fields ), moving target tracking technology has gone through a long process. The paper also mentioned the structural frame of video surveillance systems, and analysis of the principle of each part; also studied image processing technology in intelligent video surveillance system consists mainly of mathematical morphology theory, image preprocessing and objectives model description. For the application of intelligent video surveillance system in practice, this thesis is the Mean-Shift (mean shift) tracking algorithm, which is an advanced motion tracking technology. Also a detailed analysis based on the mean shift algorithm in moving target tracking application, and verify the Mean-Shift algorithm in the practical application of the [1]onvergence . For the mean shift algorithm prone shortcomings, its one break, and c conducted a number of simulations, the conclusions show that : better tracking performance of the algorithm. Keywords : intelligent video surveillance; video image processing; background subtraction; tracking of moving targets; Mean-Shift algorithm II 湖南工学院(本科)毕业设计论文 目 录 1 绪论 ...................................................................1 1.1 课题研究背景与意义 ...............................................1 1.2 国内外研究现状 ...................................................1 1.3 目标跟踪问题的困扰因素 ...........................................2 1.4 本章小结 .........................................................3 2 图像处理简介 ...........................................................4 2.1 图像灰度化处理 ...................................................4 2.2 图像噪声处理 .....................................................4 2.3 目标表示 .........................................................5 2.4 数学形态学 .......................................................6 2.5 本章小结 .........................................................7 3 VC编程环境的搭建 ......................................................8 3.1 OpenCV简介 ......................................................8 3.2下载和安装OpenCV .................................................8 3.3搭建OpenCV环境 ..................................................8 10 3.4 OpenCV中常用函数介绍 ........................................... 3.4.1 数据结构 ..................................................10 3.4.2 常用函数 ..................................................12 3.5 本章小结 ........................................................14 4 基于Mean-Shift的目标跟踪算法 .........................................15 4.1运动目标跟踪综述 ................................................15 4.2 Mean-Shift算法研究 .............................................15 4.2.1 基本Mean-Shift算法 .......................................15 4.2.2 Mean-Shift算法工作原理分析 ...............................16 4.3 程序运行结果 ....................................................19 4.3.1 图形界面 ..................................................19 4.3.2 目标跟踪效果 ..............................................20 4.4 本章小结 ........................................................22 结束语 ..................................................................23 湖南工学院(本科)毕业设计说明书 参考文献 ................................................................24 致 谢 ...................................................................25 附 录 ...................................................................26 湖南工学院(本科)毕业设计论文 1 绪论 1.1 课题研究背景与意义 运动目标跟踪技术是计算机视觉领域的核心研究课题之一,它涉及到各个科研领域。随着社会的快速发展,光靠人力已经无法实现对庞大的数据进行分析、处理。因此,急需一项技术能够代替人在不稳定的环境中对繁琐的数据的进行处理。智能视频监控系统恰好具备这项功能,它通过对摄像机拍录的图像序列进行自动分析,实现对 【】2动态场景中目标定位、识别与跟踪。本论文主要是对Mean-Shift目标跟踪算法进行研究。 通过研究者们的实践发现,Mean-Shift算法在运动目标跟踪领域中有着相当高的目标匹配度,多次应用在了对实时性要求高的运动目标跟踪技术中。Mean-Shift算法不仅在军事领域举足轻重,工业领域也离不开它。计算机视觉的研究在军事领域(远程监视)、医学领域(医学检测)以及工业领域(精密仪器检测)都有着非常重要的应用,通过研究计算机视觉,人们可以更准确的把握尺度,例如在工业领域中的机器人视觉系统。 视觉图像是以不同类型的观测系统用不同的方法观测外界而得来的,能够与人肉眼作用,并且产生视觉与知觉的实体。根据科学研究和统计,图像中包含的信息占据了人类从外界获取信息中的3/4。在计算机技术的飞速发展下,数字图象技术也受到了国家很大的重视,并且得到快速的进展,出现了许多与其相关的新理论、新方法、新技术和新产品,并已经在各个方面都取得了非常广泛的应用,对改善人类生活质量、推动社会进步都起到了不可忽视的作用。 1.2 国内外研究现状 视频监控系统应用前景非常广泛,潜在的经济价值更是无法估量,因此而激发了全世界大多数科学家和相关企业浓厚的兴趣,尤其是在美国和英国,早已做了大量相关项目的研究。光流法在20世纪80年代初期被提出之后,动态图像序列分析正式进入一个研究的高潮。在96年至99年期间,美国国防高级研究 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 局(DARPA)出钱资助的卡内吉梅隆大学、戴卫夫研究中心和一些著名的研究机构,他们联合开发出来了视频监控系统(VSAM),其目标主要是为未来的城市和战场监控应用研发出一种全新的视频监控理解技术,能够代替人在危险的环境中进行监控,目前该系统仍然处于试用期。从98年开始,英国的雷丁大学开始研究路人与机动车辆的跟踪和交互作用识别。2000年,实时视觉监视系统(W4)在Maryland大学研究者的努力下研制出来,不单可 1 湖南工学院(本科)毕业设计论文 以定位人以及分割出人身体的任何部分,而且在建立其外观模型后,该系统还可以同时实现多人的跟踪,且可以对他们之间简易的交流活动进行监控。英国、法国和葡萄牙在欧盟的资助下,于2002年至2005年期间联合执行了CAVIAR项目。DARPA在2008年又出钱资助了一项全新的视频监控技术--研究实时流,其目的是为了快速的从监控视频中发现目标的行为,并且快速分析,例如挖掘、握手、交换物品等。 在视频图像处理方面的探索我国起步相对较晚,一直到86年才正式开始对视频跟踪技术的研究立项。为了推动我们国家在这个领域的快速发展,我国已经成立了国家重点实验室,专门用来研究视频跟踪技术。 Mean-Shift 算法主要是通过有限次迭代,从而做到准确定位目标,很大程度上避免了全局采集,大大减少了时间,如果目标区域已知,该算法完全可以做到实时的跟踪,近几年来被非常广泛的应用在目标跟踪领域。目前有许多科研人员和学者已经在Mean-Shift算法基础上做了大量的的改善工作。因为样本点随机的分布在样本空间,应该如何选取合适的长度与角度以及正确的窗口宽度依旧是Mean-Shift 算法需要解决的重要问题。浙大朱胜利等人提出的均值偏移跟踪算法和卡尔曼滤波器互相结合的方法,首先利用卡尔曼滤波器得到其初始位置,接着运用均值漂移跟踪算法来获得跟踪目标移动后的位置,从而可以实现对运动目标的实时跟踪。但是该方法只有在目标线性运动时跟踪效果挺好,一旦处于非线性运动则效果很差。因此,怎样在非线性运动下做到跟踪效果良好,这是一个需要解决的大问题。马丽主要研究的是在跟踪中运动目标被遮挡的问题,并提出了多子块表决与灰度相关匹配相连接的跟踪算法,然后再把粒子滤波算法和Mean-Shift跟踪算法进行有效的结合起来。 1.3 目标跟踪问题的困扰因素 跟踪目标运动的复杂性往往是目标跟踪问题的主要困扰因素,主要表现为多个方面,如下: (1)复杂的背景干扰 由于在运动目标的跟踪过程中是以RGB颜色作为模型,因此很容易受到复杂背景的干扰,当目标和背景颜色相似时,容易导致跟踪失败。 (2)目标外观的变化 运动目标跟踪一般是在不受控制的条件下进行的,各种因素都可能导致跟踪目标外观的变化,如光、角、规模和目标对象,以及形变等因素,所以如果我们想要对目标进行长期有效地跟踪,我们需要合理地处理这些变化。 (3)计算的实时性 要想研制出来的目标跟踪系统实用性强,则必须做到对运动目标的即时跟踪,这对算法的计算速度提出了强制性要求。算法耗时必须要少,至少做到每采集一帧图像 2 湖南工学院(本科)毕业设计论文 时,算法要运行一遍,否则将无法实现运动目标的正常跟踪。 (4)遮挡问题 遮挡问题在目标跟踪过程中是一种常见情况。在目标跟踪过程中,目标很容易被自身的遮挡,或者跟踪目标被周围其他的杂物跟背景所掩盖。如何有效的解决这个问题,一直都是目标跟踪过程中的难点和重点。 上述存在的问题,对运动目标实时鲁棒的跟踪将会更加艰难。由于目标的复杂性和不确定性,导致该算法适用环境相当有限,跟踪目标也大大受限。所以若想要设计出一个能够快速、准确、稳定地在复杂环境下跟踪目标的方法,仍然是一项非常艰巨的任务,还需要研究者进一步的研究。 1.4 本章小结 在本章节中,主要讲到的是该课题的一些基础知识;第一节、第二节讲的是课题研究背景,以及国内外研究现状。第三节详细介绍了该项技术在实现过程中所遇到的难点,例如:跟踪背景比较复杂、能否做到实时性跟踪和跟踪过程中目标被遮挡等问题。从开始不被人认可,到现在成为该领域不可或缺的技术,这跟广大研究者的努力所密切相关,当然也与国家的大力支持分不开。下面章节将会对上面所提到的难点进行逐一攻破。 3 湖南工学院(本科)毕业设计论文 2 图像处理简介 2.1 图像灰度化处理 视频监控系统不仅对精度有要求,对实时性也要求相当高,因此降低计算量,减少图像处理时间与内存空间要求是必要的,所以通常将彩色图像灰度化处理,这样就大大减少了图像处理数据,提高了处理速度。灰度化处理就是将彩色的R, G, B进行 -255之间,所以决定了灰度化只有256级,即分量处理。由于R, G, B的都是处于0 灰度图像的颜色只能在256种颜色中选择。现在有三种灰度化处理方法: (1)最大值法:让R,G,B的值等于三个值当中最大的一个,即: (1) ,,R,G,B,maxR,G,B 从公式中能够得到,利用最大值法处理后的图像,其灰度值会很高。 (2)平均值法:使R,G,B的值等于三者和的平均值,即: R,G,B,,R,G,B, (2) 3 (3)加权平均法:根据不同的重要性给R,G,B三个分量赋予不同的权值,然后再对 它们加权平均 RGB,,,,,,,RGB (3) ,,,3 并且,,,,,分别作为R,G,B的权值。根据人的视觉习惯,人眼对绿色敏感度会大于红色,对红色的敏感度又比蓝色强烈,所以能得到比较好的灰度图像,根,,,,, 据理论和以往经验证明,当时,得到的灰度图像比较合理。 ,,0.3,,,0.6,,,0.1 2.2 图像噪声处理 实际采集的图像中常包含各种不希望有的噪声,造成图像退化,为进行目标检测和跟踪等图像分析工作,需要先将噪声消除掉,目前常用的消噪方法主要有两种:一种是均值滤波,另一种就是中值滤波。 (1)均值滤波 均值滤波能够消除图像的噪声,是一种线性滤波。该方法的基本思想就是在图像中取一部分区域(通称模板),将区域内所有像素的灰度值求平均,然后用这个灰度平均值代替模板中的各像素灰度,这种滤波方法运算效率比较高,但是由于其平均化,也破坏了图像边缘,造成图像模糊。 4 湖南工学院(本科)毕业设计论文 (2)中值滤波 中值滤波依赖于模板的实现,是一种非线性滤波。它的原理是用滤波器包围图像区域,然后计算出图像区域中像素的排序结果。其计算公式为: (4) ,,,,x,y,,,fs,tgmedianmedian,,,,s,t,Nx,y ,,,,,,x,yNx,yfs,t其中,为的邻域,为含有噪声的原图。 中值滤波一般实现过程如下: ?将模板放在图中漫游,而且把像素点的位置与模板中心重合; ?读取模板相对应的像素点灰度值; ?将读取到的像素灰度值按照从小到大的顺序排成一列; ?找出这些值里最中间的一个; ?将找出的值赋给位于模板中心的像素。 通过以上步骤可以看出,中值滤波的主要功能就是把不同的像素灰度值修改成与周围像素值大小接近的值,这样对于椒盐噪声的消除能力是很强的,与均值滤波相比较,由于中值滤波不是简单的取平均值,所以产生的模糊比较少。 2.3 目标表示 为了做到减少冗余,图像分析中常用一种方式来表现跟踪的目标,这就被称为目标表示。只有节省存储空间、而且计算简便的方式才是一个优秀的表达方式。在图像中的区域可以是内部的,也可以是外部的。在选好表达方法之后,我们还需要描述跟踪目标,主要目的是使电脑做到完全识别出所得到的分割结果,并且做到充分利用。 目标表示,可分为点表示法、矩形框表示法、外轮廓表示法、块表示法和基于图 【13】像表示法。 点表示法,即用若干个点来代表目标,如跟踪目标物体的重心或者目标本身。 矩形框表示法,它的原理是被我们框住的矩形区域即作为目标。矩形框表示法在显示目标位置的同时也能得出目标的大小。 外轮廓表示法,跟踪目标的外轮廓即用来表示目标。外轮廓线能够用跟踪目标边沿点的连线表示。 块表示法,用若干个团块来代替跟踪目标。每个团块内的像素点都有相似之处。这些相似之处可以用与之类似的颜色、类似的光流或者光流与颜色相结合来表示。因此,那些用光流法得到的目标大多用块表示法来实现。 基于图像表示法,该表示方法采用每个像素点来表示目标。基于图像的表示法又可分为空间表示和时空表示等,空间表示是将图像或图像中目标的一部分变换到非笛卡尔空间,得到对图像数据更简洁的表示,通常采用的变换有傅里叶变换、主成份量分析、离散余弦变换、小波变换等,时空表示是在空间表示法基础上加上时间维信息, 5 湖南工学院(本科)毕业设计论文 以表示与运动相关的特征。 2.4 数学形态学 最近几年,研究者们对图像进行分析主要用到的是数学形态学。它的原理是用固定形态的构造元素,提取出图像中相对应的形状,用来识别图像,以便于对图像进行分析。数学形态学主要实现原理是集合论。利用该方法处理后,能够做到充分保持图像的基本特性,并且能够处理掉不相干的结构,从而大大的简化图像数据。 数学形态学主要包括膨胀、腐蚀、开启和闭合等四个基本运算。 (1)膨胀和腐蚀 膨胀与腐蚀,它们是数学形态学中最基础的运算。腐蚀能够做到缩小图像,而膨 ,,胀却是用来扩大图像的,它们正好互为对偶运算。膨胀与腐蚀的符号分别为和。 ff设输入的图像为,结构元素为,则对的膨胀定义为: bb ,,,,,,,,,,,, (5) f,bs,maxfs,x,bx|x,D,,s,x,Dbf f b对的腐蚀定义为: ,,,,,,,,,,,, f,bs,minfs,x,bx|x,D,,s,x,D (6) bf 2ZfD 其中,的定义域是,b的定义域是,正整数的向量分别是和。所有,sxDfb f针对膨胀运算来说,变量元素b的映像与输入的图像相与不为零,也就是说,用b来 ff膨胀就是将b的映像与中的非零元素相交时b在零点位置的集合。相反地,针对 ff腐蚀运算来说,只有当变量元素b全部处于输入的图像内时,才能对输入图像进 f行腐蚀。其实,用变量元素b来腐蚀输入图像所得到的集合正好等价于b全部包含 f在中时b零点位置的集合。 腐蚀运算,从字面上即可看出,它主要是用来侵蚀掉被跟踪目标的边界点,使目标物体变得更加圆滑,增强了物体的清晰度。腐蚀运算能够做到将跟踪目标身上小于变量元素的物质腐蚀掉,因此,我们选取的结构元素相当重要,它的大小将决定了所去掉物质的大小。所以,当图像中的两个物体之间有少量细小物体连接时,只要我们选取的结构元素恰当,通过腐蚀运算侵蚀后,能够顺利将两物体分开,使得图像更加清晰。 (2)开启和闭合 f 开启和闭合运算由膨胀运算和腐蚀运算复合而来,b对的开启运算被定义为: ,, f,b,f,b,b (7) 开启运算的原理是对图像在进行一次腐蚀运算之后,再对图像进行一次膨胀运算。 f b对的闭合运算可以用下列公式表示: 6 湖南工学院(本科)毕业设计论文 (8) ,,f,b,f,b,b 闭合运算的原理是对图像进行一次膨胀运算后,再对图像进行一次腐蚀运算。 开启运算可以做到磨掉突出图像的外部棱角,闭合运算恰好相反,磨掉的是内部尖角,此外,开闭运算还具有滤波特性。 2.5 本章小结 本章所研究的主要是与本课题密切相关的一些基础理论知识,前面两节讲的是对图像进行灰度值处理以及噪声处理,这两种处理方法能够使图像变的清晰、可视效果好。图像的灰度化处理用到的技术是对图像进行加权平均;而去噪处理用到的则是中值滤波。第三节列举出了当前所用到的主要目标表示法,并简单介绍了其工作原理。最后第四节,里面提到的腐蚀与膨胀当前用的比较多,他属于一种滤波算法,通过这两种技术的处理,能过使粗糙的图像变得光滑。 7 湖南工学院(本科)毕业设计论文 3 VC编程环境的搭建 当前大部分视频监控中,研究者们都用到OpenCV来对图像做预处理,其处理目的主要是为了去除图像中的冗余,改善图像的可视效果,从而保证目标在跟踪过程中的准确性。预处理又分为噪声处理和图像灰度化处理两个重要内容。 3.1 OpenCV简介 OpenCV是一个完全开源的计算机视觉库,它的编写语言是C/C++,支持开源的Linux系统、微软的Windows系统以及苹果的Mac操作系统。OpenCV除了C之外,它还支持TPython 、Ruby等语言。调用OpenCV函数库的主要目标是加快图像处理的执行速度。OpenCV的作用主要是为了构建出简易的计算机影像框架,其目的是为科学家们设计出更好的计算机影像相关软件提供帮助。OpenCV函数库中大概包含五百多个函数,涉及到许多领域。由于计算机视觉和机器学习是密切相关的,因此OpenCV还提供MLL机器学习库,能够很容易的应用到其他的机器学习场所。因此,OpenCV在科学研究中的应用领域相当广泛。 3.2下载和安装OpenCV OpenCV主页在SourceForge网站http: llSourceForge. Netlprojectsl opencvlibrary,对应的Wiki在http: //opencv. willowgarage. com,对于Windows系统,则为OpenC 【】16V-1.0.exe安装程序,然而,最新的版本始终都在SourceForge的SVN仓库中。 本论文在这里只讲在Windows系统下的安装,若想了解在Linux系统和苹果操作系统下的安装,可以自己查看相关资料。在Windows操作系统下,首先,从OpenCV官网中下载EXE安装程序,双击后即可安装。接着是注册DirectShow filter,进行一些安装后的必要处理,注册成功后即可开始使用OpenCV。当然,你也可以进入下载安装包的…/make目录下,使用VS2010打开opencv.sln,或者使用低版本的MC++(如VC6.0)打开opencv. dsw,然后按照提示生成调试版本的库,当然也可以重新生成Release版本的库。一切都安装好之后,若还想使用IPP优化功能,则可在官网上下载安装包进行安装,为了安装的顺利进行,请使用5.1及以上版本。然后确认将二进制文件路径添加到操作系统的环境变量PATH中。添加环境变量后,OpenCV就能够正确加载IPP了。 3.3搭建OpenCV环境 本文的硬件平台为惠普G42-474TX笔记本电脑,CPU为主频2.67GHz的32位双核酷睿i3 390M,2G内存。视频输入为电脑自带的集成摄像头。软件开发平台为 8 湖南工学院(本科)毕业设计论文 WindowsXP操作系统、OpenCV 1.0以及MS Visual C++6.0 (以下简称VC6.0)。 其中OpenCV在VC6.0中的配置过程如下: 假设我们将OpenCV安装到C:\Program Files\OpenCV文件夹下,在安装OpenCV过程中需要选择"将\OpenCV\bin加入系统变量"。然后,检查C:\Program ,,Files\OpenCV\bin是否已经被加入到环境变量PATH中(我的电脑属性环境变量),如果没有,请加入。成功加入后需要重启电脑才能生效,或者在任务管理器中重启explorer.exe。 OpenCV在VC6.0下的详细配置过程: 1)全局设置 ,,,菜单工具选择目录: 首先设置lib路径,平台选择Win32,目录选择Library files,然后在空白处输入lib路径,如下图1所示。 图1 Library files设置 然后目录选择Include files,在下方填入需要的库文件路径,如下图2所示: 图2 Include files设置 9 湖南工学院(本科)毕业设计论文 最后选择Source files,在下方填入需要的库文件路径,如下图3所示: 图3 Source files设置 添加完上述三处库文件后再点击“OK”,即成功的完成了OpenCV的配置。 2)项目设置 每次创建项目时,若想使用OpenCV,则需要在工程中加入需要的lib库文件。添 ,,加过程为:菜单工程设置,然后将Setting for选择All Configurations,然后选择右边“链接”标签,在“对象/库模块”附加上:cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib等lib文件,当然,你也可以只添加自己需要的lib文件,如下图4所示: 图4 项目设置 3.4 OpenCV中常用函数介绍 3.4.1 数据结构 OpenCV中有一些基础的数据类型,在我们平时用OpenCV函数库的时候常常会用到,因此在我们使用该函数库之前应该先掌握好,才能在用的时候得心应手。 以下是对常用数据结构的介绍: 1)CvPoint结构 它是一个int型结构,代表了二维坐标系下面的点,其结构体如下所示: 10 湖南工学院(本科)毕业设计论文 typedef struct CvPoint { int a; //代表坐标系中的横坐标,原点坐标为0 int b; //代表坐标系中的竖坐标,原点坐标为0 } CvPoint; 2)CvSize结构 由名字size即可看出,该结构体表示的是大小;该结构通常是用来表示矩形框大 小的,单位为像素,结构体中已经定义了矩形框的宽和高,具体如下: typedef struct Cvsize { int m_Width; //代表矩形框的宽,以像素为单位 int m_Height;//代表矩形框的高,以像素为单位 }CvSize; 3)IplImage 结构 IplImage 结构体的主要功能是用来处理和创造图像,它隶属于inter函数库IPL, 该函数库的主要功能是图像处理。该结构体定义如下: typedef struct IplImage { int n_Size; //结构体大小 int Card; //版本号 int n_CMCC; //支持的信道 int Depther; //像素深度值 int Data_up; //0和1分别代表交叉存取颜色信道和分开颜色信道 int Orange; //0代表左上,1代表的是左下 int m_Width; //图像的宽,用像素值表示其大小 int m_Height; //图像的高,用像素值表示其大小 struct_IplROI *Red; //表示图像比较活跃的区域 int Data_Size; //图像的data大小 int Width_Step; //以字节为单位的图像大小 } 4)CvCapture结构 typedef struct CvCapture CvChance; 11 湖南工学院(本科)毕业设计论文 该结构体在OpenCV应用中相当重要,视频中每帧图像的抓取都由它来完成,应当熟练掌握其用法。 5)cvCreateVideoWriter结构 typedef struct CvVideoWriter Movie_Reader; 3.4.2 常用函数 除了有常用的数据结构外,还有以下常用函数,也是必须掌握的内容,下面简单的介绍几个常用函数,本人在这次毕业设计中也有用到他们,介绍如下: 1)cvLoadImage( ):该函数用来载入视频图像 IplImage* cvLoadImage( const char* videoname, //声明一个文件名字 int countenance=CV_LOAD_IMAGE_COLOR ); Videoname:该char型常量代表的是被加载的视频名字。 countenance:表示加载进去后的视频图像的颜色和深度,指定读入图像的颜色和深度。指定的颜色可以将输入的图片转为3信道(CV_LOAD_IMAGE_COLOR),单信(CV_LOAD_IMAGE_GRAYSCALE),或者保持不变 (CV_LOAD_IMAGE_ANYCOLOR)。 2)cvShowImage( ):在指定窗口中显示图像 void cvShowImage( const char* name, const CvArr* image ); name:窗口的名字。 image:被显示的图像。 3)cvCreateFileCapture( )与cvCreateCameraCapture( ) CvCapture* cvCreateFileCapture( const char* filename ); 初始化从文件中获取视频; filename:视频文件名。 函数cvCreateFileCapture给指定文件中的视频流分配和初始化CvCapture结构。当分配的结构不再使用的时候,它应该使用cvReleaseCapture函数释放掉。 CvCapture* cvCreateCameraCapture( int index ); 初始化从摄像头中获取视频; index :要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。 12 湖南工学院(本科)毕业设计论文 函数cvCreateCameraCapture给从摄像头的视频流分配和初始化CvCapture结构。释 放这个结构,也要使用函数cvReleaseCapture。 4)cvQueryFrame( ):从摄像头或者文件中抓取并返回一帧 IplImage* cvQueryFrame( CvCapture* capture ); capture:视频获取结构。 函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。返回 的图像不可以被用户释放或者修改。 5)cvGetCaptureProperty( )与cvSetCaptureProperty( ) double cvGetCaptureProperty( CvCapture* capture, int property_id ); 获得摄像头或者视频文件的指定属性; capture:视频获取结构。 property_id:属性标识。可以是下面之一: CV_CAP_PROP_POS_MSEC - 影片目前位置,为毫秒数或者视频获取时间戳 CV_CAP_PROP_POS_FRAMES - 将被下一步解压/获取的帧索引,以0为起点CV_CAP_PROP_POS_AVI_RATIO - 视频文件的相对位置(0 - 影片的开始,1 - 影片的结尾) CV_CAP_PROP_FRAME_WIDTH - 视频流中的帧宽度 CV_CAP_PROP_FRAME_HEIGHT - 视频流中的帧高度 CV_CAP_PROP_FPS - 帧率 CV_CAP_PROP_FOURCC - 表示codec的四个字符 CV_CAP_PROP_FRAME_COUNT - 视频文件中帧的总数 int cvSetCaptureProperty( CvCapture* capture, int property_id, double value ); 设置指定视频获取的属性。目前这个函数对视频文件只支持: CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO; capture:视频获取结构。 property_id:属性标识。可以是下面之一: CV_CAP_PROP_POS_MSEC - 从文件开始的位置,单位为毫秒 CV_CAP_PROP_POS_FRAMES - 单位为帧数的位置(只对视频文件有效) CV_CAP_PROP_POS_AVI_RATIO - 视频文件的相对位置(0 - 影片的开始,1 - 影片的结尾) CV_CAP_PROP_FRAME_WIDTH - 视频流的帧宽度(只对摄像头有效) CV_CAP_PROP_FRAME_HEIGHT - 视频流的帧高度(只对摄像头有效) 13 湖南工学院(本科)毕业设计论文 CV_CAP_PROP_FPS - 帧率(只对摄像头有效) CV_CAP_PROP_FOURCC - 表示codec的四个字符(只对摄像头有效) value :属性的值。 6)cvCreateVideoWriter( ):创建视频写入器结构 CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 ); filename:输出视频文件名。 fourcc:四个字符用来表示压缩帧的codec 例如,CV_FOURCC('P','I','M','1')是MPEG-1 codec,CV_FOURCC('M','J','P','G')是motion-jpeg codec等。在Win32下,如果传入参数-1,可以从一个对话框中选择压缩方法和压缩参数。 fps:被创建视频流的帧率。 frame_size:视频流的大小。 is_color:如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)。 7)cvWriteFrame( ):写入一帧到一个视频文件中 int cvWriteFrame( CvVideoWriter* writer, const IplImage* image ); writer:视频写入器结构。 image:被写入的帧。 3.5 本章小结 本章主要研究的是关于该课题编程环境的搭建,要想做到目标跟踪,则离不开OpenCV这一函数类。从第一节的OpenCV函数介绍,再到第二节的下载安装教程,最后讲述的是创建项目所要注意的地方:必须把OpenCV的lib库文件和头文件添加进去,这将直接导致程序能否运行成功。 14 湖南工学院(本科)毕业设计论文 4 基于Mean-Shift的目标跟踪算法 4.1运动目标跟踪综述 作为视频监控领域的核心技术,运动目标跟踪所发挥的作用越来越重要。它是通过获取视频中运动目标每一帧的运动状态,通过对比每帧图像的差别,从而实现运动目标的实时跟踪。运动目标的跟踪并不局限于视频监控领域,它在医疗、军事和工业方面也同样不可或缺。但要实现对运动目标的实时跟踪也不是一件简单的事情,怎样才能做到在视频中快速完美的匹配运动目标,这是广大研究者一直以来都在努力解决的问题。保证做到实时跟踪运动目标,才能真正体现出运动目标跟踪的实用性。 当前,运动目标跟踪通常由目标识别与目标匹配来实现。目标识别,即通过在视频中获取每一帧的图像,接着对每帧图像中的物体进行识别,并获取其在图像中的相对位置,再进行处理,从而达到目标跟踪的效果。随着科学技术的快速发展,运动目标跟踪技术也越来越娴熟。研究者们更是将目标识别、匹配与检测相结合,使得跟踪效果大大改善,实时性跟可靠性也明显增强。 4.2 Mean-Shift算法研究 Mean-Shift(均值漂移)这一概念最开始被提出是在20世纪80年代《关于概率度梯度函数的估计》中。从中文翻译的名字就可以看出它的含义,即为漂移的向量。均值漂移算法工作的过程其实就是一个迭代过程,跟踪目标每到一个像素点,则算出当前点的漂移均值,并且把该像素点作为起点,接着向下一个像素点移动,以此循环,直到能够满足一定条件。正如达芬奇的作品一样,均值漂移这个概念在提出来时根本不受别人关注,直到20世纪末,Yizong Cheng发表了一篇关于均值漂移的文献,他在书中定义了核函数,以及设定了权重函数,使得均值漂移这一理论的适用范围扩大了不少,学者们对其关注度也大大增加。 Mean-Shift(均值漂移)之所以在现在还能在图像处理领域得到如此广泛的应用,这跟广大研究者们的努力使密不可分的。在99年到03年这五年时间里,均值漂移算法再次被研究者们添加了特征分析,特征分析能够把粗糙的图像变得平滑,同时也能够将图像进行分割,并且再次扩大了Mean-Shift算法的适用范围,能够大大减少图像处理中出现的问题,使得目标跟踪更加顺利。Mean-Shift(均值漂移)算法的多重优点,使得其在计算机视觉领域备受关注。 4.2.1 基本Mean-Shift算法 dR假设d维空间中的个采样点,,在x点的均值漂移向量的一般形xni,1,2,?,ni 15 湖南工学院(本科)毕业设计论文 式定义为: 1,,,,Mx,x,x (9) ,hiKx,Sih 公式中,为一个高维球区域,该区域半径为,且能够满足以下集合, hSh ,2,,,,,,,,Sx,y:y,xy,x,h (10) h 的值代表在这个采样点中有个坐标点在高维球区域中。 kkSnxhi 若定义,,,则表示的是采样点相对于点的偏移量,公式(9)中,,x,x,xx,xxii ,,Mx均值漂移向量就是将高维球区域中的个采样点与点的相对偏移向量求和kxShh ,,fx再对其求平均值。所以,如果所需样本点是在概率密度函数中得来的,由于非xi 零的概率密度梯度都是指向概率密度递增最大的方向,所以根据平均原理,高维球区域内的样本点会大部分落在沿着概率密度梯度的方向。因此,对应的均值漂移向Sxhi ,,Mx量也同样应该指向概率密度梯度的方向。 h 如图5所示,整个圆圈范围即为,小圆表示的是落入高维球区域中的采样SShh x,S点,数学公式表示即为,圆形黑点表示均值漂移中的基准点,圆圈中的箭头xxihi 表示的是所采集样本点相对于的偏移向量。从图中箭头的指向我们可以明显看出, xxi 图5 Mean-Shift示意分布图 ,,Mx偏移向量的箭头往往是指向样本点分布最集中地方向,换句话说,就是概率密h 度函数的梯度方向。 4.2.2 Mean-Shift算法工作原理分析 目前,很多领域都涉及到均值漂移算法,不仅仅是在运动目标跟踪方面,图像的处理也可以用到。例如在图像平滑方面,还有对图像进行分割。均值漂移算法在日常生活中有着强大的生命力。如图6所示,为均值漂移算法的 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图。 16 湖南工学院(本科)毕业设计论文 开始 q建立目标模型u NoYesFlag,,1 ,,,,py,py,,pyu0u1u0计算候选模块 Mean-Shift迭代算法y1y,y新的位置01 YesNo,,,,,,,,,Py,q,,Py,q10 Flag=1Flag=0,,y,y,y/2101 No y,y,,10 Yes y1找到最优点 下一帧 图6 Mean-Shift算法流程图 下面对Mean-Shift算法做详细介绍: (1)初始化 在图像处理中,我们都是根据描述其灰度值和色彩分布来描述一个物体,假设正x0 处于物体中心位置,那么,对该物体的描述可以为在目标区域中所有特征值的概率值 (其中 ),用公式表示即为: u,1,2,?,m 2sn,,,x,xs0i,,,,,,q,Ck,bx,u (11) ,Mi,,h,1i,, 在公式(11)中,代表的是有n个像素的搜索窗口的中心目标,其中,xu,1,2,...,m0 i,形容图片灰度级数,原始图片中所包含的像素多少用来表示。目标第ni,1,2,...,nm 2,,kxh个像素的坐标值用来表示;是核函数,它的带宽用来表示,通常只有窗口的xii 17 湖南工学院(本科)毕业设计论文 b,1/2作用,函数和的目的是用来分析坐标处的颜色值是否属于特征值, uxi s,1,bx,u,,siss,,bx,u,,,,,表示处的灰度值。 xb,,x,iiis,,0,bx,ui, C因为是一个归一化常量,因此,不管怎么变化,它所有特征值的概率总和都等于1。 1sC,,其中代表以原点为中心的像素坐标。 xi2ns,,kx,,,i,1i,, 位于y的物体可描述为 2ns,,h,x,ysi,,,,,,,, (12) py,Ck,bx,u,uhi,,h,1i,, 1sC,,其中x是以y为中心的候选目标像素坐标。 ih2,,yx,nhi,,k,2,1i,,h,, ,, 也就是说,对于此类目标跟踪问题,可以被当成是寻找最优的y,使得与之,,qpyuu,,, ,,,y差最接近0。与的最相似性用Bhattacharrya系数来度量分布,即 ,,qpyuu m,, ,,,,,,,,,y,,py,q,pyq (13) ,uu,1u ,,,,py式(13)在点泰勒展开可以得到, ,,0u,, mm11qupy,qpyqpy,,,,,,,,,,, (14) ,,0uu,,22pyu,1u,1u0把式(12)放入式(14 ),经过整理后可以得到, 2mn,,Cyx1,hi,, (15) py,qpyqwk,,,,,,,,,,,0ui,,22h,1,1ui,,其中, 18 湖南工学院(本科)毕业设计论文 mquwbxu,, ,,,,, (16) ,ii,,pyu,1u0 由此可以看出式(15)右边的最后一项是带权值的核密度估计,我们可以通过均值漂移算法对其进行最优化处理。 (2)搜索目标 在我们用均值漂移算法对其进行最优化处理时,在每一步的迭代过程中,跟踪目标区域的中心位置都会由向新的位置偏移,如下公式: yy0i 2n,,y,xi,,xwk,ii,,h,1i,, y,,xin,,y,xixw,,,i,,h,1i,, (3)更新目标 与上面第一步相同,要想更新候选目标,首先得计算新的候选目标的Bhattacharrya 系数,公式如下: n ,,,,,,,q,p,qh,ph ,yyi,1i1,,y,y,y,,,,,y,q,,y,q如果,则 ii,1iii,12 (4)迭代条件 y,y,, 如果,则中止迭代,如果不符合条件,则重新执行第二步。 ii,1 (5)确定目标的位置 据公式可知,当Bhattacharrya系数达到最大值时,他所在的位置即为目标所在位置。在Comaniciu等人的研究作品中,他们平均每帧图像只需不到5次均值漂移迭代就可以达到收敛效果,相当于每秒钟能够处理352 x240像素的图像30帧。 4.3 程序运行结果 4.3.1 图形界面 如图7所示,程序运行出来的首界面只有两个button按键,左边按键的功能是在打开摄像头之前对图像的视频窗口进行自定义,右边按键很显然就是结束功能。 19 湖南工学院(本科)毕业设计论文 图7 图形界面1 如图8所示,点击“打开摄像头”按键后,就会出现如下窗口,在窗口中我们 可以自定义视频窗口的大小,默认为640 x 480,右边窗口中的压缩功能暂时还没有添加,因此无法使用,但对程序所要实现的功能并无影响。 图8 图形界面2 4.3.2 目标跟踪效果 如图9所示,设置好窗口大小等参数后,就会出现图中所示画面,电脑摄像头将会被打开。 20 湖南工学院(本科)毕业设计论文 图9 打开视频窗口 当出现图9中效果后,我们需要选择跟踪目标,即将鼠标放在视频窗口中,按下左键不放,框住运动目标。如图10所示,点击鼠标左键,拖动以框住人体头部。 图10 选定跟踪目标 当松开鼠标左键后,就会出现如图11中所示现象,头部被一个红色的圆圈所框住,此时,头部即为跟踪的目标,圆圈将随着目标的移动而移动,只要在摄像头视野范围内,始终都会框住目标,实现目标的实时跟踪。 由于在日常生活中,视频监控系统不可能只在如此稳定的环境中进行跟踪,实际应用中往往存在很多的干扰,例如跟踪背景复杂、相似目标较多等原因。因此,本次研究还实现了在多个目标干扰中实现了跟踪,效果良好,如图12所示。 21 湖南工学院(本科)毕业设计论文 图11 单个目标跟踪效果 图12 多目标干扰跟踪效果 4.4 本章小结 本章主要讨论的是均值漂移算法的工作原理,以及跟踪效果。均值漂移算法在刚被重视时有着很多的缺点,跟踪的实时性和鲁棒性都很差,导致跟踪效果不明显,严重时还可导致无法跟踪。因此,本文中的Mean-Shift算法是本人参考多方面的资料 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 而来,利用Bhattacharrya系数使跟踪效果有很大的改善。在多个目标干扰的情况下也能做到实时跟踪。 22 湖南工学院(本科)毕业设计论文 结束语 科学技术的进步会带动工业的快速发展,工业的发展亦会带动人们去研究更高新的技术,社会的进步离不开这两个互补的过程。正是如此,才会让目标跟踪在当今社会备受关注。每一项技术都是一个循序渐进的过程,如基于Mean-Shift算法的运动目标跟踪技术,在刚被提出来时根本就没有人感兴趣,直到后面才开始慢慢受到广大学者和研究者们的关注,以此带动了它的快速发展。从解决它的背景干扰问题,再到跟踪实时性问题,再到目标遮挡问题,运动目标跟踪技术越来越成熟。它的应用领域也从工业扩展到军事,最后走进家庭。 现在,运动目标的跟踪技术在任何方面都可以看到它的实际应用,如街道上面的交通监控、小区的闭路电视、医院的医疗器械和军事上面的远程监控等等。运动目标跟踪算法的好坏会直接影响到在目标跟踪过程中的效果,增强跟踪算法的实时性和鲁棒性一直都是广大研究者和学者的研究目标。 运动目标检测是目标跟踪的基础部分,虽然本文中只有简单的介绍,但它与目标跟踪的实时性与鲁棒性的好坏是密不可分的。其次,本文用到的Mean-Shift(均值漂移)算法,不会因为缺少像素点而导致在空间位置信息上的不足。并且用实验结果证明了该算法在跟踪背景环境复杂、背景信息大幅度改变和跟踪目标与背景颜色相似这几种不同情况跟踪过程的实时性和鲁棒性,强有力的表明了本文中算法的有效性。 23 湖南工学院(本科)毕业设计论文 参考文献 [1] 柳伟,罗以宁,孙南.基于背景优化的Mean-Shift目标跟踪算法 [M].计算机应用, 2009.89~100 [2] 高国旺,刘上乾.强背景噪声下红外目标的鲁棒性跟踪算法 [M].西安:西安电子科 技大学学报(自然科学版),2010. [3] 李红波,曾德龙.基于Mean-Shift和粒子滤波的两步多目标跟踪方法 [M]. 重庆:重 庆邮电大学学报( 自然科学版),2010. [4] Kailath T,The divergence and bhattacharyya distance measures in signal selection.IEEE Transactions on Communication Technology,1967.56~69 [5] Comaniciu D,Ramesh V,Meer P,Real-time tracking of non-rigid objects using mean shift(IEEE Conference on Computer Vision and Pattern recognition,2000,67~90 [6] omaniciu D,Ramesh V,Meer P, Kernel-based object tracking.IEEE Trans on Pattern Analysis and Machine Intelligence,2003,78~89 [7] 朱淼良.计算机视觉[M].浙江大学出版社,1997.187~203 [8] 侯志强,韩崇昭.视觉跟踪技术综述[J].自动化学报,2006. [9] 秦欢欢.视频序列中运动目标检测与跟踪技术研究[D].太原理工大学硕士学位论 文,2008 [10] Hu W M, Tan T N, Wang L, et al. ASurvey on Visual Surveillance of Object Motion andBehaviors [J]. IEEE Transactions on System Man and Cybernetics, 2004,45~47 [11]宁纪锋,姜光,李鹏飞.一种基于角点的Mean-Shift 目标跟踪算法[J].计算机应用研 究, 2009.123~139 [12]梁春迎,王国营. 基于运动统计和关键帧的视频检索方法[J].通信技 术,2009,23~25 [13]朱胜利,朱善安,李旭超.快速运动目标的Mean-Shift算法[J].光电工程,2006 [14]LI P H,ZHANG T W,MA B.Unscented Kalman Filter for Visual Curve Tracking[J]. Image and Vision Computing,2004 [15] CHENG Y.Mean-Shift, Mode Seeking, and Clustering[J].IEEE Trans on Pattern Analysis and Machine Intelligence, 1995 [16]Gary Bradski,Adrian Kaehler.学习OpenCV[M].图像处理,2009.198~254 24 湖南工学院(本科)毕业设计论文 致 谢 在这次毕业设计过程中让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是人生道路上的财富,我们要认真对待。这次毕业设计必将为我的大学生涯画上一个完美的句号。 论文的完成也就意味着大学生涯即将成为过去,首先,在这里我要感谢我的导师夏鑫老师,毕业设计之所以能完成的如此顺利,这与夏老师的耐心指导密切相关。在我厦门实习期间,夏老师更是深夜一点还在为我批阅开题报告,在他一次又一次的指导下,让我在工作之余顺利完成了当时的任务,真正做到了学习工作两不误。在这里,我要向他表示感谢和深深的敬意。 此外,我还要感谢实习期间我的同事朱卿,在编写代码的过程中,他更是为我指导了很多。也教会了我很多MFC方面的知识,让我受益匪浅。 感谢我的室友李腾、方移胜和周胜勇,跟他们相处的日子让我今生都难忘,他们在这四年来对我的关心和帮助更是让我很受感动,希望他们在未来能够一帆风顺、一鸣惊人。 感谢同班同学刘泽宇和张晟同学,他们在我的毕设过程中提出了很多宝贵的意见,在我的论文中也作出了很多指导。在此,由衷的感谢你们。 最后,我要感谢我的家人,谢谢你们一直以来对我的支持与关爱,你们的理解是我人生道路上最强大的后盾,让我无所畏惧;你们的关心是我在受伤时最好的良药,让我总能重拾信心。谢谢你们,亲爱的家人。 谨以此文献给所有帮助过我的人们,正是因为你们的帮助,才能有我的今天,在这里对你们表示衷心的感谢。 25 湖南工学院(本科)毕业设计论文 附 录 //下面代码为选择跟踪目标及处理过程的核心代码。 void on_mouse(int event, int x, int y, int flags,void *NotUsed) { if( !image ) return; if( image->origin ) y = image->height - y; if( select_object )//如果处于选择跟踪物体阶段,则对selection用当前的鼠标位置进行设置 { selection.x = MIN(x,origin.x); selection.y = MIN(y,origin.y); selection.width = selection.x + CV_IABS(x - origin.x); selection.height = selection.y + CV_IABS(y - origin.y); selection.x = MAX( selection.x, 0 ); selection.y = MAX( selection.y, 0 ); selection.width = MIN( selection.width, image->width ); selection.height = MIN( selection.height, image->height ); selection.width -= selection.x; selection.height -= selection.y; } switch( event ) { case CV_EVENT_LBUTTONDOWN://开始点击选择跟踪物体 origin = cvPoint(x,y); selection = cvRect(x,y,0,0);//坐标 select_object = 1;//表明开始进行选取 break; case CV_EVENT_LBUTTONUP: 26 湖南工学院(本科)毕业设计论文 select_object = 0;//选取完成 if( selection.width > 0 && selection.height > 0 ) if(tool_number==0) track_object[0] = -1;//如果选择物体有效,则打开跟踪功能 else if(tool_number==1) track_object[1]=-1; break; } } //以下代码为,目标跟踪界面,以及Mean-Shift算法的处理 void CDemoDlg::OnOK() { int ncams=CCameraDS::CameraCount(); if(ncams==0) { CString str; str.Format("没有发现摄像头"); AfxMessageBox(str); } else { CCameraDS camera; if(! camera.OpenCamera(0)) { CString str; str.Format("无法打开摄像头1"); AfxMessageBox(str); } cvNamedWindow("solution",1); cvSetMouseCallback( "solution", on_mouse ); // 设置鼠标回调函数 IplImage *frame = camera.QueryFrame(); int i, bin_w, c; 27 湖南工学院(本科)毕业设计论文 image = cvCreateImage( cvGetSize(frame), 8, 3 ); image->origin = frame->origin; hsv = cvCreateImage( cvGetSize(frame), 8, 3 ); hue = cvCreateImage( cvGetSize(frame), 8, 1 ); mask = cvCreateImage( cvGetSize(frame), 8, 1 ); backproject = cvCreateImage( cvGetSize(frame), 8, 1 ); backproject_0 = cvCreateImage( cvGetSize(frame), 8, 1 ); backproject_1 = cvCreateImage( cvGetSize(frame), 8, 1 ); hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); // 计算直方图 hist_0 = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); //同上 hist_1 = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); // 同上 histimg = cvCreateImage( cvSize(320,200), 8, 3 ); cvZero( histimg ); while(tool_number!=3) { if(tool_number==1) { vmax_[0]=vmax; vmin_[0]=vmin; smin_[0]=smin; } else if(tool_number==2) { vmax_[1]=vmax; vmin_[1]=vmin; smin_[1]=smin; } //获取一帧 IplImage *frame = camera.QueryFrame(); cvCopy( frame, image, 0 ); cvCvtColor( image, hsv, CV_BGR2HSV ); // 彩色空间转换 BGR to HSV for(i=0;i<2;i++) { 28 湖南工学院(本科)毕业设计论文 if(i==0) { cvCopyHist(hist_0,&hist); cvCopy(backproject_0,backproject); track_window=track_window_0; track_comp=track_comp_0; } else if(i==1) { cvCopy(backproject_1,backproject); cvCopyHist(hist_1,&hist); track_window=track_window_1; track_comp=track_comp_1; } if( track_object[i] ) { int _vmin = vmin_[i], _vmax = vmax_[i]; int _smin=smin_[i]; cvInRangeS( hsv, cvScalar(0,_smin,MIN(_vmin,_vmax),0), cvScalar(180,256,MAX(_vmin,_vmax),0), mask ); // 得到二值的MASK cvSplit( hsv, hue, 0, 0, 0 ); // 只提取 HUE 分量 if( track_object[i] < 0 &&tool_number==i) { float max_val = 0.f; cvSetImageROI( hue, selection ); // 得到选择区域 for ROI cvSetImageROI( mask, selection ); // 得到选择区域 for mask cvCalcHist( &hue, hist, 0, mask ); // 计算直方图 cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 ); // 只找最大值 cvConvertScale( hist->bins, hist->bins, max_val ? 255. / max_val : 0, 0 ); // 缩放 bin 到区间 [0,255] cvResetImageROI( hue ); // remove ROI cvResetImageROI( mask ); track_window = selection; 29 湖南工学院(本科)毕业设计论文 track_object[i] = 1; cvZero( histimg ); bin_w = histimg->width / hdims; // hdims: 条的个数,则 bin_w 为条的宽度 } cvCalcBackProject( &hue, backproject, hist ); // 使用 back project 方法 cvAnd( backproject, mask, backproject, 0 ); // calling CAMSHIFT 调用算法模块 cvCamShift( backproject, track_window, cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ), &track_comp, &track_box ); track_window = track_comp.rect; if( backproject_mode ) cvCvtColor( backproject, image, CV_GRAY2BGR ); //使用backproject灰度图像 if( image->origin ) track_box.angle = -track_box.angle; if(i==0) { // cvCopy(backproject,backproject_0); track_comp_0=track_comp; track_window_0=track_window; cvCopyHist(hist,&hist_0); cvEllipseBox( image, track_box, CV_RGB(255,0,0), 3, CV_AA, 0 ); } else if(i==1) { // cvCopy(backproject,backproject_1); track_comp_1=track_comp; track_window_1=track_window; cvCopyHist(hist,&hist_1); 30 湖南工学院(本科)毕业设计论文 cvEllipseBox( image, track_box, CV_RGB(0,255,0), 3, CV_AA, 0 ); } } if(tool_number==i&&select_object && selection.width > 0 && selection.height > 0 ) { cvSetImageROI( image, selection ); cvXorS( image, cvScalarAll(255), image, 0 ); cvResetImageROI( image ); } } cvShowImage("solution",image); cvWaitKey(1); } camera.CloseCamera(); //可不调用此函数,CCameraDS析构时会自动关闭摄像头 cvDestroyWindow("camera"); } } 31
本文档为【基于Mean-Shift算法的运动目标跟踪毕业设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_496339
暂无简介~
格式:doc
大小:274KB
软件:Word
页数:0
分类:生活休闲
上传时间:2018-10-04
浏览量:11