CN101576961B - 高速的图像匹配方法 - Google Patents

高速的图像匹配方法 Download PDF

Info

Publication number
CN101576961B
CN101576961B CN2009100692726A CN200910069272A CN101576961B CN 101576961 B CN101576961 B CN 101576961B CN 2009100692726 A CN2009100692726 A CN 2009100692726A CN 200910069272 A CN200910069272 A CN 200910069272A CN 101576961 B CN101576961 B CN 101576961B
Authority
CN
China
Prior art keywords
image
module
data
matched
template image
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.)
Expired - Fee Related
Application number
CN2009100692726A
Other languages
English (en)
Other versions
CN101576961A (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.)
Tianjin University
Original Assignee
Tianjin University
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 Tianjin University filed Critical Tianjin University
Priority to CN2009100692726A priority Critical patent/CN101576961B/zh
Publication of CN101576961A publication Critical patent/CN101576961A/zh
Application granted granted Critical
Publication of CN101576961B publication Critical patent/CN101576961B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Analysis (AREA)

Abstract

一种高速的图像匹配方法及装置,方法步骤是:将模板图像和待匹配图像的灰度值按特定顺序存到图像存储模块的相应块RAM中;计算模板图像的灰度值的总和
Figure D2009100692726A00011
计算模板图像的灰度值的总平方和
Figure D2009100692726A00012
计算模板图像与待匹配图像相关面第一行对应的各总乘积和
Figure D2009100692726A00013
待匹配图像中与模板图像对应区域总和
Figure D2009100692726A00014
和总平方和同时计算得到相关面第一行的各相关系数;计算相关面第2行至第N-n+1行的各相关系数。装置由图像存储模块、乘累加模块、数组模块、累加模块、方程模块、外部存储模块和DSP依次连接,且各模块间的信号传输均受控于控制模块。本发明快速完成了待匹配图像各点的有关相关系数值的计算,提高了图像匹配的数据吞吐量,减少图像匹配时间,实现实时图像匹配。

Description

高速的图像匹配方法
技术领域
本发明涉及一种图像匹配方法,特别是涉及一种能够快速计算出相关系数的高精度、高实时性、大数据吞吐量的高速的图像匹配方法。
背景技术
在图像增强、图像恢复或图像分析中,经常涉及多幅图像对准的预处理问题,这就是图像处理中的图像匹配。
当两幅图像极为相似时,称之为匹配。一般意义来说,以一幅图像(m*n,称之为模板图像)与另一幅图像(M*N,称之为待匹配图像)的各个子域上的图像比较相似性,当算得的相似性达到某一程度时,便认为该子域的图像与模板匹配,即找到最匹配点、完成图像匹配。图像匹配的方法包括基于特征点的匹配方法和基于像素灰度的匹配方法等。目前利用图像中各像素的灰度信息进行图像匹配是工业领域中经常用的,也是目前研究的热点之一,有多种方法,如:互相关法,傅里叶域互相关法,灰度比的方差最小化法等。
其中,互相关法是一种最基本的图像匹配方法,并且这种技术通常不受图像的噪声和照明效果的影响,因而应用很广泛。该方法是在得到模板图像和待匹配图像灰度信息后,将模板图像在待匹配图像上按照一定顺序进行遍历,计算模板图像和待匹配图像中各点对应部分的归一化的互相关系数值。而在待匹配图像上所遍历的点的范围称之为相关面,相关面的大小是(M-m+1)*(N-n+1)。遍历完相关面后,计算得到的互相关系数最大值所在点即是模板在待匹配图像中的最佳匹配点。
常见的互相关系数定义为: corr i = Σ i = 1 m Σ j = 1 n ( y i + u , j + v - y ‾ ) ( x i , j - x ‾ ) Σ i = 1 m Σ j = 1 n ( y i + u , j + v - y ‾ ) 2 Σ i = 1 m Σ j = 1 n ( x i , j - x ‾ ) 2
其中,xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;
Figure GSB00000537961600012
表示整个模板图像的灰度平均值,
Figure GSB00000537961600013
表示待匹配图像中与模板图像对应区域的灰度平均值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。
从公式可以看出,基于灰度信息的互相关法思路很简单,易于理解,但是每个相关点处都要计算大量的数据才能计算出互相关系数,并且随着图像的增大,运算将会非常的耗时,因而目前工业领域中互相关法虽然常用,但是用于实时图像匹配的难度很高。因此,如何提高互相关法匹配图像的速度、减少匹配时间、实现图像的实时匹配是急需解决的问题。
当前,运算速度极快、可并行处理数据的可编程逻辑器件发展迅猛,采用硬件描述语言和逻辑综合为基础的自顶而下的电路设计方法,使开发成本低,周期短,可靠性高,性能升级方便,因而越来越多的人将可编程逻辑器件用于各种数据吞吐量较大的信号与信息处理系统。
发明内容
本发明所要解决的技术问题是,提供一种能够达到快速的计算出相关系数,并且计算精度高、实时性强、数据吞吐量大的高速的图像匹配方法。
本发明所采用的技术方案是:一种高速的图像匹配方法,方法包括有如下步骤:
(1)将模板图像和待匹配图像的灰度值按特定顺序存到图像存储模块的相应块RAM中;
(2)计算模板图像的灰度值的总和
Figure GSB00000537961600021
(3)计算模板图像的灰度值的总平方和
Figure GSB00000537961600022
(4)计算模板图像与待匹配图像相关面第一行对应的各总乘积和
Figure GSB00000537961600023
待匹配图像中与模板图像对应区域总和
Figure GSB00000537961600024
和总平方和
Figure GSB00000537961600025
同时计算得到相关面第一行的各相关系数;
(5)计算相关面第2行至第N-n+1行的各相关系数,
即在相关面第一行计算后,模板图像在待匹配图像中下移一行,然后重复步骤4的运算,依次得到相关面每行的相关系数;而整个相关面中相关系数最大值对应的点即最佳匹配点;
在上述步骤2~4中:xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。
所述的图像匹配方法是采用互相关法,所用的相关系数公式如下:
corr i = Σ i = 1 m Σ j = 1 n ( y i + u , j + v - y ‾ ) ( x i , j - x ‾ ) Σ i = 1 m Σ j = 1 n ( y i + u , j + v - y ‾ ) 2 Σ i = 1 m Σ j = 1 n ( x i , j - x ‾ ) 2
= mn Σ i = 1 m Σ j = 1 n y i + u , j + v * x i , j - Σ i = 1 m Σ j = 1 n y i + u , j + v * Σ i = 1 m Σ j = 1 n x i , j [ mn Σ i = 1 m Σ j = 1 n y i + u , j + v 2 - ( Σ i = 1 m Σ j = 1 n y i + u , j + v ) 2 ] * [ mn Σ i = 1 m Σ j = 1 n x i , j 2 - ( Σ i = 1 m Σ j = 1 n x i , j ) 2 ]
其中,xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;
Figure GSB00000537961600032
表示整个模板图像的灰度平均值,表示待匹配图像中与模板图像对应区域的灰度平均值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。
步骤2所述的计算模板图像(m*n)的灰度值的总和
Figure GSB00000537961600034
是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端均连接常数1,另一端连接存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的总和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总和之后,控制模块会通过取数控制将该数据送入到方程模块中。
步骤3所述的计算模板图像(m*n)的灰度值的总平方和
Figure GSB00000537961600036
是控制模块通过连接切换控制,将乘累加模块中各个乘法器的两端均连接到存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的平方和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总平方和之后,控制模块会通过取数控制将该数据送入到方程模块中。
步骤4所述的计算模板图像(m*n)与待匹配图像(M*N)总乘积和
Figure GSB00000537961600038
是由控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接到存储模板图像块RAM的输出端,另一端对应连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像和待匹配图像的各列对应数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像和待匹配图像的每列灰度值的对应乘积和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中;待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像(m*n)与待匹配图像(M*N)总乘积和
Figure GSB00000537961600041
之后,控制模块会通过取数控制将该数据送入到方程模块中。
步骤4所述的计算待匹配图像与模板图像对应区域总和
Figure GSB00000537961600042
是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接常数1,另一端连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的和,共m个数据;这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像中与模板对应区域的总和
Figure GSB00000537961600043
之后,控制模块会通过取数控制将该数据送入到方程模块中;
步骤4所述的计算待匹配图像与模板对应区域总平方和是控制模块通过连接切换控制,将乘累加模块中各个乘法器的输入端均连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的平方和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像与模板对应区域的总平方和
Figure GSB00000537961600045
之后,控制模块会通过取数控制将该数据送入到方程模块中。
步骤4所述的计算模板图像(m*n)与待匹配图像(M*N)相关面第一行,是模板图像第1到n行与待匹配图像第1到n行的对应计算,第一次是模板图像第1到m列与待匹配图像第1到m列进行计算,在计算
Figure GSB00000537961600046
后,模板图像在待匹配图像中右移一列,并计算该处的以此重复,直至将相关面的第一行数据计算完成;
步骤4所述的计算相关系数,是在每次计算完一组的三个数据
Figure GSB000005379616000410
Figure GSB000005379616000411
Figure GSB000005379616000412
后,和前面得到的
Figure GSB000005379616000414
一起在方程模块中进行运算。方程模块计算得到的两个临时定点数据存入外部存储模块,之后DSP从外部存储模块中读取这两个数据,进行开根号和除法运算,得到最终的相关系数。
本发明的高速的图像匹配方法,利用互相关系数计算匹配点的原理,同时利用可编程逻辑器件的高速并行运算的特性,快速完成了待匹配图像各点的有关相关系数值的计算,提高了图像匹配的数据吞吐量,有效减少了图像匹配的时间,实现实时的图像匹配。
附图说明
图1是本发明方法的流程图;
图2是本发明装置的结构示意图;
图3是图2中乘累加模块框图;
图4是图2中累加模块框图;
图5是图2中的方程模块框图;
图6是该方法的耗时分析图;
图7是本发明装置的一实例结构示意图。
具体实施方式
下面结合附图给出具体实例,进一步说明本发明的高速的图像匹配方法是如何实现的。
本发明的高速图像匹配方法是采用互相关法,所用的互相关系数的基本公式如下:
corr i = Σ i = 1 m Σ j = 1 n ( y i + u , j + v - y ‾ ) ( x i , j - x ‾ ) Σ i = 1 m Σ j = 1 n ( y i + u , j + v - y ‾ ) 2 Σ i = 1 m Σ j = 1 n ( x i , j - x ‾ ) 2
= mn Σ i = 1 m Σ j = 1 n y i + u , j + v * x i , j - Σ i = 1 m Σ j = 1 n y i + u , j + v * Σ i = 1 m Σ j = 1 n x i , j [ mn Σ i = 1 m Σ j = 1 n y i + u , j + v 2 - ( Σ i = 1 m Σ j = 1 n y i + u , j + v ) 2 ] * [ mn Σ i = 1 m Σ j = 1 n x i , j 2 - ( Σ i = 1 m Σ j = 1 n x i , j ) 2 ]
= coe 1 coe 2 - - - ( 1 )
其中,xi,j表示模板图像的灰度值,yi+u,i+v表示待匹配图像的灰度值;
Figure GSB00000537961600054
表示整个模板图像的灰度平均值,
Figure GSB00000537961600055
表示待匹配图像中与模板图像对应区域的灰度平均值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。coe1和coe2为该公式定点部分的临时计算结果,存入外部存储模块,供后面的DSP计算相关系数使用。
如图1所示,本发明的高速的图像匹配方法,包括有如下步骤:
(1)将模板图像(m*n)和待匹配图像(M*N)的所有灰度值按设定顺序存到图像存储模块;
存储模板图像的灰度值,对应图1中的存入n行模板图像数据部分,是将每一行m列的灰度值存在图像存储模块的一个块RAM中,共存入n行,即使用n个块RAM;存储待匹配图像(M*N)的灰度值,对应图1中的存入n行待匹配图像数据部分,是将每一行M列的灰度值存在图像存储模块的一个块RAM中,同样共存入n行,即占用n个块RAM。在此需要说明的是,图像存储模块共包含有2n+1个块RAM,每个块RAM均有独立的写使能,但用于存储模板图像的块RAM和用于存储待匹配图像的块RAM均分别共用访问地址以便于读数操作。在这2n+1个块RAM中,有n个用于存储模板图像的灰度值,每个块RAM大小为m*8比特,可存储一行的模板图像数据。而另外的n+1个块RAM用于存储待匹配图像数据,其中的n个用于存储当前正在计算的n行待匹配图像数据,而剩下的一个块RAM用于在计算相关面上一行的同时,读入新一行的待匹配图像数据供计算相关面下一行使用。该方法中没有将全部的待匹配图像数据存入,而动态更新图像数据,是为了在保证最快速度运算的同时,最大限度得减少存储资源消耗。
(2)计算模板图像(m*n)的灰度值的总和
Figure GSB00000537961600061
计算模板图像(m*n)的灰度值的总和
Figure GSB00000537961600062
对应图1中的计算
Figure GSB00000537961600063
部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端均连接常数1,另一端连接存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的总和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块的用于存储
Figure GSB00000537961600064
Figure GSB00000537961600065
的相应区域中。待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总和
Figure GSB00000537961600066
之后,控制模块会通过取数控制将该数据送入到方程模块中。在此需要说明的是,数组模块是由3个m*32位的数组构成,分别用于存储在计算
Figure GSB00000537961600067
Figure GSB00000537961600068
过程中得到的每列的值,而对于
Figure GSB00000537961600069
为了减少资源开销,共用了存储
Figure GSB000005379616000612
的数组。
(3)计算模板图像(m*n)的灰度值的总平方和
Figure GSB000005379616000613
计算模板图像(m*n)的灰度值的总平方和
Figure GSB00000537961600071
对应图1中的计算
Figure GSB00000537961600072
部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的两端均连接到存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的平方和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块的用于存储
Figure GSB00000537961600073
Figure GSB00000537961600074
的相应区域中。待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总平方和之后,控制模块会通过取数控制将该数据送入到方程模块中。
(4)计算模板图像(m*n)与待匹配图像(M*N)相关面第一行对应的各总乘积和
Figure GSB00000537961600076
待匹配图像中与模板图像对应区域总和
Figure GSB00000537961600077
和总平方和
Figure GSB00000537961600078
同时计算得到相关面第一行的各相关系数;
计算模板图像(m*n)与待匹配图像(M*N)总乘积和
Figure GSB00000537961600079
对应图1中的计算部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接到存储模板图像块RAM的输出端,另一端对应连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像和待匹配图像的各列对应数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像和待匹配图像的每列灰度值的对应乘积和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块的用于存储的相应区域中。待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像(m*n)与待匹配图像(M*N)总乘积和
Figure GSB000005379616000712
之后,控制模块会通过取数控制将该数据送入到方程模块中。在此需要说明的是,在相关面的每一行首次计算
Figure GSB000005379616000713
时,控制模块会通过数据写入控制将下一行待计算的待匹配图像数据存入到图像存储模块的相应块RAM中,该操作在计算下一行数据前完成。
计算待匹配图像与模板对应区域总和
Figure GSB000005379616000714
对应图1中的计算
Figure GSB000005379616000715
部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接常数1,另一端连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块的用于存储
Figure GSB00000537961600082
的相应区域中。待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像中与模板对应区域的总和
Figure GSB00000537961600083
之后,控制模块会通过取数控制将该数据送入到方程模块中。
计算待匹配图像与模板对应区域总平方和
Figure GSB00000537961600084
对应图1中的计算
Figure GSB00000537961600085
部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的输入端均连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的平方和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块用于存储
Figure GSB00000537961600086
Figure GSB00000537961600087
的相应区域中。待m 个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像与模板对应区域的总平方和
Figure GSB00000537961600088
之后,控制模块会通过取数控制将该数据送入到方程模块中。
在计算模板图像(m*n)与待匹配图像(M*N)相关面第一行时,是模板图像第1到n行与待匹配图像第1到n行的对应计算,其中第一次是模板图像第1到m列与待匹配图像第1到m列进行计算,在计算
Figure GSB00000537961600089
Figure GSB000005379616000810
后,模板图像在待匹配图像中右移一列,即模板图像第1到m列与待匹配图像第2到m+1列进行计算,得到该处的
Figure GSB000005379616000811
Figure GSB000005379616000812
之后继续右移,并以此重复,直至将相关面的第一行数据计算完成。在每次计算完一组的三个数据
Figure GSB000005379616000813
Figure GSB000005379616000814
Figure GSB000005379616000815
后,由于前面已经得到了
Figure GSB000005379616000816
因此这5个数据可以在方程模块中进行运算,使用互相关系数的公式(1)计算,得到两个临时定点数据coe1和coe2。控制模块通过输出控制将这两个定点数据写入到外部存储模块的指定区域。之后DSP对应取出这两个数据,按照互相关系数的公式(1)进行开根号和除法运算,得到浮点的相关系数。在此需要说明的是:对于相关面行内的每次计算,第一次计算
Figure GSB00000537961600091
Figure GSB00000537961600092
与后面的计算不同,这是因为当模板图像在待匹配图像中右移时,每次右移都只有1列的数据发生变化,因此在数组模块中对于不变的数据进行了重复利用。例如对于相关面第一行的计算,在
Figure GSB00000537961600093
第一次计算后,在数组模块中得到的是待匹配图像第1到n行第1到m列的每列的灰度值的和,而当模板图像右移一列后,需要计算的是待匹配图像第1到n行第2到m+1列的每列的灰度值的和,因为在数组模块中已经计算出了第2到m列的每列灰度值的和,因此只需要计算第m+1列的灰度值的和并取代第一列即可。对于
Figure GSB00000537961600094
的计算,方法相同。这样既降低了资源消耗,又减少了运算量,从而提高了该方法的性能。
(5)计算相关面第2行至第N-n+1行的各相关系数。
计算待匹配图像相关面第2行至第N-n+1行相关系数,是在相关面第一行计算后,模板图像在待匹配图像中下移一行,然后重复步骤四的运算,依次得到相关面每行的相关系数。而整个相关面中相关系数最大值对应的点即最佳匹配点。在此需要说明的是,在计算相关面第一行时,是模板图像第1到n行与待匹配图像第1到n行的对应运算,在计算的同时控制模块会通过数据写入控制将待匹配图像的第n+1行数据写入到图像存储模块的用于存储待匹配图像的第n+1个块RAM中。当待匹配图像第1到n行计算完后,会计算2到n+1行,而此时控制模块会通过数据写入控制将待匹配图像的第n+2行数据写入到图像存储模块的用于存储待匹配图像的第1个块RAM中,覆盖原来的数据。同样,当模板图像再下移一行时会读入第n+3行数据覆盖第2个块RAM,依次类推,在进行数据运算的同时将新一行的数据存入到块RAM中,一直到计算完相关面第N-n+1行的相关系数。
图2所示为发明的使用该高速图像匹配方法的装置,高速图像匹配方法的装置,由高速运算器部分、外部存储模块6和DSP部分8构成,所述的高速运算器部分包括图像存储模块1、乘累加模块2、数组模块3、累加模块4、方程模块5和控制模块7。其中,所述的图像存储模块1、乘累加模块2、数组模块3、累加模块4和方程模块5依次连接,且各模块间的信号传输均受控于控制模块7,所述的图像存储模块1的输入端接收原始图像数据,所述的方程模块5的输出连接外部存储模块6,而外部存储模块6的输出连接到DSP部分8,所述的DSP部分8通过寄存器来命令控制模块进行相应的操作。其中:
图像存储模块1是由2n+1个块RAM构成的。在这2n+1个块RAM中,有n个用于存储模板图像的灰度值,每个块RAM大小为m*8比特,可存储一行的模板图像数据,这n个块RAM均有独立的写使能,但共用访问地址以便于读数操作。而另外的n+1个块RAM用于存储待匹配图像数据,其中的n个用于存储当前正在计算的n行待匹配图像数据,而剩下的一个块RAM用于在计算相关面上一行的同时,读入新一行的待匹配图像数据供计算相关面下一行使用。同样,这n+1个块RAM均有独立的写使能,但共用访问地址以便于读数操作。
乘累加模块2用于计算多个数据的对应乘积和,其结构如图3所示。
数组模块3是3个大小为m*32位的数组,分别用于存储在计算
Figure GSB00000537961600101
Figure GSB00000537961600102
Figure GSB00000537961600103
过程中得到的每列的值,而对于
Figure GSB00000537961600104
为了减少资源开销,共用了存储
Figure GSB00000537961600106
Figure GSB00000537961600107
的数组。
累加模块4,用于将输入的所有数据进行累加,其结构如图4所示。
方程模块5,用于对输入的5个数据进行计算,从而得到两个临时定点数据coe1和coe2,其结构如图5所示,其中m*n由控制模块在取数控制时提供。
控制模块7,通过读寄存器来得到DSP的命令信息,控制整个系统的运行。同时通过写寄存器来实时提供系统的运行状态。控制模块对图像存储模块的输入进行数据写入控制,对图像存储模块进行数据读取控制,对图像存储模块和乘累加模块进行连接切换控制,对乘累加模块和数组模块进行数据缓存控制,对数组模块和累加模块进行数据送入控制,对累加模块和方程模块进行取数控制,同时对方程模块的输出进行输出控制。
外部存储模块6,用于存储方程模块计算得到的临时定点数据coe1和coe2。
DSP部分8,用于从外部存储模块中取出coe1和coe2进行计算,得到相关系数。由于DSP的高速高精度运算特性,可以弥补可编程逻辑器件不善于运算除法和开方的缺点,快速得到所需要的相关系数,进一步减少图像匹配的时间,同时保证了计算的精度。
下面是算法的具体实施实例:
本发明的实施实例是以可编程逻辑器件Altera的EP2S130F780C5芯片为平台,在大小为512*512的图像上匹配一个80*80的图像,每个图像的灰度信息用8位数据表示。
据图像匹配的定义,设上述80*80为模板图像,用x表示;512*512的图像为待匹配图像,用y表示,相关面大小为433*433。
依据本发明,实现此次实例匹配的实施方式如下。
1)依据两个图像的具体大小,搭建图像匹配的系统。
高速运算部分在FPGA芯片上搭建,完成coe1和coe2值的计算。图像存储模块通过在FPGA上例化双口块RAM得到。乘累加模块通过例化80个乘法器和81个加法器搭建,累加模块通过例化81个加法器搭建,数组模块需要开辟3个大小为80的存储数组。控制模块控制整个系统的运行,其具体实施框图如图7所示。对于连接切换控制,设定其切换信号的控制功能为:
  切换信号   控制乘累加模块的输入端
  001   x*1
  002   x*x
  003   x*y
  004   1*y
  005   y*y
DSP部分主要是完成相关系数的计算,即
Figure GSB00000537961600111
的运算。将FPGA输出的coe1和coe2值存入到外部的flash中,DSP从flash中取出数据快速计算相关系数,进一步减少图像匹配的时间。
2)依据本发明的算法编写VHDL代码
第一步:存储模板图像80*80以及待匹配图像512*512。
对于模板图像,开辟80个块RAM,一行信息存储在一个块RAM中,每个块RAM的大小为80*8(位)。对于待匹配图像,开辟81个块RAM,每一行信息存储在一个块RAM中,这样,每个块RAM的大小为512*8(位)。刚开始时,存储的是第1至81行的数据,但是在第2行相关点计算时,只用第2行到第81行的数据,因而可同时读进第82行数据取代第1(82-81)行。只要保证计算时间大于读进数据的时间即可。这样,依次的,第k(81<k<513)行数据会取代第k-81行数据,所有的待匹配图像的数据都可在计算相关点时访问到。
第二步:计算模板图像的总和
切换信号此时设为001,访问模板图像的80个块RAM,按列访问,乘累加模块计算出每一列的80个x*1的和值,暂时存入数组模块,累加模块从数组模块中取出这80个数相加,即得到模板图像的总和
第三步:计算模板图像的总平方和
切换信号此时设为002,再次按列访问这80个块RAM,乘累加模块计算出每列80个x*x的值,暂时存入数组模块,累加模块从数组模块中取出这80个数相加,即得到模板图像的总平方和
Figure GSB00000537961600115
第四步:计算模板图像与待匹配图像相关面第1行的相关系数。
先读取待匹配图像的第1到80个块RAM值,即第1行到第80行值。令切换信号为003,乘累加模块计算出每一列的对应乘积和,存储于数组模块的对应位置,累加模块计算80列的总和,得到第1个相关点的令切换信号为004和005,同样的计算方法得到相关面第1个点对应的
Figure GSB00000537961600122
Figure GSB00000537961600123
Figure GSB00000537961600124
Figure GSB00000537961600126
三个值全部到位后,计算相关面第1个点的coe1值和coe2值,存入外部的flash中。此后,DSP部分开始启动,根据之前设定好的公式从flash中取数,计算出相关面第1行的第1个点的相关系数。
模板图像在待匹配图像中右移一列,即读取第2列至第81列的数据,依次完成上述的计算,得到相关面的第1行第2相关点的
Figure GSB00000537961600128
并存入数组模块。因为计算
Figure GSB00000537961600129
Figure GSB000005379616001210
时,在数组模块中第2列到第80列的结果是不变的,因此只需要计算第81列,写入数组中原来第1列的位置。
以下计算步骤不变。再依次访问第L列(2<L<434)至L+79列,同上述计算第2列时一样只需计算改变的列值,即可依次得到第1行的各相关系数。
第五步:计算待匹配图像相关面第2行至第433行相关系数。
同样,切换信号依次在003、004、005之间切换。访问待匹配图像块RAM第2行至第81行共80行数据。按照算法第四步的过程,依次计算
Figure GSB000005379616001211
Figure GSB000005379616001212
即可得到第2行的相关系数。在计算第2行的过程中,在切换模块的数据写入控制下,从系统外读入待匹配图像下一行,即第82行的数据取代第1行,然后等待相关面第2行计算完毕后,取出待匹配图像第3行至第81行及新读进的1行数据,按照第四步,即可得到相关面第3行的各相关系数。按照这样的过程依次读进新一行数据,依次计算直至相关面的433行全部算完。
3)匹配运算的耗时理论分析
最终的实现结果表明,该装置内部可以运行的最高时钟频率为79MHz。因此75MHz下,可以稳定运行。图6所示为对匹配所需的时间理论分析。需要说明的是,此处不包括和外部的数据交互时间及DSP运算时间。
当m=n=80,M=N=512,时钟频率为75MHz时,图像匹配所占用的时间为:
(2n+(M-m+1)*(3n+(N-n)*(n+2)))/75000000
=(2*80+(512-80+1)*(3*80+(51280)*(80+2)))/75000000
=206ms
同时,使用C语言按此算法编写实现图像匹配运算的程序,由于C程序是顺序执行,在512*512的图像上匹配出80*80的图像需要约13s的时间。
对两个数据的对比可知,在可编程逻辑器件上运用并行计算的高速图像匹配系统大大节约了时间,提高了匹配速度,可以达到实时匹配的要求。
4)实例占用资源分析
最终占用的资源情况如下:
Figure GSB00000537961600131
可见,实际程序所占用的资源不多,因而本发明的方案是完全可以实现的。

Claims (7)

1.一种高速的图像匹配方法,其特征在于,包括有如下步骤:
(1)将模板图像(m*n)和待匹配图像(M*N)的灰度值按特定顺序存到图像存储模块的相应块RAM中;
(2)计算模板图像(m*n)的灰度值的总和
Figure FSB00000537961500011
(3)计算模板图像(m*n)的灰度值的总平方和
Figure FSB00000537961500012
(4)计算模板图像(m*n)与待匹配图像(M*N)相关面第一行对应的各总乘积和
Figure FSB00000537961500013
待匹配图像中与模板图像对应区域总和
Figure FSB00000537961500014
和总平方和
Figure FSB00000537961500015
同时计算得到相关面第一行的各相关系数;
(5)计算相关面第2行至第N-n+1行的各相关系数,
即在相关面第一行计算后,模板图像在待匹配图像中下移一行,然后重复步骤4的运算,依次得到相关面每行的相关系数;而整个相关面中相关系数最大值对应的点即最佳匹配点;
在上述步骤2~4中:xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。
2.根据权利要求1所述的高速的图像匹配方法,其特征在于,所述的图像匹配方法是采用互相关法,所用的相关系数公式如下:
corr i = Σ i = 1 m Σ j = 1 n ( y i + u , j + v - y ‾ ) ( x i , j - x ‾ ) Σ i = 1 m Σ j = 1 n ( y i + u , j + v - y ‾ ) 2 Σ i = 1 m Σ j = 1 n ( x i , j - x ‾ ) 2
= mn Σ i = 1 m Σ j = 1 n y i + u , j + v * x i , j - Σ i = 1 m Σ j = 1 n y i + u , j + v * Σ i = 1 m Σ j = 1 n x i , j [ mn Σ i = 1 m Σ j = 1 n y i + u , j + v 2 - ( Σ i = 1 m Σ j = 1 n y i + u , j + v ) 2 ] * [ mn Σ i = 1 m Σ j = 1 n x i , j 2 - ( Σ i = 1 m Σ j = 1 n x i , j ) 2 ]
其中,xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;
Figure FSB00000537961500018
表示整个模板图像的灰度平均值,
Figure FSB00000537961500019
表示待匹配图像中与模板图像对应区域的灰度平均值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。
3.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤2所述的计算模板图像(m*n)的灰度值的总和
Figure FSB000005379615000110
是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端均连接常数1,另一端连接存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的总和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总和
Figure FSB00000537961500021
之后,控制模块会通过取数控制将该数据送入到方程模块中。
4.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤3所述的计算模板图像(m*n)的灰度值的总平方和
Figure FSB00000537961500022
是控制模块通过连接切换控制,将乘累加模块中各个乘法器的两端均连接到存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的平方和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总平方和之后,控制模块会通过取数控制将该数据送入到方程模块中。
5.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤4所述的计算模板图像(m*n)与待匹配图像(M*N)总乘积和
Figure FSB00000537961500024
是由控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接到存储模板图像块RAM的输出端,另一端对应连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像和待匹配图像的各列对应数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像和待匹配图像的每列灰度值的对应乘积和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中;待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像(m*n)与待匹配图像(M*N)总乘积和
Figure FSB00000537961500025
之后,控制模块会通过取数控制将该数据送入到方程模块中。
6.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤4所述的计算待匹配图像与模板图像对应区域总和
Figure FSB00000537961500026
是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接常数1,另一端连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的和,共m个数据;这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像中与模板对应区域的总和
Figure FSB00000537961500031
之后,控制模块会通过取数控制将该数据送入到方程模块中;
步骤4所述的计算待匹配图像与模板对应区域总平方和
Figure FSB00000537961500032
是控制模块通过连接切换控制,将乘累加模块中各个乘法器的输入端均连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的平方和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块,而累加模块的输出结果为待匹配图像与模板对应区域的总平方和
Figure FSB00000537961500033
之后,控制模块会通过取数控制将该数据送入到方程模块中。
7.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤4所述的计算模板图像(m*n)与待匹配图像(M*N)相关面第一行,是模板图像第1到n行与待匹配图像第1到n行的对应计算,第一次是模板图像第1到m列与待匹配图像第1到m列进行计算,在计算
Figure FSB00000537961500034
Figure FSB00000537961500035
后,模板图像在待匹配图像中右移一列,并计算该处的
Figure FSB00000537961500036
Figure FSB00000537961500037
以此重复,直至将相关面的第一行数据计算完成;
步骤4所述的计算相关系数,是在每次计算完一组的三个数据
Figure FSB00000537961500038
Figure FSB00000537961500039
Figure FSB000005379615000310
后,和前面得到的
Figure FSB000005379615000311
Figure FSB000005379615000312
一起在方程模块中进行运算,方程模块计算得到的两个临时定点数据存入外部存储模块,之后DSP从外部存储模块中读取这两个数据,进行开根号和除法运算,得到最终的相关系数。
CN2009100692726A 2009-06-16 2009-06-16 高速的图像匹配方法 Expired - Fee Related CN101576961B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100692726A CN101576961B (zh) 2009-06-16 2009-06-16 高速的图像匹配方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100692726A CN101576961B (zh) 2009-06-16 2009-06-16 高速的图像匹配方法

Publications (2)

Publication Number Publication Date
CN101576961A CN101576961A (zh) 2009-11-11
CN101576961B true CN101576961B (zh) 2011-09-21

Family

ID=41271894

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100692726A Expired - Fee Related CN101576961B (zh) 2009-06-16 2009-06-16 高速的图像匹配方法

Country Status (1)

Country Link
CN (1) CN101576961B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521826B (zh) * 2011-11-22 2015-05-13 苏州科雷芯电子科技有限公司 图像配准装置及方法
CN102609937A (zh) * 2012-01-12 2012-07-25 中国人民解放军国防科学技术大学 一种面向硬件加速器的图像匹配方法
CN103310228B (zh) * 2013-05-28 2017-09-29 南京邮电大学 基于归一化相关系数的模板匹配高速并行实现方法和装置
CN104751180A (zh) * 2015-03-30 2015-07-01 宁波高新区宁源科技服务有限公司 一种进行云判决的装置
CN105426918B (zh) * 2015-11-23 2019-01-08 南京航空航天大学 归一化相关图像模板匹配高效实现方法
CN105894441A (zh) * 2015-12-29 2016-08-24 乐视云计算有限公司 一种图像匹配方法及装置
CN107609576A (zh) * 2017-08-23 2018-01-19 南京邮电大学 融合大模板图的模板匹配并行实现方法及装置
CN110118530B (zh) * 2019-04-22 2021-06-18 西京学院 一种大工件高精度光学视觉测量方法
CN110807483B (zh) * 2019-10-30 2022-08-16 易思维(杭州)科技有限公司 基于fpga的模板匹配实现装置及方法

Also Published As

Publication number Publication date
CN101576961A (zh) 2009-11-11

Similar Documents

Publication Publication Date Title
CN101576961B (zh) 高速的图像匹配方法
CN111459877B (zh) 基于FPGA加速的Winograd YOLOv2目标检测模型方法
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
CN111414994B (zh) 一种基于FPGA的Yolov3网络计算加速系统及其加速方法
CN106127302A (zh) 处理数据的电路、图像处理系统、处理数据的方法和装置
CN106940815A (zh) 一种可编程卷积神经网络协处理器ip核
CN100409258C (zh) 一种实时快速实现高斯模板卷积的装置
CN113051216B (zh) 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法
Fan et al. Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation
Torres-Huitzil et al. Real-time image processing with a compact FPGA-based systolic architecture
CN117751366A (zh) 神经网络加速器及神经网络加速器的数据处理方法
US20240220271A1 (en) Method and system for accelerating recurrent neural network based on cortex-m processor, and medium
CN113792621A (zh) 一种基于fpga的目标检测加速器设计方法
CN110414672B (zh) 卷积运算方法、装置及系统
Xiao et al. FPGA-based scalable and highly concurrent convolutional neural network acceleration
Shan et al. A CNN Accelerator on FPGA with a Flexible Structure
CN104579240A (zh) 一种基于fpga的可配置系数的滤波器、电子设备及滤波方法
CN114461978A (zh) 数据处理方法、装置、电子设备及可读存储介质
CN102970545A (zh) 一种基于二维离散小波变换算法的静态图像压缩方法
CN117035028A (zh) 一种基于fpga的卷积加速器高效计算方法
CN103533378A (zh) 基于fpga的三维整数dct变换系统及其变换方法
CN116227332A (zh) 一种transformer混合比特量化方法及系统
Chakrabarti et al. Architectures for wavelet transforms
CN113392963B (zh) 基于fpga的cnn硬件加速系统设计方法
Li et al. Fpga-based object detection acceleration architecture design

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110921

Termination date: 20120616