基于归一化相关系数的模板匹配高速并行实现方法和装置与流程

文档序号:11170603阅读:514来源:国知局
基于归一化相关系数的模板匹配高速并行实现方法和装置与流程
本发明涉及图像模板匹配技术领域,特别涉及一种基于归一化相关系数的模板匹配高速并行实现方法和装置。

背景技术:
模板匹配主要用来定位图像中的一个目标,它广泛应用于图像对齐、边缘检测、双目立体视觉等图像处理领域,并且这些图像处理手段已经在导弹目标识别、卫星图像监控、医疗图像融合、基于双目立体视觉的测量等军用民用领域中得到广泛应用。模板匹配主要是通过计算搜索位置处已知模板图与实时图搜索区域之间的相似性测度来定位与模板图有类似尺寸和图像的目标。由于归一化互相关系数对亮度和对比度变化具有不变性,其算法相对简单并且具有很高的精度,因此迄今为止它是模板匹配中应用最广泛的一种测度。假设实时图由A表示,模板图由B表示,其尺寸分别为K×L和M×N个像素。在任一搜索位置(u,v)(0≤u≤K-M,0≤v≤L-N)的归一化互相关系数(NCC-NormalizedCross-Correlation)定义为:其中∑∑表示为模板图的灰度均值,为在当前搜索位置的实时图与模板图重叠部分的灰度均值。由此可以看出,实际上该运算就是在实时图中平移模板图,并对实时图和模板图重叠点进行归一化相乘,然后进行累加操作。为了获得精确定位,模板匹配需要在实时图中搜索与模板图相重合的每一个区域,因此对于一个通常的应用,需要搜索的位置数目往往非常多。对于自动目标识别、跟踪等实时应用领域,基于归一化互相关测度的模板匹配计算量相对还是太大从而导致其应用受到很大限制。目前已经提出许多技术来加速模板匹配计算,由于这些技术不需要对所有位置进行匹配,因此大幅度的降低了计算量,但是这些技术通常由于局部的极值点干扰导致错误的匹配。事实上,由于模板匹配的计算是针对图像各个像素进行相关运算,因此该方法本身能够通过并行的方法来加速。另外也提出了一些多处理器系统来加速模板匹配的计算。但是对于要求小型化、微功耗的嵌入式应用,多处理器方法无法满足实际应用要求,并且也不经济。近年来,随着电子技术和制造工艺的快速发展,现场可编程门阵列(FPGA)的容量越来越大、速度越来越快,这使得FPGA具有了一般微处理器所无法比拟的强大的并行性,因此FPGA特别适用于实现模板匹配计算。专利申请号为200910069272.6高速图像匹配方法及装置提出的是一种实现归一化互相关系数方法,该方法实现结构简单,但具体实现流程需要太多的切换,乘累加模块的输入需要切换多个输入,这将增加逻辑资源消耗、增加布线的难度,导致布线路径较长从而降低系统可能达到的最高内核速度,同时增加了功耗;输出的只是中间累加结果,这将导致需要更多的外部存储空间或者需要DSP紧密配合运算,从而占用大量的DSP运行时间,导致DSP的控制和通信的复杂度,降低DSP运行的实时性。而本发明能够解决上面的问题。

技术实现要素:
本发明针对上述现有技术的不足,提出了一种基于归一化相关系数的模板匹配高速并行实现方法,该方法可由现场可编程门阵列(FPGA)或超大规模集成电路(VLSI)通过并行方式来高速高精度地计算归一化互相关系数,能够进一步减少逻辑资源消耗,降低功耗和成本,同时提高运算速度;采用该方法的设备能够实现精度高、参数设置灵活、实时性强的高速模板匹配。本发明解决上述技术问题所采用的技术方案是:基于归一化相关系数的模板匹配高速并行实现方法和装置,高速并行实现方法包括有如下步骤:步骤1:读入实时图和模板图数据到对应的内部RAM缓冲块中,同时实时图数据存储到用于计算实时图灰度值总和与实时图灰度值平方总和的实时图数据缓冲RAM中,同时进行模板图灰度值总和模板图灰度值平方总和的计算和第1行第1列搜索位置处实时图灰度值总和实时图灰度值平方总和的计算;步骤2:计算搜索位置第1行后续各列的实时图灰度值总和同时计算当前位置实时图灰度值平方总和搜索位置第1行各列模板图实时图灰度值乘积总和及归一化相关系数;步骤3:读入新一行的实时图数据到数据已经无效的内部RAM缓冲块,同时该新一行实时图数据读入到用于计算实时图灰度值总和与实时图灰度值平方总和的实时图数据缓冲RAM中覆盖已经无效的数据,同时计算当前行第1列的实时图灰度值总和实时图灰度值平方总和值;步骤4:采用上述步骤2、步骤3相同的方式,依次计算出后续各行归一化相关系数。上述模板匹配方法所用的归一化相关系数公式如下:A表示实时图,B表示模板图,其尺寸分别为K×L和M×N个像素。(u,v)为任一搜索位置,0≤u≤K-M,0≤v≤L-N。ΣΣ表示为模板图像的灰度平均值,为当前搜索位置(u,v)处实时图与模板图重叠部分的灰度平均值。步骤1所述的模板图数据读入到对应的内部RAM缓冲块,是将每一行N列的灰度值存储到一个RAM块中,共存入M行,即采用了M个RAM块,每个RAM块包含N个存储单元;实时图数据读入到对应的内部RAM缓冲块,是将每一行L列的灰度值存储到一个RAM块中,共存入M行,同样采用了M个RAM块,每个RAM块包含L个存储单元;实时图数据存储到用于计算实时图灰度值总和和实时图灰度值平方总和的实时图数据缓冲RAM中,总计存入M行N列数据,即该块RAM包含M×N个存储单元。步骤1所述的模板图灰度值总和的运算在读入模板图数据时,通过时序控制模块控制一个累加器实现。累加器的输入端连接到模板图数据输入端,其输出即为模板图灰度值总和。步骤1所述的模板图灰度值平方总和的运算在读入模板图数据时,通过时序控制模块控制一个平方运算模块和累加器实现。平方运算模块的输入端连接到模板图数据输入端,平方运算模块的输出连接到累加器的输入端,累加器输出即为模板图灰度值平方总和。步骤1中所述的搜索位置第1行第1列的实时图灰度值总和的计算,是通过时序控制模块控制一个行数据累加模块在读入每一行实时图数据时,对实时图第1行第1列搜索位置处每一行数据进行累加,然后通过一个列累加器对这些行数据累加模块输出结果逐列进行累加,并且和经过M步(模板图行数步)延迟的列累加器累加结果相减获得。步骤1中所述的搜索位置第1行第1列的实时图灰度值平方总和的计算,是通过时序控制模块控制一个行数据累加模块在每一行实时图数据读入时,对实时图第1行第1列搜索位置处每一行数据平方后进行累加,然后通过一个列累加器对这些行数据累加模块输出结果逐列进行累加,并且和经过M步(模板图行数步)延迟的列累加器累加结果相减获得。步骤2中后续各列每一个实时图灰度值总和计算,是从搜索位置第2列开始,通过时序控制模块控制实时图数据缓冲RAM同时依次逐行输出实时图与模板图重叠区域中相对于前一个搜索位置新进的一列数据和刚移出的一列数据,由减法器作差后,再通过累加器逐行求和,并且与前一列搜索位置处的该累加器结果值求和(即该累加器从第2列开始保留所有的累加值),然后由加法器与已经计算出的当前行第1列搜索位置处的相加即可获得当前列的步骤2中后续各列每一个实时图灰度值平方总和计算,是从搜索位置第2列开始,通过时序控制模块控制实时图数据缓冲RAM同时依次逐行输出实时图与模板图重叠区域中相对于前一个搜索位置新进的一列数据和刚移出的一列数据,分别由平方运算模块求平方后再由减法器作差,然后通过累加器逐行求和,并且与前一列搜索位置处的该累加器结果值求和(即该累加器从第2列开始保留所有的累加值),最后由加法器与已经计算出的当前行第1列搜索位置处的相加即可获得当前列的步骤2中模板图与实时图当前搜索位置的灰度值乘积总和的计算如下实现。模板图RAM缓冲块的所有输出端连接到一个多路选通开关,多路选通开关的输出连接到乘法模块中的一个乘法器的一端,乘法器的另一端对应连接到实时图像RAM缓冲块的输出端;采用模板图最大行数(M)个这样的并行通道进行并行运算,然后各个通道输出端连接到一个并加模块的输入端,并加模块的输出端连接到一个累加模块。在具体计算时,时序控制模块控制选通开关使得对应的模板图数据与实时图数据进行乘积运算,改变模板图像和实时图像RAM缓冲块的地址,逐列输出模板图和实时图的对应数据进行乘积运算,然后经过并加模块对当前列各行数据进行求和,然后由累加模块对并加模块输出结果逐列求和,获得当前列各个搜索位置的步骤2所述计算归一化相关系数是在和计算出来以后,相应的可以由乘法器、平方运算、加、减法器计算出来。归一化相关系数计算公式中的分母由两个求根模块进行求根运算,然后再对两者进行相乘获得。然后归一化相关系数计算公式中的分子和分母由定点转化为浮点,最终通过一个浮点除法运算得到浮点数据类型的归一化相关系数。步骤2所述的搜索位置第1行归一化相关系数的计算,是模板图像第1到M行与实时图第1到M行数据对应计算,搜索位置第1列归一化相关系数的计算为模板图像第1到N列与实时图像第1到N列数据对应计算,同时计算第2列的模板图像在实时图像中右移一列,并计算该处的同时计算第3列的此时后续的求平方根、浮点除法等后续运算同步流水进行,以此重复,直到第一行归一化相关系数计算完成。步骤3所述从外部RAM读入新一行的实时图数据到相应的内部RAM缓冲块中,为第一行相关系数计算完成后,读入一行新的实时图数据覆盖不用的实时图RAM块数据,在后续各行计算时需要通过时序控制模块重新切换多路选通开关使模板图RAM缓冲块输出与实时图RAM缓冲块输出顺序变化对应。同时该新一行实时图数据读入到实时图数据缓冲RAM中覆盖已经无效的数据。步骤3中所述在读入实时图新一行数据时,同时由前述方式相应的计算出当前行第1列的实时图灰度值总和的值,后续列实时图灰度值总和亦是按前述方式依次计算得出。步骤3中所述在读入实时图新一行的数据时,此时会由前述方式相应的计算出当前行第1列的实时图灰度值平方总和的值,后续列实时图灰度值平方总和亦是按前述方式依次计算得出。步骤4所述计算出后续各行归一化互相关系数,是指计算实时图像第2行至第K-M+1行归一化相关系数,第一行相关系数计算完成后,依次读入一行新的实时图数据覆盖不用的实时图RAM缓冲块数据和对应的实时图数据缓冲RAM中的数据,并且通过时序控制模块重新选择模板图RAM缓冲块输出多路选通开关使其与之对应,这样相当于模板图像在待匹配图像中下移一行,然后按照步骤2和步骤3方式进行计算,依次得到每行的归一化相关系数。本发明还提出了一种基于归一化相关系数的模板匹配高速并行方法的装置,该装置是由高速相关运算器10、模板图实时图数据存储器9、结果存储器11和微处理器37组成,高速相关运算器10与模板图实时图数据存储器9、结果存储器11、微处理器37相连,模板图实时图数据存储器9、结果存储器11也与微处理器37相连。所述的高速相关运算器10由归一化相关系数计算模块36、外部通信接口模块7以及时序控制模块8组成。归一化相关系数计算模块36主要用于归一化相关系数的计算。外部通信接口模块7主要通过寄存器与处理器进行参数输入输出、指令输入、状态查询输出。时序控制模块8主要基于上述步骤控制整个归一化相关系数计算的工作流程,它与各个模块中的RAM的地址及控制线、选通开关的选通地址、使能端寄存器的使能端相连。模板图实时图数据存储器9、结果存储器11分别存储原始图像数据以及运算结果,微处理器37由高速相关运算器10的外部通信接口模块7通过寄存器访问的方式进行参数输入输出、指令输入和状态查询输出,从而命令高速相关运算器10进行相应的操作,同时也进行原始图像数据的准备工作。高速相关运算器10把结果存储到结果存储器11中,并且从模板图实时图数据存储器9中读取数据。高速模板匹配装置中高速相关运算器10的归一化相关系数计算模块36包括模板图灰度值求和模块2,模板图灰度值平方求和模块1,实时图灰度值求和模块4、实时图灰度值平方求和模块5、实时图模板图灰度值乘积求和模块3和后续计算模块6。模板图灰度值求和模块2由一个累加器14组成,模板图灰度值平方求和模块1由一个平方运算模块12和一个累加器13相连而成。实时图灰度值求和模块4由与实时图灰度值平方求和模块5共用的实时图数据缓冲RAM21、第1列累加模块24、减法器22、累加器23和加法器组成。实时图灰度值平方求和模块5由与实时图灰度值平方求和模块4共用的实时图数据缓冲RAM21、第1列累加模块28、平方运算模块26、27、38、减法器25、累加器29和加法器组成。实时图模板图灰度值乘积求和模块3由实时图RAM缓冲块20、模板图RAM缓冲块15、多路选通开关16、乘法器17、并加模块18和累加器19组成。后续计算模块由乘法器、加、减法器和分子分母定点浮点转换模块(30、31)、分母方根运算模块(33、34)、浮点除法运算模块32组成。高速模板匹配装置工作流程为:首先微处理器37把原始模板图和实时图数据存入模板图实时图数据存储器9中,然后向高速相关运算器10输入图像的尺寸参数,而后输入启动命令启动归一化相关运算。在运算过程中通过寄存器访问的方式查询运算的进程状态。在运算完成以后,微处理器37会从高速相关运算器10收到完成的中断信号,为可靠起见,微处理器37进一步查询高速相关运算器10的完成标志,在确保完成以后从结果存储器读取归一化相关系数计算结果进行后续处理工作。高速模板匹配装置中所包含的高速相关运算器可以利用FPGA实现,也可利用VLSI实现。高速相关运算器中实时图像以及模板图像的行数和列数都是可以由外部微处理器输入的可变的参数,而最终实现的并行通道数目,包括内部实时图和模板图RAM缓冲块的数目,是由任务要求决定的最大的行数。本发明的有益效果:1、本发明的实现方法通过合理、精细的设计,有效地减少了系统逻辑资源消耗,加快了运行速度,从而降低了功耗。2、本发明缩短了布线路径,提高了FPGA内核所能达到的最大运行速度。3、本发明降低了对外部微处理器的要求,并且该实现缩小了系统的体积。附图说明图1是基于归一化相关系数的模板匹配高速并行实现方法的原理结构框图。图2是基于归一化相关系数的模板匹配高速并行实现方法的工作流程图。图3是累加器的结构图。图4是图1中第1列累加模块实现原理结构图。图5是模板匹配原理示意图。图6是(a)累加-并加运算;(b)并加-累加运算。图7是并加实现结构图。图8是基于归一化相关系数的高速并行模板匹配装置原理结构框图。图9是高速相关运算器的时序仿真波形结果图。图10是基于...
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1