一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于SURF算法的特征点检测方法和装置与流程

2021-10-24 07:39:00 来源:中国专利 TAG:算法 检测方法 装置 特征 图像处理

基于surf算法的特征点检测方法和装置
技术领域
1.本公开涉及图像处理技术,尤其是一种基于surf算法的特征点检测方法和装置。


背景技术:

2.图像局部特征的提取与描述一直是数字图像处理领域的热点。自上世纪起,各种图像局部特征提取算法相继问世。但在实际工程的应用中,很难有一种算法可以同时满足多项性能指标的要求,往往需要对算法进行优化,通常需要在算法复杂度与性能两者之间折中考虑。
3.surf(speeded up robust feature,加速鲁棒特性)是一种被广泛应用的具有局部尺度不变性的特征提取算法,surf算法可以用于对象定位和识别、人脸识别、3d重建、对象跟踪和提取兴趣点等,常用来进行物体辨识和图像匹配。surf算法本身很容易在通用处理器上实现。然而,surf算法中大容量的数据存储、不规则的数据访问和大量的运算,是提高surf算法速度的瓶颈,限制了特征点的检测速度,从而导致surf算法在通用处理器上的实现方案无法满足实际工程中实时处理的需要。


技术实现要素:

4.本公开实施例所要解决的一个技术问题是:提供一种基于surf算法的特征点检测方法和装置,以降低数据存储容量的要求,提高特征点的检测速度。
5.本公开实施例的一个方面,提供一种基于surf算法的特征点检测方法,包括:
6.按照由第一方向至第二方向的顺序,以预设大小为单位,通过串行总线pci

e依次接收灰度图像中第一方向上所述预设大小的图像块的灰度值;其中,所述由第一方向至第二方向的顺序,包括:逐行、逐列的顺序,或者逐列、逐行的顺序;
7.采用每一级并行计算、多级流水计算的方式,对所述预设大小的图像块的灰度值进行多级流水的并行累加计算,得到所述预设大小的图像块的积分向量;
8.按照所述由第一方向至第二方向的顺序,依次基于各图像块的积分向量构建积分图中一个积分图向量的积分值,并将所述积分图向量的积分值存储在寄存器中;其中,所述积分图与所述灰度图像在所述第一方向上的高度相同;
9.响应于所述积分图中当前一个第一方向上积分图向量的积分值构建完成,采用多个大小不同的滤波器,分别对所述当前一个第一方向上各积分值对应的采样点进行滤波处理,得到所述多个大小不同的滤波器中各滤波器的三种模板作用于所述采样点的响应值,分别根据各滤波器的三种模板作用于所述采样点的响应值和所述三种模板的响应区域的面积,计算各滤波器的黑塞hessian矩阵的行列式的值,得到hessian矩阵的多个行列式的值;其中,所述三种模板的响应值包括:沿x方向的dxx模板的响应值,沿y方向的dyy模板的响应值和沿xy方向的dxy模板的响应值;
10.对所述hessian矩阵的多个行列式的值进行非极大值抑制,得到满足极大值条件的特征点;
11.输出所述特征点在所述灰度图像中的位置。
12.在基于本公开上述方法的另一个实施例中,所述采用每一级并行计算、多级流水计算的方式,对所述预设大小的图像块的灰度值进行多级流水的并行累加计算,包括:
13.采用每一级并行计算、多级流水计算的方式,对所述预设大小的图像块的灰度值进行log2m级流水的并行累加计算;其中,m为所述预设大小的字节数。
14.在基于本公开上述方法的另一个实施例中,所述基于所述预设大小的图像块的积分向量构建积分图中一个积分图向量的积分值,包括:
15.采用第一预设计算方式,由所述预设大小的图像块的积分向量与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分图向量的积分值。
16.在基于本公开上述方法的另一个实施例中,所述采用第一预设计算方式,由所述预设大小的图像块的积分向量与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分图向量的积分值,包括:
17.通过如下方式由所述预设大小的图像块的积分向量与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分向量的积分值i
∑(i,j)

18.i
∑(i,j)
=i
∑(i

1,j)
i
∑(i,j

1)

i
∑(i

1,j

1)
i
(i,j)
19.其中,i为所述当前一个第一方向上采样点在所述第一方向上的序号,j为所述预设大小的图像块的积分向量在所述第二方向上的序号;i
(i,j)
为在所述第一方向上序号为i的第j个积分向量,i
σ(i,j)
为所述当前积分图向量的积分值。
20.在基于本公开上述方法的另一个实施例中,所述响应于所述积分图中当前一个第一方向上积分图向量的积分值构建完成,采用多个大小不同的滤波器,分别对所述当前一个第一方向上各积分值对应的采样点进行滤波处理,得到所述多个大小不同的滤波器中各滤波器的三种模板作用于所述采样点的响应值,分别根据各滤波器的三种模板作用于所述采样点的响应值和所述三种模板的响应区域的面积,计算各滤波器的黑塞hessian矩阵的行列式的值,得到hessian矩阵的多个行列式的值,包括:
21.响应于所述积分图中当前一个第一方向上积分图向量的积分值构建完成,采用所述多个大小不同的滤波器,在所述当前一个第一方向上,同时对所述当前一个第一方向上各积分值对应的采样点进行滤波处理,得到所述多个大小不同的滤波器中各滤波器的三种模板的滤波处理中间结果;
22.将所述当前一个第一方向上各积分值对应的采样点对应的滤波处理中间结果,按照预设顺序,分别对应存储在长度与所述各滤波器的大小匹配的移位寄存器中;
23.采用第二预设计算方式,基于所述各滤波器的大小匹配的移位寄存器中的滤波处理中间结果计算所述各滤波器的三种模板作用于所述采样点的响应值;
24.分别根据各滤波器的三种模板作用于所述采样点的响应值和所述三种模板的响应区域的面积,计算各滤波器的黑塞hessian矩阵的行列式的值,得到hessian矩阵的多个行列式的值;
25.将所述hessian矩阵的多个行列式的值存储在所述各滤波器对应的存储空间中。
26.在基于本公开上述方法的另一个实施例中,所述对所述hessian矩阵的多个行列式的值进行非极大值抑制,得到满足极大值条件的特征点,包括:
27.响应于所述各滤波器对应的存储空间中存储有所述采样点的hessian矩阵的多个
行列式的值,分别对每三个大小相邻的三个滤波器对应的hessian矩阵的行列式的值进行非极大值抑制,得到满足极大值条件的特征点。
28.在基于本公开上述方法的另一个实施例中,所述多个大小不同的滤波器,包括:p组滤波器,每组滤波器包括4层滤波器,所述p组滤波器中第p组滤波器中4层滤波器的大小分别为9*2
p
‑1、15*2
p
‑1、21*2
p
‑1、17*2
p
‑1,其中,p的取值为大于0的整数,所述第p组滤波器的采样间隔为2
p
‑1;
29.所述对所述hessian矩阵的多个行列式的值进行非极大值抑制,得到满足极大值条件的特征点,包括:
30.分别对每组滤波器中相邻三层滤波器对应的27个hessian矩阵的行列式的值进行非极大值抑制,通过对所述采样点共进行多次非极大值抑制,得到满足极大值条件的特征点。
31.本公开实施例的另一个方面,提供一种基于surf算法的特征点检测装置,包括:
32.接收模块,用于按照由第一方向至第二方向的顺序,以预设大小为单位,通过串行总线pci

e依次接收灰度图像中第一方向上所述预设大小的图像块的灰度值;其中,所述由第一方向至第二方向的顺序,包括:逐行、逐列的顺序,或者逐列、逐行的顺序;
33.积分向量计算模块,用于采用每一级并行计算、多级流水计算的方式,对所述预设大小的图像块的灰度值进行多级流水的并行累加计算,得到所述预设大小的图像块的积分向量;
34.积分值计算模块,用于按照所述由第一方向至第二方向的顺序,依次基于各图像块的积分向量构建积分图中一个积分图向量的积分值,并将所述积分图向量的积分值存储在寄存器中;其中,所述积分图与所述灰度图像在所述第一方向上的高度相同;
35.hessian矩阵计算模块,用于响应于所述积分图中当前一个第一方向上积分图向量的积分值构建完成,采用多个大小不同的滤波器,分别对所述当前一个第一方向上各积分值对应的采样点进行滤波处理,得到所述多个大小不同的滤波器中各滤波器的三种模板作用于所述采样点的响应值,分别根据各滤波器的三种模板作用于所述采样点的响应值和所述三种模板的响应区域的面积,计算各滤波器的黑塞hessian矩阵的行列式的值,得到hessian矩阵的多个行列式的值;其中,所述三种模板的响应值包括:沿x方向的dxx模板的响应值,沿y方向的dyy模板的响应值和沿xy方向的dxy模板的响应值;
36.非极大值抑制模块,对所述hessian矩阵的多个行列式的值进行非极大值抑制,得到满足极大值条件的特征点;
37.输出模块,用于输出所述特征点在所述灰度图像中的位置。
38.在基于本公开上述装置的另一个实施例中,所述接收模块,具体用于:
39.采用第一预设计算方式,由所述预设大小的图像块的积分向量与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分图向量的积分值。
40.在基于本公开上述装置的另一个实施例中,所述积分值计算模块,具体用于:
41.按照所述由第一方向至第二方向的顺序,采用第一预设计算方式,依次由所述预设大小的图像块的积分向量与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分图向量的积分值,并将所述积分图向量的积分值存储在寄存器中。
42.在基于本公开上述装置的另一个实施例中,所述积分值计算模块,具体用于通过
如下方式由所述预设大小的图像块的积分向量与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分向量的积分值i
σ(i,j)

43.i
∑(i,j)
=i
∑(i

1,j)
i
∑(i,j

1)

i
∑(i

1,j

1)
i
(i,j)
44.其中,i为所述当前一个第一方向上采样点在所述第一方向上的序号,j为所述预设大小的图像块的积分向量在所述第二方向上的序号;i
(i,j)
为在所述第一方向上序号为i的第j个积分向量,i
∑(i,j)
为所述当前积分图向量的积分值。
45.在基于本公开上述装置的另一个实施例中,所述hessian矩阵计算模块包括:
46.滤波处理单元,用于响应于所述积分图中当前一个第一方向上积分图向量的积分值构建完成,采用所述多个大小不同的滤波器,在所述当前一个第一方向上,同时对所述当前一个第一方向上各积分值对应的采样点进行滤波处理,得到所述多个大小不同的滤波器中各滤波器的三种模板的滤波处理中间结果;
47.第一存储单元,用于将所述当前一个第一方向上各积分值对应的采样点对应的滤波处理中间结果,按照预设顺序,分别对应存储在长度与所述各滤波器的大小匹配的移位寄存器中;
48.第一计算单元,用于采用第二预设计算方式,基于所述各滤波器的大小匹配的移位寄存器中的滤波处理中间结果计算所述各滤波器的三种模板作用于所述采样点的响应值;
49.第二计算单元,用于分别根据各滤波器的三种模板作用于所述采样点的响应值和所述三种模板的响应区域的面积,计算各滤波器的黑塞hessian矩阵的行列式的值,得到hessian矩阵的多个行列式的值;
50.第二存储单元,用于将所述hessian矩阵的多个行列式的值存储在所述各滤波器对应的存储空间中。
51.在基于本公开上述装置的另一个实施例中,所述非极大值抑制模块,具体用于:
52.响应于所述各滤波器对应的存储空间中存储有所述采样点的hessian矩阵的多个行列式的值,分别对每三个大小相邻的三个滤波器对应的hessian矩阵的行列式的值进行非极大值抑制,得到满足极大值条件的特征点。
53.在基于本公开上述装置的另一个实施例中,所述多个大小不同的滤波器,包括:p组滤波器,每组滤波器包括4层滤波器,所述p组滤波器中第p组滤波器中4层滤波器的大小分别为9*2
p
‑1、15*2
p
‑1、21*2
p
‑1、17*2
p
‑1,其中,p的取值为大于0的整数,所述第p组滤波器的采样间隔为2
p
‑1;
54.所述非极大值抑制模块,具体用于:
55.分别对每组滤波器中相邻三层滤波器对应的27个hessian矩阵的行列式的值进行非极大值抑制,通过对所述采样点共进行多次非极大值抑制,得到满足极大值条件的特征点。
56.本公开实施例的又一个方面,提供一种电子设备,包括:
57.存储器,用于存储计算机程序;
58.处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现本公开上述任一实施例所述的方法。
59.本公开实施例的再一个方面,提供一种计算机可读存储介质,其上存储有计算机
程序,该计算机程序被处理器执行时,实现本公开上述任一实施例所述的方法。
60.基于本公开上述实施例提供的基于surf算法的特征点检测方法和装置、设备和介质,具有以下有益技术效果:
61.按照由第一方向至第二方向的顺序,以预设大小为单位,通过pci

e依次接收灰度图像中第一方向上所述预设大小的图像块的灰度值,采用每一级并行计算、多级流水计算的方式,对预设大小的图像块的灰度值进行多级流水的并行累加计算该图像块的积分向量,由于采用多级流水的并行累加计算各图像块的积分向量,提高了计算的并发度,从而提高了特征点的检测速度;
62.由于积分向量的计算及积分图的构建都采用流水线方式,每构建完成积分图中一行或一列积分图向量的积分值便进行后续计算各滤波器的hessian矩阵的行列式的值,不需要存储完整的积分图,只需计算出积分图的一列或一列积分值即可进行后续hessian矩阵的行列式的值的计算;各滤波器的hessian矩阵的行列式的值计算也采用流水线方式,每构建完成一行或一列积分图向量的积分值便计算各滤波器的三种模板作用于采样点的响应值,直至可以计算出hessian矩阵的行列式的值,计算得到hessian矩阵的多个行列式的值,不需要存储完整的hessian矩阵的行列式,每计算出一个行列式的值,即用于非极大值抑制;对hessian矩阵的多个行列式的值进行非极大值抑制也采用流水线方式,对得到hessian矩阵的多个行列式的值时进行非极大值抑制,由此,本公开实施例不仅在执行上述各操作的模块之间采用了流水线方式的数据处理,并且在每个模块内部也实现了数据的流水线方式的处理,从而降低了对数据存储容量的要求,提高了计算的并发度,从而提高了整个过程的计算速度,进而提高了特征点的检测速度。
63.下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
64.构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
65.参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
66.图1为本公开基于surf算法的特征点检测方法一个实施例的流程图。
67.图2为本公开实施例中进行5级流水的并行累加的一个示意图。
68.图3为现有技术对8btye图像块的灰度值进行累加计算的一个示意图。
69.图4为本公开实施例对图3所示8btye图像块的灰度值进行并行累加计算的一个示意图。
70.图5为本公开实施例中积分图的一个示意图。
71.图6为本公开基于surf算法的特征点检测方法另一个实施例的流程图。
72.图7(a)

图7(c)分别为本公开实施例中dxx模板、dyy模板、dxy模板的一个示意图。
73.图8为本公开实施例中计算积分图中一个矩形区域的灰度和的示意图。
74.图9(a)

图9(d)是本公开实施例中计算dxx值的一个示意图。
75.图10(a)

图10(b)是本公开实施例中计算dyy值的一个示意图。
76.图11(a)

图11(d)是本公开实施例中计算dxy值的一个示意图。
77.图12为本公开实施例中进行非极大值抑制的一个示意图。
78.图13为本公开基于surf算法的特征点检测装置一个实施例的结构示意图。
79.图14为本公开实施例中电子设备一个实施例的结构示意图。
具体实施方式
80.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
81.本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
82.还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
83.还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
84.另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
85.还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
86.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
87.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
88.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
89.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
90.本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
91.终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
92.图1为本公开基于surf算法的特征点检测方法一个实施例的流程图。本公开各实施例可应用于fpga(field programmable gate array,现场可编程逻辑门阵列),也可用作专用电路流片或者其他芯片。如图1所示,该实施例基于surf算法的特征点检测方法包括:
93.102,按照由第一方向至第二方向的顺序,以预设大小为单位,通过串行总线(pci

e)依次接收灰度图像中第一方向上所述预设大小的图像块的灰度值。
94.其中,所述由第一方向至第二方向的顺序,可以包括:逐行、逐列的顺序,或者逐列、逐行的顺序,即第一方向为行、第二方向为列,则由第一方向至第二方向的顺序即为逐行、逐列的顺序;或者第一方向为列、第二方向为行,则由第一方向至第二方向的顺序即为逐列、逐行的顺序。
95.104,采用每一级并行计算、多级流水计算的方式,对所述图像块的灰度值进行多级流水的并行累加计算,得到该图像块的积分向量。
96.每得到一个图像块的积分向量,便针对该图像块的积分向量执行106的操作。
97.106,按照所述由第一方向至第二方向的顺序,依次基于各图像块的积分向量构建积分图中一个积分图向量的积分值(即积分图向量的值),并将该积分图向量的积分值存储在寄存器中。
98.其中,积分图与灰度图像在所述第一方向上的高度相同。
99.响应于积分图中当前一个第一方向上积分图向量的积分值构建完成,针对该一个第一方向上的采样点,执行108的操作。即,每构建完成积分图中当前一个第一方向上积分图向量的积分值,即针对该当前一个第一方向上积分图向量的积分值执行108的操作。与操作102

104相应地,当前一个第一方向即一个行或者一个列,则当前一个第一方向上积分图向量相应为一列积分图向量或者一行积分图向量。
100.108,采用多个大小不同的滤波器,分别对当前一个第一方向上各积分值对应的采样点进行滤波处理,得到多个大小不同的滤波器中各滤波器的三种模板作用于所述采样点的响应值,分别根据各滤波器的三种模板作用于采样点的响应值和三种模板的响应区域的面积,计算各滤波器的hessian(黑塞)矩阵的行列式的值,得到hessian矩阵的多个行列式的值。
101.其中,所述三种模板的响应值包括:沿x方向的dxx模板的响应值(可以称为dxx值),沿y方向的dyy模板的响应值(可以称为dyy值)和沿xy方向的dxy模板的响应值(可以称为dxy值)。
102.基于操作108得到各第一方向上的采样点的hessian矩阵的多个行列式的值后,可以暂存在存储空间中,以便在暂存的第一方向的数量满足非极大值抑制条件时,参与执行110的操作。
103.110,对hessian矩阵的多个行列式的值进行非极大值抑制,得到满足极大值条件的特征点。
104.本公开实施例中的特征点即满足非极大值抑制条件的像素点。
105.112,输出上述满足极大值条件的特征点在灰度图像中的位置。
106.基于本实施例,由于采用多级流水的并行累加计算各图像块的积分向量,提高了计算的并发度,从而提高了特征点的检测速度;由于积分向量的计算及积分图的构建都采用流水线方式,每构建完成积分图中一行或一列积分图向量的积分值便进行后续计算各滤
波器的hessian矩阵的行列式的值,不需要存储完整的积分图,只需计算出积分图的一列或一列积分值即可进行后续hessian矩阵的行列式的值的计算;各滤波器的hessian矩阵的行列式的值计算也采用流水线方式,每构建完成一行或一列积分图向量的积分值便计算各滤波器的三种模板作用于所述采样点的响应值,直至可以计算出hessian矩阵的行列式的值,计算得到hessian矩阵的多个行列式的值,不需要存储完整的hessian矩阵的行列式,每计算出一个行列式的值,即用于非极大值抑制;对hessian矩阵的多个行列式的值进行非极大值抑制也采用流水线方式,对得到hessian矩阵的多个行列式的值时进行非极大值抑制,由此,本实施例不仅在执行上述各操作的模块之间采用了流水线方式的数据处理,并且在每个模块内部也实现了数据的流水线方式的处理,从而降低了对数据存储容量的要求,提高了计算的并发度,从而提高了整个过程的计算速度,进而提高了特征点的检测速度。
107.可选地,在其中一些实现方式中,在104中,可以采用每一级并行计算、多级流水计算的方式,对预设大小的图像块的灰度值进行log2m级流水的并行累加计算。其中,m为预设大小的字节数。
108.本公开实施例中,图像块的大小为m个字节,采用每一级并行计算、多级流水计算的方式,对预设大小的图像块的灰度值进行log2m级流水的并行累加计算,具体可以是,在第1级并行累加计算中,分别将m个字节按照顺序每两个分为一组,分别将每组中的第一个字节累加到第二个字节上作为第二个字节的值;在第2级并行累加计算中,分别以第1级并行累加计算中的每两组分一组,将在每一组中,分别将第1级并行累加计算后前一组中第二个字节的取值累加到后一组中各字节上作为各字节的取值;在第3级并行累加计算中,分别以第2级并行累加计算中的每两组分一组,将在每一组中,分别将第2级并行累加计算后前一组中第二个字节的取值累加到后一组中各字节上作为各字节的取值;对后续各级别累加计算的方式,以此类推。
109.如图2所示,为本公开实施例中进行5级流水的并行累加的一个示意图。该实施例以应用于fpga,以第一方向为列、第二方向为行为例,由于fpga的pci

e通道的最大带宽是64gbps,在fpga的主频定为250m时,一个fpga周期可以接收到256bit的数字,即32byte(32个像素点)的数据,则需要通过5级(log232次)流水的并行累加计算完成32byte数据的累加,得到该图像块的积分向量,对应于图5所示积分图中一个积分图向量的积分值。图5中的每个积分图向量对应于图2中32个像素点的积分向量。
110.图3为现有技术对8btye图像块的灰度值进行累加计算的一个示意图。如图3所示,在现有技术中,需要依次将每一个字节的值累加到下一个字节,每次累加计算周期中只能完成一次累加计算,先把第2个字节位置的值算出来,才能算第3个字节位置的值,因为第3个字节位置的计算是1 2 3,需要第2个字节位置的计算结果1 2;同理,第4个字节位置的累加计算要等待第3个字节位置累加计算完成,由于累加是按照字节顺序依次执行,后面字节的累加必须等待前边字节的累加计算完成才能开始计算,因此需要7(即8

1)个累加计算周期才能计算完该8btye图像块的灰度值。
111.图4为本公开实施例对图3所示8btye图像块的灰度值进行并行累加计算的一个示意图。如图4所示,在第1个累加计算周期中,分别将第1、2字节,第3、4字节,第5、6字节,第7、8字节,划分为一组,分别将每组中的第1个字节累加到第2个字节上作为第2个字节的值;在第2个累加计算周期中,分别将第1、2、3、4字节划分为一组,将第5、6、7、8字节划分为一组,
将第2个字节上的值分别累加到第3、4字节上,将第6个字节上的值分别累加到第7、8字节上;在第3个累加计算周期中,分别将第1、2、3、4、5、6、7、8字节划分为一组,将第4个字节上的值分别累加到第5、6、7、8字节上,从而通过3级(log28次)流水的并行累加计算,只需3个累加计算周期,即可计算完该8btye图像块的灰度值,提高了计算的并发度,大大提高了计算效率,节省了计算时间,从而提高了特征点的检测速度。
112.可选地,在其中一些实现方式中,在106中,可以采用第一预设计算方式,分别由当前图像块的积分向量与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分图向量的积分值。
113.本公开实施例中,积分图(也称为:积分图像)是与通过102接收的原始的灰度图像大小一致的图像,积分图中某像素点的值(即积分值)是灰度图像中该位置的像素点与左上角原点所围矩形区域的灰度值之和(简称为:灰度和)。
114.如图5所示,为本公开实施例中构建得到积分图中各积分图向量的积分值的一个示意图。本公开实施例以逐列接收高度为256的灰度图像中32byte的图像块为例进行说明,则通过8个时钟周期可以收到一列高为256的灰度图像,构建积分图需要累加灰度图像的积分向量,如附图5所示,需要更新积分图向量i
(i,3)
在积分图中的积分值i
σ(i,3)

115.例如,可以通过如下方式由当前图像块的积分向量i
(i,j)
与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分图向量的积分值i
∑(i,j)

116.i
∑(i,j)
=i
σ(i

1,j)
i
σ(i,j

1)

i
∑(i

1,j

1)
i
(i,j)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(1)
117.上述公式(2)中,i为当前一个第一方向上采样点在第一方向上的序号(即上述实施例中的当前一列的列号),j为预设大小的图像块的积分向量在第二方向上的序号(继续上述实施例,取值范围从1到8);i
(i,j)
为在第一方向上序号为i的第j个积分向量,i
∑(i,j)
为累加计算后当前积分图向量的积分值。
118.作为一个具体示例,在具体实现中,可以通过如下方式由当前图像块的积分向量i
(i,j)
与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分图向量的积分值i
∑(i,j)

[0119][0120]
上述公式(2)中,i
σ(i,j)
为只累加第一方向上序号为i的(继续上述实施例,即第i列)、在第二方向上前j(继续上述实施例,j的取值为1到8)个积分向量后的向量和,为积分图中第一方向上序号为i

1的第j个积分图向量的积分值,表示的初始值为0。
[0121]
由当前列的积分向量构建与原灰度图像高度一致的积分图中一列的积分值,即通过上述方式使用当前列对应的全部积分向量和积分图中上一列的积分值合并计算当前列的积分值。上述注意公式(2)中加上i
σ(i,j)
后又赋值给了这是因为上一列
的积分值计算过后就再也用不到了,可以将上一列的积分值作为旧值覆盖掉,而当前列的积分值相对于新的下一列积分值同样会变成旧值将被覆盖掉,因为的值是不断更新变化的,列号对于其没有意义,所以用代替了各列号。
[0122]
图6为本公开基于surf算法的特征点检测方法另一个实施例的流程图。如图6所示,在图1所示实施例的基础上,操作108可以包括:
[0123]
1082,响应于积分图中当前一个第一方向上积分图向量的积分值构建完成,采用多个大小不同的滤波器,在当前一个第一方向上,同时对当前一个第一方向上各积分值对应的采样点进行滤波处理,得到多个大小不同的滤波器中各滤波器的三种模板的滤波处理中间结果。
[0124]
由于不同大小的滤波器的采样间隔不一样,有些像素点是采样不到的,本公开实施例中的采样点即被滤波器采样到的像素点。如上述实施例中,图2中的每个积分向量里包含了32个像素点,每个像素点都有可能被采样到,则对应到图5中每个积分值的累加计算,对应于各积分图向量中32个像素点的并行计算。
[0125]
1084,将当前一个第一方向上各积分值对应的采样点对应的滤波处理中间结果,按照预设顺序,分别对应存储在长度与各滤波器的大小匹配的移位寄存器中。
[0126]
1086,采用第二预设计算方式,基于各滤波器的大小匹配的移位寄存器中的滤波处理中间结果计算各滤波器的三种模板作用于采样点的响应值。
[0127]
1088,分别根据各滤波器的三种模板作用于采样点的响应值和三种模板的响应区域的面积,计算各滤波器的hessian矩阵的行列式的值,得到hessian矩阵的多个行列式的值。
[0128]
1090,将hessian矩阵的多个行列式的值存储在各滤波器对应的存储空间中。
[0129]
可选地,在其中一些实现方式中,上述各实施例中,所述多个大小不同的滤波器,可以包括:p组滤波器,每组滤波器包括4层滤波器,所述p组滤波器中第p组滤波器中4层滤波器的大小分别为9*2
p
‑1、15*2
p
‑1、21*2
p
‑1、17*2
p
‑1,其中,p的取值为大于0的整数,例如,p的取值可以为4,第p组滤波器的采样间隔为2
p
‑1。相应地,在操作110中,可以分别对每组滤波器中相邻三层滤波器对应的27个hessian矩阵的行列式的值进行非极大值抑制,通过对每个采样点共进行多次非极大值抑制,得到满足极大值条件的像素点作为特征点。
[0130]
为了满足特征点检测的尺度不变性,需要采用多个大小(即核尺寸)不同的滤波器对采样点在不同尺度上进行滤波处理。在一个具体示例中,所述多个大小不同的滤波器,包括4组滤波器,每组滤波器包括4层滤波器,第1组滤波器中的4层滤波器的大小分别为{9,15,21,27},第2组滤波器中的4层滤波器的大小分别为{18,30,42,54},第3组滤波器中的4层滤波器的大小分别为{36,60,84,108},第4组滤波器中的4层滤波器的大小分别为{72,120,168,216}。
[0131]
不同大小滤波器的三种模板的计算模式相同,以9
×
9大小的滤波器为例,其有三种模板,如图7(a)、图7(b)、图7(c)所示,分别为dxx模板、dyy模板、dxy模板的一个示意图,其中dxx模板为沿x方向的二阶微分算子,dyy模板为沿y方向的二阶微分算子,dxy模板为沿xy方向的二阶微分算子,模板中具有灰色区域、黑色区域及白色区域,模板中的灰色区域不参与运算,其权重为0;对于dxx和dyy模板,其白色区域的权重均为1,黑色区域的权重均为

2;对于dxy模板,其白色区域的权重为1,黑色区域的权重为

1。其他大小的各滤波器的三种模板的区域相间分布与9
×
9滤波器一致。对于第1组大小为{9,15,21,27}的滤波器,其各区域的划分可以通过如下公式(3)表示:
[0132][0133]
上述公式(3)中,l
s

xx
为dxx模板白色区域、黑色区域的短边长度,l
s

yy
为dyy模板中白色区域、黑色区域的短边长度;l
l

xx
为dxx模板白色区域、黑色区域的长边长度,l
l

yy
为dyy模板中白色区域、黑色区域的长边长度;l
xy
为dxy模板中白色区域、黑色区域的边长;size为第1组滤波器中各滤波器的大小。第2组滤波器比第2组的大小大了一倍,所以划分的区域也相应翻倍;第2组滤波器在第2组滤波器的基础上翻倍,以此类推。
[0134]
计算每个模板的响应值就是计算每个区域的灰度和,将每个区域的灰度和乘以各自的权重并相加,再将得到的结果除以所有黑色区域和白色区域的面积(即响应区域的面积)之和,从而实现归一化。在积分图中,如附图8所示,任意矩形区域的灰度和可通过如下公式(4)计算:
[0135][0136]
上述公式(4)中,x为积分图中某点的横坐标,y为积分图中某点的纵坐标,recabcd为点a、b、c、d所围成的矩形区域(例如图7(a)中除灰色区域外的矩形区域四个角上的点),i
∑(a)
为积分图中点a的积分值,i
∑(b)
为积分图中点b的积分值,i
∑(c)
为积分图中点c的积分数值,i
∑(d)
为积分图中d的积分值。
[0137]
为了变便于分析,记diff
ca
=i

(c)

i

(a),则上述公式(4)可简写为以下公式(5):
[0138][0139]
若将滤波器中的白色区域、黑色区域对应为附图8中的矩形区域,则可根据公式(5)计算出每个区域的灰度和。将灰度和进行归一化的结果就是该采样点的hessian矩阵的行列式的值(简称为:hessian值),进行归一化时需要除以各个区域的面积之和,每个模板的区域面积之和可以通过如下公式(6)计算得到:
[0140][0141]
公式(6)中,t的取值范围是1到4,表示组数;s取值范围是1到4,表示每组滤波器中的层数;size是每个滤波器的大小;size与δ是三倍的关系。通过附图8可知,计算矩形区域abcd的灰度和只需知道点a、b、c、d处的积分值,而通过积分向量累加后很容易得到一列积
分值中任意一积分图向量的积分值;同时点a、c位于同一列,点b、d位于同一列,并且积分图也是逐列发送的,所以对于每一列积分值,如果该列积分值落入了某一采样点滤波器模板的作用范围内,就可以通过临界点(即a、c这样的点对儿)计算出当前列相对于模板的diff(差分)值,考虑到某一列的diff值对多个采样点的滤波器模板都起作用,本公开实施例可以将各列的diff值进行暂存在移位寄存器的队列中,能够降低不同滤波器模板作用于同一列积分值带来的重复计算。
[0142]
在具体实现中,将各列的diff值进行暂存在移位寄存器的队列中时,可以分别为每个滤波器配置一个长度与该滤波器的大小相同的移位寄存器的队列。例如,对于大小为9的滤波器,可以设置长度为9的移位寄存器的队列。对每列累加后的积分值,计算相对于该采样点模板的diff值,每当有新一列的diff值计算出来,先将该队列中的数据同步向右移位,然后将新的一列的diff值存入队列的首部,由于队列的大小于滤波器模板的大小相同,通过不断的移位计算,当某一模板第一列的diff值移位到队列末尾时,该模板的最后一列diff值刚好存入队列首部,此时计算该模板响应值所需要的全部diff值都存在该队列中了。通过这种移位队列的方式可流式计算各滤波器的模板作用于采样点的响应值。得到响应值后,可通过如下公式(7)可计算各滤波器的hessian矩阵的行列式的值:
[0143][0144]
上述公式(7)中,det是hessian矩阵的行列式的值,dxx、dyy、dxy为同一滤波器的三种模板作用于某采样点的响应值,sxx、syy、sxy为三种模板响应区域的面积,用于将结果归一化,其中sxx=syy。式中的0.81(即81/100)是用于平衡误差的平衡因子,其取值可以根据需要预先设置,并可以根据实际需求更改,此处为了避免过早在计算中引入浮点数计算,故表示成了分数形式。
[0145]
以下分别针对滤波器的三种模板,示例性说明计算各滤波器的三种模板作用于采样点的响应值的具体实现过程。
[0146]
图9(a)

图9(d)是本公开实施例中计算dxx值的一个示意图。如图9(a)

图9(d)所示,在其中一种具体示例中,对于dxx模板,得到计算dxx值的过程如下:
[0147]
在步骤11中,如图9(a)所示,当接收到积分图中第0列(相对于滤波器而言)积分图向量的积分值,计算其diff值diff0并存到一个大小与当前滤波器的大小一样的队列的首部。之后对接收到的每一列积分图向量的积分值,计算其diff值,然后先将队列的值右移,再将计算出的新一列diff值存到队列的首部;
[0148]
在步骤12中,如图9(b),当接收到第δ列积分图向量的积分值,计算其diff值diff1,此时可以计算出第一个白色区域的灰度和,为diff1

diff0。对于dxx模板,白色区域的权重为1,所以该部分的dxx值(未归一化)为dxx=diff1

diff0。将dxx值存到diff0的位置。右移队列,并将diff1存到队列的首部;
[0149]
在步骤13中,如图9(c),当接收到第2δ列积分图向量的积分值,计算其diff值diff2,此时可以计算出黑色区域的灰度和,为diff2

diff1。对于dxx模板,黑色区域的权重为

2,所以该区域的dxx值(未归一化)为

2(diff2

diff1)。将该值加到dxx,则dxx=

2(diff2

diff1) diff1

diff0=

diff0 3diff1

2diff2。将新的dxx值存到上一次计算出的
dxx值的位置。右移队列,并将diff2存到队列的首部;
[0150]
在步骤14中,如图9(d),当接收到第3δ列积分图向量的积分值,计算其diff值diff3,此时可以计算出第二个白色区域的灰度和,为diff3

diff2。对于dxx模板,白色区域的权重为1,所以该区域的dxx值(未归一化)为diff3

diff2,将该值加到dxx,即:
[0151]
dxx=

diff0 3diff1

3diff2 diff3
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(8)
[0152]
最后,将未归一化的dxx值除以三个区域的面积和,从而实现归一化,得到归一化的dxx值。
[0153]
图10(a)

图10(b)是本公开实施例中计算dyy值的一个示意图。如图10(a)

图10(b)所示,在其中一种具体示例中,对于dyy模板,得到计算dyy值的过程如下:
[0154]
在步骤21中,如图10(a),当接收到第(δ 1)/2列(结果上取整)积分图向量的积分值,分别计算三个区域的灰度和diff00、diff01、diff02,并各自乘以权重1、

2、1,然后求和得到diff0,diff0=diff00

2diff01 diff02。将计算出的diff0存入一个大小与当前滤波器的大小一样的队列的首部。对于之后发送的每一列积分图向量的积分值,计算其diff值,然后右移队列,并将计算出的新的一列的diff值存入队列的首部;
[0155]
在步骤22中,如图10(b),当接收到第(5δ

1)/2列(结果下取整)积分图向量的积分值,计算三个区域的灰度和diff10、diff11、diff12,并分别乘以权重1、

2、1,然后求和得到diff1,diff01=diff10

2diff11 diff12。diff1与diff0的差值就是最终的dyy值,即:
[0156]
dyy=

diff00 2diff01

diff02 diff10

2diff11 diff12
ꢀꢀꢀꢀꢀꢀꢀ
公式(9)
[0157]
图11(a)

图11(d)是本公开实施例中计算dxy值的一个示意图。如图11(a)

图11(d)所示,在其中一种具体示例中,对于dxy模板,得到计算dxy值的过程如下:
[0158]
在步骤31中,如图11(a)所示,当接收到第δ/3列(相对于滤波器而言)积分图向量的积分值,计算两个区域的灰度和diff00、diff01,并分别乘以各自的权重1、

1,然后求得diff0=diff00

diff01。将diff0存到一个大小与滤波器的大小一样的队列的首部。之后对发送的每一列积分值,计算其diff值,然后将队列的值右移,并计算出新的一列diff值存到队列的首部;
[0159]
在步骤32中,如图11(b)所示,当接收到第4δ/3列积分图向量的积分值,计算两个区域的灰度和diff10、diff11,并分别乘以各自的权重1、

1,然后求得diff1=diff10

diff11。此时可以计算出局部dxy=diff1

diff0。将dxy存入diff0的位置,右移队列,并将diff1存入队列的首部;
[0160]
在步骤33中,如图11(c)所示,当接收到第5δ/3列积分图向量的积分值,计算两个区域的灰度和diff20、diff21,并分别乘以权重

1、1,为了统一diff的计算方法,可以令diff2=diff20

diff21(与实际的diff值是相反数的关系)。将diff2与dxy相加存到dxy的位置,右移队列,将diff2存到队列的首部;
[0161]
在步骤34中,如图11(d)所示,当接收到第8δ/3列列积分图向量的积分值,计算两个区域的灰度和diff30、diff31,并分别乘以权重

1、1,为了统一diff的计算方法,可以令diff3=diff30

diff31(与实际的diff值是相反数的关系)。将dxy

diff3的结果存到dxy的位置,右移队列,将diff3存到队列的首部。经过四次计算可得到最终的dxy值,即:
[0162]
dxy=

diff00 diff01 diff10

diff11 diff20

diff21

diff30 diff31
ꢀꢀ
公式(10)
[0163][0164]
需要说明的是,上述计算dxx值、dyy值及dxy值是并行执行的。由于采用流式计算的方式,需要等一个模板所有区域的diff值都计算完毕才能计算最终的响应值,故需要存储空间暂存diff值,不同滤波器可以根据大小调整存储空间的大小。
[0165]
可选地,在其中一些实现方式中,在110中,可以响应于各滤波器对应的存储空间中存储有采样点的hessian矩阵的多个行列式的值时,分别对每三个大小相邻的三个滤波器对应的hessian矩阵的行列式的值进行非极大值抑制,得到满足极大值条件的特征点。
[0166]
非极大值抑制需要相邻三层滤波器计算出的hessain矩阵的行列式的值行列式的值,与上中下共26个邻域内的hessain矩阵的行列式的值(加上自身一共27个hessian矩阵的行列式的值)进行比较。由于滤波器越大,hessian矩阵的行列式图像越小,所以比较时以三层滤波器中最大的滤波器为基准。以第1组滤波器为例,需要两次非极大值抑制,分为{9,15,21}三层的比较及{15,21,27}三层的比较。如图12所示,为本公开实施例中{9,15,21}三层进行非极大值抑制时的一个模式图。从图12中可以看出,对于21
×
21的滤波器,当接收到积分图中第21列积分图向量的积分值后,其第一个位于第11列的hessian矩阵的行列式的值才可以计算。但是对于9
×
9的滤波器,当接收到积分图中第15列积分图向量的积分值后,就可以计算出该位置处的hessian矩阵的行列式的值。两个滤波器间距为6,由于采用流式方式计算hessian矩阵的值,则对于9
×
9的滤波器,这6列的hessian矩阵的行列式的值不可以丢弃,否则之后的非极大值抑制将不能完成。同时,要进行非极大值抑制,需要3个相邻的hessian矩阵行列式,与上下两行构成一个9个邻域hessian矩阵行列式。因此,对于9
×
9的滤波器,需要一个大小为6 3=9的存储空间存储hessian矩阵的行列式的值。同理,对于15
×
15的滤波器,它与21
×
21滤波器间距为3,所以需要大小为3 3=6的存储空间存储hessian矩阵的行列式的值。对于21
×
21的滤波器,理论上只需要大小为3的存储空间用于存储需要构建9个邻域hessian矩阵行列式。但是21
×
21的滤波器,在{15,21,27}三层做非极大值抑制时,其与最大滤波器27
×
27的间距为3,需要额外的3个存储空间存储这3个hessian矩阵行列式,所以需要3 3=6的存储空间。其他组的滤波器,由于采样间隔翻倍,所以在第1组滤波器的基础上存储空间的大小也需要翻倍,本公开实施例不再逐一说明。
[0167]
本公开实施例提供的任一种基于surf算法的特征点检测方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备和服务器等。或者,本公开实施例提供的任一种基于surf算法的特征点检测方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种基于surf算法的特征点检测方法。下文不再赘述。
[0168]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0169]
图13为本公开基于surf算法的特征点检测装置一个实施例的结构示意图。该实施例的特征点检测装置可用于实现本公开上述各特征点检测方法实施例。如图13所示,该实施例的装置特征点检测包括:接收模块,积分向量计算模块,积分值计算模块,hessian矩阵计算模块,非极大值抑制模块,和输出模块。其中:
[0170]
接收模块,用于按照由第一方向至第二方向的顺序,以预设大小为单位,通过pci

e依次接收灰度图像中第一方向上所述预设大小的图像块的灰度值;其中,所述由第一方向至第二方向的顺序,包括:逐行、逐列的顺序,或者逐列、逐行的顺序。
[0171]
积分向量计算模块,用于采用每一级并行计算、多级流水计算的方式,对所述预设大小的图像块的灰度值进行多级流水的并行累加计算,得到所述预设大小的图像块的积分向量。
[0172]
积分值计算模块,用于按照所述由第一方向至第二方向的顺序,依次基于各图像块的积分向量构建积分图中一个积分图向量的积分值,并将所述积分图向量的积分值存储在寄存器中;其中,所述积分图与所述灰度图像在所述第一方向上的高度相同。
[0173]
hessian矩阵计算模块,用于响应于所述积分图中当前一个第一方向上积分图向量的积分值构建完成,采用多个大小不同的滤波器,分别对所述当前一个第一方向上各积分值对应的采样点进行滤波处理,得到所述多个大小不同的滤波器中各滤波器的三种模板作用于所述采样点的响应值,分别根据各滤波器的三种模板作用于所述采样点的响应值和所述三种模板的响应区域的面积,计算各滤波器的hessian矩阵的行列式的值,得到hessian矩阵的多个行列式的值;其中,所述三种模板的响应值包括:沿x方向的dxx模板的响应值,沿y方向的dyy模板的响应值和沿xy方向的dxy模板的响应值。
[0174]
非极大值抑制模块,对所述hessian矩阵的多个行列式的值进行非极大值抑制,得到满足极大值条件的特征点。
[0175]
输出模块,用于输出所述特征点在所述灰度图像中的位置。
[0176]
基于本实施例,由于采用多级流水的并行累加计算各图像块的积分向量,提高了计算的并发度,从而提高了特征点的检测速度;由于积分向量的计算及积分图的构建都采用流水线方式,每构建完成积分图中一行或一列积分图向量的积分值便进行后续计算各滤波器的hessian矩阵的行列式的值,不需要存储完整的积分图,只需计算出积分图的一列或一列积分值即可进行后续hessian矩阵的行列式的值的计算;各滤波器的hessian矩阵的行列式的值计算也采用流水线方式,每构建完成一行或一列积分图向量的积分值便计算各滤波器的三种模板作用于所述采样点的响应值,直至可以计算出hessian矩阵的行列式的值,计算得到hessian矩阵的多个行列式的值,不需要存储完整的hessian矩阵的行列式,每计算出一个行列式的值,即用于非极大值抑制;对hessian矩阵的多个行列式的值进行非极大值抑制也采用流水线方式,对得到hessian矩阵的多个行列式的值时进行非极大值抑制,由此,本实施例不仅在执行上述各操作的模块之间采用了流水线方式的数据处理,并且在每个模块内部也实现了数据的流水线方式的处理,从而降低了对数据存储容量的要求,提高了计算的并发度,从而提高了整个过程的计算速度,进而提高了特征点的检测速度。
[0177]
可选地,在其中一些实现方式中,接收模块,具体用于:采用每一级并行计算、多级流水计算的方式,对所述预设大小的图像块的灰度值进行log2m级流水的并行累加计算;其中,m为所述预设大小的字节数。
[0178]
可选地,在其中一些实现方式中,积分值计算模块,具体用于:按照所述由第一方向至第二方向的顺序,采用第一预设计算方式,依次由所述预设大小的图像块的积分向量与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分图向量的积分值,并将所述积分图向量的积分值存储在寄存器中。
[0179]
可选地,在其中一些实现方式中,积分值计算模块,具体用于通过如下方式由所述预设大小的图像块的积分向量与相邻前一个第一方向上积分图向量的积分值,计算得到积分图中当前积分图向量的积分值:
[0180]
i
∑(i,j)
=i
∑(i

1,j)
i
∑(i,j

1)

i
∑(i

1,j

1)
i
(i,j)
[0181]
其中,i为所述当前一个第一方向上采样点在所述第一方向上的序号,j为所述预设大小的图像块的积分向量在所述第二方向上的序号;i
(i,j)
为在所述第一方向上序号为i的第j个积分向量,i
∑(i,j)
为所述当前积分图向量的积分值。
[0182]
可选地,在其中一些实现方式中,hessian矩阵计算模块包括:滤波处理单元,第一存储单元,第一计算单元,第二计算单元和第二计算单元。其中:
[0183]
滤波处理单元,用于响应于所述积分图中当前一个第一方向上积分图向量的积分值构建完成,采用所述多个大小不同的滤波器,在所述当前一个第一方向上,同时对所述当前一个第一方向上的采样点进行滤波处理,得到所述多个大小不同的滤波器中各滤波器的三种模板的滤波处理中间结果;
[0184]
第一存储单元,用于将所述当前一个第一方向上各积分值对应的采样点对应的滤波处理中间结果,按照预设顺序,分别对应存储在长度与所述各滤波器的大小匹配的移位寄存器中;
[0185]
第一计算单元,用于采用第二预设计算方式,基于所述各滤波器的大小匹配的移位寄存器中的滤波处理中间结果计算所述各滤波器的三种模板作用于所述采样点的响应值;
[0186]
第二计算单元,用于分别根据各滤波器的三种模板作用于所述采样点的响应值和所述三种模板的响应区域的面积,计算各滤波器的黑塞hessian矩阵的行列式的值,得到hessian矩阵的多个行列式的值;
[0187]
第二计算单元,用于将所述hessian矩阵的多个行列式的值存储在所述各滤波器对应的存储空间中。
[0188]
可选地,在其中一些实现方式中,非极大值抑制模块,具体用于:响应于所述各滤波器对应的存储空间中存储有所述采样点的hessian矩阵的多个行列式的值,分别对每三个大小相邻的三个滤波器对应的hessian矩阵的行列式的值进行非极大值抑制,得到满足极大值条件的特征点。
[0189]
可选地,在其中一些实现方式中,所述多个大小不同的滤波器,包括:p组滤波器,每组滤波器包括4层滤波器,所述p组滤波器中第p组滤波器中4层滤波器的大小分别为9*2
p
‑1、15*2
p
‑1、21*2
p
‑1、17*2
p
‑1,其中,p的取值为大于0的整数,所述第p组滤波器的采样间隔为2
p
‑1。相应地,该实施例中,非极大值抑制模块,具体用于:分别对每组滤波器中相邻三层滤波器对应的27个hessian矩阵的行列式的值进行非极大值抑制,对所述采样点共进行2
p
次非极大值抑制,得到满足极大值条件的特征点。
[0190]
另外,本公开实施例还提供了一种电子设备,包括:
[0191]
存储器,用于存储计算机程序;
[0192]
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述任一实施例所述的基于surf算法的特征点检测方法。
[0193]
下面,参考图14来描述根据本公开实施例的电子设备。该电子设备可以是第一设
备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
[0194]
图14图示了根据本公开实施例的电子设备的框图。
[0195]
如图14所示,电子设备包括一个或多个处理器和存储器。
[0196]
处理器可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
[0197]
存储器可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现上文所述的本公开的各个实施例的基于surf算法的特征点检测方法以及/或者其他期望的功能。
[0198]
在一个示例中,电子装置还可以包括:输入装置和输出装置,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
[0199]
此外,该输入装置还可以包括例如键盘、鼠标等等。
[0200]
该输出装置可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出装置等等。
[0201]
当然,为了简化,图14中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
[0202]
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的基于surf算法的特征点检测方法中的步骤。
[0203]
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c 等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
[0204]
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的基于surf算法的特征点检测方法中的步骤。
[0205]
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0206]
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
[0207]
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0208]
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
[0209]
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
[0210]
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
[0211]
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
[0212]
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜