特征点提取方法、装置、计算机设备及可读存储介质与流程

文档序号:32061202发布日期:2022-11-04 23:14阅读:79来源:国知局
特征点提取方法、装置、计算机设备及可读存储介质与流程

1.本技术涉及机器视觉技术领域,尤其涉及一种特征点提取方法、装置、计算机设备及可读存储介质。


背景技术:

2.视觉同步定位与建图(visual simultaneous localization and mapping,vslam)系统可以通过图像采集装置对环境中的图像信息进行采集,推测图像采集装置在环境中的运动情况,实现对图像采集装置的定位。同时还将对整个环境进行建模,建立一个全局一致的地图。
3.然而,现有的视觉同步定位与建图系统在进行特征点提取时,需要大量计算资源,导致计算效率低。


技术实现要素:

4.有鉴于此,本技术实施例的目的是提供一种特征点提取方法、装置、计算机设备及可读存储介质,能够解决现有视觉同步定位与建图系统在进行特征点提取时,计算效率低的问题。
5.为了解决上述技术问题,本技术是这样实现的:
6.第一方面,本技术实施例提供了一种特征点提取方法,包括:
7.利用光流法获取图像采集装置采集的当前帧图像中的第一角点;
8.利用所述第一角点计算所述图像采集装置的位姿;
9.利用所述位姿,将所述第一角点对应的第一地图点投影至像素平面,并计算所述第一地图点在所述像素平面的理论投影位置与实际投影位置的距离,将距离小于预设距离阈值的第一地图点作为内点;
10.判断所述内点的数量是否大于预设数量阈值且与所述第一地图点的数量的比值大于预设比值阈值;
11.若是,则将所述第一角点作为提取结果;
12.若否,则将所述当前帧图像作为关键帧,并利用特征点检测更新所述第一角点,将更新后的所述第一角点作为提取结果。
13.根据本技术公开的一种具体实施方式,所述利用特征点检测更新所述第一角点,将更新后的所述第一角点作为提取结果,包括:
14.利用所述当前帧图像创建图像金字塔,并提取所述图像金字塔上的所有第二角点;
15.利用所述第二角点对所述第一角点进行矫正,得到第三角点;
16.利用所述当前帧图像中的所有地图点提取符合预设条件的第四角点;
17.根据所述第三角点和所述第四角点的数量,将所述第一角点的总数补充至预设角点数量;
18.将预设角点数量的所述第一角点作为提取结果。
19.根据本技术公开的一种具体实施方式,所述利用所述第二角点对所述第一角点进行矫正,得到第三角点,包括:
20.根据第一角点的位置信息,在所有第二角点中确定在预设范围内的第五角点,并计算所述第五角点的描述符;
21.根据所述第五角点的描述符,确定所述第五角点中与所述第一角点距离最近的第五角点,作为第三角点。
22.根据本技术公开的一种具体实施方式,所述利用所述当前帧图像中的所有地图点提取符合预设条件的第四角点,包括:
23.基于所述图像采集装置的位姿,对所述当前帧图像进行空间转换得到三维场景,将所述三维场景中的所有地图点作为候选地图点;
24.将所述候选地图点投影至相机平面,根据候选地图点的位置信息,在所有候选地图点中确定在预设范围内的第六角点,并计算所述第六角点的描述符;
25.根据所述第六角点的描述符,确定所述第六角点中与所述候选地图点距离最近的第七角点,作为第四角点。
26.根据本技术公开的一种具体实施方式,所述根据所述第三角点和所述第四角点的数量,将所述第一角点的总数补充至预设角点数量,包括:
27.根据当前帧图像的预设角点数量、所述第三角点的数量、所述第四角点的数量,确定待补充角点的待补充数量;
28.在所述第二角点中剔除与所述第三角点、所述第四角点距离小于预设距离阈值的角点,得到剩余角点;
29.在所述剩余角点中选取所述待补充数量的待补充角点,以将所述第一角点的总数补充至预设角点数量。
30.根据本技术公开的一种具体实施方式,所述图像金字塔的层数为8层,比例为1.2。
31.根据本技术公开的一种具体实施方式,所述方法还包括:
32.利用所述提取结果构建地图。
33.第二方面,本技术实施例提供了一种特征点提取装置,包括:
34.角点获取模块,用于利用光流法获取图像采集装置采集的当前帧图像中的第一角点;
35.位姿计算模块,用于利用所述第一角点计算所述图像采集装置的位姿;
36.内点确定模块,用于利用所述位姿,将所述第一角点对应的第一地图点投影至像素平面,并计算所述第一地图点在所述像素平面的理论投影位置与实际投影位置的距离,将距离小于预设距离阈值的第一地图点作为内点;
37.判断模块,用于判断所述内点的数量是否大于预设数量阈值且与所述第一地图点的数量的比值大于预设比值阈值;
38.第一提取结果确定模块,用于若是,则将所述第一角点作为提取结果;
39.第二提取结果确定模块,用于若否,则将所述当前帧图像作为关键帧,并利用特征点检测更新所述第一角点,将更新后的所述第一角点作为提取结果。
40.第三方面,本技术实施例提供了一种计算机设备,包括处理器和存储器,所述存储
器上存储有程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
41.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
42.本技术实施例中提供的特征点提取方法,利用光流法获取图像采集装置采集的当前帧图像中的第一角点;利用所述第一角点计算所述图像采集装置的位姿;利用所述位姿,将所述第一角点对应的第一地图点投影至像素平面,并计算所述第一地图点在所述像素平面的理论投影位置与实际投影位置的距离,将距离小于预设距离阈值的第一地图点作为内点;判断所述内点的数量是否大于预设数量阈值且与所述第一地图点的数量的比值大于预设比值阈值;若是,则将所述第一角点作为提取结果;若否,则将所述当前帧图像作为关键帧,并利用特征点检测更新所述第一角点,将更新后的所述第一角点作为提取结果。这样,无需对每一帧都进行特征点的提取与匹配,提高了计算效率,进而可以提高vslam系统的运行速度。
附图说明
43.为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对本技术保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
44.图1示出了本技术实施例提供的一种特征点提取方法的流程示意图;
45.图2示出了本技术实施例提供的一种特征点提取装置的结构示意图。
具体实施方式
46.下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。
47.通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
48.在下文中,可在本技术的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
49.此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
50.除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本技术的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含
义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本技术的各种实施例中被清楚地限定。
51.为了解决现有视觉同步定位与建图系统在进行特征点提取时,计算效率低的技术问题,本技术提供了一种特征点提取方法。请参阅图1,图1为本技术实施例提供的特征点提取方法的流程示意图,该方法包括以下步骤:
52.步骤110、利用光流法获取图像采集装置采集的当前帧图像中的第一角点。
53.具体的,图像采集装置通常被设置在无人机、扫地机器人等电子设备,实时采集电子设备周围环境的图像信息,得到视频图像。图像采集装置为单目相机、双目相机、rgb-d相机中的任意一种,可以根据实际需求进行设定,本技术实施例对此不做限定。
54.可以理解的是,在图像采集装置采集图像后,可以先对图像进行预处理,预处理可以包括滤波操作和/或去畸变处理。其中,滤波操作可以去除图像中的噪声,减少干扰;去畸变处理可以降低图像的扭曲程度,还原真实场景。通过预处理可以提高图像的质量,进而提升后续处理过程的准确性。
55.在具体的实施例中,可以采用lucas kanade光流算法对当前帧图像中的第一角点进行搜索匹配。角点(corner point)就是极值点,即在某方面属性特别突出的点,是在某些属性上强度最大或者最小的孤立点、线段的终点。对于图像而言,图像的角点一般指的是物体轮廓线的连接点。角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,使得信息的含量很高,有效地提高了计算的速度,有利于图像的可靠匹配,使得实时处理成为可能。对于同一场景,即使视角发生变化,角点通常具备稳定性质的特征。正是由于这一稳定的性质,角点被应用于三维场景重建运动估计、目标跟踪、目标识别、图像配准与匹配等计算机视觉领域。同时,由于光流法是通过比较连续两帧的差异来估计运动物体移动的,lucas kanade光流算法需要预先知道待获取的角点在前一帧图像中的坐标,所以,实际上本步骤是从图像采集装置采集的视频中的第二帧图像开始,而对于第一帧图像则需要计算初始特征点。
56.步骤120、利用所述第一角点计算所述图像采集装置的位姿。
57.具体的,在经过步骤110之后,当前帧图像中的第一角点与上一帧图像中的角点进行了关联,由于上一帧图像中的角点与地图点存在对应关系,因此,可以得到当前帧图像中的第一角点与地图点的对应关系。进而利用地图点的坐标以及第一角点的坐标,采用pnp(perspective-n-point,透视n点)方法得到图像采集装置的位姿。pnp方法是指通过多对3d(3 dimension,三维)与2d匹配点,在已知或者未知图像采集装置内参的情况下,利用最小化重投影误差来求解图像采集装置外参的算法。
58.步骤130、利用所述位姿,将所述第一角点对应的第一地图点投影至像素平面,并计算所述第一地图点在所述像素平面的理论投影位置与实际投影位置的距离,将距离小于预设距离阈值的第一地图点作为内点。
59.具体的,利用步骤120中得到的图像采集装置的位姿,可以将当前帧中的第一角点对应的第一地图点投影至像素平面。进而,分别计算每个第一地图点在所述像素平面的理论投影位置与实际投影位置,将理论投影位置与实际投影位置之间的距离小于预设距离阈值的第一地图点作为内点。内点表示理论投影位置与实际投影位置之间的偏差较小。
60.可以理解的是,预设距离阈值的取值可以为5.991像素,可以根据实际需求设定,
本技术实施例对此不做限定。
61.步骤140、判断所述内点的数量是否大于预设数量阈值且与所述第一地图点的数量的比值大于预设比值阈值。
62.具体的,可以根据内点的数量判断光流跟踪效果。在具体的实施例中,采用内点的数量是否大于预设数量阈值,以及内点的数量与所述第一地图点的数量的比值是否大于预设比值阈值一起进行判断。
63.可以理解的是,预设数量阈值的取值和预设比值阈值可以根据实际需求设定,本技术实施例对此不做限定。例如,预设数量阈值的取值可以为50个,预设比值阈值可以为50%。
64.步骤150、若是,则将所述第一角点作为提取结果。
65.具体的,若内点的数量大于预设数量阈值,且内点的数量与所述第一地图点的数量的比值大于预设比值阈值,则说明光流跟踪状态较好,可以直接将第一角点作为提取结果,用于利用提取结果对当前帧图像的下一帧图像进行光流跟踪。
66.步骤160、若否,则将所述当前帧图像作为关键帧,并利用特征点检测更新所述第一角点,将更新后的所述第一角点作为提取结果。
67.具体的,若内点的数量小于等于预设数量阈值,和/或内点的数量与所述第一地图点的数量的比值小于等于预设比值阈值,则说明光流跟踪状态较差,将当前帧图像作为关键帧。并且,由于当前帧图像被确定为关键帧,因此,需要更新所述第一角点,将更新后的所述第一角点作为提取结果。
68.一种可选的实施方式中,所述更新所述第一角点,并将更新后的所述第一角点作为提取结果,包括:
69.利用当前帧图像创建图像金字塔,并提取所述图像金字塔上的所有第二角点;
70.利用所述第二角点对所述第一角点进行矫正,得到第三角点;
71.利用所述当前帧图像中的所有地图点提取符合预设条件的第四角点;
72.根据所述第三角点和所述第四角点的数量,将所述第一角点的总数补充至预设角点数量;
73.将预设角点数量的所述第一角点作为提取结果。
74.具体的,图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说,图像金字塔是同一图像不同分辨率的子图集合。图像金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似,层级越高,则图像越小,分辨率越低。在具体的实施例中,图像金字塔的层数可为8层,比例为1.2。
75.再利用角点提取算法提取图像金字塔上的所有第二角点。在具体的实施例中,采用的角点提取算法可以为fast(featuresfrom accelerated segment test,加速段测试的特征)。可以理解的是,还可以采用其他角点提取算法,例如sift(scale-invariant feature transform,尺度不变特征转换)、surf(speeded up robust features,加速鲁棒特征),可以根据实际需求设定,本技术实施例对此不作限定。
76.考虑到经过多帧光流跟踪后,角点位置可能逐渐变得不够精确。所以需要重新矫正角点坐标。在具体的实施例中,利用第二角点对第一角点进行矫正,进而得到第三角点;
可以理解的是,第三角点是第一角点的一部分。
77.然后,利用所述当前帧图像中的所有地图点提取符合预设条件的第四角点;根据所述第三角点和所述第四角点的数量,将角点的总数补充至预设角点数量;将预设角点数量的角点作为提取结果。可以理解的是,第四角点是第二角点的一部分。
78.一种可选的实施方式中,所述利用所述第二角点对所述第一角点进行矫正,得到第三角点,包括:
79.根据第一角点的位置信息,在所有第二角点中确定在预设范围内的第五角点,并计算所述第五角点的描述符;
80.根据所述第五角点的描述符,确定与所述第一角点距离最近的第五角点,作为第三角点。
81.具体的,对于每个第一角点,均包括[u,v,desc,layer]四个元素。其中,u、v为第一角点在当前帧图像上的坐标,desc为第一角点的描述符,layer表示第一角点所在金字塔的层数。在所有第二角点中确定在预设范围内的第五角点,预设范围为[u
±
s,v
±
s,layer
±
1],也即以第一角点的坐标构建矩形框且在第一角点的上下一层内。其中,s的取值可以为5像素,具体的可以根据实际需求设定,本技术实施例对此不作限定。可以理解的是,第五角点是第二角点的一部分,对第五角点进行筛选得到第三角点。
[0082]
再计算所述第五角点的描述符。一个描述符描述了一个角点在一定区域内的特性。
[0083]
最后将与第一角点距离最近的第五角点,作为第三角点。可以理解的是,如果计算得到的第五角点与第一角点之间的距离大于预设距离阈值,则将第五角点舍弃。还可以理解的是,预设距离阈值可以为50,可以根据实际需求设定,本技术实施例对此不做限定。
[0084]
在具体的实施例中,采用汉明距离进行距离计算。可以理解的是,还可以采用其他距离进行距离计算,本技术实施例对此不作限定。
[0085]
一种可选的实施方式中,所述利用所述当前帧图像中的所有地图点提取符合预设条件的第四角点,包括:
[0086]
基于所述图像采集装置的位姿,对所述当前帧图像进行空间转换得到三维场景,将所述三维场景中的所有地图点作为候选地图点;
[0087]
将所述候选地图点投影至相机平面,根据候选地图点的位置信息,在所有候选地图点中确定在预设范围内的第六角点,并计算所述第六角点的描述符;
[0088]
根据所述第六角点的描述符,确定所述第六角点中与所述候选地图点距离最近的第七角点,作为第四角点。
[0089]
具体的,所述当前帧图像为二维场景,需要转换为三维场景,将所述三维场景中的所有地图点作为候选地图点。再将所述候选地图点投影至相机平面,后续的逻辑与前文类似,在此不再赘述。可以理解的是,第六角点是第二角点的一部分,是计算第四角点的中间结果;对第六角点进行筛选得到第七角点,作为第四角点。
[0090]
由于地图点没有layer(层数)属性,但是拥有size(尺寸)属性表示地图点在尺度空间中的实际大小。若地图点与图像采集装置的距离为d,则size/d即为地图点在像素平面的投影大小。通过投影大小可以计算地图点在图像金字塔中的层数。
[0091]
一种可选的实施方式中,所述根据所述第三角点和所述第四角点的数量,将所述
第一角点的总数补充至预设角点数量,包括:
[0092]
根据当前帧图像的预设角点数量、所述第三角点的数量、所述第四角点的数量,确定待补充角点的待补充数量;
[0093]
在所述第二角点中剔除与所述第三角点、所述第四角点距离小于预设距离阈值的角点,得到剩余角点;
[0094]
在所述剩余角点中选取所述待补充数量的待补充角点,以将所述第一角点的总数补充至预设角点数量。
[0095]
具体的,以预设角点数量为400个为例,如果第三角点的数量为100个,第四角点的数量为200个,那么,需要补充的待补充角点的数量为100个。需要先在第二角点中剔除与所述第三角点、所述第四角点距离小于预设距离阈值的角点,得到剩余角点。也即将距离所述第三角点、所述第四角点较近的角点剔除,从而避免角点的重复获取,提高角点的准确性。
[0096]
再在所述剩余角点中选取所述待补充数量的待补充角点。在具体的实施例中,采用四叉树进行待补充角点的选取和补充。可以理解的是,采用四叉树选取角点,可以使得选取到的角点更加均匀。
[0097]
通过对所述第一角点进行补充完善,增加了所述第一角点的数量,也即在当前帧图像中为下一帧图像增加了可检测的角点的数量。
[0098]
一种可选的实施方式中,所述方法还包括:
[0099]
利用所述提取结果构建地图。
[0100]
具体的,由于所述提取结果的准确性和计算效率都得到了提升,进而提高了地图的准确性,可以维持一个全局一致的地图。
[0101]
本技术实施例中提供的特征点提取方法,利用光流法获取图像采集装置采集的当前帧图像中的第一角点;利用所述第一角点计算所述图像采集装置的位姿;利用所述位姿,将所述第一角点对应的第一地图点投影至像素平面,并计算所述第一地图点在所述像素平面的理论投影位置与实际投影位置的距离,将距离小于预设距离阈值的第一地图点作为内点;判断所述内点的数量是否大于预设数量阈值且与所述第一地图点的数量的比值大于预设比值阈值;若是,则将所述第一角点作为提取结果;若否,则将所述当前帧图像作为关键帧,并利用特征点检测更新所述第一角点,将更新后的所述第一角点作为提取结果。这样,无需对每一帧都进行特征点的提取与匹配,提高了计算效率,进而可以提高vslam系统的运行速度。
[0102]
与上述方法实施例相对应,请参见图2,图2为本技术实施例提供的特征点提取装置的结构示意图,特征点提取装置1000包括:
[0103]
角点获取模块1010,用于利用光流法获取图像采集装置采集的当前帧图像中的第一角点;
[0104]
位姿计算模块1020,用于利用所述第一角点计算所述图像采集装置的位姿;
[0105]
内点确定模块1030,用于利用所述位姿,将所述第一角点对应的第一地图点投影至像素平面,并计算所述第一地图点在所述像素平面的理论投影位置与实际投影位置的距离,将距离小于预设距离阈值的第一地图点作为内点;
[0106]
判断模块1040,用于判断所述内点的数量是否大于预设数量阈值且与所述第一地图点的数量的比值大于预设比值阈值;
[0107]
第一提取结果确定模块1050,用于若是,则将所述第一角点作为提取结果;
[0108]
第二提取结果确定模块1060,用于若否,则将所述当前帧图像作为关键帧,并利用特征点检测更新所述第一角点,将更新后的所述第一角点作为提取结果。
[0109]
本技术实施例提供的提取方法装置能够实现上述方法实施例中特征点提取方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0110]
可选的,本技术实施例还提供一种计算机设备,包括处理器和存储器,所述存储器上存储有程序或指令,该程序或指令被处理器执行时实现上述特征点提取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0111]
可选的,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述特征点提取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0112]
其中,所述处理器为上述实施例中所述的计算机设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等。
[0113]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0114]
另外,在本技术各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
[0115]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0116]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1