首页> 中国专利> 基于归一化相关系数的模板匹配高速并行实现方法和装置

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

摘要

本发明公开了一种基于归一化相关系数的模板匹配高速并行实现方法和装置,该方法步骤是读入实时图和模板图数据到对应的内部RAM缓冲块和实时图数据缓冲RAM中,同时进行模板图灰度值总和模板图灰度值平方总和计算和搜索位置(0,0)处实时图灰度值总和实时图灰度值平方总和计算;然后同时计算搜索位置第1行后续各列的搜索位置第1行各列模板图实时图灰度值乘积总和及归一化相关系数;进一步同时读入新一行的实时图数据到对应内部RAM缓冲块和实时图数据缓冲RAM对应位置中,同时计算当前行第1列的值;依次计算出后续各行归一化相关系数。该装置由高速相关运算器、外部数据结果存储器和微处理器构成。

著录项

  • 公开/公告号CN103310228A

    专利类型发明专利

  • 公开/公告日2013-09-18

    原文格式PDF

  • 申请/专利权人 南京邮电大学;

    申请/专利号CN201310208097.0

  • 发明设计人 王邢波;王小涛;

    申请日2013-05-28

  • 分类号G06K9/64(20060101);

  • 代理机构32207 南京知识律师事务所;

  • 代理人汪旭东

  • 地址 210003 江苏省南京市新模范马路66号

  • 入库时间 2024-02-19 20:48:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-09-29

    授权

    授权

  • 2013-10-23

    实质审查的生效 IPC(主分类):G06K9/64 申请日:20130528

    实质审查的生效

  • 2013-09-18

    公开

    公开

说明书

技术领域

本发明涉及图像模板匹配技术领域,特别涉及一种基于归一化相关系数的模板匹配高速 并行实现方法和装置。

背景技术

模板匹配主要用来定位图像中的一个目标,它广泛应用于图像对齐、边缘检测、双目立 体视觉等图像处理领域,并且这些图像处理手段已经在导弹目标识别、卫星图像监控、医疗 图像融合、基于双目立体视觉的测量等军用民用领域中得到广泛应用。

模板匹配主要是通过计算搜索位置处已知模板图与实时图搜索区域之间的相似性测度来 定位与模板图有类似尺寸和图像的目标。由于归一化互相关系数对亮度和对比度变化具有不 变性,其算法相对简单并且具有很高的精度,因此迄今为止它是模板匹配中应用最广泛的一 种测度。假设实时图由A表示,模板图由B表示,其尺寸分别为K×L和M×N个像素。在任 一搜索位置(u,v)(0≤u≤K-M,0≤v≤L-N)的归一化互相关系数(NCC-Normalized Cross-Correlation) 定义为:

C(u,v)=ΣΣ[A(i+u,j+v)-A(u,v)]×[B(i,j)-B]{ΣΣ[A(i+u,j+v)-A(u,v)]2}1/2{ΣΣ[B(i,j)-B]2}1/2

其中∑∑表示为模板图的灰度均值,为在当前搜索位置的实时图与模板 图重叠部分的灰度均值。由此可以看出,实际上该运算就是在实时图中平移模板图,并对实 时图和模板图重叠点进行归一化相乘,然后进行累加操作。

为了获得精确定位,模板匹配需要在实时图中搜索与模板图相重合的每一个区域,因此 对于一个通常的应用,需要搜索的位置数目往往非常多。对于自动目标识别、跟踪等实时应 用领域,基于归一化互相关测度的模板匹配计算量相对还是太大从而导致其应用受到很大限 制。

目前已经提出许多技术来加速模板匹配计算,由于这些技术不需要对所有位置进行匹配, 因此大幅度的降低了计算量,但是这些技术通常由于局部的极值点干扰导致错误的匹配。事 实上,由于模板匹配的计算是针对图像各个像素进行相关运算,因此该方法本身能够通过并 行的方法来加速。另外也提出了一些多处理器系统来加速模板匹配的计算。但是对于要求小 型化、微功耗的嵌入式应用,多处理器方法无法满足实际应用要求,并且也不经济。

近年来,随着电子技术和制造工艺的快速发展,现场可编程门阵列(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相同的方式,依次计算出后续各行归一化相关系数。

上述模板匹配方法所用的归一化相关系数公式如下:

C(u,v)=ΣΣ[A(i+u,j+v)-A(u,v)]×[B(i,j)-B]{ΣΣ[A(i+u,j+v)-A(u,v)]2}1/2{ΣΣ[B(i,j)-B]2}1/2

=[MN·ΣΣA(i+u,j+v)B(i,j)-ΣΣA(i+u,j+v)ΣΣ×B(i,j)]{MN·ΣΣA(i+u,j+v)2-(ΣΣA(i+u,j+v))2}1/2{MN·ΣΣB(i,j)2-(ΣΣB(i,j))2}1/2

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所述计算归一化相关系数是在Σi=1MΣj=1NB(i,j),Σi=1MΣj=1NB(i,j)2,Σi=1MΣj=1NA(i+u,j),和计算出来以后,相应的 MN·Σi=1MΣj=1NB(i,j)2-(Σi=1MΣj=1NB(i,j))2,MN·Σi=1MΣj=1NA(i+u,j+v)2-(Σi=1MΣj=1NA(i+u,j+v))2,MN·Σi=1MΣj=1NA(i+u,j+v)B(i,j)-Σi=1MΣj=1NA(i+u,j+v)Σi=1MΣj=1NB(i,j)可以由乘法器、平方运算、加、 减法器计算出来。归一化相关系数计算公式中的分母由两个求根模块进行求根运算,然后再 对两者进行相乘获得。然后归一化相关系数计算公式中的分子和分母由定点转化为浮点,最 终通过一个浮点除法运算得到浮点数据类型的归一化相关系数。

步骤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是基于归一化相关系数的模板匹配高速并行实现装置结构框图。

具体实施方式

下面结合说明书附图对本发明的技术方案作进一步说明。

本发明所用的归一化互相关系数公式如下:

C(u,v)=ΣΣ[A(i+u,j+v)-A(u,v)]×[B(i,j)-B]{ΣΣ[A(i+u,j+v)-A(u,v)]2}1/2{ΣΣ[B(i,j)-B]2}1/2

A表示实时图,B表示模板图,其尺寸分别为K×L和M×N个像素。(u,v)为任一搜索位置(u,v), 0≤u≤K-M,0≤v≤L-N。∑∑表示为模板图像的均值,为在当前搜索位置 实时图与模板图重叠部分的均值。

为了简单起见,进行下述变量定义:Bcc=∑∑B(i,j),B2cc=∑∑(B(i,j))2,Acc(u,v)= ∑∑A(i+u,j+v),A2cc(u,v)=∑∑A(i+u,j+v)2,ABcc(u,v)=∑∑A(i+u,j+v)B(i,j),即Bcc表示模板图 灰度值总和,B2cc表示模板图灰度值平方总和,Acc(u,v)表示当前搜索位置实时图灰度值总和, A2cc(u,v)表示当前搜索位置实时图灰度值平方总和,ABcc(u,v)表示当前搜索位置实时图 模板图灰度值乘积总和。归一化互相关系数可进一步简写为:

C(u,v)=[MN·ABcc(u,v)-Acc(u,v)Bcc]{MN·A2cc(u,v)-(Acc(u,v))2}1/2{MN·B2cc(Bcc)2}1/2

根据上述公式的分子和分母可知,归一化互相关的计算需要大量的乘累加操作,相对而言, 控制逻辑需求很少,因此非常适合用FPGA来实现。为简便起见,此处的定义和缩写在下文 的描述、图形及表中同样有效。

实时图像以及模板图像的行数和列数(即,K≤Kmax,L≤Lmax,M≤Mmax,N≤Nmax)都是可 以由外部微处理器输入的可变参数,其中Kmax、Lmax、Mmax、Nmax为由任务需求决定的最 大可输入的行列数,也是本发明所采用的并行通道数目。本发明所提出的基于归一化相关系 数的模板匹配高速并行实现方法的原理结构框图如图1所示。归一化相关系数计算完成以后 取最大值或阈值处理操作由微处理器37来完成。为了清晰起见,图1主要给出了数据流相关 的结构图,各个操作符号的功能说明已经在图例中给出。图中,时序控制模块8主要用于控 制整个归一化相关系数计算的工作流程。外部通信接口模块7主要用于与微处理器9进行通 信,即进行参数(包括K、L、M、N)、命令输入及状态输出。归一化相关系数计算模块36为 核心运算模块,包括ABcc计算模块3、Acc计算模块4、A2cc计算模块5、Bcc计算模块2、 B2cc计算模块1及后续计算模块6。

如图2所示,本发明的基于归一化相关系数的模板匹配高速并行实现方法包括如下4步。 下面具体结合原理结构框图说明这些步骤中子模块的实现方法及工作流程。

(1)读入实时图和模板图数据到对应的内部RAM缓冲块中,同时实时图数据存储到用于 计算实时图灰度值总和和实时图灰度值平方总和的实时图数据缓冲RAM中,同时进行模板图 灰度值总和模板图灰度值平方总和计算和第1行第1列搜索位 置处实时图灰度值总和实时图灰度值平方总和计算。

由于每一行中每一个位置上的归一化相关系数的计算只需模板图行数(M)行的实时图,因 此我们可以采用Mmax个大小为1×Nmax的模板图RAM缓冲块15(如图1中的ORAM[0],..., ORAM[Mmax-1])及Mmax个大小为1×Lmax的实时图RAM缓冲块20(如图1中的RRAM[0],..., RRAM[Mmax-1])。在开始计算时,首先从外部存储器中读入实时图数据和模板图数据到对应 的内部RAM缓冲块中。具体是将模板图每一行N列的灰度值数据存储在一个RAM缓冲块中, 共存入M行;将实时图每一行L列的灰度值数据存储在一个RAM缓冲块中,共存入M行。

对于一个固定的模板图,在每一个模板匹配位置(u,v),Bcc和B2cc在整幅图搜索空间内 只计算一次。因此可以在模板图数据从外部RAM(图1中的Exter-RORAM)9中输入到内部 RAM缓冲块15(ORAM[0],...,ORAM[M-1])的同时把Bcc和B2cc计算出来。

Bcc由Bcc计算模块2实现,该模块包括一个累加器14。累加器14的输入端连接到模板 图实时图数据存储器9的输出端,其输出即为模板图灰度值总和。

累加器的具体结构如图3所示。主要包括一个加法器和一个延迟寄存器(DFF),在外部时 钟(clk)和使能信号(ena)的控制下累加器对输入(data[n..0])进行累加。

B2cc由B2cc计算模块1实现,该模块包括一个平方运算模块12和一个累加器13。平方 运算模块12的输入端连接到模板图实时图数据存储器9的输出端,平方运算模块12的输出 连接到累加器13的输入端,累加器13的输出即为模板图灰度值平方总和。

搜索位置第1行第1列的实时图灰度值总和的计算,是通过时序控制模块 控制一个行数据累加模块在每一行实时图数据读入时,对实时图第1行第1列搜索位置处每 一行数据进行累加,然后通过一个列累加器对这些行数据累加模块输出结果逐列进行累加, 并且和经过M步(模板图行数步)延迟的列累加器累加结果相减获得。具体是由第1列累加1 模块24来实现,该模块具体的原理实现结构如图4所示,每一行第一列Acc的计算都是由这 个模块实现的。这个模块由2个累加器(行数据累加模块和列累加模块)、一组延迟寄存器和 一个为适应不同模板图行数参数变化而选用的Mmax输入的多路选通开关组成,行数据累加 模块在每一行实时图数据读入时,对每一行前N个数据进行累加,因此我们得到列累加模块在行数据累加模块得到累加值时对该累加值进行累加,然后与经过M步(模板图 行数步)延迟的列累加器累加结果相减获得每一行第一个搜索位置的Acc(u,1):

Σi=1M+uΣj=1NA(i,j)-Σi=1uΣj=1NA(i,j)=Σi=1MΣj=1NA(i+u,j)

因此,本发明在实时图数据从外部RAM9(图1中的Exter-RORAM)读入到FPGA内部 RAM缓冲块20(RRAM[0],...,RRAM[M-1])和内部实时图数据缓冲RAM21(RRAM2)的过程中 计算Acc(u,1)。

搜索位置第1行第1列的实时图灰度值平方总和的计算,是通过时序控制 模块控制一个行数据累加模块在每一行实时图数据读入时,对实时图第1行第1列搜索位置 处每一行数据平方后进行累加,然后通过一个列累加器对这些行数据累加模块输出结果逐列 进行累加,并且和经过M步(模板图行数步)延迟的列累加器累加结果相减获得。具体由A2cc 计算模块5中的平方模块27和第1列累加2模块28实现。第1列累加2模块与第1列累加 1模块的结构和工作流程相同。即本发明在实时图数据从外部RAM9(图1中的Exter-RORAM) 读入到FPGA内部RAM缓冲块20(RRAM[0],...,RRAM[M-1])和内部实时图数据缓冲RAM 21(RRAM2)的过程中计算Acc(u,1)的同时计算A2cc(u,1)。

(2)计算搜索位置第1行后续各列的实时图灰度值总和同时计算当前 位置实时图灰度值平方总和搜索位置第1行各列模板图实时图灰度值乘 积总和及归一化相关系数。

1)后续Acc计算

后续各列每一个实时图灰度值总和的计算,是从搜索位置第2列开始, 通过时序控制模块控制实时图数据缓冲RAM同时依次逐行输出实时图与模板图重叠区域相 对于前一个搜索位置新进的一列数据和刚移出的一列数据,由减法器作差后,通过累加器逐 行求和,并且与前一列搜索位置处的该累加器结果值求和,即该累加器从第2列开始保留所 有的累加值,然后由加法器与已经计算出的当前行第1列搜索位置处的相加即 可获得当前列的

由具体的模板匹配过程图5可以看出,当前位置(u,v0+1)的Acc计算和前一位置(u,v0)只是 多了一列新的数据(图5中的新列)和少了一列旧的数据(图5中的旧列),因此在当前给定搜索 位置(u,v0+1),可以通过时序控制逻辑控制实时图数据缓冲RAM21(RRAM2)同时依次逐行输 出实时图中模板图重叠区域相对于前一个搜索位置(u,v0)新进的一列数据(对应实时图中第 v0+N列)和刚移出的一列数据(对应实时图中第v0列),由减法器作差后,对当前差值逐行求和, 并且与前一列已经计算出的Acc(u,v0)进行相加即可获得当前搜索位置处的Acc(u,v0+1)。即

Acc(u,v0+1)=Acc(u,v0)+Σi=1M[A(i+u,N+v0)-A(i+u,v0)]

向前推移可以得到:

Acc(u,v0+1)=Acc(u,0)+Σi=1M[A(i+u,N+1)-A(i+u,1)]+···+Σi=1M[A(i+u,N+v0)-A(i+u,v0)]

因此Acc(u,v0+1)可由累加器从第2列开始逐行累加作差值,然后由加法器与已经计算出的 当前行第1列搜索位置处的Acc(u,0)相加得到。

因此后续列的实时图灰度值总和Acc(u,v)由Acc计算模块4中的与A2cc(u,v)计算模块5共 用的内部实时图数据缓冲RAM21(RRAM2)、一个减法器22和一个累加器23(Accu4)组成。 内部实时图数据缓冲RAM21(RRAM2)的两个输出端连接到减法器22的输入端,减法器22 的输出端连接到累加器23的输入端。累加器的输出加上第1列累加1模块24的输出即可得 到后续列的实时图灰度值总和Acc(u,v)。

2)后续A2cc计算

从每一行的第2个搜索位置开始,A2cc(u,v)以与Acc(u,v)同样的方式实现。在当前给定搜 索位置(u,v0+1),与A2cc(u,v)同时通过时序控制逻辑控制实时图数据缓冲RAM21(RRAM2)同 时依次逐行输出实时图中模板图重叠区域相对于前一个搜索位置(u,v0)新进的一列数据(对应 实时图中第v0+N列)和刚移出的一列数据(对应实时图中第v0列),求平方后由减法器作差,然 后对当前差值逐行求和,并且与前一列搜索位置处的该累加器结果值求和,最后由加法器与 已经计算出的当前行第1列搜索位置处的A2cc(u,0)相加即可获得当前列的A2cc(u,v)。

因此后续列的实时图灰度值总和A2cc(u,v)由A2cc计算模块5中的与Acc(u,v)计算模块4 共用的内部实时图数据缓冲RAM21(RRAM2)、2个平方运算模块26、一个减法器25和一 个累加器29(Accu5)组成。内部实时图数据缓冲RAM21(RRAM2)的两个输出端连接到两个平 方运算26输入端,平方运算26输出端连接到减法器25的输入端,减法器25的输出端连接 到累加器20的输入端。累加器的输出加上第1列累加2模块28的输出即可得到后续列的实 时图灰度值总和A2cc(u,v)。

RRAM2可由双端口RAM实现,以实现同时读出两个数据;在没有双端口RAM时可由 两块RAM实现。

3)ABcc计算模块

模板图与实时图当前搜索位置的灰度值乘积总和的计算,由 ABcc计算模块3实现。

由归一化相关系数公式,采用模板图最大的行数(Mmax)个并行的乘法通道来进行并行运 算。因此通过合理的时序控制(M≤Mmax)在一个时钟周期里就可以计算M个乘累加,这样, 在N个时钟周期以后,我们可以得到一个搜索位置上的ABcc。

在开始计算时,首先从外部存储器中读入实时图数据和模板图数据到对应的内部RAM缓 冲块中。当开始进行第2行搜索时,新来的一行实时图数据可以覆盖已经不用的第1个缓冲 块,此时实时图第1个RAM缓冲块(RRAM[0])已经和模板图中的第1块(ORRAM[0])不对应, 而是与模板图的最后一块(ORAM[M-1])相对应,第2个实时图缓冲块对应模板图的第1个缓 冲块,以此类推。当进行第3行搜索时,新来的一行实时图数据可以覆盖第2个已经不用的 RAM缓冲块,此时第1个实时图缓冲块对应第M-1个模板图缓冲块(ORAM[M-2]),第2个实 时图缓冲块对应第M个模板图缓冲块(ORAM[M-1]),第3个才对应模板图的第1个缓冲块 (ORAM[0]),以此类推。由此为了使实时图和模板图的每个RAM缓冲块数据能够对应上,本 发明利用多路选通开关(MUX)从Mmax个模板图缓冲块中选出当前的第1块来与第1个实时 图缓冲块对应,选出当前的第2块来与第2个实时图缓冲块对应,以此类推。总共需要Mmax 个这样的多路选通开关来对数据进行重排。通过选通对实时图和模板图进行重排都是可以的, 由于模板图的缓冲块较小,从而其布线路径会简单一些,因此本发明采用对模板图进行重排, 如图1所示。

ABcc计算模块3由实时图RAM缓冲块20、模板图RAM缓冲块15、多路选通开关16、 乘法器17、并加模块18和累加器19组成。模板图RAM缓冲块15的所有输出端连接到一个 多路选通开关16的输入,多路选通开关的输出连接到的一个乘法器17的一端,乘法器17的 另一端对应连接到存储实时图像的RAM缓冲块的输出端。通过采用模板图最大行数(Mmax) 个这样的并行通道进行并行运算,然后各个通道输出端连接到一个并加模块18(PAdd1),最 终连接到一个累加模块19(Accu3)上。

在具体计算时,时序控制模块8控制选通开关16使得对应的模板图数据与实时图进行乘 积运算,改变模板图和实时图RAM缓冲块的地址,逐列输出模板图和实时图的对应数据进 行乘积运算,然后经过并加模块18对当前列各行数据进行求和,而后由累加模块19对并加 模块18输出的结果逐列求和后,获得当前列各个搜索位置的

本发明采用了先并加后累加,其结果与先累加然后并加的方式结果是一样的,但前者能 够省掉M-1个重复的累加器(Accu),如图6(b)所示。从而降低了资源的消耗。

其中的并加结构如图7所示,多个输入通道在一步操作中就可以获得相加结果,在加入 延迟寄存器缓冲后,并加可以实现流水输出。

4)归一化相关系数后续计算

归一化相关系数后续计算是由后续计算模块6实现的,在Σi=1MΣj=1NA(i+u,j),Σi=1MΣj=1NA(i+u,j)Σi=1MΣj=1NA(i+u,j+v)B(i,j)计算出来以后,相应的 MN·Σi=1MΣj=1NB(i,j)2-(Σi=1MΣj=1NB(i,j))2,MN·Σi=1MΣj=1NA(i+u,j+v)2-(Σi=1MΣj=1NA(i+u,j+v))2,MN·Σi=1MΣj=1NA(i+u,j+v)B(i,j)-Σi=1MΣj=1NA(i+u,j+v)Σi=1MΣj=1NB(i,j)可以由乘法器和加、减法器计算 出来。归一化相关系数公式的分母先由两个求根模块33和34分别进行求根运算,然后由乘 法器模块35进行相乘,这样可以降低数据宽度。归一化相关系数公式的分子和分母首先由定 点浮点转换模块30和31转化为浮点,最终通过一个浮点除法运算模块32进行浮点除法就可 以得到浮点格式的归一化相关系数。

搜索位置第1行归一化相关系数的计算,是模板图像第1到M行与实时图第1到M行 数据对应计算,搜索位置第1列归一化相关系数的计算为模板图像第1到N列与实时图像第 1到N列数据对应计算,同时计算第2列的模板图像在 实时图像中右移一列,并计算该处的同时计算第3列的 此时后续的求平方根、浮点除法等后续运算同步流水 进行,以此重复,直到第一行归一化相关系数计算完成。根据实际需要可选择32位浮点或者 64位浮点。

(3)读入新一行的实时图数据到数据已经无效的内部RAM缓冲块,同时该新一行实时图 数据读入到用于计算实时图灰度值总和和实时图灰度值平方总和的实时图数据缓冲RAM中 覆盖已经无效的数据,同时计算当前行第1列的实时图灰度值总和实时图 灰度值平方总和值。

由步骤2中所述,从外部RAM读入新一行的实时图数据到相应的内部RAM缓冲块中, 完成第一行相关系数计算后,读入一行新的实时图数据覆盖不用的实时图RAM块数据,在 后续各行计算时需要通过时序控制模块8重新切换多路选通开关使模板图RAM缓冲块输出 与实时图RAM缓冲块输出顺序对应。同时该新一行实时图数据读入到实时图数据缓冲RAM 中覆盖已经无效的数据。

在读入实时图新一行数据时,同时由步骤2中所述方式计算出当前行第1列的实时图灰 度值总和和实时图灰度值平方总和的值,后续列实时图灰度 值总和与实时图灰度值平方总和按步骤2中所述方式依次计算得出。

(4)采用步骤2、步骤3相同的方式,依次计算出后续各行归一化相关系数。

计算实时图像第2行至第K-M+1行归一化相关系数,第一行相关系数计算完成后,依次 读入一行新的实时图数据覆盖不用的实时图RAM缓冲块数据和对应的实时图数据缓冲RAM 中的数据,并且通过时序控制模块重新选择模板图RAM缓冲块输出多路选通开关使其与之 对应,这样相当于模板图像在待匹配图像中下移一行,然后按照步骤2和步骤3方式进行计 算,依次得到每行的归一化相关系数。

在接收到外部微处理器输入参数和启动命令系统启动以后,首先进行初始化,并且设置 m=0,n=0,如图2所示的工作步骤可具体化和细分为下述串行的6步操作完成,其中每一步 的子过程是同步进行的。

第1步:(1.1)模板图数据由外部模板图实时图数据存储器(Exter-RORAM)读入到内部模 板图RAM缓冲块ORAM[0..M-1]中;同时(1.2)由Bcc计算模块进行模板图累加计算Bcc;(1.3) 由B2cc计算模块累加(Bij)2计算B2cc;

第2步:(2.1)第1~M行实时图数据由模板图实时图数据存储器(Exter-RORAM)读入到对 应的内部RAM缓冲块RRAM[0..M-1])中,同时存储到实时图数据缓冲RAM(RRAM2)相应位 置中;同时(2.2)由第1列累加1模块和第1列累加2模块计算Acc(0,0)和A2cc(0,0);

第3步:(3.1)利用Acc计算模块和A2cc计算模块计算Acc(m,n)、A2cc(m,n);同时(3.2)利 用ABcc计算模块计算ABcc(m,n);

第4步:n=n+1,如果n<L-N+1,返回第3步,否则继续执行到第5步;

第5步:m=m+1,如果m<K-M+1,继续执行到第6步,否则结束整个计算流程,并且修 改完成状态寄存器。

第6步:(6.1)从外部模板图实时图数据存储器(Exter-RORAM)读入实时图第(M+m)行数据 到相应的内部RAM缓冲块中;同时存储到实时图数据缓冲RAM(RRAM2)相应位置中;同时 (6.2)分别由第1列累加1模块和第1列累加2模块计算Acc(m,1)和A2cc(m,1)值;计算上一 列的归一化相关系数C(m,n)并且存入外部结果存储器中(Exter-RAM);继续执行到第3步。

其中本发明中外部实时图和模板图数据存储在一块RAM模板图实时图数据存储器 (Exter-RORAM)中,此时读取分为两步;也可考虑存储在两块RAM中的情形,此时可同时进 行读取。前两步对应技术方案的步骤1。第3步对应步骤2。第4步和第5步由时序控制相应 后续列和行的计算,对应步骤4。第6步对应步骤3。

由上述步骤可知,归一化相关系数计算需要K*L+M*N+(K-M+1)*(L-N+1)*(N)个时钟周 期,因此总的计算时间为(K*L+M*N+(K-M+1)*(L-N+1)*(N))/fclk,fclk为系统工作频率。

图8为一种基于归一化相关系数的高速并行模板匹配方法的装置,该装置由高速相关运 算器10、模板图实时图数据存储器9、结果存储器11和微处理器37构成。高速相关运算器 10与模板图实时图数据存储器9、结果存储器11、微处理器37相连,模板图实时图数据存 储器9、结果存储器11也与微处理器37相连。如图1所示,高速相关运算器10由归一化相 关系数计算模块36、外部通信接口模块7和时序控制模块8组成。归一化相关系数计算模块 36主要用于归一化相关系数的计算。外部通信接口模块7主要通过寄存器与处理器进行参数 输入输出、指令输入、状态查询输出。时序控制模块8主要基于上述步骤控制整个归一化相 关系数计算的工作流程,它与各个模块中的RAM的地址及控制线、选通开关的选通地址、 使能端寄存器的使能端相连。模板图实时图数据存储器9、结果存储器11分别存储原始图像 数据以及运算结果,微处理器37由高速相关运算器10的外部通信接口模块7通过寄存器访 问的方式进行参数输入输出、指令输入和状态查询输出,从而控制高速相关运算器10进行相 应操作,同时也进行原始图像数据的准备工作。高速相关运算器10把结果存储到结果存储器 11中,并且从模板图实时图数据存储器9中读取数据。

如图1所示,高速模板匹配装置中的高速相关运算器10的归一化相关系数计算模块36 包括模板图灰度值求和模块2、模板图灰度值平方求和模块1、实时图灰度值求和模块4、实 时图灰度值平方求和模块5、实时图模板图灰度值乘积求和模块3和后续计算模块6。模板图 灰度值求和模块2由一个累加器14组成,模板图灰度值平方求和模块1由一个平方运算模块 12和一个累加器13相连而成。实时图灰度值求和模块4由与实时图灰度值平方求和模块5 共用的实时图数据缓冲RAM21、第1列累加模块24、减法器22、累加器23和加法器组成。 实时图灰度值平方求和模块5由与实时图灰度值平方求和模块4共用的实时图数据缓冲RAM 21、第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的完成标志,在确保完成后从结果存储器11读取归一化 相关系数计算结果进行后续处理工作。

高速模板匹配装置中所包含的高速相关运算器可以利用FPGA实现,也可利用VLSI实 现。高速相关运算器中实时图像以及模板图像的行数和列数都是可以由外部微处理器输入的 可变参数,而最终实现的并行通道数目,包括内部实时图和模板图RAM缓冲块的数目,是 由任务要求决定的最大的行数。

下面是算法的具体实施实例。

本发明的实施实例是以Altera公司的现场可编程门阵列Stratix II系列EP2S90F780I4芯片 为平台。图像灰度值为8位,模板图和实时图的大小参数是可变的:2≤M≤80,2≤N≤80,2≤K≤512, 2≤L≤512。相应的,我们采用模板图最大的行数80作为并行通道数。当前针对最大图像参数 进行实施。采用Quartus II8.0sp1软件作为基本的逻辑分析、综合、逻辑布局布线工具,采用 Verilog和VHDL语言混合硬件编程的方式进行逻辑设计。系统的全局时钟频率采用70MHz, 由PLL根据外部输入的20MHz时钟产生。具体采用32位浮点归一化相关系数输出。

依据本发明,具体模板匹配实例如下实施。

1)依据两个图像的具体大小,搭建图像匹配系统,

高速相关运算器按照图1在FPGA芯片上实现,完成归一化相关系数的计算。模板图实 时图的RAM缓冲块由实例化RAM实现,实时图数据缓冲RAM由实例化双端口RAM实现, 多路选通开关、乘法运算、平方运算、加法运算、减法运算、求方根运算、定点浮点转换、 浮点除法运算都由Qartus II根据所用的FPGA进行实例化。时序控制模块通过状态机的方式 控制整个系统的运行。

2)采用Verilog和VHDL语言混合编程的方式进行逻辑设计

步骤1:读取模板图像80*80个数据以及实时图像前80行的80*512个数据并分别存储 到对应的RAM缓冲块,前80行实时图像同时依次存入实时图数据缓冲RAM中,同时计算 Bcc和B2cc和第1行第1列搜索位置上的Acc和A2cc。

对于模板图像和实时图像,分别设置80个RAM缓冲块,每一行信息存储到一个RAM缓 冲块中,由于灰度值为8位二进制数据,每个RAM缓冲块的大小分别为80*8(位)和512*8(位), 前80行实时图像同时依次存入实时图数据缓冲RAM中,总计80*512*8(位)。对于实时图, 开始时读入的是第1至80行数据。Bcc在模板图像数据读入过程中通过Bcc计算模块计算出 来,同时B2cc在模板图像数据读入过程中通过B2cc计算模块计算出来。第1行第1列搜索 位置上的Acc和A2cc由第1列累加1模块和第1列累加2模块实现。

步骤2:计算当前行各列的Acc(m,n)和A2cc(m,n),同时计算ABcc(m,n)。

对于每一行从第2列开始,Acc和A2cc可由时序控制模块控制Acc计算模块和A2cc计 算模块实现,具体为从实时图数据缓冲RAM(RRAM2)中顺序读出新进的一列数据和移出的旧 的一列数据相减并且对结果值进行累加,然后与当前行第一列的Acc进行求和计算。

对于ABcc的计算,时序控制模块控制模板图和实时图每一个RAM缓冲块同时读出一列 数据,同时控制选通开关使得对应的模板图数据与实时图进行乘积运算,然后对所有行乘积 结果同时求和的并加以及对并加结果逐列求和的累加后获得。

步骤3:从外部RAM读入新一行的实时图数据到相应的内部RAM缓冲块中,同时存入 到实时图数据缓冲RAM中,同时计算当前行第1列的Acc(m,1)和A2cc(m,1)值,计算上一列 的相关结果。

对于实时图像,当进行第2行搜索时,新来的第M+1行实时图数据覆盖已经不用的第1 个缓冲块。以此类推,当进行第3行搜索时,新来的一行实时图数据可以覆盖第2个已经不 用的RAM缓冲块,此时第1个实时图缓冲块对应第M-1个模板图缓冲块(ORAM[M-2]),第2 个实时图缓冲块对应第M个模板图缓冲块(ORAM[M-1]),第3个实时图缓冲块才对应模板图 的第1个缓冲块(ORAM[0])。时序控制模块控制选通开关使模板图数据与实时图数据对应。

当前行第1列搜索位置上Acc(m,1)和A2cc(m,1)由第1列累加1模块和第1列累加2模块 在新一行实时图数据读入过程中同时计算出来。

步骤4:重复(2)~(3),依次计算直到433行数据计算完毕。

3)资源消耗、内核速度及时间消耗

由Qartus II时序分析总结和编译报告,资源利用情况和FPGA内核最大可达的时钟频率如 表1所示。可见,在包含了求平方根、定点到浮点转换、浮点除法等运算情况下,整个FPGA 芯片占用的逻辑资源不多,因而本发明所提方案是完全可以实现的。

表1  资源利用情况及最大可达的时钟运行速度

对于大小为80×80的模板图和大小为512×512的实时图,采用70MHz系统全局时钟频 率下,模板图和实时图分别读入的情况下,高速相关运算器完成所有搜索位置归一化相关系 数运算所用计算时间(包含外部RAM数据读取时间)为:

(K*L+M*N+(K-M+1)*(L-N+1)*(N))/fclk=

(512*512+80*80+(512-80+1)*(512-80+1)*N)/70000000=218ms。

由于采用80个并行通道,高速相关运算器仅用218ms就可以完成。因此在可编程逻辑器 件上并行实现基于归一化相关系数的模板匹配可大大节约时间,提高匹配速度。

4)Quartus波形仿真结果

为了验证所提出的高速相关运算器的基本功能,另外选用大小为17×17的模板图和大小 为40×40的实时图,17和40是输入的可变参数。实时图数据为由0开始递增的数据,而模板 图数据是由64开始递增的数据。当数据超过当前位宽所能表示的最大值时,不考虑溢出的位 数,也就是数据将在0~255的范围之内。

具体的时序仿真波形如图9所示。其中,端口Bcc,B2cc,Acc,A2cc和ABcc与前面定 义的相同,输出端口Result_S,Result_E和Result_M分别表示浮点格式的NCC计算结果的符 号位、指数项和尾数项。可以看出,除了一点精度上的损失外,由Quartus II8.0得到的仿真 结果与如表2所示的用Matlab所计算的结果是一致的。

表2  由Matlab计算得到的结果

数据输出 Result_M Acc A2cc ABcc 0 7.2717890e+006 33608 5434712 4277336 1 5.9456620e+006 33641 5436681 4266280 2 4.6373932e+006 33674 5438716 4255480 3 3.3471433e+006 33707 5440817 4244936 4 2.0750735e+006 33740 5442984 4234648 5 8.2134461e+005 33773 5445217 4224616

5)实际的实验结果

在实际系统中,基于归一化相关系数的模板匹配高速并行实现装置的基本构成如图10所 示。图中,Exter-RORAM、Exter-RAM分别为缓存模板图实时图数据和运算结果的外部RAM。 微处理器采用ADI公司的DSP芯片TS201。Addr和Data为地址和数据总线,RD、WR、CS 为外部RAM读写控制信号。

首先TS201作为核心处理器把模板图实时图数据存入外部双端口RAM(Exter-RORAM) 中,然后向FPGA输入图像的尺寸参数,其后输入启动命令启动模板匹配运算。在运算完成 以后,TS201会收到完成的中断信号,为可靠起见,TS201需要查询FPGA的完成标志,在确 保完成以后进行后续工作。

在不同参数情况下用不同实际图像数据对该装置进行了长期的稳定性测试,归一化相关 系数计算的结果与实际计算值相一致,并且能够稳定可靠的工作。

同时还利用TS201对系统运算时间进行了评估,处理时间和前面的理论计算结果一致。 对于大小为80×80的模板图和大小为512×512的实时图,70MHz系统全局时钟频率下,所用 时间为218ms。

因为FPGA通常用作VLSI专用集成电路的验证和开发平台,因此所提出的高速相关运算 器可以进一步由VLSI实现。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号