PTV算法设计与编程实现.doc_第1页
PTV算法设计与编程实现.doc_第2页
PTV算法设计与编程实现.doc_第3页
PTV算法设计与编程实现.doc_第4页
PTV算法设计与编程实现.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

摘 要论文题目:粒子追踪测速(ptv)算法设计与编程实现学生姓名:xxx指导教师:xxx摘 要 粒子跟踪测速(ptv)是一种全新无扰、瞬态、全场速度测量的方法,直接跟踪流场中的示踪粒子的运动,它的原理很简单,就是在流场中撒入示踪粒子,假设示踪粒子的运动准确代表了其所在流场内相应位置流体的运动。首先使用脉冲片光源照射流场中的一个测试平面,利用这些粒子对光的散射作用,使用成像的方法记录下流场中粒子的位置,然后对连续两帧或者多帧图像进行处理分析,得出各点粒子的位移,最后根据粒子位移和曝光的时间间隔,便可以计算出流场中各点的速度矢量,进而可以得到其他的参数。ptv图像的处理过程主要包括粒子识别和粒子配对过程,在ptv技术研究中,粒子识别过程一般采用统一灰度阈值的方法来确认,粒子配对则有许多不同的匹配方法。本文研究内容的重点是粒子配对过程,通过对几种ptv匹配算法的介绍并且比较它们的优缺点,选出其中一种匹配算法进行改进并通过编程实现,然后分别以模拟流场和实际流场对算法进行验证,用算法获得的流场速度分布与实际流场对比来评估该算法的优劣和适用性。关键词:ptv;匹配算法;编程实现47title: the algorithm design of ptv and programming realizationname: xxxsupervisor: xxxabstractptv is a brand new , instant state way without interference to measure the speed of all the field, directly tracing the movement of seeding particles in a field。its theory is very simple: dropping seeding particles in a field, lets suppose the movement of seeding particles significantly represents the movement of the fluids positions.firstly, we make the pulse piece light source to ray a testing plane in the field,utilizing the scattering effect of the particles to light, making use of the imaging method to record the location of the particles in the flow field, then analyzing two or more images which are in series, the result is the displacement of every particle, in the end, in accordance with the displacement of a particle and the time interval of exposure ,we can caculate the speed vector of every particle in the flow field, and so do the other parameters. the process of ptv image mainly includes the process of particle identification and particle matching, from the ptv technical study, the process of particle identification usually utilize the same gray threshold to confirm, however, the process of particle matching have diverse range of matching measures. the essay mainly research the process of particle matching, by introducing some ptv matching measures, comparing their relative merits, and improving one of them by programming, then validating by simulation field and reality field to the algorithm respectively, and evaluating the quality and applicability of the algorithm by matching the flow field velocity distribution which is obtained by the algorithm and reality fieldkey words: ptv;matching algorithm;programming realiza目 录目 录摘 要iabstract.ii1 绪论11.1 研究背景11.2 ptv原理与发展历程11.3 本文研究内容22 常见的ptv匹配算法原理42.1 最近邻法42.2 四帧粒子图像跟踪算法42.3 pcss算法62.4 匹配几率法73 ptv匹配算法及其验证113.1 匹配算法评价方法113.2 匹配算法原理对比分析113.3 算法改进、实现与验证及其分析123.3.1 算法改进与实现123.3.2 模拟流场对算法的验证144 ptv算法对实际图像的处理及软件界面设计324.1 算法对实际图像的处理324.2 软件界面设计335 结论与展望365.1 本文结论365.2 对ptv算法的展望38参考文献39 致 谢401绪 论1 绪论1.1 研究背景 自阿基米德建立液体平衡理论以来,流体力学已有了两千多年的历史。流体力学的发展史从某种程度上可以说是一部流体测量仪器的发展史。因为流体的运动非常复杂而且多变,所以它的运动规律一直是人类研究的重点,而将流体力学的研究成果用到生产生活中更是人类最终的目标。如今,经过几百年的努力,人们在流体力学的研究中已经取得了非常大的成就,比如在流体测速技术方面的发展更是显而易见,这对于发现流体的运动规律并进而揭示流动的内在本质具有决定性作用。但是目前的流体力学成就大多数只是对层流运动规律的研究,而对紊流本质运动规律还依然有很长的一段路要走,所以对紊流运动规律的研究是流体力学工作的重点。目前,对于紊流的研究,尤其是对紊流相干结构的研究,所遇到的最大问题之一就是对紊流瞬时流场的测量问题。因为缺乏足够可信的测量数据和资料,本来就极为复杂的紊流研究就变得更加困难。20世纪以来,随着流体力学的不断发展,针对紊流瞬时流场出现了很多测量仪器,例如旋桨流速仪、超声流速仪、热丝流速仪、热膜流速仪、激光多普勒流速仪等。尽管这些测量技术的发展对紊流流场测量做出了巨大的贡献,但在这些流速测量技术中,旋桨流速仪、热丝热膜流速仪和激光多普勒流速仪均属于单点测量技术,超声流速仪也只能同时对垂线的瞬时流速进行测量,难以实现对流场全场的瞬态测量,不能适用于对紊流流场结构进一步的探索研究,而本文介绍的粒子追踪测速则应运而生,该技术能同时测量全流场瞬时流速,不仅可以测量二维流场,还可以扩展到三维流场中去,所以在实际生活中应用越来越广泛,本文只研究ptv在二维流场中的应用。1.2 ptv原理与发展历程ptv的原理很简单,就是在流场中撒入示踪粒子,假设示踪粒子的运动准确代表了其所在流场内相应位置流体的运动,使用脉冲片光源照射流场中的一个测试平面,利用这些粒子对光的散射作用,使用成像的方法记录下流场中粒子的位置,然后对连续两帧或者多帧图像进行处理分析,得出各点粒子的位移,最后根据粒子位移和曝光的时间间隔,便可以计算出流场中各点的速度矢量,于是全流场瞬时流速就测量出来了,当然也得到流场的其他参数。在ptv技术中,当得到连续两帧或者多帧图像时,接下来最关键也是最困难的一步就是对这两帧或者多帧图像中的粒子进行正确的匹配。关于粒子匹配算法,目前已经有几种常见的粒子匹配方法,比如最近邻法和各种互相关的方法,互相关法如baek和lee1996年提出的配对几率算法,okamoto等人1995年提出的spg算法,uemura等人1989年提出的bicc算法等,以及各种人工神经网络算法,如grant和pan1995年提出的人工神经网络算法以及labonte1999年提出的人工神经网络算法。这些匹配算法当中,原理最简单的是当属最近邻法。但也正是因为该算法的简单性,当撒入示踪粒子的浓度比较高时,或者粒子运动的速度比较快时,很容易就发生误匹配,相应得到的速度矢量也不会正确。而人工神经网络技术的出现,使得粒子匹配的过程有可能完全自动进行,而且有可能保证较低的错误率,但这类方法需要耗费非常多的计算时间,而且有些人工神经网络实用性还不够好,但是未来ptv发展的方向应该是这种基于模式识别和人工神经网络的自动低错误率的粒子匹配方法。1.3 本文研究内容虽然现在已经有了相当多种ptv匹配算法,并且这些算法也经常被应用于研究当中,但是关于粒子的配对依然存在很多困难。例如原理最简单的最近邻法,虽然它的运算速度非常快,但是当粒子密度比较高,或者粒子运动速度比较快的情况下时,很容易出现错误的匹配的粒子;再比如未来发展方向的人工神经网络算法,这个算法虽然使低错误率、完全自动的粒子匹配成为可能,但是这类算法需要耗费相当多的运算时间,而有时候在某些研究中,某些实际应用中,必须要保证运算时间足够短。所以,本文研究的一个很重要的目的就是为了能找到一个精度和运算效率的平衡的算法。为了能使该算法能同时满足精度和运算效率上的要求,就需要对各种常见的算法进行对比分析,并且选出最合适的算法然后对其实现。本文分析了四种不同的ptv匹配算法,对比各种算法在计算速度和精度上的优缺点,总结出每个算法的适用性。本文的目的在于:通过总结常见ptv匹配算法的优缺点,分析各种算法在实际应用中的适用性,然后选择一个合适的匹配算法改进并且实现,这不但可以更加深入研究ptv匹配算法,而且可以为将来新算法的提出提供理论依据,本文不仅具有很强的理论意义,例如将来新算法的验证过程中,可以和本文的算法进行对比,以检验新算法的可行性,而且还具有很强的实践意义,对于各种两相流的研究都有很好的参考价值。本文研究的内容具体包括:第一:整理文献中出现的几种常见的ptv匹配算初步分析各算法的优缺点及适用性,选择一种合适的算法改进并使用matlab编程完成该算法,使用已有实验图像初步检验算法的正确性;第二:生成两组人工模拟流场,包括水平粒子流动、粒子绕原点的旋转流动,使用该算法进行处理计算,并分析计算结果,总结该算法的优缺点及适用性。第三:最后设计一个软件界面,并且导入实验得到的真实数据图像,通过在界面上输入一些参数,包括要处理的图像帧数以及一些算法中的参数,首先通过粒子识别后对数据存储并且对存储的数据通过匹配算法进行匹配计算得出匹配后的图像2 常见的ptv匹配算法原理2 常见的ptv匹配算法原理2.1 最近邻法假定某一区域的粒子密度不大,两帧图像之间同一粒子运动的位移足够小,则将该区域第一帧图像中的粒子坐标作为该区域测量的速度矢量的起点,以第一帧图像中的一个粒子坐标为圆心,在第二帧图像中寻找与第一帧中选定粒子距离最近的粒子,认为它就是与第一帧中所选定粒子相匹配的粒子,并将已匹配的粒子做上标记,继续进行同一帧图中其他粒子的匹配。 vi=min(x2j-x1i)2+(y2j-y1i)2)t (2-1)式中vi表示第一帧图像中第i个粒子的速度;min(x2j-x1i)2+(y2j-y1i)2)表示第二帧中所有粒子和第一帧中第i粒子距离中的最小值,t表示两帧图像之间的时间间隔。算法优点:原理简单,通俗易懂,运算速度非常快;算法缺点:算法精度很差,错误匹配概率高,尤其对于局部粒子比较集中的情况,或者流动状态剧烈变化的情况,很难得到正确的匹配结果。适用性:对于粒子数量较少,分布均匀,流速稳定的恒定流场,只要连续两帧图像之间的时间间隔选取得足够小,就可以得到较好的结果。2.2 四帧粒子图像跟踪算法四帧图像粒子跟踪算法是对连续的四帧图像进行粒子跟踪的算法。它的原理是:选取图像中的一个参考粒子,然后计算出四幅图像中所有可能的配对粒子的位移和角度变化量,其中位移和角度最小的改变量就认为是该粒子的运动路径。图2-1如图2-1所示,在第一帧图像中,选取一个参考粒子xi作为起始点,然后在第二帧图像中找到xi所在的位置,并且以它为圆心,半径由之前估计的最大流动速度决定,由此选取一个圆形区域作为查询区域(s1)。基于第二帧图像中查询区域的一部分,分别在第三帧图像和第四帧图像中选取查询区域s2和s3,通常使s1s2s3。其中,第三帧图像的查询区域是这样确定的:以第一帧和第二帧图像中相匹配的两个粒子的连线的延长线的一点为圆心画圆。同理,第四帧图像的查询区域的圆心也是通过这种方式确定的。这样就可以得到许多条参考粒子xi的可能路径。接着使用统计的方法去选择正确的路径。如果在这个过程中出现一条路径共用一个粒子的情况,那么错误的粒子路径就要舍弃。对于参考粒子的每一条可能的路径都使用如下的公式计算它总的该变量t位移改变量:l=13(dij-dm)2+(djk-dm)2+(dkl-dm)2 (2-2)角度该变量:=12(ik-m)2+(jl-m)2 (2-3)总的该变量:t=l2dm2+2 (2-4)其中:dm=13dij+djk+dkl (2-5) m=12ik+jl (2-6) dij=xj-xi (2-7) djk=xk-xj (2-8) dkl=xl-xk (2-9) ik为dij和djk之间的角度 jl为djk和dkl之间的角度最后,选取计算得到总的改变量t最小的那一个路径作为参考粒子xi的运动轨迹。算法优点:算法原理不是很复杂,较为简单,它可以解决局部速度梯度较大的一些流动问题;算法缺点:相比下面介绍的算法,该算法的运算速度比较慢,它的连通率和精确度都比较差,而且对于较低的粒子浓度更敏感。适用性:适用于粒子浓度较低的流动。2.3 pcss算法pcss算法的示意图如图2-2所示图2-2首先,在第一帧图像中以粒子i为中心,r为半径画出一个查询区域i,接着,在第二帧图像中选定一个候选粒子j,同样以r为半径画出一个查询区域j,这里要说明的是候选粒子被规定在一个半径为r的范围内选择。用sij表示两个粒子之间的相似系数,其表达式如(2-10)所示:sij=n=1nm=1mh(r-rim-rjn,-im-jn) (2-10)式中: r和分别表示为距离偏差和角度偏差的阈值,在实际应用中需要选择最合适的一组阈值进行计算;rim和im分别表示粒子i与查询区域i内粒子的距离和连线角度;rjn和jn分别为候选粒子中粒子j和查询区域j内粒子的距离和连线角度。m和n分别表示查询区域i和查询区域j粒子的个数。h(x,y)是一个阶跃函数如下:h(x,y)=1, &x0,y00, &其他 (2-11)对于粒子i,在第二帧图像中的所有候选粒子j中,都可以根据(2-10)和(2-11)得到一个相似系数sij。我们把候选粒子中相似系数最大的粒子作为粒子i的配对粒子。同理,图像中的每个粒子都用上述方法进行配对,就可以完成整幅图像的配对了。算法优点:原理比较简单,在第一帧图像中的每一个粒子都能在第二帧粒子中找到一个匹配的粒子,既连通率最高,对于实验参数不是很敏感,尤其是对粒子浓度和查询窗口的尺寸不敏感;算法缺点:对于第一帧图像中存在,但是在第二帧图像中跑出了光平面的粒子,理论上是没有可匹配的粒子,但是该算法也会为它找到一个匹配粒子,这样的匹配显然是属于错误的匹配,因此对于有较多粒子跑出光平面的情况,会出现大量的错误匹配。适用性:适用于光平面边缘处粒子数比较少而且流动速度比较小的情况,当连续两帧图像之间的时间间隔很短时,跑出光平面的粒子就会比较少,这样也可以使用本算法进行粒子匹配。2.4 匹配几率法这是一种利用示踪粒子群体运动特征的跟踪算法,并且该算法在二帧连续图像上的示踪粒子应满足如下三个基本特征:最大速度特征。即如果在流场中已知有一个最大速度u的粒子,然后它最多可以在两张图像之间的间隔位移是ut,因此当给定粒子在第一张图像中的位置时,这个粒子在第二张图片中出现的的位置就会受到限制。也就是说,所有示踪粒子在两帧图像时间间隔内的位移都必须小于一个确定值r2,如图所示,第一帧图像中的xi粒子有可能且只有可能运动到第二帧图像中的yj,y1,y2粒子位置,而位移大于r2的都被排除掉。流场区域特征。以第一帧图像中的xi粒子位置为圆心,r3为半径画一个圆,这个区域被认为是粒子的邻域范围,在这个范围内,示踪粒子的速度范围应该基本相同。如图所示,第一帧图像的x1,x2,x3,x4,xi粒子应该分别运动到第二帧图像中的y1,y2,y3,y4,yj粒子位置,只有这样才能保证每个速度矢量基本相同。基本相同的矢量之差的模应在一个微小的范围内,误差圆半径为r4,如图所示,根据特征1,由于位移必须小于r2,第一帧图像中的x4粒子只有可能运动到第二帧图像的y3和y4粒子的位置。但是y3粒子的位置超出了群体速度矢量的误差范围r4,也就是说|xixj-x4x3|r4,所以y3粒子并不是关于群体速度矢量xixj的有效跟踪粒子(当然也不排除y3粒子是关于其它群体速度矢量的有效跟踪粒子)。图2-3我们的算法就是基于以上的3个基本特征,从每一次所选择的的目标粒子中的所有可能轨迹找到一条最有可能的,即匹配概率最高的那一条轨迹,从而实现目标粒子的匹配。具体步骤如下:step 1:按照特征1找出第一帧图像中示踪粒子xi在第二帧图像中所有可能的的匹配粒子(如图所示,xi的匹配粒子有y1,y2,yj共3个),此刻我们设定xi和y1,y2,yj相匹配的概率分别为pi1,pi2,pij,再令xi与它们都不匹配的概率为pi*,初始时刻假定这几个概率都相同,即它们的分布是均匀的,即:pi=pi*=13+1 =1,2,j (2-12)step 2:按照特征2找出第一帧图像中示踪粒子xi的所有邻域粒子,包括x1,x2,x3,x4共四个,并且对每一个邻域粒子进行step 1操作,这样便可以得到第一帧图像中每一个粒子在第二帧中所有可能匹配的粒子以及相应的匹配概率。step 3:当通过step 1对示踪粒子xi进行处理后,得到的可能匹配的粒子,对于每一个匹配粒子相应的会有匹配的速度向量,然后根据特征3依次在其邻域的粒子x1,x2,x3,x4的所有可能匹配粒子中寻找相似的速度向量,并把所有相似速度向量的匹配概率用如下的式子求和并归一化。pin=a*pin-1+b*qin-1 (2-13)pin=pinpin +pi*n-1 (2-14)pi*n=pi*n-1pin +pi*n-1 (2-15)其中:qin-1=klpkln-1,i为第一帧图像中目标粒子的下标,为第i个目标粒子可能匹配粒子的下标,=1,2,j,k为第i个目标粒子的邻域粒子的下标,k=1,2,3,4;l为邻域粒子可能匹配的粒子的下标;a,b为松弛系数,a1,b/a越大收敛速度越快,n为迭代次数,在实际应用中应该选择最合适的一组松弛系数进行计算,一般a=0.3,b=4。step 4:上述几个式子构成迭代公式,当经过4,5次迭代以后,正确的匹配粒子的匹配概率会迅速增大,不正确的匹配粒子的匹配概率会迅速减小。最后,选择所有匹配粒子中匹配概率最大的一个作为目标粒子的匹配粒子。算法优点:该算法仅仅只需要对两帧连续图像进行处理,而且还考虑了第一帧中有的粒子跑出平面,也就是在第二帧图像中无匹配粒子这种情况,更加符合实际情况,算法采用的图示法更较为简单易懂;算法缺点:算法对实验参数的变化非常敏感,轻易改变某个参数就会对匹配的结果产生影响,所以对不同的图像,需要选取不同的参数来进行处理。适用性:对于高速的流场,粒子运动速度较快,并且在光平面停留得时间比较短时,可以使用该算法。3 ptv匹配算法及其验证3 ptv匹配算法及其验证3.1 匹配算法评价方法为了能从上面的四种ptv算法中选出最合适的一种算法进行改进并实现,我们首先得知道怎么去评价一种算法的好坏。评价一种ptv匹配算法的优劣,主要是从两个方面进行考虑:运算效率和算法精度。运算效率即算法运算所需的时间长短,算法精度即算法处理结果的准确性高低。通常情况下,如果一种算法的原理比较简单,那么其运算效率也会比较高,但是相应的算法准确性就会比较差,因此无法满足精度上的要求;而如果一种算法的原理比较复杂,那么其精度一般也较高,但是相应的运算效率则会非常低,算法也会难以应用到实际生产生活当中。总的来说,运算效率和算法精度二者很难兼得,我们只能使一种算法在运算效率和算法精度上能相对平衡,从而对该算法的优缺点以及适用性进行衡量。3.2 匹配算法原理对比分析通过对以上四种算法原理上的分析,最终选择了匹配几率法作为接下来我们深入研究的一种算法,选择它的原因主要基于以下几个原因:首先,相比与简单的最近邻法,该算法的优势明显,因为最近邻法虽然原理简单,但是算法精度相当低,粒子错误匹配的概率非常高,在实际生活中用处很小;其次,匹配几率法对比与四帧图像粒子跟踪算法,由于四帧图像粒子跟踪算法要处理四帧图像,所以运算时间较长,运算效率低,而且连通率和精确度都不好,对低密度粒子更敏感;最后,对比与pcss算法,因为pcss算法对于第一帧图像中的每一个粒子都会在第二帧中找到一个粒子与之相匹配,这样,就容易使一些第一帧图像中存在的粒子但是在第二帧中跑出光平面的粒子匹配一些错误的粒子,但匹配几率法不会出现这样的情况,它会把这样的粒子去掉,而不会给它匹配错误的粒子,所以精度相比于pcss算法更高。所以接下来将对匹配几率法进行编程实现并通过几个模拟流场对它进行进一步研究。3.3 算法改进、实现与验证及其分析3.3.1 算法改进与实现通过上面的四种匹配算法的对比分析,我们选择了匹配几率法进行研究,为了检验算法我们选择了通过计算机生成模拟流场来对其进行测试,在这个研究中,我们选择了两个流场进行检验:水平粒子流动的流场和绕原点旋转的流场。匹配几率法在上面介绍时首先要满足3个基本特征:最大速度特征。 即在流场中已知有一个最大速度u的粒子,然后它最多可以在两张图像之间的间隔位移是ut,因此当给定粒子在第一张图像中的位置时,这个粒子在第二张图片中出现的的位置就会受到限制。也就是说,所有示踪粒子在两帧图像时间间隔内的位移都必须小于一个确定值r2,关于这个特征,其代码如下:for i=1:nif f2(i,1)=0d=sqrt(f2(i,1)-f1(k,1).2+(f2(i,2)-f1(k,2).2);%表示第一帧图像中%的目标粒子i和第二帧图像中任意粒子的距离 if d=tm %这里的tm表示的就是候选粒子最大阈值,即上面说的r2 t(1,i)=d;endendend流场区域特征。 以第一帧图像中的xi粒子位置为圆心,r3为半径画一个圆,这个区域被认为是粒子的邻域范围,在这个范围内,示踪粒子的速度范围应该基本相同。也就是找出目标粒子的邻域粒子,其代码如下:for j=1:n if f1(j,1)=0&f1(j,1)=f1(k,1) d=sqrt(f1(1:n,1)-f1(i,1).2+(f1(1:n,2)-f1(i,2).2);%表示第一帧图%像中的目标粒子i在第一帧图像中的所有邻域粒子的距离 if d=tn %这里的tn表示的就是邻域粒子的最大阈值,即上面说的r3 r(1,j)=d; end endend基本相同的矢量之差的模应在一个微小的范围内,误差圆半径为r4。其代码如下:dispx =f2(indk(j),1)-f1(k,1);dispy=f2(indk(j),2)-f1(k,2);for i=1:nn(k)l=find(f2(:,1)-f1(aneb(i),1)-dispx).2+(f2(:,2)-f1(aneb(i),2)-dispy).2=1 %ns(i)表示示踪粒子i的可能匹配粒子数目p(i,can(:)=1/(ns(i)+1);%目标粒子i的初始匹配概率p(i,n+1)=1/(ns(i)+1);%目标粒子i的初始不匹配概率elsep(i,n+1)=1;%目标粒子i的初始不匹配概率end步骤三:当通过步骤一对示踪粒子i进行处理后,得到的可能匹配的粒子,对于每一个匹配粒子相应的会有匹配的速度向量,然后根据速度向量基本相同的这个特征,依次在其邻域的粒子的所有可能匹配粒子中寻找相似的速度向量,并把所有相似速度向量的匹配概率用第二章提到的几个式子求和并归一化。其代码如下:p(i,indi(j)=a*p(i,indi(j)+b*q(i,indi(j);%式中a一般取0.3,b一般取4p(i,indi(1:ns(i)=p(i,indi(1:ns(i)/(sum(p(i,indi(1:ns(i)+p(i,n+1);%目标粒子i所有可%能的匹配概率p(i,n+1)=p(i,n+1)/(sum(p(i,indi(1:ns(i)+p(i,n+1);%目标粒子错误匹配概率算法的改进:在上述的算法中进行了一个小小的改进,假如在选择相似向量的时候,当目标粒子选择一个候选粒子,而在目标粒子的某个邻域粒子的候选粒子中有两个以上的粒子满足三个特征,那么就在这些候选粒子中选择速度向量和目标向量最接近的那一个,即选取最小值。其代码如下:if length(l)0 %这里的l表示的是满足特征3中相似向量的邻域粒子及候选%粒子 x=length(l); %邻域粒子中满足特征3的候选粒子个数 mm=zeros(1,x); for jj=1:x mm(jj)=(f2(l(jj),1)-f1(aneb(i),1)-dispx).2+(f2(l(jj),2)-f1(aneb(i),2)-dispy).2;%对候选粒子再%做一次特征3中向量差的长度并且存在mm中endyy,uu=min(mm);%在mm中选出最小的那一个值,即速度向量最相似的那一个y=l(uu);%将最合适的这个粒子的位置传递给y一般通过4、5次迭代以后,正确的匹配概率就会越来越接近于1,错误的匹配概率就会越来越接近于0,接下来用水平粒子运动和绕原点的旋转运动两种模拟流场检验该算法。3.3.2 模拟流场对算法的验证水平粒子流动:通过matlab随机生成一个模拟的水平流场,假设粒子x方向的速度u=4m/s,y方向的速度v=0。两帧图像之间的间隔为1s,则实现该流场的代码如下:a=randperm(200);b=randperm(200);%a和b为随机生成的200个数t=1;%两帧图像的时间间隔u=4;%粒子x方向的速度v=0;%粒子y方向的速度for i=1:100f1x(i)=a(i);%第一帧图像粒子的横坐标f1y(i)=b(i);%第一帧图像粒子的纵坐标f2x(i)=f1x(i)+u*t;%第二帧图像粒子的横坐标f2y(i)=f1y(i)+v*t;%第二帧图像粒子的横坐标end其正确的图像如图3-1所示,通过匹配几率法匹配后的图像如图3-2所示。图3-1图3-2参数tm,tn,tp以及速度u对匹配算法的影响tm对算法的影响:图中红色原点表示第一帧图像的粒子,蓝色原点表示第二帧图像中的粒子这里算法中参数分别是的tm=30,tn=20,tp=10,u=4m/s,v=0,t=1。从图中可以看出只有少数粒子匹配错误,匹配正确的概率在0.9左右,这个相比与其他算法,精确度很高!上面图像出现错误匹配的粒子的原因可以很容易知道,因为上述参数中tm=30,也就是允许第一帧目标粒子和第二帧目标粒子的最大距离不超过30,显然,根据原图像中粒子的分布特点可以看出,因为个别粒子群密度大,所以这个值相对来说偏大,就会造成个别粒子匹配的过程中,选到多个候选粒子,并且候选粒子都满足上述的3个特征,即都在tn和tp范围内,最终在迭代过程中会被误认为是正确匹配的粒子而越发的增大,最终造成错误的匹配,为了更加形象的说明tm对匹配算法的影响,我们将它的值变小,比如令tm=10,其他参数不变,则正确的图像如图3-3所示,匹配后的图像如图3-4所示。图3-3图3-4可以看出,当tm值变小时,匹配精确度会更高,但是这仅仅是对水平运动的粒子,因为水平运动的粒子,如果选的时间间隔很小,并且运动速度也很慢的时候,可以得到离它最近的粒子就是和它正确匹配的粒子,这也就是水平运动比较慢的粒子可以使用最近邻法来匹配的原因。tn对算法的影响 为了能更好的说明tn对算法的影响,首先要排除最大的干扰就是tm,因为从上面我们可以知道,这是水平运动,且速度慢,所以tm对图像的影响是巨大的,即如果tm取得很小,比如取到4,那么根据上面的数据可以知道所有的粒子匹配的粒子都是正确的,而且只有一个候选粒子,那么该算法就失去了意义,所以让tm的值取得大一些,让目标粒子的候选粒子多一些,那么变化tn的值就可以比较明显的看到影响了。我们选择的参数是tm=100,tn=50,tp=10,其他关于粒子的速度都和上面一样,当然由于粒子每一次都是随机生成的,所以粒子坐标是不一样的,但不影响对算法的讨论。当tn=50时,正确的图像如图3-5所示,匹配后的图像如图3-6所示。图3-5图3-6现在我们将tn的值变为10,其他值不变的时候,其正确的图像如图3-7所示,匹配后的图像如图3-8所示。图3-7图3-8当我们不断变化tn的值时,发现如果tm和tp的值如果确定了,tn的值其实对最后的匹配图像影响很小,因为tn值表示的是目标粒子选择自己邻域粒子的阈值,所以如果它越大,那么目标粒子的邻域粒子就会越多,同时执行一次迭代的计算时间也会变长,但是理论上分析,增加邻域粒子的个数会对最后匹配正确的粒子产生影响的,也就是会影响精确度,因为增加了邻域粒子个数就会增加相似的速度向量,那么根据特征3就可以得到一个目标粒子可能在迭代的时候有多个匹配的粒子,最终会使粒子产生错误的匹配。如图中所示,可以看到第一帧图像中多个粒子匹配了第二帧中的同一个粒子,但是由于受限于粒子运动,选择的水平粒子流动对tn的变化不是很明显。tp对算法的影响tp对算法的影响很容易得到,在上面的分析中,无论是当tm=100,tn=10,tp=10,还是tm=100,tn=50,tp=10,如果将tp的值减小的一个合适的值,粒子会完全匹配正确,如下图,当其他参数不变,tp=5时,正确的图像如图3-9所示,匹配后的图像如图3-10所示。图3-9图3-10通过以上的几幅图像可以看到,当tp减小到5时,粒子匹配正确的几率接近于1,不难找到出现这样情况的原因,因为tp的物理意义是各个邻域粒子匹配的粒子和目标粒子匹配的粒子之间向量误差圆的阈值,它的值越小,表示的是在目标粒子邻域范围内,所有粒子速度方向越趋近于一致,这个在水平运动的流场,当时是非常符合实际,如果对于其他流场,当时间间隔取得足够小,或者粒子运动速度足够慢,即粒子在两帧图像中的运动接近于水平运动,那么tp的值越小,匹配正确的概率就越高。u对算法的影响速度对算法的影响在水平运动的粒子中主要体现在它的大小上,在上面的分析中,我们的速度一直没有变化,都保持在水平方向是4m/s,接下来我们将改变速度的大小看看其对算法的影响,在这里我们不会减小速度的大小,因为通过理论分析,运动极限的思维,当速度非常小时,目标粒子和候选粒子将会无限接近,即此时就算使用最简单但是匹配精确度最低的最近邻法也会得出很满意的匹配结果,也就是速度越小对匹配越有利,但是体现不出各个算法的优越性。所以为了更好理解算法,我们往增大速度大小的方向谈论其对算法的影响,当其他参数不变,即:tm=30,tn=20,tp=10,v=0,t=1,u增大为30m/s时。正确的图像如图3-11所示,经过算法匹配的后的图像如图3-12所示。图3-11图3-12从上面的匹配图像可以看到出现了很多错误匹配的粒子,当然,这是在其他参数没有变化的情况下,这也更能方便讨论u对算法的影响。当速度增大时,由于时间没有变化,所以第一帧图像中的粒子和第二帧图像中的粒子的距离就变大了,并且由于粒子坐标大小变化不大(本文中选择的粒子横纵坐标都在0-250之间),所以第一帧图像中的每个目标粒子在第二帧中寻找候选粒子时,距离上的差别就会减小,也就是说,在某个阈值范围内,满足目标粒子的的候选粒子就更多,而且他们的距离很接近,很难通过改变阈值tm的大小来排除错误的候选粒子,所以在其他参数不变的情况下,速度越大,对精确度的影响越大,会降低精确度,这个时候只有不断调试把tm,tn,tp的值才能获得正确的匹配图像。绕原点的旋转运动:对于绕原点的旋转运动,其和水平粒子运动的最大区别就是速度的方向,水平运动中所有粒子的运动方向是完全一致的,所有用匹配几率法去匹配粒子的时候,体现不出tn对水平运动的影响,而在绕原点的旋转运动中,因为粒子的运动方向并不是完全一致,所以在tn选择了邻域粒子数目后,用tp来比较每个速度向量的相似性,越相似的速度向量所对应的目标粒子匹配的粒子就是越正确的。下面我们将用旋转运动来检验算法,该流场的各种参数数据是:绕原点的角速度=4rad/s,各个粒子的坐标也是随机生成的。两帧图像的时间间隔是t=0.01s匹配算法中的各种参数是:tm=100,tn=20,tp=10。正确的图像如图3-13所示,匹配后的图像如图3-14所示。图3-13图3-14从图中看出匹配正确的粒子还是很多,只有个别粒子出现错误匹配,我们可以看到出现匹配错误的粒子都有一个很共同的特点,就是他们距离很近,而且第二帧图像中有些会出现2个以上的粒子距离第一帧图像中粒子的很近,所以他们的速度向量很近,这样匹配的时候就很容易出现错误。为了更好说明这个问题,我们只需要改变tp的值,就会出现很好的匹配的效果。上面图像中的tp值偏大,我们将其减小到5,即其他参数不变,tp=5。正确的图像如图3-15所示,算法匹配后的图像如图3-16所示。图3-15图3-16很显然,仅仅改变了tp的值,将其减小到5,这里变化就很大,在这次匹配的图像中,只出现了一个错误匹配的粒子,这个匹配正确率是很高的。在这里,我们就不用讨论tm,tn以及u对旋转流场的影响,因为他们三者对旋转流场的影响类似于粒子水平运动的流场,只有tp在这里影响较水平流场更为明显,所以其他参数的影响就不在讨论了。综上所述,tm,tn,tp,u对算法的影响: tm是选择候选粒子的的阈值,它的大小直接影响目标粒子的候选粒子个数,一般来说,tm值越大,候选粒子就越多,在其他参数不变的情况下,粒子正确匹配的个数会增加,但是迭代时间会变长,但是如果选得非常大,那么也会出现一些不匹配的粒子,tm如果越小,那么会出现找不到候选粒子,或者就算找到候选粒子也是错误的粒子,这个时候匹配几率法就主要受限于tm的影响,和最近邻法的算法效果差不多。通常tm/ut的值大于0.8即可。tn对算法的影响在粒子水平运动中效果不明显,但是一般来说,tn值不可选得太小,如果太小,会使目标粒子找不到邻域粒子,这样就不可能结合附近粒子来匹配粒子,也就不可能出现该算法的特征3,那么算法就没什么意义了,通常根据所处理的图像的粒子密度来估计一下tn值,虽然说tn值越大越好,但是太大了会造成迭代时间增加,即运算效率会降低,所以一般取得的tn值只要保证其邻域粒子的个数在2-10之间。tp对算法的影响主要是体现在最后正确选择候选粒子这一步上,因为算法通过之前的两步选择后,如果目标粒子的候选粒子还有多个,并且邻域粒子也有多个候选粒子,这个时候tp的值对算法的影响就至关重要了,如果tp较大,那么在进入迭代前也会有多个候选粒子,这样在最终生成图像时很容易产生错误的匹配粒子,因为在迭代的时候部分错误的候选粒子会被误认为正确的粒子而使匹配概率变大,但是这样的情况还是很少见的,一般只要tp取得很合适,最终结果的都很满意。当然tp越小越好,但是还是得根据流场而异,因为有些流场粒子之间的速度向量不一定相同,如果时间间隔选得不是很小,那么各自的速度向量方向差异不会很小,那么tp太小会产生错误的匹配,一般tp的选择是和选取的时间间隔,粒子速度以及第一帧目标粒子和其邻域粒子与第二帧候选粒子的速度向量决定的,在合理的范围内,其值越小越好,一般当阈值tp是最大位移的60%时,即tp/ut0.6,匹配正确的概率接近于1。u对算法的影响主要体现在它和最大匹配位移的阈值tm之间的关系,一般u越大,其他参数不变,粒子匹配正确的概率会越低,就算tm的值大于粒子可能的最大位移,正确的匹配概率也不会很高,这个时候需要让两帧图像的时间间隔更小一些,这样降低最大的位移,最终在后面的参数选择会更加容易,更容易调试。总的来说,匹配几率法对参数的变化很敏感,对于不同的流场,或者说流场的变化很小,都要选择不同的参数才能得到满意的结果,而且算法里面的参数的变化对最终匹配的图像的也有很大的影响,所以对不同的图像,需要选取不同的参数来进行处理。4 ptv算法对实际图像的处理及软件界面设计4 ptv算法对实际图像的处理及软件界面设计4.1 算法对实际图像的处理在实际图像中,由于流场的不确定性,而且由于粒子的分布不均匀性,所以对参数的选择就非常重要,而且对参数更加敏感。如下是实际流场的图像,使用高速照相机连续拍下两帧图像,图像的时间间隔是1/1500s。实际流场,连续两张图像,用上述的匹配几率法对其进行匹配后得到的图像如图4-2所示。图4-1图4-2从图4-2中可以看出还是有个别粒子匹配错误的,而这个原因也是和在模拟流场中差不多的,是和tm,tn,tp以及流场速度密切相关的,所以这里就不在讨论了。4.2 软件界面设计 为了能很好的导入实际流场,我们需要在设计软件时输入所要处理的图像帧数,而这些图像实现要存储在matlab的work下,然后通过gui来设计软件界面如下:首先导入图片,以下是导入的两帧图像,图像事先已经存储在matlab的一个路径下,当然这个路径是根据程序指定的。m2,mt=mpretrack_init(c:matlab7work,featsize,barint,barrg,barcc,idivrg,fovn,frame,imin,field);其中c:matlab7work是存储图像的地址,然后其中的featsize表示的是你要在这帧图像中寻找的粒子的大小了,barint表示图像中能接受的最小整体强度,barrg表示能接受的粒子的最大旋转半径,barcc表示能接受的最大离心率,idivrg表示能接受的整体强度和旋转平方的比例,fovn是将要分析的的图像帧的文件夹名字,frame是对文件夹里的即将被处理的图像,imin是局部极大值中被考虑的最小强度值,field指的是流场被处理的个数,一般情况下一次都只处理一种流场,这个时候可以给它设定值为0或者1。上述语句是导入图像并且通过调用其他相关程序来对实际图像进行处理的第一步,即粒子识别。两帧连续图像如图4-3所示。图4-3接着是对导入的图片进行处理,以及图片中粒子数据的存储,然后对数据进行处理,即我们的核心内容,通过粒子坐标对粒子进行匹配。在这里由于图像处理以后,根据程序,它会被储存在某一个默认的文件里,然后调用

温馨提示

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

评论

0/150

提交评论