99ComputerCDSoftwareandApplicationsspecialfocus本期关注两化融合这个算法是在一个捡网球小车的项目中实现的,首先通过外部的摄像头捕捉出网球场中的画面,然后利用openCV自带库函数中的hough的圆变换算法识别出圆以及找到球的圆心,并且调整灰度值和三原色值,从而找出所有的网球的坐标,这里不需要进行坐标的变换,因为后面可以看到需要用到的坐标都是属于图像上的坐标。根据这些球的坐标和小车的坐标可以计算出最短的路径,这个可以理解为一个哈密顿问题,在N小于等于16的情况下可以用状态压缩DP的算法去求解,算法时间是可以接受的,最后把路径还原出来,通过蓝牙把数据发送到小车,小车存储这些数据知道其要走的路线后,开始启动。在实际中小车不可能完完全全的按照规定的路线严格的走,所以小车必须进行实时的修正路线,在这里我们使用的是基于OpenCV的前景检测的方法去实现的,通过每一次的偏离计算得到每一次修正的数据通过PC端发送给小车,使其最后达到网球的位置并捡起网球。1OpenCV1.1OpenCV中的前景检测为了理解前景检测的概念,我们先要通过建立场景模型,知道前景和背景的概念,一个场景模型可能包含许多层次,从“新的前景”到旧的前景再到背景。在我们的项目中,还存在着目标的移动,通过目标的移动,我们可以识别“真的”前景(新位置)和“假的”的前景(其旧的位置,“空洞”)。如何检测这些“新的前景”和“旧的前景”?需要将背景消除,才能进行检测。最简单的背景消除方法就是用一帧减去另一帧,然后将足够大的差别标记为前景。这种方法往往能捕捉运动目标的边缘。第二个方法就是平均背景法,思路是计算每个像素的平均值和标准差作为它的背景模型。这个方法优点是精度比较高,但是计算的时间较长,需要遍历整幅图像。1.2利用前景检测循迹由图1所示,首先我们先会拍取场地的一帧图像作为背景。之后小车开始出现在场地中,外部的摄像头开始采基于OpenCV前景检测的循迹算法/,/摘要:目前很多各种各样的循迹算法都是基于可移动的,固定在移动物体上的摄像头,这样很多时候都造成摄像头所能拍摄的范围不广。考虑到这一点,利用外部的摄像头去控制小车的循迹,增大其能看到的范围,基于OpenCV的前景检测,利用多次重复拍摄并且与背景做差的方法得到小车实时位置,并据此进行实时修正以减少范围大了之后精度可能降低的缺点。设计出一个多次拍摄的图像进行全局帧差的算法,从而对小车进行定位,再向小车发出命令修正实际的方向误差。关键词:OpenCV;循迹;前景检测;重复拍摄;全局帧差;实时修正集图像,假如T1和T2时刻采取的图像如图所示。令T1时刻采取的图像是Pt1,T2时刻采取的图像是Pt2,背景图像为Pbg.首先把图像转换为灰度图像,然后把T1和T2时的灰度图像矩阵分别与背景做差。如下等式(1)(2)所示:[D1]=[gray(Pt1)]–[gray(Pbg)](1)[D2]=[gray(Pt1)]–[gray(Pbg)](2)中括号表示矩阵的意思。经过(4)(5)的过程之后,将两幅差帧图像做与操作,使轨迹图像更精确些。如等式(3)所示。[RES]=[D1]AND[D2](3)D1或者是D2是背景消除之后的结果,得到的RES矩阵结果就是背景消除之后前景运动轨迹的结果。图1检测循迹原理图小车中心确定:通过D1或者D2,可以大概确定到小车的位置,因为D1(D2)中已经将背景消除,通过运动轮廓的横纵的最大值确定中心点位置,并且可以通过实验验证这个中心位置坐标确定的正确性,以及进行修正,通过OpenCV的一些工具可以在视频图像中标出中心点的位置。图2小车方向确定图◆中图分类号:TP274100ComputerCDSoftwareandApplicationsspecialfocus本期关注两化融合小车方向确定:因为每次拍摄的间隔很短,所以我们可以认为每两次拍摄小车走的都是直线运动,从而通过两个中心点的连线确定小车当前的方向,如图2所示。1.3移动循迹过程中的修正修正原理是通过小车当前的坐标和小球坐标(即目标位置坐标),以及上一个终点(捡的上一个球)坐标三个参数共同确定。图3校正原理图如上图所示,α是待求角度。SP点表示startpoint,即小车起点或者是捡起前一个球后的所在位置;NP表示nowpoint,即目前小车已经从SP走到NP位置,小车当前时刻所在位置;BP表示ballpoint,即下一个需要捡起的小球的位置。这三个点的坐标都是可以实时可以从拍摄的帧图像中取得,因此根据这三点位置可以知道小车当前偏移理想路径(图3中的虚线)的程度,根据计算得出的角度α对小车运动方向进行修正。SP到BP直线方程:(n-y0)x+(x0-m)y+y0-(n-y0)x0=0(4)NP到BS直线间距离:(5)NS之间距离:(6)求解得到α:(7)根据α具体的数值,对小车发送数据进行方向的纠正,理论上α角度值越大,需要纠正的程度越大,纠正通过发送数据改变小车舵机信号上的占空比,从而改变小车的实时方向。当然,在不同的场地上纠正的数值是不相同的,所以我们只做了对我们场地的修正,需要不停的测试,得到一个合适的修正数值。也可以获取场地的一些摩擦因数和压力等参数引入做一个修正参数的计算模型,不过在实际情况中这些方法都是比较麻烦的,所以我们采用在场地中反复测试后得到的修正参数。22.1实验环境场地普通大理石小车普通机器小车捡球结构滚动式捡球结构球普通网球2.2结果演示图4控制软件图4是利用MFC开发的MFC软件,整个流程是先用”粗识”按钮识别网球,这个按钮就是实现了cvHoughCircle()函数识别圆的功能,当找到的圆过多,可以根据控制台打印的提示数据调整点数值和g值(绿值)后选择“球的存在”即可以把所有网球找到。第二个步骤是点开视频,可以实时的看到场地画面,然后点击“轨迹”后就可以让小车开始移动,画面可以实时跟踪并显示轨迹,而且后台也会发送数据使得小车修正路线。由于此项目当时的摄像头摄像范围过小,故实验将用一个球进行循迹修正的过程。图5识别球并显示信息图5显示了识别球后会显示球的个数以及他的坐标还有识别时候的绿点数,这些参数对于如果找到了一些不是网球的圆进行排除是非常有用的。下面就开始展示循迹的过程。理想的路径显然是从车的起点到球的位置,但是现实是不可能的,所以需要进行修正。图6的红色部分是前景检测部分检测出的不同地方,黄色点是通过计算得出的小101ComputerCDSoftwareandApplicationsspecialfocus本期关注两化融合参考文献:[1]ZhangZ.Flexiblecameracalibrationbyviewingaplanefromunknownorientations[C].//ComputerVision,1999,Kerkyra:TheProceedingsoftheSeventhIEEEInternationalConference,1999.[2]OpenCV.[OL].[3]李江涛,倪国强,王强,等.一种快速准确识别圆形目标的新算法[J].激光与红外,2007,37(6):576-578.[4]张运华,邢诚.一种改进的圆检测算法[J].地矿测绘,2008,24(3):6-8.[5]胡东红,汪浩,艾君,等.两种图像校正算法在实际应用中的比较[J].计算机工程与应用,2009,45(13):191-193,226.[6]汤超.opencv的运动目标检测[D].厦门大学信息科学与技术学院,2009.[7][OL].[8]MusserDR,DergeGJ,SainiA.STLTutorialandReferenceGuide:C++ProgrammingwiththeStandardTemplateLibrary[M].2ndRevisededition.Addison-WesleyEducationalPublishersInc,2001.[9]黄岚.王康平,周春光,庞巍,等.粒子群优化算法求解旅行商问题[J].东北大学学报(自然科学版),2003,4(41):477-480.[10]田贵超,黎明,韦雪洁.旅行商问题(TSP)的几种求解方法[J].计算机仿真,2006,8(23):153-157.作者简介:揭展明(1992-),男,广东中山人,学生,本科,研究方向:云计算;段文迪(1991-),宁夏石嘴山人,学生,本科,研究方向:图像处理;曹雨(1992-),男,河北人,学生,本科。作者单位:电子科技大学计算机工程学院极限网络计算与服务实验室,成都611731;电子科技大学自动化工程学院,成都611731车的实时中心位置。图6循迹过程结果图我们再通过下面的4张图进行更进一步的去理解这整个过程。其实有更多的实验数据结果,但这些都是需要以图片或者是视频的形式展现出来,所以这里给出这次循迹的全部过程。通过图7-8可以很清晰的看到整个循迹的过程。采取外部的摄像头,每隔一定的时间采取一帧图像,每次通过小车的中心点(上图黄点)的位置计算修正参数,再把参数通过蓝牙发送到小车端,让小车进行修正的运动。3通过这个算法的实现,我们发现在开源的OpenCV基础上,图像处理还是有很多方向的研究可以进行的,目前OpenCV上的算法可能都是可以优化的,就如识别圆的算法上,根据现实情况的需要,对算法进行改进。在循迹过程中,可以用到其中的一些背景消除的算法,根据自己的需要去选择。但是目前这个循迹算法的缺点是由于采用背景消除,所以不能背景在每个时刻不能改变,否则就会成为下一个前景,混入我们的计算范围内,原来的计算范围仅仅限于前景,所以我们会根据这点再往后面展开更深的研究如何排除背景变化的影响。图7小车经过纠正后走到网球位置(左边为现实小车图,经过处理后的分析图)图8小车通过滚动装置捡起网球基于OpenCV前景检测的循迹算法作者:揭展明,段文迪,曹雨作者单位:揭展明(电子科技大学计算机工程学院极限网络计算与服务实验室,成都,611731),段文迪,曹雨(电子科技大学自动化工程学院,成都,611731)刊名:计算机光盘软件与应用英文刊名:ComputerCDSoftwareandApplications年,卷(期):2013(19)被引用次数:2次参考文献(10条)1.ZhangZFlexiblecameracalibrationbyviewingaplanefromunknownorientations19992.OpenCV3.李江涛,倪国强,王强,黄光华一种快速准确识别圆形目标的新算法[期刊论文]-激光与红外2007(6)4.张运华,邢诚一种改进的圆检测算法[期刊论文]-地矿测绘2008(3)5.胡东红,汪浩,艾君,张玲,张胜兰两种图像校正算法在实际应用中的比较[期刊论文]-计算机工程与应用2009(13)6.汤超opencv的运动目标检测20097.查看详情8.MusserDR;DergeGJ;SainiASTLTutorialandReferenceGuide:C++ProgrammingwiththeStandardTemplateLibrary2ndRevisededition.Addison-WesleyEducationalPublishersInc20019.黄岚;王康平;周春光;庞巍粒子群优化算法求解旅行商问题2003(41)10.田贵超,黎明,韦雪洁旅行商问题(TSP)的几种求解方法[期刊论文]-计算机仿真2006(8)引证文献(1条)1.丁倩雯基于FPGA的自适应像素分割算法设计与实现[期刊论文]-电子器件2015(03)引用本文格式:揭展明.段文迪.曹雨基于OpenCV前景检测的循迹算法[期刊论文]-计算机光盘软件与应用2013(19)