一种用于并行生成SIFT描述子的系统及其方法与流程

文档序号:15047881发布日期:2018-07-27 23:07阅读:128来源:国知局

本发明涉及计算机视觉领域,特别是一种用于并行生成sift描述子的系统及其方法。



背景技术:

sift(scaleinvariantfeaturetransform)即尺度不变特征变换,是一种以尺度空间为观察对象的算法,研究图像在尺度空间内所具有的各种不变性的特征提取与描述算法,因其在图像尺度变化、旋转等状况下的鲁棒性和独特性而广泛的应用在目标识别及跟踪等领域,但由于其较大的数据通信量,从而需要大量的处理时间,而对于一些需要实时处理的系统应用软件已不能满足需求,如何改善这一问题也成为人们研究的一个方向,随着vlsi与fpga技术的发展,硬件系统已具备了比软件平台更快的处理速度,并具有了足够完成图像处理计算的硬件资源,通过将图像处理算法向硬件平台移植,可以进一步扩展算法的应用范围,提升图像的综合系统的处理能力。

sift算法主要包括两方面的计算:(1)高斯金字塔构建。(2)描述子生成,大多数研究集中在第一部分,而未对第二部分作更多的工作,传统的算法实现方式,需要先计算主方向,而后再计算描述子,计算的过程较长,处理的速度较慢,造成大量的资源使用和时间延时,不能满足低功耗,高速度,低资源的要求。



技术实现要素:

为解决上述问题,本发明的目的在于提供一种用于并行生成sift描述子的系统及其方法,克服传统的串行计算的方式,采用并行计算,处理速度快、计算时间短。

本发明解决其问题所采用的技术方案是:

一种用于并行生成sift描述子的系统,包括对关键点进行处理以产生不同的存储文件的地址信息的地址发生器模块、用于生成初始描述子的初始描述子生成模块、用于计算得到主方向的主方向计算模块、用于对初始描述子进行重排的初始描述子重排模块以及对像素点所处的子区域进行重排的子区域重排模块,所述地址发生器模块与主方向计算模块、初始描述子生成模块连接,所述初始描述子重排模块与主方向计算模块、初始描述子生成模块、子区域重排模块连接,所述地址发生器模块将产生的幅值幅角存储文件地址、权值存储文件地址送到主方向计算模块,所述地址发生器模块将产生的幅值幅角存储文件地址、权值存储文件地址以及子区域划分地址送到初始描述子生成模块。

进一步,所述地址发生器模块包括用于生成幅值幅角存储文件地址的幅值幅角发生器、用于生成权值存储文件地址的权值发生器以及用于生成像素点子区域划分地址的划分地址发生器,所述幅值幅角发生器、权值发生器均和主方向计算模块、初始描述子生成模块连接,所述划分地址发生器与初始描述子生成模块连接。幅值幅角以及权值用于后续生成幅值幅角直方图,子区域划分地址在生成初始描述子时可以对所取的像素点进行子区域划分。

进一步,所述主方向计算模块包括第一地址信息处理模块、对处理后的地址信息进行累加得到幅值幅角直方图数据的第一累加器模块以及对幅值幅角直方图数据进行比较得到主方向的比较器模块,所述第一地址信息处理模块、第一累加器模块以及比较器模块依次连接,所述第一地址信息处理模块与地址发生器模块连接。通过幅值幅角直方图可以计算得到主方向。

进一步,所述第一地址信息处理模块包括对幅值信息进行处理的第一幅值处理模块以及对幅角信息进行处理的第一幅角处理模块,所述第一幅值处理模块、第一幅角处理模块分别与第一累加器模块连接,所述比较器模块包括四级比较器组。

进一步,所述初始描述子生成模块包括第二地址信息处理模块、对关键点周围的像素点进行子区域划分的划分模块以及对处理后的地址信息进行累加得到幅值幅角直方图数据的第二累加器模块,所述划分模块、第二地址信息处理模块以及第二累加器模块依次连接,所述第二地址信息处理模块、划分模块与地址发生器模块连接。各个子区域内都会获得8bin的幅值幅角直方图,n个子区域最终生成n*8bin的初始描述子。

进一步,所述第二地址信息处理模块包括对幅值信息进行处理的第二幅值处理模块以及对幅角信息进行处理的第二幅角处理模块,所述第二幅值处理模块、第二幅角处理模块分别与划分模块连接,所述划分模块包括一个多路选择器。划分模块根据子区域划分地址对所取像素点进行子区域划分。

一种用于并行生成sift描述子的方法,其特征在于:包括以下步骤:

a、地址发生器模块根据关键点位置信息获取其周围s*s大小的窗口的像素点的地址数据,并产生不同的存储文件的地址信息;b、主方向计算模块接收存储文件的地址信息计算得到主方向,同时初始描述子生成模块接收存储文件的地址信息生成初始描述子;

c、根据主方向对初始描述子进行描述子重排以及子区域重排后得到最终的描述子。

进一步,所述步骤a中地址发生器模块根据关键点位置信息获取其周围s*s大小的窗口的像素点的地址数据,并产生不同的存储文件的地址信息,存储文件的地址信息包括幅值幅角存储文件地址、权值存储文件地址以及子区域划分地址,其中幅值幅角存储文件地址、权值存储文件地址均传输到主方向计算模块以及初始描述子生成模块,子区域划分地址传输到初始描述子生成模块,窗口的大小s根据不同的图像大小确定。

进一步,所述步骤b中主方向计算模块接收存储文件的地址信息计算得到主方向,具体步骤为:根据关键点周围s*s大小的窗口内的任意一个像素点的幅角大小,经过高斯加权后的幅值累加到该像素点所对应的位置上,得到其对应的幅值幅角数据,所有的像素点进行同样的操作后得到16bin的幅值幅角直方图数据,比较幅值幅角直方图数据后得到最大的bin,最大的bin所处的位置即为主方向,其中n的大小根据s的大小而确定。

进一步,所述步骤b中同时初始描述子生成模块接收存储文件的地址信息生成初始描述子,具体步骤为:将关键点周围s*s大小的窗口分成n+1个子区域,每个子区域所占窗口的大小为m*m,每个子区域内的像素点,把幅角信息经过高斯加权后得到的幅值信息进行累加操作,每一个子区域得到8bin的幅值幅角直方图,n个子区域对应生成n*8bin的初始描述子,其中m小于s,且n、m的大小根据s的大小而确定。

本发明的有益效果是:本发明采用的一种用于并行生成sift描述子的系统,由地址发生器模块根据关键点的坐标信息产生不同的存储文件的地址信息,然后将这些不同的存储文件的地址信息传输到主方向计算模块以及初始描述子生成模块中,主方向计算模块在计算主方向的同时,初始描述子生成模块也在生成初始描述子,最后根据主方向对初始描述子进行两次重排列后可得到最终的描述子,由于主方向计算模块和初始描述子生成模块是同时并行计算的,从而相对于传统的方法来说处理速度加快、计算的时间较少;

本发明的一种用于并行生成sift描述子的方法,地址发生器根据关键点位置信息获取其周围s*s大小的窗口的像素点的地址数据,并根据这些数据产生不同的存储文件的地址信息,将地址发生器产生的存储文件的地址信息传输到主方向计算模块以及初始描述子生成模块中,由主方向计算模块计算生成主方向,由初始描述子生成模块生成初始描述子,最后根据主方向对初始描述子进行二次重排列即可得到最终的描述子,本发明主方向的计算以及初始描述子的生成为同时进行,克服了传统的先计算主方向,再计算描述子的复杂计算,极大的提高了处理速度,减少计算的时间。

附图说明

下面结合附图和实例对本发明作进一步说明。

图1是本发明一种用于并行生成sift描述子的系统的结构框图;

图2是本发明子区域划分示意图;

图3是本发明初始描述子重排示意图;

图4是本发明比较器模块的示意图;

图5是本发明一种用于并行生成sift描述子的方法的结构框图。

具体实施方式

以下实施方式中,取s=15,n=16,m=5进行计算过程的描述,实际上s、n以及m的大小根据实际的图像尺寸进行确定。

参照图1-图4,本发明的一种用于并行生成sift描述子的系统,地址发生器模块1接收关键点的坐标信息,然后依次产生位于关键点周围15*15窗口大小的像素点的地址数据,通过该地址数据从而获取幅值幅角存储文件的内容,同时该地址数据也将用于在划分模块22进行判定其位于当前哪个子区域中,然后从存储文件内获取的内容进而送入主方向计算模块3和初始描述子生成模块2进行处理,将处理得到的主方向和初始描述子并将送入初始描述子重排模块4以及子区域重排模块5中,根据主方向进行两次重排,从而得到最后用于使用的描述子。

首先,获取关键点地址,在得到关键点位置信息后,地址发生器模块1将统计在关键点周围15*15大小的窗口中所有像素点的位置,并根据所有像素点的位置信息,产生不同的存储文件的地址信息:幅值幅角存储文件地址;权值存储文件地址;子区域划分地址,存储文件根据这些地址,输出用于下一步计算的数值,即当前坐标点的幅值,幅角和权值,然后通过接口连线将数据送入下一级计算模块进行处理。

主方向计算模块3根据地址发生器模块1传送来的信息进行主方向的计算,主方向计算模块3采用三级流水线对数据处理,其外部接口接收来自存储文件的数值,首先第一幅值处理模块311对从存储文件取出的幅值根据其在窗口中的位置进行加权,第一幅角处理模块312对幅角进行处理后将加权后的幅值判定到某一bin上通过第一累加器模块32进行累加,根据流水线结构设计方式,累加之后便得到16bin的直方图数据,在处理完窗口中所有像素点后,可以得到16bin的幅值幅角直方图数据,最后经过一个比较器模块33,从而得到最大的bin,便是主方向。

比较器模块33由四级比较器组成,可以快速地得到主方向,计算的主方向将传入初始描述子重排模块4以及子区域重排模块5等待使用。

初始描述子生成模块2结构与主方向计算模块3中直方图统计方式类似,不同的是在统计直方图时需要对所取像素点进行子区域划分,每个子区域大小为5*5,划分过程由划分模块22进行,在划分子区域时,可见17个子区域将360度划分成了17个部分,每个部分相当于占了其中的22.5度,其中0区域位于整个窗口的中心,其他子区域不与0区域重叠,除0区域外的各个子区域之间产生一些重叠部分,最后每个子区域中5*5窗口内的像素点,通过幅角将加权后的幅值进行累加操作,每一个子区域将会获得8bin每个bin占45度的幅值幅角直方图,17个子区域最终生成136bin的初始描述子,然后将初始描述子传入初始描述子重排模块4以及子区域重排模块5。

具体地,划分区域可以提高描述子的稳定性。

初始描述子重排模块4以及子区域重排模块5根据主方向对初始描述子进行两次重排,两次重排列过程如图3所示,图3a为初始描述子示意图,初始描述子重排模块4根据所获得的主方向对初始描述子进行第一次重排,是根据选通的方式将直方图旋转至主方向的位置,图3b即为初始描述子经过第一次重排后的示意图;子区域重排模块5对第一次重排后的初始描述子进行第二次重排,第二次旋转是对子区域8bin幅值幅角直方图进行区域重排,如当主方向位于bin0之间,则保持原位置不变,如主方向位于bin1时则将原来的子区域一的位置替换为子区域二,如主方向位于bin3时,则将子区域一用子区域三替代,依次类推,经过重排后的描述子便是最终所需的描述子,而为了节省资源,最后产生的描述子仅取其整数部分。

在整个系统中,应用了两种并行处理的方式:主方向模块和初始描述子模块并行处理以及数据间传输采用流水线的方式,通过并行处理的方式可以降低资源消耗,同时可以提高处理速度,同时在最后的两次排列过程中,采用优化的位宽,进一步的降低了资源消耗。

本发明相对于传统方法而言,不需要新计算主方向而后生成初始描述子,而是采用并行计算的方式,同时计算得到主方向以及初始描述子,可以降低传统计算方式的数据处理量,提高处理速度,同时可以降低资源消耗。

具体地,地址发生器模块1包括幅值幅角发生器11、权值发生器12以及用于划分地址发生器13,幅值幅角发生器11、权值发生器12产生幅值幅角存储文件地址以及权值存储文件地址后分别传输到主方向计算模块3以及初始描述子生成模块2,同时划分地址发生器13产生子区域划分地址后传输到初始描述子生成模块2。

具体地,主方向计算模块3包括第一地址信息处理模块31、第一累加器模块32以及比较器模块33,第一地址信息处理模块31包括第一幅值处理模块311以及第一幅角处理模块312,第一幅值处理模块311的作用是用于对从存储文件取出的幅值根据其在窗口中的位置进行加权,第一幅角处理模块312为一个多路选择器,而比较器模块33包括四级的比较器组,第一级为8个比较器,第二级为4个比较器,第三级为2个比较器,第四级为1个比较器,通过4级的比较最终可以得到最大的bin,最大的bin所处的位置即为主方向。

具体地,初始描述子生成模块2包括第二地址信息处理模块21、划分模块22以及第二累加器模块23,第二地址信息处理模块21包括第二幅值处理模块211以及第二幅角处理模块212,第二幅值处理模块211、第二幅角处理模块212以及第二累加器模块23的功能与主方向计算模块3中的第一幅值处理模块311、第一幅角处理模块312以及第一累加器模块32相同,划分模块22用于对所取像素点进行子区域划分,划分模块22由一个多路选择器构成。

参照图5,本发明的一种用于并行生成sift描述子的方法,包括以下步骤:地址发生器模块1根据关键点位置信息获取其周围15*15大小的窗口的像素点的地址数据,并产生不同的存储文件的地址信息;主方向计算模块3接收存储文件的地址信息计算得到主方向,同时初始描述子生成模块2接收存储文件的地址信息生成初始描述子,最后初始描述子重排模块4以及子区域重排模块5根据主方向对初始描述子进行描述子重排以及子区域重排后得到最终的描述子,主方向的计算以及初始描述子的生成是同时进行的,可以加快处理速度,同时降低资源消耗,在最终的二次重排列时,采用优化的位宽,降低了资源消耗。

具体地,存储文件的地址信息包括幅值幅角存储文件地址、权值存储文件地址以及子区域划分地址,其中幅值幅角存储文件地址、权值存储文件地址都传输到主方向计算模块3以及初始描述子生成模块2,子区域划分地址传输到初始描述子生成模块2。

在得到最终所需的描述子后,为了节省资源,最后产生的描述子仅取其整数部分,可以降低资源的消耗,同时还能提高处理速度。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1