一种基于FPGA实现相关算法的快速计算方法技术

技术编号:21343624 阅读:38 留言:0更新日期:2019-06-13 22:30
本发明专利技术提供一种基于FPGA实现相关算法的快速计算方法,一次匹配计算读取m次匹配所需的搜索窗数据,所读取的搜索窗数据的匹配计算按照m路并行进行,m为2的倍数。本发明专利技术1次匹配计算读取m次匹配所需的搜索窗数据,后面的匹配计算按照m路并行进行,从而利用1次匹配计算完成m次匹配;其次,由于相关计算的匹配计算循环次数很多,很多时间都浪费在数据搬移上,所以本发明专利技术扩大数据位宽,由一次搬移1个数据改为一次搬移m个数据,缩短搬移时间。本发明专利技术实现了相关算法的快速计算,相比于传统的计算速度提高了(m×m)倍。

A Fast Method of Computing Related Algorithms Based on FPGA

The invention provides a fast calculating method based on FPGA to realize the related algorithm. The searching window data needed to read m times matching is calculated by one time matching. The matching calculation of the searching window data read is carried out in parallel according to m channels, and M is a multiple of 2. The invention reads the search window data needed for m-times matching by one matching calculation, and the latter matching calculation is carried out in parallel according to m-way, thus completing m-times matching by one matching calculation. Secondly, because the matching calculation cycle of correlation calculation is many, a lot of time is wasted on data moving, so the invention enlarges the data bit width by changing one data moving to one moving M data moving at a time. Data, shorten the moving time. The invention realizes the fast calculation of the related algorithm, and improves (m*m) times the traditional calculation speed.

【技术实现步骤摘要】
一种基于FPGA实现相关算法的快速计算方法
本专利技术涉及相关跟踪,具体为一种基于FPGA实现相关算法的快速计算方法。
技术介绍
相关跟踪是将场景图像数字化后,利用现场图像与前一时刻所选定的样板图像的相关函数来确定两个图像的最佳匹配位置,从而确定目标位置。基于图像匹配的相关跟踪的缺点是数据量大,运算复杂,不易达到大窗口实时处理的要求,例如,当模板大小为M×M像素,搜索窗大小为N×N像素时,在一场的时间里需要完成(N-M+1)×(N-M+1)次匹配计算,可以看出计算量随着搜索窗的增大而呈平方增长。搜索窗的大小将直接影响图像跟踪器能够适应的环境和跟踪目标类型等系统性能,因此当跟踪窗比较大时,系统对硬件的要求也就相对较高。
技术实现思路
针对现有技术中存在的问题,本专利技术提供一种基于FPGA实现相关算法的快速计算方法,大大提高了计算速度。本专利技术是通过以下技术方案来实现:一种基于FPGA实现相关算法的快速计算方法,一次匹配计算读取m次匹配所需的搜索窗数据,所读取的搜索窗数据的匹配计算按照m路并行进行,m为2的倍数。优选的,m为2、4或8。优选的,具体包括如下步骤:步骤1,首先外部搜索窗数据输入到搜索窗缓冲区BRAM中,控制读取搜索窗n×(n+1)矩阵数据,其中n为2的倍数;搜索窗n×(n+1)矩阵数据分成m路搜索窗n×n矩阵数据,然后m路搜索窗n×n矩阵数据分别进行求均值运算并保存结果为sub_aver;外部模板窗数据输入到模板窗缓冲区BRAM中,控制读取模板窗n×n矩阵数据,然后进行求均值运算并保存结果为mb_aver;步骤2,读取搜索窗n×(n+1)矩阵数据并分成m路搜索窗n×n矩阵数据,然后m路搜索窗n×n矩阵数据减各自的均值后得到m路数据sub_reduce_aver,m路数据sub_reduce_aver并行进行平方和开根号运算得到m路数据sub_sqrt;读取模板窗n×n矩阵数据,然后减去均值mb_aver后得到数据mb_reduce_aver并行进行平方和开根号运算得到数据mb_sqrt;m路数据sub_reduce_aver与数据mb_reduce_aver分别进行相乘求和运算得到m路数据molecule;步骤3,m路数据并行进行比较赋值运算;步骤4,步骤1-3循环k次完成所有匹配计算,得出匹配结果,其中,k=(n×n)/m。进一步的,步骤3,m路数据并行进行比较赋值运算具体是:sub_sqrt等于0并且mb_sqrt等于0时匹配计算结果为1;sub_sqrt不等于0并且mb_sqrt不等于0时匹配计算结果为molecule/(sub_sqrt×mb_sqrt);sub_sqrt等于0并且mb_sqrt不等于0或者sub_sqrt不等于0并且mb_sqrt等于0时匹配结果均为0;步骤4,完成所有匹配计算后求出匹配计算结果的最大值即为匹配结果。进一步的,步骤1中,搜索窗n×(n+1)矩阵数据转存到搜索窗FIFO中,模板窗n×n矩阵数据转存到模板窗FIFO中;步骤2中从搜索窗FIFO读取搜索窗n×(n+1)矩阵数据,从模板窗FIFO读取模板窗n×n矩阵数据。进一步的,n为64,m为8,k为512。与现有技术相比,本专利技术具有以下有益的技术效果:本专利技术1次匹配计算读取m次匹配所需的搜索窗数据,后面的匹配计算按照m路并行进行,从而利用1次匹配计算完成m次匹配;其次,由于相关计算的匹配计算循环次数很多,很多时间都浪费在数据搬移上,所以本专利技术扩大数据位宽,由一次搬移1个数据改为一次搬移m个数据,缩短搬移时间。本专利技术适用于模板大小大于等于(m×2)×(m×2)的场景。本专利技术实现了相关算法的快速计算,相比于传统的计算速度提高了(m×m)倍。附图说明图1是本专利技术的相关算法流程图;图2是本专利技术的相关算法步骤1流程图;图3是本专利技术的相关算法步骤2流程图;图4是本专利技术的相关算法步骤3流程图。具体实施方式下面结合具体的实施例对本专利技术做进一步的详细说明,所述是对本专利技术的解释而不是限定。本专利技术快速计算方法包括2部分,第1部分是利用1次匹配计算完成m次匹配,1次匹配计算读取m次匹配所需的搜索窗数据n×(n+1),其中n为2的倍数,后面的匹配计算按照m路并行进行。第2部分是由于相关计算的匹配计算循环次数很多,很多时间都浪费在数据搬移上,所以本专利技术扩大数据位宽,由一次搬移1个数据改为一次搬移m个数据。本专利技术适用于模板大小大于等于(m×2)×(m×2)的场景,例如,模板大小为16×16时,m可以取为8,如果模板大小小于16×16则数据一次搬移数据个数需要减少。请参阅图1所示相关算法流程图,首先启动相关算法,然后产生一次匹配计算所需的搜索窗和模板BRAM的读地址,等待匹配计算完成。按照上述步骤循环k次进行所有匹配计算,最后在匹配计算结果矩阵中求出最大值。具体包括如下步骤:步骤1,如图2(a)所示,首先外部搜索窗数据输入到搜索窗缓冲区BRAM中,根据相关算法流程控制读取搜索窗n×(n+1)矩阵数据,n×(n+1)矩阵数据分成m路n×n矩阵数据,然后m路n×n矩阵数据分别进行求均值运算并保存结果为sub_aver,同时n×(n+1)矩阵数据转存到搜索窗FIFO中。如图2(b)所示,外部模板窗数据输入到模板窗缓冲区BRAM中,根据相关算法流程控制读取模板窗n×n矩阵数据,然后进行求均值运算并保存结果为mb_aver,同时n×n矩阵数据转存到模板窗FIFO中。步骤2,如图3所示,从搜索窗FIFO读取n×(n+1)矩阵数据并分成m路n×n矩阵数据,然后m路n×n矩阵数据减各自的均值后得到m路数据sub_reduce_aver,m路数据sub_reduce_aver并行进行平方和开根号运算得到m路数据sub_sqrt。从模板窗FIFO读取n×n矩阵数据,然后减去均值后得到数据mb_reduce_aver并行进行平方和开根号运算得到数据mb_sqrt。m路数据sub_reduce_aver与数据mb_reduce_aver分别进行相乘求和运算得到结果m路数据molecule。步骤3,如图4所示,m路数据并行进行比较赋值运算,sub_sqrt等于0并且mb_sqrt等于0时匹配计算结果为1;sub_sqrt不等于0并且mb_sqrt不等于0时匹配计算结果为molecule/(sub_sqrt×mb_sqrt);其他情况匹配结果为0。步骤4,上述步骤1-3循环k次完成所有匹配计算,最后求出最大值,其中,k=(n×n)/m。本专利技术实施例中,m为8,n为64,k为512。本专利技术是一种基于FPGA实现相关算法的快速计算方法,主要是用于图像跟踪、图像匹配等领域。通过优化算法架构减少数据搬移时间和循环次数来缩短匹配计算的时间。假定模板大小为64×64,搜索窗大小为128×128,FPGA的时钟频率为100MHz(10ns),则按照常规计算一场需要完成(128-64+1)×(128-64+1)=4225次匹配,数据搬移长度为64×64=4096,所花费时间为4225×4096×10ns=173056000ns=173ms。如果按照本专利技术的快速计算则计算一场需要完成(128-64)×(128-64)/8=512次匹配,数据搬移长度为64×8=4512,所花费时间本文档来自技高网...

【技术保护点】
1.一种基于FPGA实现相关算法的快速计算方法,其特征在于,一次匹配计算读取m次匹配所需的搜索窗数据,所读取的搜索窗数据的匹配计算按照m路并行进行,m为2的倍数。

【技术特征摘要】
1.一种基于FPGA实现相关算法的快速计算方法,其特征在于,一次匹配计算读取m次匹配所需的搜索窗数据,所读取的搜索窗数据的匹配计算按照m路并行进行,m为2的倍数。2.根据权利要求1所述的基于FPGA实现相关算法的快速计算方法,其特征在于,m为2、4或8。3.根据权利要求1所述的基于FPGA实现相关算法的快速计算方法,其特征在于,具体包括如下步骤:步骤1,首先外部搜索窗数据输入到搜索窗缓冲区BRAM中,控制读取搜索窗n×(n+1)矩阵数据,其中n为2的倍数;搜索窗n×(n+1)矩阵数据分成m路搜索窗n×n矩阵数据,然后m路搜索窗n×n矩阵数据分别进行求均值运算并保存结果为sub_aver;外部模板窗数据输入到模板窗缓冲区BRAM中,控制读取模板窗n×n矩阵数据,然后进行求均值运算并保存结果为mb_aver;步骤2,读取搜索窗n×(n+1)矩阵数据并分成m路搜索窗n×n矩阵数据,然后m路搜索窗n×n矩阵数据减各自的均值后得到m路数据sub_reduce_aver,m路数据sub_reduce_aver并行进行平方和开根号运算得到m路数据sub_sqrt;读取模板窗n×n矩阵数据,然后减去均值mb_aver后得到数据mb_reduce_aver并行进行平方和开根号运算得到数据mb_sqrt;m路数据s...

【专利技术属性】
技术研发人员:付小伟
申请(专利权)人:西安思丹德信息技术有限公司
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1