[发明专利]基于归一化相关系数的模板匹配高速并行实现方法和装置有效
申请号: | 201310208097.0 | 申请日: | 2013-05-28 |
公开(公告)号: | CN103310228B | 公开(公告)日: | 2017-09-29 |
发明(设计)人: | 王邢波;王小涛 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06K9/64 | 分类号: | G06K9/64 |
代理公司: | 南京知识律师事务所32207 | 代理人: | 汪旭东 |
地址: | 210003 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于归一化相关系数的模板匹配高速并行实现方法和装置,该方法步骤是读入实时图和模板图数据到对应的内部RAM缓冲块和实时图数据缓冲RAM中,同时进行模板图灰度值总和模板图灰度值平方总和计算和搜索位置(0,0)处实时图灰度值总和实时图灰度值平方总和计算;然后同时计算搜索位置第1行后续各列的搜索位置第1行各列模板图实时图灰度值乘积总和及归一化相关系数;进一步同时读入新一行的实时图数据到对应内部RAM缓冲块和实时图数据缓冲RAM对应位置中,同时计算当前行第1列的值;依次计算出后续各行归一化相关系数。该装置由高速相关运算器、外部数据结果存储器和微处理器构成。 | ||
搜索关键词: | 基于 归一化 相关系数 模板 匹配 高速 并行 实现 方法 装置 | ||
【主权项】:
一种基于归一化相关系数的模板匹配高速并行实现方法,其特征在于,所述方法由现场可编程门阵列FPGA或超大规模集成电路VLSI通过并行的方式计算归一化互相关系数,包括如下步骤:步骤1:读入实时图和模板图数据到对应的内部RAM缓冲块中,同时实时图数据存储到用于计算实时图灰度值总和和实时图灰度值平方总和的实时图数据缓冲RAM中,同时进行模板图灰度值总和模板图灰度值平方总和的计算和第1行第1列搜索位置处实时图灰度值总和实时图灰度值平方总和的计算;步骤2:计算第1行后续各列搜索位置的实时图灰度值总和同时计算当前位置实时图灰度值平方总和搜索位置第1行各列模板图实时图灰度值乘积总和及归一化相关系数;步骤3:读入新一行的实时图数据到数据已经无效的内部RAM缓冲块,同时该新一行实时图数据读入到用于计算实时图灰度值总和和实时图灰度值平方总和的实时图数据缓冲RAM中覆盖已经无效的数据,同时计算当前行第1列的实时图灰度值总和、实时图灰度值平方总和值;步骤4:采用上述步骤2、步骤3相同的方式,依次计算出后续各行归一化相关系数;所述模板匹配高速并行方法的装置中,高速相关运算器(10)的归一化相关系数计算模块(36)包括模板图灰度值求和模块(2)、模板图灰度值平方求和模块(1)、实时图灰度值求和模块(4)、实时图灰度值平方求和模块(5)和实时图模板图灰度值乘积求和模块(3)、后续计算模块(6);模板图灰度值求和模块(2)由一个累加器(14)组成,模板图灰度值平方求和模块(1)由一个平方运算模块(12)和一个累加器(13)相连而成;实时图灰度值求和模块(4)由与实时图灰度值平方求和模块(5)共用的实时图数据缓冲RAM(21)、第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)的完成标志,在确保完成以后从结果存储器读取归一化相关系数计算结果进行后续处理工作;所述方法进行下述变量定义: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)=[M·N·ABcc(u,v)-Acc(u,v)Bcc]{M·N·A2cc(u,v)-(Acc(u,v))2}1/2{M·N·B2cc-(Bcc)2}1/2;]]>其中M,N分别表示模板的行和列数;步骤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中覆盖已经无效的数据;步骤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)中读取数据;所述模板的匹配方法用的是归一化相关系数,所用的归一化相关系数公式如下: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)处实时图与模板图重叠部分的灰度平均值。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310208097.0/,转载请声明来源钻瓜专利网。
- 上一篇:2-甲氧基-吡啶-4-基衍生物
- 下一篇:仲氨基硅烷