CN105426918B - 归一化相关图像模板匹配高效实现方法 - Google Patents

归一化相关图像模板匹配高效实现方法 Download PDF

Info

Publication number
CN105426918B
CN105426918B CN201510819702.7A CN201510819702A CN105426918B CN 105426918 B CN105426918 B CN 105426918B CN 201510819702 A CN201510819702 A CN 201510819702A CN 105426918 B CN105426918 B CN 105426918B
Authority
CN
China
Prior art keywords
real
time
module
gray value
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510819702.7A
Other languages
English (en)
Other versions
CN105426918A (zh
Inventor
王小涛
陈佳辉
王邢波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Aeronautics and Astronautics
Original Assignee
Nanjing University of Aeronautics and Astronautics
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University of Aeronautics and Astronautics filed Critical Nanjing University of Aeronautics and Astronautics
Priority to CN201510819702.7A priority Critical patent/CN105426918B/zh
Publication of CN105426918A publication Critical patent/CN105426918A/zh
Application granted granted Critical
Publication of CN105426918B publication Critical patent/CN105426918B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/751Comparing pixel values or logical combinations thereof, or feature values having positional relevance, e.g. template matching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Theoretical Computer Science (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了归一化相关图像模板匹配高效实现方法,属于图像处理的技术领域。匹配方法通过构建包括高速相关运算模块、模板图实时图数据外部存储器、微处理器、结果存储器的装置实现,采用并行处理的方式首先并行计算当前行各列搜索位置模板图实时图归一化相关系数,同时按照下一行搜索计算时实时图数据的行顺序重新排序模板图数据,然后并行计算搜索位置处下一行各列模板图实时图归一化相关系数,在保证了实时图数据与模板图数据相对应的前提下计算出搜索位置处各行各列模板图实时图归一化相关系数。

Description

归一化相关图像模板匹配高效实现方法
技术领域
本发明公开了归一化相关图像模板匹配高效实现方法,特别是涉及一种能够高效并行计算出归一化相关系数的高精度、高实时性图像模板匹配方法及装置,属于图像处理的技术领域。
背景技术
模板匹配主要用来定位图像中的一个目标,它已经广泛应用于图像配准、双目立体视觉等图像处理领域,并且这些图像处理手段已经在如自动目标识别、基于双目立体视觉的测量、医疗图像融合、卫星图像监控等军用民用领域中得到广泛应用。
模板匹配通过计算已知表征目标的模板图与实时图中搜索区域内所有位置的相似性测度来进行目标定位,该目标同模板图有类似的尺寸和图像。由于归一化相关系数对亮度和对比度变化具有不变性,因此它是模板匹配中广泛应用的一种测度。假定实时图和模板图分别由A、B表示,其尺寸分别为K×L和M×N个像素。在任一搜索位置(u,v),0≤u≤K-M,0≤v≤L-N,归一化相关系数(NCC-Normalized Cross-Correlation)定义为:
此处,∑∑表示 为模板图像的均值,为在当前搜索位置实时图与模板图重叠部分的均值。可以看出,该运算就是在实时图中平移模板图,对实时图和模板图重叠点进行归一化相乘,然后进行累加操作。
为了获得精确定位,模板匹配需要在实时图中搜索与模板图相重合的每一个区域,因此对于一个通常的应用,需要搜索的位置数目往往非常多。因此对于像自动目标识别、跟踪等实时应用领域,基于归一化相关系数的模板匹配计算量相对还是太大从而导致其应用受到很大限制。
已经提出许多技术来加速模板匹配计算,由于这些技术不需要对所有位置进行匹配,因此大幅度的降低了计算量,但是这些技术通常由于局部的极值点干扰导致错误的匹配。实际上,由于模板匹配计算是针对图像各个像素进行相关运算,因此该算法本身能够通过并行的方法来加速。此外已经提出了一些多处理器并行计算方法来加速模板匹配的计算。但是对于很多小型化、微功耗需求的嵌入式应用,多处理器并行计算方法仍无法满足实际应用的要求。
近年来,随着电子技术和制造工艺的快速发展,现场可编程门阵列(FPGA)的容量越来越大、速度越来越快,这使得FPGA具有了一般微处理器所无法比拟的强大的并行性,因此FPGA同样特别适用于实现模板匹配计算。
申请号为200910069272.6的专利给出了一种实现高速图像匹配方法及装置,该方法实现结构简单,但具体的实现流程需要太多的切换,乘累加模块的输入需要切换多个输入,这将增加逻辑资源消耗,增加布线的困难程度、导致布线路径较长从而降低系统可能达到的最高内核速度;输出的只是中间累加结果,这将导致需要的外部存储空间太大并且需要DSP紧密配合进行运算,从而导致占用太多DSP运行时间,导致DSP的控制和通信复杂,降低DSP的应用效率。
申请号为201310208097.0的专利公开了基于归一化相关系数的模板匹配高速并行实现方法和装置。该专利为了使实时图和模板图的每个RAM缓冲块数据能够对应上,利用多路选通开关从Mmax个模板图缓冲块中选出当前的第1块来与第1个实时图缓冲块对应,以此类推,总共需要Mmax个这样的多路选通开关来对数据进行重排。每一个多路选择开关都要实现从Mmax个数据中选取1个数据的运算,逻辑资源占用面积大,导致布线路径较长从而降低系统可能达到的最高内核速度。
发明内容
本发明所要解决的技术问题是针对上述背景技术的不足,提供了归一化相关图像模板匹配高效实现方法,进一步减少了逻辑资源消耗,进而可以提高运算速度、降低功耗和成本,解决了现有模板匹配效率低、逻辑资源占用面积大的技术问题。
本发明为实现上述发明目的采用如下技术方案:
归一化相关图像模板匹配高效实现方法,
通过构建包括高速相关运算模块、模板图实时图数据外部存储器、微处理器、结果存储器的装置实现,所述模板图实时图数据外部存储器、微处理器、结果存储器分别与高速相关运算模块连接,模板图实时图数据外部存储器、结果存储器分别与微处理器相连;
所述高速相关运算模块包括:与模板图实时图数据外部存储器连接的模板图灰度值平方求和模块、模板图灰度值求和模块、实时图模板图灰度值乘积求和模块、实时图灰度值求和模块、实时图灰度值平方求和模块,由模板图灰度值平方总和、模板图灰度值总和、实时图模板图灰度值乘积总和、实时图灰度值总和、实时图灰度值平方总和求得搜索位置处各行各列模板图实时图归一化相关系数的后续计算模块,以及,外部通信接口模块、时序控制模块,所述实时图模板图灰度值乘积求和模块采用乒乓缓存结构存储模板图数据;
外部通信接口模块与微处理器进行参数输入输出、指令输入、状态查询输出,时序控制模块与所述模板图灰度值平方求和模块、模板图灰度值求和模块、实时图模板图灰度值乘积求和模块、实时图灰度值求和模块、实时图灰度值平方求和模块、后续计算模块中的地址线以及控制线相连接以实现下述匹配高效实现方法的控制流程,
匹配高效实现方法的控制流程具体包括:
A、从模板图实时图数据外部存储器中读取的每一行模板图数据存储在乒乓缓存结构中的一组模板数据RAM缓冲块内,从模板图实时图数据外部存储器中读取的与模板行数对应的实时图数据存储在实时图数据RAM缓存块内,同时计算模板图灰度值总和以及灰度值平方总和、搜索位置处第0行第0列实时图灰度值总和以及实时图灰度值平方总和;
B、采用并行方式计算搜索位置处各行各列模板图实时图归一化相关系数:
B1、计算当前行第0列实时图模板图灰度值乘积总和以及归一化相关系数,
B2、实时图数据RAM缓存块在高速相关运算器的时序控制下并行输出实时图模板图重叠区域相对于前一列搜索位置新进的一列数据以及刚移出的一列数据,对当前行数据的实时图灰度值并加结果以及灰度值平方和并加结果进行累加,即依次在当前行前一列数据并加结果累加值的基础上加上新进一列数据并加结果后再减去移出一列数据并加结果,累加结果与当前行第0列实时图灰度值总和以及灰度值平方总和求和得到当前行下一列实时图灰度值总和以及灰度值平方总和,
B3、重复步骤B1至B2直至计算出当前行各列模板图实时图归一化相关系数,同时按照下一行搜索计算时实时图数据的行顺序从模板图实时图数据外部存储器中重新读取模板图数据,将重新读取的模板图数据存储在乒乓缓存结构中的另一组模板数据RAM缓存块内,通过乒乓操作使得重新读取的模板图数据参与下一行各列模板图实时图归一化相关系数的计算;
B4、读取下一行实时图数据覆盖下一行计算中不用的实时图数据RAM缓存块,计算搜索位置处当前行第0列实时图灰度值总和以及实时图灰度值平方总和;
B5、重复步骤B1至步骤B4直至计算出搜索位置处各行各列模板图实时图归一化相关系数。
做为所述归一化相关图像模板匹配高效实现方法的进一步优化方案,步骤B4中计算搜索位置处当前行第0列实时图灰度值总和的方法为:在每一行实时图数据读入时,对实时图当前行第0列搜索位置处每一行数据的灰度值进行累加,然后对这些行数据累加结果进行列累加得到灰度值图像累加值,灰度值图像累加值与其经M步延迟的累加值相减得到当前搜索位置处当前行第0列实时图灰度值总和,M为模板图行数。
做为所述归一化相关图像模板匹配高效实现方法的进一步优化方案,步骤B4中计算搜索位置处当前行第0列实时图灰度值平方总和的方法为:在每一行实时图数据读入时,对实时图当前行第0列搜索位置处每一行数据的灰度值先平方后累加,然后对这些行数据平方累加结果进行列累加得到灰度值图像平方累加值,灰度值图像平方累加值与其经M步延迟的累加值相减得到当搜索位置处当前行第0列实时图灰度值平方总和,M为模板图行数。
进一步的,所述归一化相关图像模板匹配高效实现方法的步骤B5依据表达式:
计算出搜索位置处各行各列模板图实时图归一化相关系数,
其中:M、N为模板图的行数、列数,K、L为实时图的行数、列数,(u,v)为当前搜索位置,∑∑A(i+u,j+v)B(i,j)为当前搜索位置(u,v)处实时图模板图灰度值乘积总和,∑∑B(i,j)、∑∑B(i,j)2分别为模板图的灰度值总和、灰度值平方总和,∑∑A(i+u,j+v)、∑∑A(i+u,j+v)2分别为搜索位置处实时图的灰度值总和、灰度值平方总和,0≤u≤K-M,0≤v≤L-N,0≤i≤M-1,0≤j≤N-1。
进一步的,所述归一化相关图像模板匹配高效实现方法,
所述实时图模板图灰度值乘积求和模块,包括:两组模板数据RAM缓冲块组成的乒乓缓存结构、与模板图数据行数个数相同的多路选择开关以及乘法器、一个并加器以及一个累加器,各组模板数据RAM缓冲块含有与模板图数据行数个数相同的子单元,其中,
有且只有一个多路选择开关的两个输入端分别与两组模板数据RAM缓冲块中相同模板行数对应的子单元连接,
有且只有一个乘法器的一个输入端接一个多路选择开关输出端,而乘法器另一个输入端接实时图灰度值求和模块以获取与模板图行数对应的实时图数据,并加器输入端与各乘法器输出端连接,
累加器输入端与并加器输出端连接,累加器输出实时图模板图灰度乘积总和至后续计算模块。
进一步的,所述归一化相关图像模板匹配高效实现方法,所述实时图灰度值求和模块包括:实时图数据RAM缓存块、行数据累加模块、列累加模块、M个延迟寄存器、M选1多路开关、减法器、并加模块、累加模块、加法器,实时图数据RAM缓存块包括与模板图数据行数对应的各子缓存块,其中,
行数据累加模块、列累加模块、M个延迟寄存器、并加模块、累加模块的时钟信号端口以及使能信号端口与时序控制模块连接,实时图数据RAM缓存块在时序控制模块作用下并行输出实时图模板图重叠区域相对于前一列搜索位置新进的一列数据以及刚移出的一列数据;
行数据累加模块:对输入端读取的各实时图数据RAM子缓存块数据累加得到实时图灰度值的行数据累加结果,
列累加模块:输入端接行数据累加模块输出端,输出端接减法器一输入端,对行数据累加结果进行累加得到灰度值图像累加值;
第1延迟寄存器输入端与列累加模块输出端连接,第2至第M延迟寄存器的输入端与前一延时寄存器输出端连接,各延时寄存器输出端与M选1多路开关的一个输入端连接,M选1多路开关输出端接减法器另一输入端,灰度值图像累加值与其经M步延迟的累加值相减得到搜索位置处当前行第0列实时图灰度值总和,减法器输出搜索位置处当前行第0列实时图灰度值总和;
并加模块:对输入端读取的各实时图数据RAM子缓存块数据并加得到M行数据的实时图灰度值并加结果;
累加模块:输入端接并加模块的输出端,在当前行前一列数据并加结果累加值的基础上加上新进一列数据并加结果后再减去移出一列数据并加结果;
加法器:一个输入端接减法器的输出端,另一个输入端接累加模块的输出端,累加模块输出的结果与当前行第0列实时图灰度值总和相加得到当前行下一列实时图灰度值总和;
加法器输出当前行下一列实时图灰度值总和至后续计算模块。
进一步的,所述归一化相关图像模板匹配高效实现方法,在所述实时图灰度值求和模块基础上添加求平方运算模块即可实现实时图灰度值平方求和模块,求平方运算模块输入端接实时图数据RAM缓存块,行数据累加模块、并加模块的输入端分别与求平方运算模块的输出端连接。
本发明采用上述技术方案,具有以下有益效果:
(1)本发明给出了模板图像并行匹配并行实现方法,采用并行处理的方式首先并行计算当前行各列搜索位置模板图实时图归一化系数,同时按照下一行搜索计算时实时图数据的行顺序重新排序模板图数据,然后并行计算搜索位置处下一行各列模板图实时图归一化相关系数,在保证了实时图数据与模板图数据相对应的前提下计算出搜索位置处各行各列模板图实时图归一化相关系数,可用于根据一个已知的模板图在一幅动态实时图像中定位目标,在自动目标识别、基于双目立体视觉的测量、医疗图像融合、卫星图像监控等领域具有广泛用途;
(2)相对于申请号为201310208097.0的专利,综合逻辑资源占用面积从59%降低到了38%,其中ALUTs从44%降低到了22%,实现了逻辑资源的高效利用;
(3)本发明给出的模板图像并行匹配装置:采用两组模板图数据RAM缓冲块,在每一行(第n行)计算时,一组用于计算当前行(第n行)各列模板图实时图归一化系数,同时另一组根据下一行(第n+1行)计算时实时图数据行顺序重新从外部存储器读取模板图数据到对应的内部RAM缓冲块中,在进行下一行(行序递增,第n+1行)计算时,由M个二选一多路选择开关在计算下一行(第n+1行)各列搜索位置模板图实时图归一化系数时选择重排后的模板数据参与计算,有效地减少了系统逻辑资源消耗,潜在地降低了功耗;
(4)缩短了布线路径从而提高了FPGA/VLSI等实现器件内核所能达到的最大运行速度;降低了对外部微处理器的要求,并且该实现缩小了系统的体积。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1是归一化相关图像模板匹配高效并行实现方法的原理结构框图。
图2是归一化相关图像模板匹配高效并行实现方法的工作流程图。
图3是累加器的结构图。
图4是图1中第1列累加模块实现原理结构图。
图5(a)、图5(b)分别是累加并加运算模块、并加累加运算模块的示意图。
图6是并加实现结构图。
图7是模板匹配原理示意图。
图8是归一化相关图像模板匹配高效并行实现装置原理结构框图。
图9是高速相关运算器的时序仿真波形图。
图10是归一化相关图像模板匹配高效并行实现装置结构框图。
图中标号说明:1为B2cc计算模块,2为Bcc计算模块,3为ABcc计算模块,4为Acc计算模块,5为A2cc计算模块,6为后续计算模块,7为外部通信接口模块,8为时序控制模块,9为外部存储器,10为高速相关运算器,11为结果存储器,12、26、27为平方运算模块,13、14、19、23、29为累加器,15和21为模板图RAM缓冲块,20为实时图RAM缓冲块,16为2选1多路选择器,17、35为乘法器,18、22、26为并加模块,24为第1列累加1模块,28为第1列累加2模块,30、31为定点浮点转换模块,32为浮点除法运算模块,33、34为分母方根运算模块,36为核心运算模块,37为微处理器。
具体实施方式
下面详细描述本发明的实施方式,下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本领域的技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有本发明所属技术领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
本发明所用的归一化相关系数公式如下:
A表示实时图,B表示模板图,其尺寸分别为K×L和M×N个像素。(u,v)为任一搜索位置,0≤u≤K-M,0≤v≤L-N。∑∑表示 为模板图像的均值,为搜索位置(u,v)处实时图与模板图重叠部分的均值。下述行列的序号都是从0开始的。
为了简单起见,进行下述变量定义: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)表示当前搜索位置实时图模板图灰度值乘积总和。归一化相关系数可进一步简写为:
由上式的分子和分母我们可以看出,归一化相关系数的计算需要大量的乘累加操作,因此非常适合并行实现。为简便起见,此处的定义和缩写在下文的描述、图形及表中同样有效。
实时图像以及模板图像的行数和列数(即,K≤Kmax,L≤Lmax,M≤Mmax,N≤Nmax)都是可以由外部微处理器输入的可变的参数,其中Kmax、Lmax、Mmax、Nmax为由任务需求决定的最大可输入的行列数,也是本发明所采用的并行通道数目。本发明所提出的归一化相关图像模板匹配高效并行实现方法的原理结构框图如图1所示。归一化相关系数计算完成以后取最大值、阈值处理等操作由微处理器37来完成。为了清晰起见,图1主要给出了数据流相关的结构图,各个操作符号的功能说明已经在图例中给出。图中,时序控制模块8主要用于控制整个归一化相关系数计算的工作流程。外部通信接口模块7主要用于与微处理器37进行通信,即进行参数(包括K、L、M、N)、命令输入及状态输出。归一化相关系数计算模块36为核心运算模块,包括ABcc计算模块3、Acc计算模块4、A2cc计算模块5、Bcc计算模块2、B2cc计算模块1及后续计算模块6。
如图2所示,本发明的归一化相关图像模板匹配高效并行实现方法包括如下几步。下面具体结合原理结构框图说明这些步骤中子模块的实现方法及工作流程。
(1)从外部存储器中读取每一行模板图数据分别存储到A组对应的每一个内部RAM缓冲块中,读取模板图相同行数的实时图数据分别到对应的内部RAM缓冲块中,同时进行模板图灰度值总和模板图灰度值平方总和计算和第0行第0列(u=0,v=0)搜索位置处实时图灰度值总和实时图灰度值平方总和计算,其中当前行、列序号初始化为u=0,v=0。
由于每一行中每一个位置上的归一化相关系数的计算只需模板图行数(M)行的实时图,因此我们可以采用两组(A组和B组)Mmax个大小为1×Nmax的模板图RAM缓冲块21和15(如图1中的ORAMA[0],...,ORAMA[Mmax-1]和ORAMB[0],...,ORAMB[Mmax-1])及Mmax个大小为1×Lmax的实时图RAM缓冲块20(如图1中的RRAM[0],...,RRAM[Mmax-1]),其中两组模板图RAM缓冲块是为了后续的计算和数据对应重排同时进行而设。在开始计算时,首先从外部存储器中读取每一行模板图数据分别存储到A组对应的每一个内部RAM缓冲块中,读取模板图相同行数的实时图数据分别到对应的内部RAM缓冲块中。具体是将模板图每一行N列的灰度值数据存储在当前组一个RAM缓冲块中,共存入M行;将实时图每一行L列的灰度值数据存储在一个RAM缓冲块中,共存入M行。
对于一个固定的模板图,在每一个模板匹配位置(u,v),Bcc和B2cc在整幅图搜索空间内只计算一次。因此我们可以在模板图数据从外部存储器(图1中的Exter-RORAM)9中输入到内部的RAM缓冲块21(ORAMA[0],...,ORAMA[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的输出即为模板图灰度值平方总和。
搜索位置第0行第0列的实时图灰度值总和的计算,是通过时序控制模块控制一个行数据累加模块在每一行实时图数据读入时,对实时图第0行第0列搜索位置处每一行数据进行累加,然后通过一个列累加器对这些行数据累加模块输出结果逐行进行累加,并且和该列累加器累加结果经过M步(模板图行数步)延迟后结果相减获得。具体是由第1列累加1模块24来实现,该模块具体的原理实现结构如图4所示,每一行第一列Acc的计算都是由这个模块实现的。这个模块由2个累加器(行数据累加模块和列累加模块)、一组延迟寄存器和一个为适应不同情况下模板图行数变化而选用的Mmax输入选1的多路选择器组成,行数据累加模块在每一行实时图数据读入时,对每一行前N个数据进行累加,因此我们得到列累加模块在行数据累加模块得到累加值时对该累加值进行累加,然后与经过M步(模板图行数步)延迟的列累加器累加结果相减获得每一行第0个搜索位置的Acc(u,0):
因此,本发明在实时图数据从外部存储器9(图1中的Exter-RORAM)读入到内部RAM缓冲块20(RRAM[0],...,RRAM[M-1])的过程中计算Acc(u,0)。
搜索位置第0行第0列的实时图灰度值平方总和的计算,是通过时序控制模块控制一个行数据累加模块在每一行实时图数据读入时,对实时图第0行第0列搜索位置处每一行数据平方后进行累加,然后通过一个列累加器对这些行数据平方累加模块输出结果逐行进行累加,并且和该列累加器累加结果经过M步(模板图行数步)延迟后结果相减获得。具体由A2cc计算模块5中的平方模块27和第1列累加2模块28实现。第1列累加2模块与第1列累加1模块的结构和工作流程相同。即本发明在实时图数据从外部存储器9(图1中的Exter-RORAM)读入到内部RAM缓冲块20(RRAM[0],...,RRAM[M-1])的过程中计算Acc(u,0)的同时计算A2cc(u,0)。
(2)选通第A组模板图内部RAM缓冲块,计算当前行第0列(v=0)模板图实时图灰度值乘积总和及归一化相关系数。
1)ABcc计算模块
模板图与实时图当前搜索位置的灰度值乘积总和的计算,由ABcc计算模块3实现。
由归一化相关系数公式,采用模板图最大的行数(Mmax)个并行的乘法通道来进行并行运算。因此,通过合理的时序控制在一个时钟周期内就可以计算M(M≤Mmax)个乘累加,这样,在N个时钟周期以后,就可以得到一个搜索位置上的ABcc。
在开始计算时,首先从外部存储器中读入实时图数据和模板图数据到对应的内部RAM缓冲块中。若只采用A组模板图数据内部RAM缓冲块,当开始进行第1行(从0开始算起)搜索时,新来的一行实时图数据覆盖已经不用的第0个缓冲块,此时实时图第0个RAM缓冲块(RRAM[0])已经和模板图中的第0块(ORAMA[0])不对应,而是与模板图的最后一块(ORAMA[M-1])相对应,此时第1个实时图缓冲块对应模板图的第0个缓冲块,以此类推。当进行第2行(从0开始算起)搜索时,新来的一行实时图数据覆盖第1个已经不用的RAM缓冲块,此时第0个实时图缓冲块对应第M-2个模板图缓冲块(ORAMA[M-2]),第1个实时图缓冲块对应第M-1个模板图缓冲块(ORAMA[M-1]),第2个才对应模板图的第0个缓冲块(ORAMA[0]),以此类推。由此为了使实时图和模板图的每个RAM缓冲块数据能够对应上,一种方式是利用多路选择器从Mmax个模板图缓冲块中选出与每个实时图缓冲块对应的模板图RAM缓冲块,然后进行后续计算。
本发明增加了一组(B组)模板图数据内部RAM缓冲块,后续只采用了2选1多路选择器(MUX)在A组和B组模板图数据内部RAM缓冲块之间切换,当A组用于计算时,B组用于为下一行数据的对应做准备(重排),即从实时图模板图外部存储器中按照下一行搜索位置处实时图数据内部RAM缓冲块的计算行顺序从模板图外部存储器中读取数据分别到对应的B组模板图内部缓冲块中,这样下一行相关系数计算时通过选通B组模板图内部缓冲块使其与实时图RAM缓冲块对应,此时A组切换为用于为新的一行数据的对应做准备(重排),以此类推。如第0行计算时,如上所述,按行顺序M-1,0,1,…,M-2从外部存储器中读入模板图数据分别到第0,1,…M-1个B组模板图内部缓冲块中,这样第1行计算时,第0,1,…M-1个B组模板图、实时图内部RAM缓冲块的数据是对应的。因此,换行时用于并行计算输入的模板图内部RAM缓冲块输出通过2选1多路选择器在A组和B组之间进行切换,不用于计算的一组用于为下一行计算作数据准备,从而实现相关系数计算时模板图实时图数据的对应。
ABcc计算模块3由Mmax个实时图RAM缓冲块20、A组与B组Mmax个模板图像RAM缓冲块21和15、Mmax个2选1多路选择器16、Mmax个乘法器17、并加模块18和累加器19组成。A组与B组Mmax个模板图像RAM缓冲块(21,15)的所有输出端分别对应连接到Mmax个2选1多路选择器16的输入端上,2选1多路选择器的输出连接到乘法器17中的一个乘法器的一输入端,乘法器的另一输入端对应连接到实时图像RAM缓冲块20的输出端,通过采用模板图最大的行数(Mmax)个这样的并行通道进行并行运算,然后各个通道输出端连接到一个并加模块18(PAdd1),最终连接到一个累加模块19(Accu3)上。
在具体计算时,时序控制模块8控制多路选择器16选通当前组模板图像RAM缓冲块 使得对应的模板图数据与实时图数据进行乘积运算,改变模板图和实时图RAM缓冲块的地 址,逐列输出模板图和实时图的对应数据进行乘积运算,然后经过并加模块18对当前列各 行数据进行求和,而后由累加模块19对并加模块18输出的结果逐列求和后,获得当前列各 个搜索位置的
这儿本发明采用了先并加后累加,其结果与先累加然后并加的方式结果是一样的,但前者能够省掉M-1个重复的累加器(Accu),如图5(b)所示,从而降低了资源的消耗。累加并加运算模块如图5(a)所示。
其中的并加结构如图6所示,由此多个输入通道在一步操作中就可以获得相加结果,在加入延迟寄存器缓冲后,并加可以实现流水输出。
2)归一化相关系数后续计算
归一化相关系数后续计算是由后续计算模块6实现的,在 和计 算出来以后,相应的 可以由乘法器和加、减法 器计算出来。归一化相关系数公式的分母先由两个求根模块33和34分别进行求根运算,然 后由乘法器模块35进行相乘,这样可以降低数据宽度。归一化相关系数公式的分子和分母 首先由定点浮点转换模块30和31转化为浮点,最终通过一个浮点除法运算模块32进行浮点 除法就可以得到浮点格式的归一化相关系数。
搜索位置当前行(第0行)归一化相关系数的计算,是模板图像第0到M-1行与实时图第0到M-1行数据对应计算,搜索位置第0列归一化相关系数的计算为模板图像第0到N-1列与实时图像第0到N-1列数据对应计算。搜索位置第1列归一化相关系数的计算为模板图像第0到N-1列与实时图像第1到N列数据对应计算,即模板图像在实时图像中右移一列,并计算该处的此时后续的求平方根、浮点除法等归一化相关系数后续计算同步流水进行,以此重复,直到当前行(第0行)归一化相关系数计算完成。根据实际需要可选择32位浮点或者64位浮点运算。
(3)采用一加一减两步操作计算搜索位置当前行第1列(v=1)的实时图灰度值总 和及实时图灰度值平方总和
3)后续Acc计算
后续各列每一个实时图灰度值总和计算,是从搜索位置第1列开始,通过时序控制模块同时控制所有实时图数据缓冲RAM块依次输出实时图中模板图重叠区域相对于前一列搜索位置新进的一列数据和刚移出的一列数据,经过并加器后,由累加器在当前输出值的基础上,累加新进的一列数据并加结果减去刚移出一列数据并加结果,然后累加器输出结果与已经计算出的当前行第0列的实时图灰度值总和相加得到此时,该累加器在第0列搜索位置处的值初始化为0。当前操作主要为一加一减两步操作,累加器加上相对于前一个搜索位置新进的一列数据的并加结果,减去相对于前一个搜索位置刚移出的一列数据的并加结果,其它运算通过逻辑同步完成。
由具体的模板匹配过程图7可以看出,当前位置(u,v0+1)的Acc计算和前一位置(u,v0)只是多了一列新的数据(图7中的新列)和少了一列旧的数据(图7中的旧列),因此在当前给定搜索位置(u,v0+1),可以通过时序控制逻辑同时控制所有实时图RAM缓冲块20,依次输出实时图中模板图重叠区域相对于前一个搜索位置(u,v0)新进的一列数据(对应实时图中第v0+N列)和刚移出的一列数据(对应实时图中第v0列),经过并加器后,由累加器累加新进的一列数据并加结果并且减去刚移出一列数据并加结果同时与前一列搜索位置处的该累加器结果值求和,然后与当前行第0列的实时图灰度值总和相加得到Acc(u,v0+1)。
因此后续列的实时图灰度值总和Acc(u,v)由Acc计算模块4中的与A2cc(u,v)计算模块5共用的内部实时图数据RAM缓冲块20、并加模块22(PAdd2)、累加器23(Accu4)和第1列累加1模块24实现。所有内部实时图数据RAM缓冲块20输出端对应连接到并加模块22的输入端,并加模块22的输出端连接到累加器23的输入端。累加器的输出加上第1列累加1模块24的输出即可得到后续列的实时图灰度值总和Acc(u,v)。
4)后续A2cc计算
从每一行的第1个搜索位置开始,A2cc(u,v)以Acc(u,v)同样的方式同时实现。在 当前给定搜索位置(u,v0+1),与Acc(u,v)计算中时序控制模块控制所有实时图数据缓冲 RAM块20依次输出实时图中模板图重叠区域相对于前一列搜索位置新进的一列数据和刚移 出的一列数据同时,对每一行数据分别由平方运算模块求平方后,经过并加器并加,而后由 累加器累加新进的一列数据平方并加结果减去刚移出一列数据平方并加结果,最后由加法 器与已经计算出的当前行第0列搜索位置处的相加即可获得当前列的
因此后续列的实时图灰度值平方总和A2cc(u,v)由A2cc计算模块5中的与Acc计算模块4共用的内部实时图数据RAM缓冲块20(RRAM[0],...,RRAM[M-1])、各行1个平方运算模块26、并加器25(PAdd3)、累加器29(Accu5)、平方模块27和第1列累加2模块28组成。所有内部实时图数据缓冲RAM块20(RRAM[0],...,RRAM[M-1])的输出端对应连接到各行平方运算26输入端,各行平方运算26输出端连接到并加器25的输入端,并加器25的输出端连接到累加器29的输入端。累加器29的输出加上第1列累加2模块28的输出即可得到后续列的实时图灰度值平方总和A2cc(u,v)。
(4)由步骤2和3相同的方式,依次计算当前行后续各列v归一化相关系数直到所有列计算完成。
该步骤由前述步骤2和步骤3中的实现细节进行实现。
(5)与步骤2到步骤4同时进行模板图数据重排,即按下一行(u+1)搜索时实时图数据内部RAM缓冲块的计算行顺序从外部存储器中读取模板图数据并存储到对应的B组模板图内部RAM缓冲块中。
由前述,由于下一行搜索前从实时图外部存储器中读入下一行新的实时图数据覆盖不用的实时图RAM块数据(参考步骤6),导致当前组(当前第0行为A组)的模板图RAM缓冲块与实时图RAM缓冲块输出顺序不再对应。为了解决这个问题,本发明增加了一组(B组)模板图数据内部RAM缓冲块,这样当前行搜索时,只需采用2选1多路选择器在A组和B组模板图数据对应内部RAM缓冲块之间切换选通一组用于并行计算,另一组用于为下一行数据的对应做准备(重排),即按下一行搜索位置处实时图数据内部RAM缓冲块的计算行顺序从模板图外部存储器中读取数据分别到对应的B组(当前第0行A组用于计算)模板图内部缓冲块中,这样下一行相关系数计算时通过选通B组模板图内部缓冲块与对应实时图内部RAM缓冲块数据进行计算,此时A组切换为用于为下一行数据的对应做准备(数据重排),以此类推。这样,通过2选1多路选择器在A组和B组之间进行切换,实现相关系数计算模板图实时图数据对应。
(6)在步骤2到步骤5中相关计算及同时进行的模板图数据重排都完成后,读入下 一行(u+1)实时图数据存储到数据已经无效的内部实时图RAM缓冲块,同时计算当前行第0列 (v=0)的实时图灰度值总和实时图灰度值平方总和
在读入实时图新一行数据时,同时由步骤1中同一模块按同样方式相应的计算出当前行第0列的实时图灰度值总和和实时图灰度值平方总和的值。后续列实时图灰度值总和和实时图灰度值平方总和亦是按前述步骤3中一加一减两步操作的方式依次计算得出。
读入下一行新的实时图数据覆盖不用的实时图RAM缓冲块数据,在下一行计算时需要通过时序控制模块8切换多路选择器选择相应组模板图RAM缓冲块使其输出与实时图RAM缓冲块输出行顺序变化对应。
(7)对步骤2、步骤5中用于并行计算输入和数据重排的A组和B组模板图内部RAM缓冲块进行功能互换,采用步骤2到步骤6相同的方式进行类似操作,依次计算出后续各行各列归一化相关系数。
计算实时图像第1行至第K-M行归一化相关系数,第0行相关系数计算和数据重排完成后,依次读入下一行新的实时图数据覆盖不用的实时图RAM缓冲块数据,并且通过时序控制模块通过2选1多路选择器重新选择相应组(已经预先准备好对应数据)模板图RAM缓冲块输出使其与之对应,这样相当于模板图像在待匹配实时图像中下移一行。因此在下一行相关系数计算前,需要对步骤2、步骤5中用于并行计算输入和数据重排的A组和B组模板图内部RAM缓冲块进行功能互换,即如果前一行并行计算时选择输入A组内部RAM缓冲块中模板图数据,此时并行计算选择输入B组;步骤5数据重排中模板图外部存储器数据读入选择存储到A组。与此类似,若前一行并行计算时选择输入B组,此时并行计算选择输入A组;步骤5数据重排中模板图外部存储器数据读入选择存储到B组。这样,采用步骤2到步骤6相同的方式进行类似操作,依次计算出后续各行各列归一化相关系数。
其中本发明中外部实时图和模板图数据存储在了一块存储器(Exter-RORAM)中,此时读取分为两步;也可考虑分别存储在两块RAM中,此时可同时进行读取,可根据实际情形对上述实现方法和步骤进行适量合并。
由上述实现方法和步骤,我们可以看出,归一化相关系数计算需要K*L+M*N+(K-M+1)*T1r个时钟周期,其中当(L-N)*(N+2)+N>M*N时,T1r=(L-N)*(N+2)+N;当(L-N)*(N+2)+N<=M*N时,T1r=M*N。因此总的计算时间为(K*L+M*N+(K-M+1)*T1r)/fclk,这儿fclk为系统工作频率。
图8为一种使用归一化相关图像模板匹配高效并行实现方法的装置,由高速相关运算器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中读取数据。
如图1所示,高速模板匹配装置中高速相关运算器10的归一化相关系数计算模块36包括模板图灰度值求和模块2,模板图灰度值平方求和模块1,实时图灰度值求和模块4、实时图灰度值平方求和模块5和实时图模板图灰度值乘积求和模块3、后续计算模块6。模板图灰度值求和模块2由一个累加器14组成,模板图灰度值平方求和模块1由一个平方运算模块12和一个累加器13相连而成。实时图灰度值求和模块4由与实时图灰度值平方求和模块5共用的Mmax路实时图数据缓冲RAM 20、第1列累加模块24、并加器22、累加器23和加法器组成。实时图灰度值平方求和模块5由与实时图灰度值求和模块4共用的Mmax路实时图数据缓冲RAM 20、第1列累加模块28、平方运算阵列26、平方运算模块27、并加器25、累加器29和加法器组成。实时图模板图灰度值乘积求和模块3由Mmax路实时图缓冲RAM 20、A组和B组M路模板图RAM缓冲块21和15、Mmax路2选1多路选择器16、Mmax路乘法器17、并加模块18和累加器19组成。后续计算模块由乘法器、平方运算模块、加、减法器和分子分母定点浮点转换模块30和31、分母方根运算模块33和34、浮点除法运算模块32组成。其中,Mmax为由任务需求决定的模板图最大可输入行数。
高速模板匹配装置工作流程如下。首先微处理器37把原始模板图和实时图数据存入模板图实时图数据外部存储器9中,然后向高速相关运算器10输入图像的尺寸参数,而后输入启动命令启动归一化相关运算,高速相关运算器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实现,多路选择器、乘法运算、平方运算、加法运算、减法运算、求方根运算、定点浮点转换、浮点除法运算都由Qartus II根据所用的FPGA相应进行实例化。时序控制模块通过状态机的方式实现,从而控制整个系统的运行。在分母求方根运算和分子转化为浮点数之前,所有的数据计算都进行了位扩展以保证不出现精度损失,这样分母在求方根运算前数据扩展到了43位,将数据进一步扩展到86位,然后利用模块33和34进行求方根运算,从而仍保留了43位输出。后续乘法器仍采用了位扩展以保证最大精度,定点格式的分子分母通过定点浮点转换模块(30、31)转换为32位浮点运算格式,经过32位浮点除法(32)运算,归一化相关系数输出直接为32位浮点格式。
2)采用Verilog和VHDL语言混合编程的方式进行逻辑设计
步骤1:读入模板图像80*80个数据到A组对应的每一个内部RAM缓冲块中,读入前80行实时图像512*80个数据分别存储到对应的内部RAM缓冲块,同时计算Bcc和B2cc和第0行第0列搜索位置上的Acc和A2cc。
对于模板图像,设置了两组(A组和B组)80个RAM缓冲块;对于实时图像设置1组80个RAM缓冲块,每一行信息存储到一个RAM缓冲块中。由于灰度值为8位二进制数据,每个模板图RAM缓冲块的大小为80*8(位),每个实时图RAM缓冲块的大小为512*8(位)。对于实时图,在开始时读入的是第0至79行数据,前80行实时图像依次存入实时图数据缓冲RAM块中,总计80*512*8(位)。Bcc在模板图像数据读入过程中通过Bcc计算模块计算出来,同时B2cc也在模板图像数据读入过程中通过B2cc计算模块计算出来。第0行第0列搜索位置上的Acc和A2cc分别由第1列累加1模块和第1列累加2模块实现。
步骤2:计算ABcc(m,n)及归一化相关系数,并且将结果存储到外部存储器中;
对于ABcc的计算,时序控制模块会控制当前计算组模板图和实时图每一个RAM缓冲块地址同时输出一列数据,同时控制多路选择器使得对应的模板图与实时图数据进行乘积运算,然后经过对所有行乘积结果同时求和的并加和对并加结果逐列求和的累加后获得。同时按照流水的方式由后续计算模块计算出归一化相关系数,并且存储到外部存储器中。
步骤3:计算Acc(m,n)和A2cc(m,n)。
对于每一行从第1列(0为起始序号)开始,Acc和A2cc可由时序控制模块控制Acc计算模块和A2cc计算模块实现,具体为从实时图数据RAM缓冲块中依次读出新进的一列数据和移出的旧的一列数据,对这两列数据进行并加且对前后的并加结果做差,对结果值进行累加而后和当前行第0列的Acc(m,0)求和计算得到Acc(m,n);同时对这两列输出数据的每一行首先分别进行平方,然后进行并加且对前后的并加结果做差,对结果值进行累加而后和当前行第0列的A2cc(m,0)求和计算得到A2cc(m,n)。
步骤4:重复步骤2到步骤3,同时进行模板图数据重排,即按下一行(u+1)搜索时实时图数据内部RAM缓冲块的计算行顺序从模板图外部存储器中读取数据并存储到对应的B组模板图内部缓冲块中。直到当前行所有列的归一化相关系数计算和数据重排完成。
步骤5:从外部存储器读入下一行的实时图数据到相应的内部RAM缓冲块中,同时计算当前行第0列的Acc(m,0)和A2cc(m,0)值。
对于实时图像,当开始进行第1行搜索时,新来的第M行实时图数据覆盖已经不用的第0个缓冲块,此时第0个实时图缓冲块对应当前A组第M-1个模板图缓冲块(ORAMA[M-1]),第1个才对应A组模板图的第0个缓冲块(ORAMA[0]),以此类推。因此此时通过在当前行运算时,按下一行搜索时实时图数据缓冲块的计算行顺序从模板图外部存储器中读取数据分别存储到对应的另一组模板图内部RAM缓冲块中;当进行下一行计算时,时序控制模块控制2选1多路选择器选通切换到另一组模板图内部RAM缓冲块使其与新读入一行数据后实时图数据内部RAM缓冲块对应。
当前行第0列搜索位置上Acc(m,0)和A2cc(m,0)由第1列累加1模块和第1列累加2模块在新一行实时图数据读入过程中同时计算出来。
步骤6:采用2选1选择器对对应的每一个A组和B组模板图内部RAM块输出进行切换,选通输出的一组用于步骤2中下一行(u+1)并行计算输入,另一组用于数据重排,即如果前一行(u)并行计算时选择输入A组内部RAM块中模板图数据,此时并行计算选择输入B组,步骤4数据重排中模板图外部存储器数据读入选择存储到A组;与此类似,若前一行(u)并行计算时选择输入B组,此时并行计算选择输入A组,步骤4数据重排中模板图外部存储器数据读入选择存储到B组。采用步骤2到步骤5相同的方式进行类似操作,直到433行归一化相关系数计算完毕并且存储到外部存储器中。
3)资源消耗、内核速度及时间消耗
由Qartus II编译报告,资源利用情况如表1所示。可见,在包含了求平方根、定点到浮点转换、浮点除法等运算情况下,整个FPGA芯片占用的逻辑资源不多,因而本发明所提方案是完全可以实现的。
表1 资源利用情况
对于大小为80×80的模板图和大小为512×512的实时图,采用70MHz系统全局时钟频率,模板图和实时图分别读入的情况下,包含外部存储器数据读取时间,由于(L-N)*(N+2)+N>M*N,高速相关运算器完成所有搜索位置归一化相关系数运算所用计算时间为(K*L+M*N+(K-M+1)*(L-N+1)*(N))/fclk=(512*512+80*80+(512-80+1)*(512-80+1)*82)/70000000=223.5ms。
由于采用了80个并行通道,高速相关运算器仅用223.5ms就可以完成,因此在可编程逻辑器件上并行实现基于归一化相关系数的模板匹配可大大节约时间,提高匹配速度,可以达到实时匹配的要求。
4)Quartus波形仿真结果
为了验证所提出的高速相关运算器的基本功能,另外我们选用了大小为17×17的模板图和大小为40×40的实时图,17和40是输入的可变图像尺寸参数。实时图数据为由0开始递增的数据,而模板图数据是由64开始递增的数据。当数据超过当前位宽所能表示的最大值时,不考虑溢出的位数,也就是数据将保证在0~255的范围之内。
具体的时序仿真波形如图9所示。其中,端口Bcc、B2cc、Acc、A2cc和ABcc与前面定义的相同,输出端口Result_S,Result_E和Result_M分别表示32位浮点格式的NCC计算结果的符号位、指数项和尾数项。可以看出,除了一点精度上的损失外,由Quartus II 8.0得到的仿真结果与如表2所示的理论计算的结果是一致的。
表2 理论计算的结果
5)实际的实验结果
在实际系统中,归一化相关图像模板匹配高效并行实现装置的基本构成如图10所示。图中,Exter-RORAM、Exter-RAM分别为缓存模板图实时图数据和运算结果的外部存储器。微处理器采用ADI公司的DSP芯片TS201。Addr和Data为地址和数据总线,RD、WR、CS为外部存储器读写控制信号。
首先TS201作为核心处理器把模板图实时图数据存入外部双端口RAM(Exter-RORAM)中,然后向FPGA输入图像的尺寸参数,其后输入启动命令启动模板匹配运算。在运算完成以后,TS201会收到完成的中断信号,为可靠起见,TS201需要查询FPGA的完成标志,在确保完成以后进行后续工作。
在不同参数情况下用不同实际图像数据对该装置进行了长期的稳定性测试,归一化相关系数计算的结果与理论计算值相一致,并且能够稳定可靠的工作。
同时我们也利用TS201对系统运算时间进行了评估,处理时间和前面的理论计算结果一致。对于大小为80×80的模板图和大小为512×512的实时图,70MHz系统全局时钟频率下,所用时间为223.5ms。
因为FPGA通常用作VLSI专用集成电路的验证和开发平台,因此所提出的高速相关运算器可以同样进一步由VLSI实现和验证。
综上所述,本发明具有以下有益效果:
(1)本发明给出了模板图像并行匹配并行实现方法,采用并行处理的方式首先并行计算当前行各列搜索位置模板图实时图归一化系数,同时按照下一行搜索计算时实时图数据的行顺序重新排序模板图数据,然后并行计算搜索位置处下一行各列模板图实时图归一化相关系数,在保证了实时图数据与模板图数据相对应的前提下计算出搜索位置处各行各列模板图实时图归一化相关系数,可用于根据一个已知的模板图在一幅动态实时图像中定位目标,在自动目标识别、基于双目立体视觉的测量、医疗图像融合、卫星图像监控等领域具有广泛用途;
(2)相对于申请号为201310208097.0的专利,综合逻辑资源占用面积从59%降低到了38%,其中ALUTs从44%降低到了22%,实现了逻辑资源的高效利用;
(3)本发明给出的模板图像并行匹配装置:采用两组模板图数据RAM缓冲块,在每一行(第n行)计算时,一组用于计算当前行(第n行)各列模板图实时图归一化系数,同时另一组根据下一行(第n+1行)计算时实时图数据行顺序重新从外部存储器读取模板图数据到对应的内部RAM缓冲块中,在进行下一行(行序递增,第n+1行)计算时,由M个二选一多路选择开关在计算下一行(第n+1行)各列搜索位置模板图实时图归一化系数时选择重排后的模板数据参与计算,有效地减少了系统逻辑资源消耗,潜在地降低了功耗;
(4)缩短了布线路径从而提高了FPGA/VLSI等实现器件内核所能达到的最大运行速度;降低了对外部微处理器的要求,并且该实现缩小了系统的体积。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案实质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器,或者网络设备等)执行本发明的实施例或实施例的某些部分所述的方法。

Claims (6)

1.归一化相关图像模板匹配高效实现方法,其特征在于,
通过构建包括高速相关运算模块、模板图实时图数据外部存储器、微处理器、结果存储器的装置实现,所述模板图实时图数据外部存储器、微处理器、结果存储器分别与高速相关运算模块连接,模板图实时图数据外部存储器、结果存储器分别与微处理器相连;
所述高速相关运算模块包括:与模板图实时图数据外部存储器连接的模板图灰度值平方求和模块、模板图灰度值求和模块、实时图模板图灰度值乘积求和模块、实时图灰度值求和模块、实时图灰度值平方求和模块,由模板图灰度值平方总和、模板图灰度值总和、实时图模板图灰度值乘积总和、实时图灰度值总和、实时图灰度值平方总和求得搜索位置处各行各列模板图实时图归一化相关系数的后续计算模块,以及,外部通信接口模块、时序控制模块,所述实时图模板图灰度值乘积求和模块采用乒乓缓存结构存储模板图数据,所述实时图模板图灰度值乘积求和模块,包括:两组模板数据RAM缓冲块组成的乒乓缓存结构、与模板图数据行数个数相同的多路选择开关以及乘法器、一个并加器以及一个累加器,各组模板数据RAM缓冲块含有与模板图数据行数个数相同的子单元,其中,有且只有一个多路选择开关的两个输入端分别与两组模板数据RAM缓冲块中相同模板行数对应的子单元连接,有且只有一个乘法器的一个输入端接一个多路选择开关输出端,而乘法器另一个输入端接实时图灰度值求和模块以获取与模板图行数对应的实时图数据,并加器输入端与各乘法器输出端连接,累加器输入端与并加器输出端连接,累加器输出实时图模板图灰度乘积总和至后续计算模块;
外部通信接口模块与微处理器进行参数输入输出、指令输入、状态查询输出,时序控制模块与所述模板图灰度值平方求和模块、模板图灰度值求和模块、实时图模板图灰度值乘积求和模块、实时图灰度值求和模块、实时图灰度值平方求和模块、后续计算模块中的地址线以及控制线相连接以实现下述匹配高效实现方法的控制流程,
匹配高效实现方法的控制流程具体包括:
A、从模板图实时图数据外部存储器中读取的每一行模板图数据存储在乒乓缓存结构中的一组模板数据RAM缓冲块内,从模板图实时图数据外部存储器中读取的与模板行数对应的实时图数据存储在实时图数据RAM缓存块内,同时计算模板图灰度值总和以及灰度值平方总和、搜索位置处第0行第0列实时图灰度值总和以及实时图灰度值平方总和;
B、采用并行方式计算搜索位置处各行各列模板图实时图归一化相关系数:
B1、计算当前行第0列实时图模板图灰度值乘积总和以及归一化相关系数,
B2、实时图数据RAM缓存块在高速相关运算器的时序控制下并行输出实时图模板图重叠区域相对于前一列搜索位置新进的一列数据以及刚移出的一列数据,对当前行数据的实时图灰度值并加结果以及灰度值平方和并加结果进行累加,即依次在当前行前一列数据并加结果累加值的基础上加上新进一列数据并加结果后再减去移出一列数据并加结果,累加结果与当前行第0列实时图灰度值总和以及灰度值平方总和求和得到当前行下一列实时图灰度值总和以及灰度值平方总和,
B3、重复步骤B1至B2直至计算出当前行各列模板图实时图归一化相关系数,同时按照下一行搜索计算时实时图数据的行顺序从模板图实时图数据外部存储器中重新读取模板图数据,将重新读取的模板图数据存储在乒乓缓存结构中的另一组模板数据RAM缓存块内,通过乒乓操作使得重新读取的模板图数据参与下一行各列模板图实时图归一化相关系数的计算;
B4、读取下一行实时图数据覆盖下一行计算中不用的实时图数据RAM缓存块,计算搜索位置处当前行第0列实时图灰度值总和以及实时图灰度值平方总和;
B5、重复步骤B1至步骤B4直至计算出搜索位置处各行各列模板图实时图归一化相关系数。
2.根据权利要求1所述的归一化相关图像模板匹配高效实现方法,其特征在于,步骤B4中计算搜索位置处当前行第0列实时图灰度值总和的方法为:在每一行实时图数据读入时,对实时图当前行第0列搜索位置处每一行数据的灰度值进行累加,然后对这些行数据累加结果进行列累加得到灰度值图像累加值,灰度值图像累加值与其经M步延迟的累加值相减得到当前搜索位置处当前行第0列实时图灰度值总和,M为模板图行数。
3.根据权利要求2所述的归一化相关图像模板匹配高效实现方法,其特征在于,步骤B4中计算搜索位置处当前行第0列实时图灰度值平方总和的方法为:在每一行实时图数据读入时,对实时图当前行第0列搜索位置处每一行数据的灰度值先平方后累加,然后对这些行数据平方累加结果进行列累加得到灰度值图像平方累加值,灰度值图像平方累加值与其经M步延迟的累加值相减得到当搜索位置处当前行第0列实时图灰度值平方总和,M为模板图行数。
4.根据权利要求3所述的归一化相关图像模板匹配高效实现方法,其特征在于,步骤B5依据表达式:
计算出搜索位置处各行各列模板图实时图归一化相关系数,
其中:M、N为模板图的行数、列数,K、L为实时图的行数、列数,(u,v)为当前搜索位置,∑∑A(i+u,j+v)B(i,j)为当前搜索位置(u,v)处实时图模板图灰度值乘积总和,∑∑B(i,j)、∑∑B(i,j)2分别为模板图的灰度值总和、灰度值平方总和,∑∑A(i+u,j+v)、∑∑A(i+u,j+v)2分别为搜索位置处实时图的灰度值总和、灰度值平方总和,0≤u≤K-M,0≤v≤L-N,0≤i≤M-1,0≤j≤N-1。
5.根据权利要求1所述的归一化相关图像模板匹配高效实现方法,其特征在于:所述实时图灰度值求和模块包括:实时图数据RAM缓存块、行数据累加模块、列累加模块、M个延迟寄存器、M选1多路开关、减法器、并加模块、累加模块、加法器,实时图数据RAM缓存块包括与模板图数据行数对应的各子缓存块,其中,
行数据累加模块、列累加模块、M个延迟寄存器、并加模块、累加模块的时钟信号端口以及使能信号端口与时序控制模块连接,实时图数据RAM缓存块在时序控制模块作用下并行输出实时图模板图重叠区域相对于前一列搜索位置新进的一列数据以及刚移出的一列数据;
行数据累加模块:对输入端读取的各实时图数据RAM子缓存块数据累加得到实时图灰度值的行数据累加结果,
列累加模块:输入端接行数据累加模块输出端,输出端接减法器一输入端,对行数据累加结果进行累加得到灰度值图像累加值;
第1延迟寄存器输入端与列累加模块输出端连接,第2至第M延迟寄存器的输入端与前一延时寄存器输出端连接,各延时寄存器输出端与M选1多路开关的一个输入端连接,M选1多路开关输出端接减法器另一输入端,灰度值图像累加值与其经M步延迟的累加值相减得到搜索位置处当前行第0列实时图灰度值总和,减法器输出搜索位置处当前行第0列实时图灰度值总和;
并加模块:对输入端读取的各实时图数据RAM子缓存块数据并加得到M行数据的实时图灰度值并加结果;
累加模块:输入端接并加模块的输出端,在当前行前一列数据并加结果累加值的基础上加上新进一列数据并加结果后再减去移出一列数据并加结果;
加法器:一个输入端接减法器的输出端,另一个输入端接累加模块的输出端,累加模块输出的结果与当前行第0列实时图灰度值总和相加得到当前行下一列实时图灰度值总和;
加法器输出当前行下一列实时图灰度值总和至后续计算模块。
6.根据权利要求5所述的归一化相关图像模板匹配高效实现方法,其特征在于:在所述实时图灰度值求和模块基础上添加求平方运算模块即可实现实时图灰度值平方求和模块,求平方运算模块输入端接实时图数据RAM缓存块,行数据累加模块、并加模块的输入端分别与求平方运算模块的输出端连接。
CN201510819702.7A 2015-11-23 2015-11-23 归一化相关图像模板匹配高效实现方法 Active CN105426918B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510819702.7A CN105426918B (zh) 2015-11-23 2015-11-23 归一化相关图像模板匹配高效实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510819702.7A CN105426918B (zh) 2015-11-23 2015-11-23 归一化相关图像模板匹配高效实现方法

Publications (2)

Publication Number Publication Date
CN105426918A CN105426918A (zh) 2016-03-23
CN105426918B true CN105426918B (zh) 2019-01-08

Family

ID=55505116

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510819702.7A Active CN105426918B (zh) 2015-11-23 2015-11-23 归一化相关图像模板匹配高效实现方法

Country Status (1)

Country Link
CN (1) CN105426918B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463954B (zh) * 2017-07-21 2019-10-25 华中科技大学 一种模糊异谱图像的模板匹配识别方法
CN107609576A (zh) * 2017-08-23 2018-01-19 南京邮电大学 融合大模板图的模板匹配并行实现方法及装置
CN107679117B (zh) * 2017-09-18 2020-04-28 西安石油大学 一种全场稠密点快速匹配系统
CN107992100B (zh) * 2017-12-13 2021-01-15 中国科学院长春光学精密机械与物理研究所 基于可编程逻辑阵列的高帧频图像跟踪方法和系统
CN109993158B (zh) * 2017-12-31 2021-10-29 中国移动通信集团湖北有限公司 仿真图像中端口的批量配置方法、装置、设备及介质
CN110288649A (zh) * 2019-01-15 2019-09-27 南京航空航天大学 归一化相关图像模板匹配多核并行高效实现方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3166905B2 (ja) * 1997-07-02 2001-05-14 インターナショナル・ビジネス・マシーンズ・コーポレ−ション パターンマッチングによる画像処理方法およびシステム
CN101576961A (zh) * 2009-06-16 2009-11-11 天津大学 高速的图像匹配方法及装置
CN103310228A (zh) * 2013-05-28 2013-09-18 南京邮电大学 基于归一化相关系数的模板匹配高速并行实现方法和装置
CN104657553A (zh) * 2015-02-10 2015-05-27 北京航天自动控制研究所 一种基于快速归一化互相关法的相似性测度硬件加速方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3166905B2 (ja) * 1997-07-02 2001-05-14 インターナショナル・ビジネス・マシーンズ・コーポレ−ション パターンマッチングによる画像処理方法およびシステム
CN101576961A (zh) * 2009-06-16 2009-11-11 天津大学 高速的图像匹配方法及装置
CN103310228A (zh) * 2013-05-28 2013-09-18 南京邮电大学 基于归一化相关系数的模板匹配高速并行实现方法和装置
CN104657553A (zh) * 2015-02-10 2015-05-27 北京航天自动控制研究所 一种基于快速归一化互相关法的相似性测度硬件加速方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
边缘增强图像互相关模板匹配的并行架构;陆丽华 等;《计算机工程与应用》;20110304;第48卷(第6期);第214-220、228页

Also Published As

Publication number Publication date
CN105426918A (zh) 2016-03-23

Similar Documents

Publication Publication Date Title
CN105426918B (zh) 归一化相关图像模板匹配高效实现方法
CN103310228B (zh) 基于归一化相关系数的模板匹配高速并行实现方法和装置
CN102637157B (zh) 一种片上数字模板系统dtsoc
CN107590085B (zh) 一种具有多级缓存的动态可重构阵列数据通路及其控制方法
CN109146067B (zh) 一种基于FPGA的Policy卷积神经网络加速器
CN104915322A (zh) 一种卷积神经网络硬件加速方法及其axi总线ip核
CN108537331A (zh) 一种基于异步逻辑的可重构卷积神经网络加速电路
CN201418086Y (zh) 星载设备用的数据通信协议控制器
CN103984560A (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN105335331A (zh) 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统
Renaudin et al. A new asynchronous pipeline scheme: application to the design of a self-timed ring divider
CN108647777A (zh) 一种实现并行卷积计算的数据映射系统及方法
Huang et al. A high performance multi-bit-width booth vector systolic accelerator for NAS optimized deep learning neural networks
CN103761072A (zh) 一种粗粒度可重构层次化的阵列寄存器文件结构
Xie et al. High throughput CNN accelerator design based on FPGA
CN106603442B (zh) 一种片上网络的跨时钟域高速数据通信接口电路
CN102129419B (zh) 基于快速傅立叶变换的处理器
CN103078729A (zh) 基于fpga的双精度混沌信号发生器
Shang et al. LACS: A high-computational-efficiency accelerator for CNNs
CN202395792U (zh) 基于fpga的双精度混沌信号发生器
CN107609576A (zh) 融合大模板图的模板匹配并行实现方法及装置
CN103984525B (zh) 指令处理系统及方法
CN101494506A (zh) 一种流水结构的水声扩频通信带通信号捕获电路
CN104460444B (zh) 基于广义相关系数的fpga运算电路
CN101494505A (zh) 一种面积优化的流水结构水声扩频通信带通信号捕获电路

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant