高速的图像匹配方法转让专利

申请号 : CN200910069272.6

文献号 : CN101576961B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张涛全浩军赵亮张雯于凤萍要强

申请人 : 天津大学

摘要 :

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

权利要求 :

1.一种高速的图像匹配方法,其特征在于,包括有如下步骤:

(1)将模板图像(m*n)和待匹配图像(M*N)的灰度值按特定顺序存到图像存储模块的相应块RAM中;

(2)计算模板图像(m*n)的灰度值的总和

(3)计算模板图像(m*n)的灰度值的总平方和

(4)计算模板图像(m*n)与待匹配图像(M*N)相关面第一行对应的各总乘积和待匹配图像中与模板图像对应区域总和 和总平方和同时计算得到相关面第一行的各相关系数;

(5)计算相关面第2行至第N-n+1行的各相关系数,

即在相关面第一行计算后,模板图像在待匹配图像中下移一行,然后重复步骤4的运算,依次得到相关面每行的相关系数;而整个相关面中相关系数最大值对应的点即最佳匹配点;

在上述步骤2~4中:xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;

i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。

2.根据权利要求1所述的高速的图像匹配方法,其特征在于,所述的图像匹配方法是采用互相关法,所用的相关系数公式如下:其中,xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;表示整个模板图像的灰度平均值,表示待匹配图像中与模板图像对应区域的灰度平均值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。

3.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤2所述的计算模板图像(m*n)的灰度值的总和 是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端均连接常数1,另一端连接存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的总和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总和 之后,控制模块会通过取数控制将该数据送入到方程模块中。

4.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤3所述的计算模板图像(m*n)的灰度值的总平方和 是控制模块通过连接切换控制,将乘累加模块中各个乘法器的两端均连接到存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的平方和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总平方和 之后,控制模块会通过取数控制将该数据送入到方程模块中。

5.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤4所述的计算模板图像(m*n)与待匹配图像(M*N)总乘积和 是由控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接到存储模板图像块RAM的输出端,另一端对应连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像和待匹配图像的各列对应数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像和待匹配图像的每列灰度值的对应乘积和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中;待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像(m*n)与待匹配图像(M*N)总乘积和 之后,控制模块会通过取数控制将该数据送入到方程模块中。

6.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤4所述的计算待匹配图像与模板图像对应区域总和 是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接常数1,另一端连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的和,共m个数据;

这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像中与模板对应区域的总和 之后,控制模块会通过取数控制将该数据送入到方程模块中;

步骤4所述的计算待匹配图像与模板对应区域总平方和 是控制模块通过

连接切换控制,将乘累加模块中各个乘法器的输入端均连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的平方和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块,而累加模块的输出结果为待匹配图像与模板对应区域的总平方和 之后,控制模块会通过取数控制将该数据送入到方程模块中。

7.根据权利要求1所述的高速的图像匹配方法,其特征在于,步骤4所述的计算模板图像(m*n)与待匹配图像(M*N)相关面第一行,是模板图像第1到n行与待匹配图像第1到n行的对应计算,第一次是模板图像第1到m列与待匹配图像第1到m列进行计算,在计算和 后,模板图像在待匹配图像中右移一列,并计算该处的 和 以此重复,直至将相关面的第一行数据

计算完成;

步骤4所述的计算相关系数,是在每次计算完一组的三个数据

和 后,和前面得到的 和 一起在方程模块中

进行运算,方程模块计算得到的两个临时定点数据存入外部存储模块,之后DSP从外部存储模块中读取这两个数据,进行开根号和除法运算,得到最终的相关系数。

说明书 :

高速的图像匹配方法

技术领域

[0001] 本发明涉及一种图像匹配方法,特别是涉及一种能够快速计算出相关系数的高精度、高实时性、大数据吞吐量的高速的图像匹配方法。

背景技术

[0002] 在图像增强、图像恢复或图像分析中,经常涉及多幅图像对准的预处理问题,这就是图像处理中的图像匹配。
[0003] 当两幅图像极为相似时,称之为匹配。一般意义来说,以一幅图像(m*n,称之为模板图像)与另一幅图像(M*N,称之为待匹配图像)的各个子域上的图像比较相似性,当算得的相似性达到某一程度时,便认为该子域的图像与模板匹配,即找到最匹配点、完成图像匹配。图像匹配的方法包括基于特征点的匹配方法和基于像素灰度的匹配方法等。目前利用图像中各像素的灰度信息进行图像匹配是工业领域中经常用的,也是目前研究的热点之一,有多种方法,如:互相关法,傅里叶域互相关法,灰度比的方差最小化法等。
[0004] 其中,互相关法是一种最基本的图像匹配方法,并且这种技术通常不受图像的噪声和照明效果的影响,因而应用很广泛。该方法是在得到模板图像和待匹配图像灰度信息后,将模板图像在待匹配图像上按照一定顺序进行遍历,计算模板图像和待匹配图像中各点对应部分的归一化的互相关系数值。而在待匹配图像上所遍历的点的范围称之为相关面,相关面的大小是(M-m+1)*(N-n+1)。遍历完相关面后,计算得到的互相关系数最大值所在点即是模板在待匹配图像中的最佳匹配点。
[0005] 常见的互相关系数定义为:
[0006] 其中,xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;表示整个模板图像的灰度平均值,表示待匹配图像中与模板图像对应区域的灰度平均值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。
[0007] 从公式可以看出,基于灰度信息的互相关法思路很简单,易于理解,但是每个相关点处都要计算大量的数据才能计算出互相关系数,并且随着图像的增大,运算将会非常的耗时,因而目前工业领域中互相关法虽然常用,但是用于实时图像匹配的难度很高。因此,如何提高互相关法匹配图像的速度、减少匹配时间、实现图像的实时匹配是急需解决的问题。
[0008] 当前,运算速度极快、可并行处理数据的可编程逻辑器件发展迅猛,采用硬件描述语言和逻辑综合为基础的自顶而下的电路设计方法,使开发成本低,周期短,可靠性高,性能升级方便,因而越来越多的人将可编程逻辑器件用于各种数据吞吐量较大的信号与信息处理系统。

发明内容

[0009] 本发明所要解决的技术问题是,提供一种能够达到快速的计算出相关系数,并且计算精度高、实时性强、数据吞吐量大的高速的图像匹配方法。
[0010] 本发明所采用的技术方案是:一种高速的图像匹配方法,方法包括有如下步骤:
[0011] (1)将模板图像和待匹配图像的灰度值按特定顺序存到图像存储模块的相应块RAM中;
[0012] (2)计算模板图像的灰度值的总和
[0013] (3)计算模板图像的灰度值的总平方和
[0014] (4)计算模板图像与待匹配图像相关面第一行对应的各总乘积和待匹配图像中与模板图像对应区域总和 和总平方和
同时计算得到相关面第一行的各相关系数;
[0015] (5)计算相关面第2行至第N-n+1行的各相关系数,
[0016] 即在相关面第一行计算后,模板图像在待匹配图像中下移一行,然后重复步骤4的运算,依次得到相关面每行的相关系数;而整个相关面中相关系数最大值对应的点即最佳匹配点;
[0017] 在上述步骤2~4中:xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。
[0018] 所述的图像匹配方法是采用互相关法,所用的相关系数公式如下:
[0019]
[0020]
[0021] 其中,xi,j表示模板图像的灰度值,yi+u,j+v表示待匹配图像的灰度值;表示整个模板图像的灰度平均值,表示待匹配图像中与模板图像对应区域的灰度平均值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。
[0022] 步骤2所述的计算模板图像(m*n)的灰度值的总和 是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端均连接常数1,另一端连接存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的总和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总和 之后,控制模块会通过取数控制将该数据送入到方程模块中。
[0023] 步骤3所述的计算模板图像(m*n)的灰度值的总平方和 是控制模块通过连接切换控制,将乘累加模块中各个乘法器的两端均连接到存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的平方和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总平方和 之后,控制模块会通过取数控制将该数据送入到方程模块中。
[0024] 步骤4所述的计算模板图像(m*n)与待匹配图像(M*N)总乘积和是由控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接到存储模板图像块RAM的输出端,另一端对应连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像和待匹配图像的各列对应数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像和待匹配图像的每列灰度值的对应乘积和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中;待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像(m*n)与待匹配图像(M*N)总乘积和 之后,控制模块会通过取数控制将该数据送入到方程模块中。
[0025] 步骤4所述的计算待匹配图像与模板图像对应区域总和 是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接常数1,另一端连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的和,共m个数据;这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像中与模板对应区域的总和 之后,控制模块会通过取数控制将该数据送入到方程模块中;
[0026] 步骤4所述的计算待匹配图像与模板对应区域总平方和 是控制模块通过连接切换控制,将乘累加模块中各个乘法器的输入端均连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的平方和,共m个数据,这些数据在控制模块的数据缓存控制下,依次存入到数组模块中,待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像与模板对应区域的总平方和 之后,控制模块会通过取数控制将该数据送入到方程模块中。
[0027] 步骤4所述的计算模板图像(m*n)与待匹配图像(M*N)相关面第一行,是模板图像第1到n行与待匹配图像第1到n行的对应计算,第一次是模板图像第1到m列与待匹配图像第1到m列进行计算,在计算 和 后,模板图像在待匹配图像中右移一列,并计算该处的 和
以此重复,直至将相关面的第一行数据计算完成;
[0028] 步骤4所述的计算相关系数,是在每次计算完一组的三个数据和 后,和前面得到的 和 一起在方程模块
中进行运算。方程模块计算得到的两个临时定点数据存入外部存储模块,之后DSP从外部存储模块中读取这两个数据,进行开根号和除法运算,得到最终的相关系数。
[0029] 本发明的高速的图像匹配方法,利用互相关系数计算匹配点的原理,同时利用可编程逻辑器件的高速并行运算的特性,快速完成了待匹配图像各点的有关相关系数值的计算,提高了图像匹配的数据吞吐量,有效减少了图像匹配的时间,实现实时的图像匹配。

附图说明

[0030] 图1是本发明方法的流程图;
[0031] 图2是本发明装置的结构示意图;
[0032] 图3是图2中乘累加模块框图;
[0033] 图4是图2中累加模块框图;
[0034] 图5是图2中的方程模块框图;
[0035] 图6是该方法的耗时分析图;
[0036] 图7是本发明装置的一实例结构示意图。

具体实施方式

[0037] 下面结合附图给出具体实例,进一步说明本发明的高速的图像匹配方法是如何实现的。
[0038] 本发明的高速图像匹配方法是采用互相关法,所用的互相关系数的基本公式如下:
[0039]
[0040]
[0041]
[0042] 其中,xi,j表示模板图像的灰度值,yi+u,i+v表示待匹配图像的灰度值;表示整个模板图像的灰度平均值,表示待匹配图像中与模板图像对应区域的灰度平均值;i,j分别为模板图中像素的行列值,而u,v为模板图像在待匹配图像中的位移。coe1和coe2为该公式定点部分的临时计算结果,存入外部存储模块,供后面的DSP计算相关系数使用。
[0043] 如图1所示,本发明的高速的图像匹配方法,包括有如下步骤:
[0044] (1)将模板图像(m*n)和待匹配图像(M*N)的所有灰度值按设定顺序存到图像存储模块;
[0045] 存储模板图像的灰度值,对应图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用于在计算相关面上一行的同时,读入新一行的待匹配图像数据供计算相关面下一行使用。该方法中没有将全部的待匹配图像数据存入,而动态更新图像数据,是为了在保证最快速度运算的同时,最大限度得减少存储资源消耗。
[0046] (2)计算模板图像(m*n)的灰度值的总和
[0047] 计算模板图像(m*n)的灰度值的总和 对应图1中的计算 部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端均连接常数1,另一端连接存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的总和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块的用于存储 和 的相应区域中。待m个数据计算完成后,控制模块的数据送入
控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总和之后,控制模块会通过取数控制将该数据送入到方程模块中。在此需要说明的是,数组模块是由3个m*32位的数组构成,分别用于存储在计算
和 过程中得到的每列的值,而对于 和 为了减少资源开销,共
用了存储 和 的数组。
[0048] (3)计算模板图像(m*n)的灰度值的总平方和
[0049] 计算模板图像(m*n)的灰度值的总平方和 对应图1中的计算部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的两端均连接到存储模板图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像的每列灰度值的平方和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块的用于存储和 的相应区域中。待m个数据计算完成后,控制模块的数据送入控制
便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像的灰度值的总平方和之后,控制模块会通过取数控制将该数据送入到方程模块中。
[0050] (4)计算模板图像(m*n)与待匹配图像(M*N)相关面第一行对应的各总乘积和 待匹配图像中与模板图像对应区域总和 和总平方和同时计算得到相关面第一行的各相关系数;
[0051] 计算模板图像(m*n)与待匹配图像(M*N)总乘积和 对应图1中的计算 部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接到存储模板图像块RAM的输出端,另一端对应连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将模板图像和待匹配图像的各列对应数据依次送入乘累加模块中,这样乘累加模块的输出结果为模板图像和待匹配图像的每列灰度值的对应乘积和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块的用于存储 的相应区域中。待m个数据计算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为模板图像(m*n)与待匹配图像(M*N)总乘积和 之后,控制模块会通过取数控制将该数据送入到方程模
块中。在此需要说明的是,在相关面的每一行首次计算 时,控制模块会通过数据写入控制将下一行待计算的待匹配图像数据存入到图像存储模块的相应块RAM中,该操作在计算下一行数据前完成。
[0052] 计算待匹配图像与模板对应区域总和 对应图1中的计算部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的一端连接常数1,另一端连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块的用于存储 和 的相应区域中。待m个数据计算
完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像中与模板对应区域的总和 之后,控制模块会通过取数控制将该数据送入到方程模块中。
[0053] 计算待匹配图像与模板对应区域总平方和 对应图1中的计算部分,是控制模块通过连接切换控制,将乘累加模块中各个乘法器的输入端均连接到存储待匹配图像块RAM的输出端,然后改变图像存储模块中块RAM的地址,将待匹配图像中与模板图像对应区域的各列数据依次送入乘累加模块中,这样乘累加模块的输出结果为对应区域中的每列灰度值的平方和,共m个数据。这些数据在控制模块的数据缓存控制下,依次存入到数组模块用于存储 和 的相应区域中。待m 个数据计
算完成后,控制模块的数据送入控制便将这些数据送入到累加模块中,而累加模块的输出结果为待匹配图像与模板对应区域的总平方和 之后,控制模块会通过取数控制将该数据送入到方程模块中。
[0054] 在计算模板图像(m*n)与待匹配图像(M*N)相关面第一行时,是模板图像第1到n行与待匹配图像第1到n行的对应计算,其中第一次是模板图像第1到m列与待匹配图像第1到m列进行计算,在计算 和 后,模板图像在待匹配图像中右移一列,即模板图像第1到m列与待匹配图像第2到m+1列进行计算,得到该处的 和 之后继续右移,并以此重复,直至将
相关面的第一行数据计算完成。在每次计算完一组的三个数据
和 后,由于前面已经得到了 和 因此这5个数据可以
在方程模块中进行运算,使用互相关系数的公式(1)计算,得到两个临时定点数据coe1和coe2。控制模块通过输出控制将这两个定点数据写入到外部存储模块的指定区域。之后DSP对应取出这两个数据,按照互相关系数的公式(1)进行开根号和除法运算,得到浮点的相关系数。在此需要说明的是:对于相关面行内的每次计算,第一次计算 和与后面的计算不同,这是因为当模板图像在待匹配图像中右移时,每次右移都只有1列的数据发生变化,因此在数组模块中对于不变的数据进行了重复利用。例如对于相关面第一行的计算,在 第一次计算后,在数组模块中得到的是待匹配图像第1到n行第1到m列的每列的灰度值的和,而当模板图像右移一列后,需要计算的是待匹配图像第1到n行第2到m+1列的每列的灰度值的和,因为在数组模块中已经计算出了第2到m列的每列灰度值的和,因此只需要计算第m+1列的灰度值的和并取代第一列即可。对于的计算,方法相同。这样既降低了资源消耗,又减少了运算量,从而提高了该方法的性能。
[0055] (5)计算相关面第2行至第N-n+1行的各相关系数。
[0056] 计算待匹配图像相关面第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行的相关系数。
[0057] 图2所示为发明的使用该高速图像匹配方法的装置,高速图像匹配方法的装置,由高速运算器部分、外部存储模块6和DSP部分8构成,所述的高速运算器部分包括图像存储模块1、乘累加模块2、数组模块3、累加模块4、方程模块5和控制模块7。其中,所述的图像存储模块1、乘累加模块2、数组模块3、累加模块4和方程模块5依次连接,且各模块间的信号传输均受控于控制模块7,所述的图像存储模块1的输入端接收原始图像数据,所述的方程模块5的输出连接外部存储模块6,而外部存储模块6的输出连接到DSP部分8,所述的DSP部分8通过寄存器来命令控制模块进行相应的操作。其中:
[0058] 图像存储模块1是由2n+1个块RAM构成的。在这2n+1个块RAM中,有n个用于存储模板图像的灰度值,每个块RAM大小为m*8比特,可存储一行的模板图像数据,这n个块RAM均有独立的写使能,但共用访问地址以便于读数操作。而另外的n+1个块RAM用于存储待匹配图像数据,其中的n个用于存储当前正在计算的n行待匹配图像数据,而剩下的一个块RAM用于在计算相关面上一行的同时,读入新一行的待匹配图像数据供计算相关面下一行使用。同样,这n+1个块RAM均有独立的写使能,但共用访问地址以便于读数操作。
[0059] 乘累加模块2用于计算多个数据的对应乘积和,其结构如图3所示。
[0060] 数组模块3是3个大小为m*32位的数组,分别用于存储在计算和 过程中得到的每列的值,而对于 和 为了减少
资源开销,共用了存储 和 的数组。
[0061] 累加模块4,用于将输入的所有数据进行累加,其结构如图4所示。
[0062] 方程模块5,用于对输入的5个数据进行计算,从而得到两个临时定点数据coe1和coe2,其结构如图5所示,其中m*n由控制模块在取数控制时提供。
[0063] 控制模块7,通过读寄存器来得到DSP的命令信息,控制整个系统的运行。同时通过写寄存器来实时提供系统的运行状态。控制模块对图像存储模块的输入进行数据写入控制,对图像存储模块进行数据读取控制,对图像存储模块和乘累加模块进行连接切换控制,对乘累加模块和数组模块进行数据缓存控制,对数组模块和累加模块进行数据送入控制,对累加模块和方程模块进行取数控制,同时对方程模块的输出进行输出控制。
[0064] 外部存储模块6,用于存储方程模块计算得到的临时定点数据coe1和coe2。
[0065] DSP部分8,用于从外部存储模块中取出coe1和coe2进行计算,得到相关系数。由于DSP的高速高精度运算特性,可以弥补可编程逻辑器件不善于运算除法和开方的缺点,快速得到所需要的相关系数,进一步减少图像匹配的时间,同时保证了计算的精度。
[0066] 下面是算法的具体实施实例:
[0067] 本发明的实施实例是以可编程逻辑器件Altera的EP2S130F780C5芯片为平台,在大小为512*512的图像上匹配一个80*80的图像,每个图像的灰度信息用8位数据表示。
[0068] 据图像匹配的定义,设上述80*80为模板图像,用x表示;512*512的图像为待匹配图像,用y表示,相关面大小为433*433。
[0069] 依据本发明,实现此次实例匹配的实施方式如下。
[0070] 1)依据两个图像的具体大小,搭建图像匹配的系统。
[0071] 高速运算部分在FPGA芯片上搭建,完成coe1和coe2值的计算。图像存储模块通过在FPGA上例化双口块RAM得到。乘累加模块通过例化80个乘法器和81个加法器搭建,累加模块通过例化81个加法器搭建,数组模块需要开辟3个大小为80的存储数组。控制模块控制整个系统的运行,其具体实施框图如图7所示。对于连接切换控制,设定其切换信号的控制功能为:
[0072]切换信号 控制乘累加模块的输入端
001 x*1
002 x*x
003 x*y
004 1*y
005 y*y
[0073] DSP部分主要是完成相关系数的计算,即 的运算。将FPGA输出的coe1和coe2值存入到外部的flash中,DSP从flash中取出数据快速计算相关系数,进一步减少图像匹配的时间。
[0074] 2)依据本发明的算法编写VHDL代码
[0075] 第一步:存储模板图像80*80以及待匹配图像512*512。
[0076] 对于模板图像,开辟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行数据,所有的待匹配图像的数据都可在计算相关点时访问到。
[0077] 第二步:计算模板图像的总和
[0078] 切换信号此时设为001,访问模板图像的80个块RAM,按列访问,乘累加模块计算出每一列的80个x*1的和值,暂时存入数组模块,累加模块从数组模块中取出这80个数相加,即得到模板图像的总和
[0079] 第三步:计算模板图像的总平方和
[0080] 切换信号此时设为002,再次按列访问这80个块RAM,乘累加模块计算出每列80个x*x的值,暂时存入数组模块,累加模块从数组模块中取出这80个数相加,即得到模板图像的总平方和
[0081] 第四步:计算模板图像与待匹配图像相关面第1行的相关系数。
[0082] 先读取待匹配图像的第1到80个块RAM值,即第1行到第80行值。令切换信号为003,乘累加模块计算出每一列的对应乘积和,存储于数组模块的对应位置,累加模块计算
80列的总和,得到第1个相关点的 令切换信号为004和005,同样的计算方
法得到相关面第1个点对应的 和 当
和 三个值全部到位后,计算相关面第1个点的coe1值和coe2值,存入外部的flash中。此后,DSP部分开始启动,根据之前设定好的公式从flash中取数,计算出相关面第1行的第1个点的相关系数。
[0083] 模板图像在待匹配图像中右移一列,即读取第2列至第81列的数据,依次完成上述的计算,得到相关面的第1行第2相关点的 和 并存入数组模块。因为计算 和 时,在数组模块中第2列到第80列的结
果是不变的,因此只需要计算第81列,写入数组中原来第1列的位置。
[0084] 以下计算步骤不变。再依次访问第L列(2<L<434)至L+79列,同上述计算第2列时一样只需计算改变的列值,即可依次得到第1行的各相关系数。
[0085] 第五步:计算待匹配图像相关面第2行至第433行相关系数。
[0086] 同样,切换信号依次在003、004、005之间切换。访问待匹配图像块RAM第2行至第81行共80行数据。按照算法第四步的过程,依次计算 和即可得到第2行的相关系数。在计算第2行的过程中,在切换模块的数据写入控制下,从系统外读入待匹配图像下一行,即第82行的数据取代第1行,然后等待相关面第
2行计算完毕后,取出待匹配图像第3行至第81行及新读进的1行数据,按照第四步,即可得到相关面第3行的各相关系数。按照这样的过程依次读进新一行数据,依次计算直至相关面的433行全部算完。
[0087] 3)匹配运算的耗时理论分析
[0088] 最终的实现结果表明,该装置内部可以运行的最高时钟频率为79MHz。因此75MHz下,可以稳定运行。图6所示为对匹配所需的时间理论分析。需要说明的是,此处不包括和外部的数据交互时间及DSP运算时间。
[0089] 当m=n=80,M=N=512,时钟频率为75MHz时,图像匹配所占用的时间为:
[0090] (2n+(M-m+1)*(3n+(N-n)*(n+2)))/75000000
[0091] =(2*80+(512-80+1)*(3*80+(51280)*(80+2)))/75000000
[0092] =206ms
[0093] 同时,使用C语言按此算法编写实现图像匹配运算的程序,由于C程序是顺序执行,在512*512的图像上匹配出80*80的图像需要约13s的时间。
[0094] 对两个数据的对比可知,在可编程逻辑器件上运用并行计算的高速图像匹配系统大大节约了时间,提高了匹配速度,可以达到实时匹配的要求。
[0095] 4)实例占用资源分析
[0096] 最终占用的资源情况如下:
[0097]
[0098] 可见,实际程序所占用的资源不多,因而本发明的方案是完全可以实现的。