特征地图构建方法、视觉定位方法及对应装置转让专利

申请号 : CN201810738532.3

文献号 : CN109059941B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杜艳维

申请人 : 禾多科技(北京)有限公司

摘要 :

本发明涉及车辆定位技术领域,提供一种特征地图构建方法、视觉定位方法及对应装置。其中,特征地图构建方法包括:获得第一摄像头采集的多帧第一图像;利用高精度组合导航设备采集的第一位姿信息确定每帧第一图像的位姿;从每帧第一图像上提取出多个2D特征点,并通过跟踪多个2D特征点构建出多个特征跟踪器;在每个特征跟踪器中的2D特征点在对应的第一图像上的位置,以及对应的第一图像的位姿进行三角化计算,获得与该特征跟踪器对应的一个3D特征点;基于与多个特征跟踪器对应的多个3D特征点构建特征地图。该方法在构建特征地图时仅仅使用了高精度组合导航设备和摄像头,可以有效降低车辆定位过程中的硬件成本。

权利要求 :

1.一种特征地图构建方法,其特征在于,包括:

获得安装在第一车辆上的第一摄像头采集的多帧第一图像;

利用安装在所述第一车辆上的高精度组合导航设备采集的第一位姿信息确定每帧第一图像的位姿;

从每帧第一图像上提取出多个2D特征点,并基于每个2D特征点与其他帧的第一图像上的2D特征点的对应关系构建出多个特征跟踪器,其中,每个特征跟踪器包括具有对应关系的至少一个2D特征点;

基于每个特征跟踪器中的2D特征点在对应的第一图像上的位置,以及对应的第一图像的位姿进行三角化计算,获得与该特征跟踪器对应的一个3D特征点;

基于与所述多个特征跟踪器对应的多个3D特征点构建用于计算第二车辆的位姿的特征地图;

其中,所述多帧第一图像为M帧,所述从每帧第一图像上提取出多个2D特征点,并基于每个2D特征点与其他帧的第一图像上的2D特征点的对应关系构建出多个特征跟踪器,包括:取i为1至M,提取第i帧第一图像上的N个2D特征点;

若i=1,对每个2D特征点创建一个对应的特征跟踪器;

若i>1,取j为1至N,判断第i-1帧第一图像中是否存在与第j个2D特征点匹配的2D特征点,若存在,将所述第j个2D特征点加入到所述匹配的2D特征点对应的特征跟踪器,若不存在,创建与所述第j个2D特征点对应的特征跟踪器;

在第M帧第一图像处理完成后,构建出所述多个特征跟踪器。

2.根据权利要求1所述的特征地图构建方法,其特征在于,所述利用安装在所述第一车辆上的高精度组合导航设备采集的第一位姿信息确定每帧第一图像的位姿,包括:获得所述高精度组合导航设备与所述第一摄像头之间的相对位姿;

获得所述高精度组合导航设备采集的多帧GPS位姿;

将所述多帧GPS位姿与所述多帧第一图像的采集时间进行对齐;

基于与每帧第一图像对应的一帧GPS位姿以及所述相对位姿进行姿态变换,获得该帧第一图像的位姿。

3.根据权利要求1和2中任一项所述的特征地图构建方法,其特征在于,每个3D特征点均对应一帧参考帧,所述参考帧为该3D特征点对应的特征跟踪器中的第一个2D特征点对应的第一图像,所述基于与所述多个特征跟踪器对应的多个3D特征点构建用于计算第二车辆的位姿的特征地图,包括:基于与所述多个特征跟踪器对应的多个3D特征点以及与所述多个3D特征点对应的多帧参考帧构建用于计算所述第二车辆的位姿的所述特征地图。

4.一种视觉定位方法,其特征在于,包括:

获得安装在第二车辆上的第二摄像头采集的第二图像,并从所述第二图像中提取出多个2D特征点;

利用安装在所述第二车辆上的低精度组合导航设备采集的第二位姿信息确定所述第二车辆的粗略位置;

获得利用权利要求1-3中任一项所述的方法构建出的特征地图,并确定所述特征地图的多个3D特征点中与所述粗略位置邻近的多个邻近3D特征点;

从所述多个2D特征点以及所述多个邻近3D特征点中确定出多个匹配的3D-2D特征点对;

基于所述多个匹配的3D-2D特征点计算获得所述第二图像的位姿,进而确定所述第二车辆的位姿。

5.根据权利要求4所述的视觉定位方法,其特征在于,所述特征地图利用权利要求3所述的方法构建,所述确定所述特征地图的多个3D特征点中与所述粗略位置邻近的多个邻近

3D特征点,包括:

获得利用所述特征地图中的多帧参考帧构建的数据搜索结构;

基于所述数据搜索结构确定与所述粗略位置邻近的多帧邻近参考帧;

从所述多帧邻近参考帧对应的3D特征点中确定出所述多个邻近3D特征点。

6.根据权利要求5所述的视觉定位方法,其特征在于,所述数据搜索结构为kd-tree,所述kd-tree的每个节点对应一帧参考帧的位置。

7.根据权利要求5或6所述的视觉定位方法,其特征在于,所述基于所述数据搜索结构确定与所述粗略位置邻近的多帧邻近参考帧之后,所述从所述多帧邻近参考帧对应的3D特征点中确定出所述多个邻近3D特征点之前,所述方法还包括:过滤掉所述多帧邻近参考帧中姿态与所述第二位姿信息中的姿态不匹配的邻近参考帧。

8.一种特征地图构建装置,其特征在于,包括:

第一图像采集模块,用于获得安装在第一车辆上的第一摄像头采集的多帧第一图像;

第一图像位姿计算模块,用于利用安装在所述第一车辆上的高精度组合导航设备采集的第一位姿信息确定每帧第一图像的位姿;

特征点跟踪模块,用于从每帧第一图像上提取出多个2D特征点,并基于每个2D特征点与其他帧的第一图像上的2D特征点的对应关系构建出多个特征跟踪器,其中,每个特征跟踪器包括具有对应关系的至少一个2D特征点;

3D特征点获取模块,用于基于每个特征跟踪器中的2D特征点在对应的第一图像上的位置,以及对应的第一图像的位姿进行三角化计算,获得与该特征跟踪器对应的一个3D特征点;

特征地图构建模块,用于基于与所述多个特征跟踪器对应的多个3D特征点构建用于计算第二车辆的位姿的特征地图;

具体的,所述多帧第一图像为M帧,所述从每帧第一图像上提取出多个2D特征点,并基于每个2D特征点与其他帧的第一图像上的2D特征点的对应关系构建出多个特征跟踪器,包括:取i为1至M,提取第i帧第一图像上的N个2D特征点;

若i=1,对每个2D特征点创建一个对应的特征跟踪器;

若i>1,取j为1至N,判断第i-1帧第一图像中是否存在与第j个2D特征点匹配的2D特征点,若存在,将所述第j个2D特征点加入到所述匹配的2D特征点对应的特征跟踪器,若不存在,创建与所述第j个2D特征点对应的特征跟踪器;

在第M帧第一图像处理完成后,构建出所述多个特征跟踪器。

9.一种视觉定位装置,其特征在于,包括:

第二图像采集模块,用于获得安装在第二车辆上的第二摄像头采集的第二图像,并从所述第二图像中提取出多个2D特征点;

粗略位置确定模块,用于利用安装在所述第二车辆上的低精度组合导航设备采集的第二位姿信息确定所述第二车辆的粗略位置;

邻近3D特征点获取模块,用于获得利用权利要求1-3中任一项所述的方法构建出的特征地图,并确定所述特征地图的多个3D特征点中与所述粗略位置邻近的多个邻近3D特征点;

3D-2D特征点匹配模块,用于从所述多个2D特征点以及所述多个邻近3D特征点中确定出多个匹配的3D-2D特征点对;

第二图像位姿计算模块,用于基于所述多个匹配的3D-2D特征点计算获得所述第二图像的位姿,进而确定所述第二车辆的位姿。

说明书 :

特征地图构建方法、视觉定位方法及对应装置

技术领域

[0001] 本发明涉及视觉定位领域,具体而言,涉及一种特征地图构建方法、视觉定位方法及对应装置。

背景技术

[0002] 自动驾驶汽车又称无人驾驶汽车、电脑驾驶汽车、或轮式移动机器人,是一种通过电脑系统实现无人驾驶的智能汽车。在20世纪已有数十年的历史,21世纪初呈现出接近实用化的趋势。
[0003] 在自动驾驶技术中,实时获得车辆的位姿具有重要意义,然而在现有的车辆定位技术中,计算车辆的位姿通常依赖于高精度的GPS传感器和高精度的激光雷达,这些设备造价比较昂贵,不利于自动驾驶技术的推广。

发明内容

[0004] 有鉴于此,本发明实施例提供一种特征地图构建方法、视觉定位方法及对应装置,以解决上述技术问题。
[0005] 为实现上述目的,本发明提供如下技术方案:
[0006] 第一方面,本发明实施例提供一种特征地图构建方法,包括:
[0007] 获得安装在第一车辆上的第一摄像头采集的多帧第一图像;
[0008] 利用安装在第一车辆上的高精度组合导航设备采集的第一位姿信息确定每帧第一图像的位姿;
[0009] 从每帧第一图像上提取出多个2D特征点,并基于每个2D特征点与其他帧的第一图像上的2D特征点的对应关系构建出多个特征跟踪器,其中,每个特征跟踪器包括具有对应关系的至少一个2D 特征点;
[0010] 基于每个特征跟踪器中的2D特征点在对应的第一图像上的位置,以及对应的第一图像的位姿进行三角化计算,获得与该特征跟踪器对应的一个3D特征点;
[0011] 基于与多个特征跟踪器对应的多个3D特征点构建用于计算第二车辆的位姿的特征地图。
[0012] 上述方法在构建特征地图的过程中,仅仅使用了高精度组合导航设备和摄像头,而构建出的特征地图可以用于第二车辆的定位。除了高精度组合导航设备外并不需要使用其他高成本的硬件设备,而即使是高精度组合导航设备也仅仅是在构建特征地图时使用,构建好的特征地图可以多次使用,不必频繁地重新构建,因此也就不必频繁地使用高精度组合导航设备,可以降低高精度导航设备的使用和维和成本。。从而,可以有效降低车辆定位过程中的硬件成本,有利于自动驾驶技术的推广。
[0013] 结合第一方面,在第一方面的一种可能的实现方式中,利用安装在第一车辆上的高精度组合导航设备采集的第一位姿信息确定每帧第一图像的位姿,包括:
[0014] 获得高精度组合导航设备与第一摄像头之间的相对位姿;
[0015] 获得高精度组合导航设备采集的多帧GPS位姿;
[0016] 将多帧GPS位姿与多帧第一图像的采集时间进行对齐;
[0017] 基于与每帧第一图像对应的一帧GPS位姿以及相对位姿进行姿态变换,获得该帧第一图像的位姿。
[0018] 结合第一方面,在第一方面的二种可能的实现方式中,多帧第一图像为M帧,从每帧第一图像上提取出多个2D特征点,并基于每个2D特征点与其他帧的第一图像上的2D特征点的对应关系构建出多个特征跟踪器,包括:
[0019] 取i为1至M,提取第i帧第一图像上的N个2D特征点;
[0020] 若i=1,对每个2D特征点创建一个对应的特征跟踪器;
[0021] 若i>1,取j为1至N,判断第i-1帧第一图像中是否存在与第j个2D特征点匹配的2D特征点,若存在,将第j个2D特征点加入到匹配的2D特征点对应的特征跟踪器,若不存在,创建与第j 个2D特征点对应的特征跟踪器;
[0022] 在第M帧第一图像处理完成后,构建出多个特征跟踪器。
[0023] 结合第一方面或第一方面的第一种或第二种可能的实现方式,在第一方面的三种可能的实现方式中,每个3D特征点均对应一帧参考帧,参考帧为该3D特征点对应的特征跟踪器中的第一个2D特征点对应的第一图像,基于与多个特征跟踪器对应的多个3D特征点构建用于计算第二车辆的位姿的特征地图,包括:
[0024] 基于与多个特征跟踪器对应的多个3D特征点以及与多个3D特征点对应的多帧参考帧构建用于计算第二车辆的位姿的特征地图。
[0025] 第二方面,本发明实施例提供一种视觉定位方法,包括:
[0026] 获得安装在第二车辆上的第二摄像头采集第二图像,并从第二图像中提取出多个2D特征点;
[0027] 利用安装在第二车辆上的低精度组合导航设备采集的第二位姿信息确定第二车辆的粗略位置;
[0028] 获得利用第一方面或第一方面的任意一种可能的实现方式提供的方法构建出的特征地图,并确定特征地图的多个3D特征点中与粗略位置邻近的多个邻近3D特征点;
[0029] 从多个2D特征点以及多个邻近3D特征点中确定出多个匹配的 3D-2D特征点对;
[0030] 基于多个匹配的3D-2D特征点计算获得第二图像的位姿,进而确定第二车辆的位姿。
[0031] 上述方法在对车辆进行定位时,仅仅需要使用价格便宜的低精度组合导航设备获得车辆的粗略位置,然后利用事先构建好的特征地图就可以进一步获得车辆的准确位姿。有效降低了车辆定位过程中的硬件成本,同时定位效果仍然得到保证,有利于自动驾驶技术的推广。
[0032] 结合第二方面,在第二方面的第一种可能的实现方式中,特征地图利用第一方面的第三种可能的实现方式提供的方法构建,确定特征地图的多个3D特征点中与粗略位置邻近的多个邻近3D特征点,包括:
[0033] 获得利用特征地图中的多帧参考帧构建的数据搜索结构;
[0034] 基于数据搜索结构确定与粗略位置邻近的多帧邻近参考帧;
[0035] 从多帧邻近参考帧对应的3D特征点中确定出多个邻近3D特征点。
[0036] 由于很多3D特征点对应于同一帧参考帧,因此在特征地图中参考帧的数量远远小于3D特征点的数量,先找到邻近参考帧,再由邻近参考帧索引出邻近3D特征点,执行效率较高。
[0037] 结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,数据搜索结构为kd-tree,kd-tree的每个节点对应一帧参考帧的位置。
[0038] kd-tree是一种用于数据搜索的数据结构,可以用于搜索高维的邻近数据,基于kd-tree的搜索算法时间复杂度低,能够在短时间内查找出多帧邻近参考帧。
[0039] 结合第二方面的第一种或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,基于数据搜索结构确定与粗略位置邻近的多帧邻近参考帧之后,从多帧邻近参考帧对应的3D特征点中确定出多个邻近3D特征点之前,方法还包括:
[0040] 过滤掉多帧邻近参考帧中姿态与第二位姿信息中的姿态不匹配的邻近参考帧。
[0041] 在特征地图的构建阶段,如果车辆在某一街道上反复行驶,则从正反两个方向路过粗略位置时都会获得参考帧,当在车辆定位阶段,显然车辆只有一个行驶方向,或者正方向或者反方向,因此多帧邻近参考帧中的一部分邻近参考帧的姿态与车辆当前的姿态是不匹配的,不宜作为计算车辆当前位姿的依据,可以将其过滤掉,其对应的3D特征点自然也一并过滤掉。
[0042] 第三方面,本发明实施例提供一种特征地图构建装置,包括:
[0043] 第一图像采集模块,用于获得安装在第一车辆上的第一摄像头采集的多帧第一图像;
[0044] 第一图像位姿计算模块,用于利用安装在第一车辆上的高精度组合导航设备采集的第一位姿信息确定每帧第一图像的位姿;
[0045] 特征点跟踪模块,用于从每帧第一图像上提取出多个2D特征点,并基于每个2D特征点与其他帧的第一图像上的2D特征点的对应关系构建出多个特征跟踪器,其中,每个特征跟踪器包括具有对应关系的至少一个2D特征点;
[0046] 3D特征点获取模块,用于基于每个特征跟踪器中的2D特征点在对应的第一图像上的位置,以及对应的第一图像的位姿进行三角化计算,获得与该特征跟踪器对应的一个3D特征点;
[0047] 特征地图构建模块,用于基于与多个特征跟踪器对应的多个3D 特征点构建用于计算第二车辆的位姿的特征地图。
[0048] 第四方面,本发明实施例提供一种视觉定位装置,包括:
[0049] 第二图像采集模块,用于获得安装在第二车辆上的第二摄像头采集第二图像,并从第二图像中提取出多个2D特征点;
[0050] 粗略位置确定模块,用于利用安装在第二车辆上的低精度组合导航设备采集的第二位姿信息确定第二车辆的粗略位置;
[0051] 邻近3D特征点获取模块,用于获得利用权利要求1-4中任一项的方法构建出的特征地图,并确定特征地图的多个3D特征点中与粗略位置邻近的多个邻近3D特征点;
[0052] 3D-2D特征点匹配模块,用于从多个2D特征点以及多个邻近3D 特征点中确定出多个匹配的3D-2D特征点对;
[0053] 第二图像位姿计算模块,用于基于多个匹配的3D-2D特征点计算获得第二图像的位姿,进而确定第二车辆的位姿。
[0054] 第五方面,本发明实施例提供一种计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被计算机的处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式、第二方面或第二方面的任意一种可能的实现方式提供的方法的步骤。
[0055] 第六方面,本发明实施例提供一种电子设备,包括处理器以及计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式、第二方面或第二方面的任意一种可能的实现方式提供的方法的步骤。
[0056] 为使本发明的上述目的、技术方案和有益效果能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。

附图说明

[0057] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0058] 图1示出了一种可应用于本发明实施例中的电子设备的结构框图;
[0059] 图2示出了本发明第一实施例提供的特征地图构建方法的流程图;
[0060] 图3示出了本发明第二实施例视觉定位方法的流程图;
[0061] 图4示出了本发明第三实施例提供的特征地图构建装置的功能模块图;
[0062] 图5示出了本发明第四实施例提供的视觉定位装置的功能模块图。

具体实施方式

[0063] 下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0065] 图1示出了一种可应用于本发明实施例中的电子设备100的结构框图。参照图1,电子设备100包括存储器102、存储控制器104,一个或多个(图中仅示出一个)处理器106、外设接口108、摄像头 110、组合导航设备112等。这些组件通过一条或多条通讯总线/信号线114相互通讯。
[0066] 存储器102可用于存储程序指令和/或模块,如本发明实施例中的特征地图构建方法及装置、视觉定位方法及装置对应的程序指令和/或模块,处理器106通过运行存储在存储器102内的程序指令和 /或模块,从而执行各种功能应用以及数据处理,如本发明实施例提供的特征地图构建方法及装置、视觉定位方法及装置。
[0067] 存储器102可以是,但不限于,随机存取存储器 (Random Access Memory,RAM),只读存储器(Read Only Memory, ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory, EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。处理器106以及其他可能的组件对存储器102的访问可在存储控制器104的控制下进行。
[0068] 处理器106可以是一种集成电路芯片,具有信号的处理能力。具体可以是通用处理器,包括中央处理器 (Central Processing Unit,CPU)、微控制单元(Micro Controller Unit,MCU)、网络处理器(Network Processor,NP)或者其他常规处理器;还可以是专用处理器,包括数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuits,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。
[0069] 外设接口108将各种输入/输出装置耦合至处理器106以及存储器102。在一些实施例中,外设接口108,处理器106以及存储控制器104可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
[0070] 摄像头110安装在车辆上,用于在车辆行驶过程中采集车辆所处的场景的图像,摄像头110的数量可以是一个或多个。
[0071] 组合导航设备112安装在车辆上,通常包括GPS传感器以及IMU 传感器,可以获得位姿信息,组合导航设备112可以是高精度组合导航设备(使用高精度GPS传感器),例如Novatel等,也可以是低精度组合导航设备(使用低精度GPS传感器),例如XSens等,或者也可以同时包括两者。
[0072] 可以理解,图1所示的结构仅为示意,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。于本发明实施例中,电子设备100可以是服务器、个人计算机、移动设备、可穿戴设备以及车载设备等具有运算处理能力的设备。
[0073] 需要特别指出,在本发明实施例提供的方法中,处理器106虽然需要从摄像头110以及组合导航设备112获得数据,但并不一定表示电子设备100一定要具有摄像头110以及组合导航设备112。例如,也可以是其他电子设备中的摄像头以及组合导航设备采集数据,然后将数据输入到电子设备100进行处理。
[0074] 第一实施例
[0075] 图2示出了本发明第一实施例提供的特征地图构建方法的流程图。参照图2,该方法包括:
[0076] 步骤S10:电子设备100的处理器106获得安装在第一车辆上的第一摄像头采集的多帧第一图像。
[0077] 该方法所要构建的特征地图通常针对某一具体的场景(车辆所处的环境),例如,事先规划好的车辆行驶路线所确定的场景,第一车辆沿该路线行驶,在行驶过程中通过摄像头采集获得第一车辆周边的多帧第一图像。电子设备100可以放置在第一车辆上,采集到的多帧第一图像实时输入至电子设备100进行处理;或者电子设备100也可以在远端,第一车辆与电子设备100通过无线通信网络通信连接,第一车辆实时将多帧第一图像发送至电子设备100进行处理;或者第一车辆只负责将采集到的多帧第一图像存储起来,在跑完规划好的行驶路线后,将存储的多帧第一图像以某种方式输入至电子设备100进行处理。
[0078] 电子设备100的上述几种部署方式,不仅仅针对第一摄像头采集的多帧第一图像,对于后文中将要提到的第二摄像头、高精度组合导航设备以及低精度组合导航设备采集的数据同样适用,也即是说第一实施例中的特征地图可以是实时构建,也可以不是实时构建,第二实施例中的车辆定位,可以是实时定位,也可以不是实时定位。在后文阐述时,不再重复阐述该问题。
[0079] 步骤S11:电子设备100的处理器106利用安装在第一车辆上的高精度组合导航设备采集的第一位姿信息确定每帧第一图像的位姿。
[0080] 高精度组合导航设备成本较高,定位精度可达厘米级,相对的为成本较低的低精度组合导航设备,定位精度较低,只能达到米级。某帧第一图像的位姿实际上是指拍摄该帧第一图像时第一摄像头的位姿,这一位姿可以基于同一时刻高精度组合导航设备的位姿,以及第一摄像头与高精度组合导航设备之间的相对位姿关系,经由姿态变换而获得。
[0081] 在一种实施方式中,具体可以按照如下步骤执行:
[0082] 首先,获得高精度组合导航设备与第一摄像头之间的相对位姿,该相对位姿在第一车辆的行驶过程中通常是保持不变的,可以在步骤S11执行前通过标定获得。
[0083] 然后,获得高精度组合导航设备采集的多帧GPS位姿,即步骤 S11中所述的第一位姿信息,其中,GPS位姿就是指高精度组合导航设备的位姿。
[0084] 之后,将多帧GPS位姿与多帧第一图像的采集时间进行对齐。通常,高精度组合导航设备的输出频率高于第一摄像头的输出频率,因此时间对齐的含义就是确定每帧第一图像对应的一帧GPS位姿,该帧GPS位姿的采集时刻与该帧第一图像的采集时刻相同(或者在误差允许范围内相同)。为进行时间对齐,通常需要对多帧GPS位姿与多帧第一图像进行缓存。
[0085] 最后,基于与每帧第一图像对应的一帧GPS位姿以及高精度组合导航设备与第一摄像头之间的相对位姿进行姿态变换,即可获得该帧第一图像的位姿。姿态变换是一种现有方法,在此处不作具体阐述。
[0086] 步骤S12:电子设备100的处理器106从每帧第一图像上提取出多个2D特征点,并基于每个2D特征点与其他帧的第一图像上的 2D特征点的对应关系构建出多个特征跟踪器。
[0087] 2D特征点是第一图像上的某些可用于描述场景的特征的点,例如显著的边缘点等。对2D特征点的提取可以采用,但不限于Good Features to Track等算法实现,在计算机视觉库OpenCV里提供了相应的函数。通常每帧第一图像上都可以提取出多个2D特征点。
[0088] 步骤S12可以采用,但不限于采用如下方法实现:
[0089] 为便于描述,假设多帧第一图像共有M帧,取i为1至M,首先提取出第i帧第一图像上的N个2D特征点,提取2D特征点的方法如前所述。
[0090] 若i=1,即第一帧第一图像,对其中的每个2D特征点均创建一个对应的特征跟踪器。
[0091] 若i>1,取j为1至N,判断第i-1帧第一图像中是否存在与第i帧第一图像中的第j个2D特征点匹配的2D特征点,若存在与之匹配的2D特征点,则将第j个2D特征点加入到与之匹配的2D 特征点对应的特征跟踪器中(由于第i-1帧已经处理完毕,该特征跟踪器必然已经存在);若不存在与之匹配的2D特征点,创建与第 j个2D特征点对应的特征跟踪器。
[0092] 2D特征点的匹配可以通过其描述子进行判断,在两个2D特征点的描述子达到一定的近似程度时认为二者是匹配的。描述子可以采用,但不限于BRIEF描述子。
[0093] 一旦某个特征跟踪器不再有新的2D特征点加入,即可以认为该特征跟踪器构建完成。采用上述方法逐帧处理第一图像,在第M帧第一图像处理完成后,构建出多个特征跟踪器,每个特征跟踪器中包括至少一个2D特征点,或者包括一个相互之间具有对应关系的 2D特征点序列。
[0094] 当然在实际中,如果是实时构建特征地图,M未必是已知的,但具体的做法和上面是类似的,只需要一直将i进行递增直至处理完所有第一图像即可。
[0095] 步骤S13:电子设备100的处理器106基于每个特征跟踪器中的2D特征点在对应的第一图像上的位置,以及对应的第一图像的位姿进行三角化计算,获得与该特征跟踪器对应的一个3D特征点。
[0096] 步骤S13可以在所有特征跟踪器都构建完成后执行,也可以构建好一个特征跟踪器就执行步骤S13,生成其对应的3D特征点。三角化(Triangulation)计算是一种将2D特征点映射到3D特征点的现有方法,此处不进行详细阐述。需要指出的是,3D特征点的描述子为生成该3D特征点的所有2D特征点的描述子的集合。
[0097] 步骤S14:电子设备100的处理器106基于与多个特征跟踪器对应的多个3D特征点构建用于计算第二车辆的位姿的特征地图。
[0098] 特征地图可以是包括多个3D特征点的一种数据结构,其具体形式不作限定,在一种实施方式中,特征地图还可以包括多帧参考帧。参考帧定义为每个特征跟踪器中的第一个2D特征点对应的第一图像,由于每个特征跟踪器对应一个3D特征点,因此每个3D特征点也对应一个参考帧。但需要指出的是,常常会存在多个3D特征点对应同一帧参考帧的情况,因此特征地图中参考帧的数量通常远远小于3D特征点的数量。还需要指出的是,在特征地图中加入参考帧,其具体含义是指通过特征地图可以获得参考帧的位姿,以及可以通过参考帧索引到其对应的所有3D特征点。
[0099] 特征地图可以用于,但不限于用于计算第二车辆的位姿,即在第二实施例提供的视觉定位方法中被使用。其中,第二车辆和第一车辆可以是同一车辆,也可以不是同一车辆。关于特征地图在视觉定位方法中的具体用途,在第二实施例中再进行阐述,关于参考帧的具体用途,同样在第二实施例中再进行阐述。
[0100] 综上所述,第一实施例提供的特征地图构建方法在构建特征地图的过程中,仅仅使用了高精度组合导航设备和摄像头,而并未使用现有技术中常见的激光雷达。其中,只有高精度组合导航设备的成本较高,该特征地图可用于车辆的视觉定位,从而有效降低车辆定位过程中的硬件成本,有利于自动驾驶技术的推广。
[0101] 进一步的,在同一场景下,构建特征地图的步骤可以只执行一次,后续在该场景中进行车辆定位时都可以使用该特征地图。因此实际上除了需要更新特征地图的时候,一般并不会频繁地使用高精度组合导航设备,可以进一步降低使用维护成本。
[0102] 第二实施例
[0103] 图3示出了本发明第二实施例视觉定位方法的流程图。参照图3,该方法包括:
[0104] 步骤S20:电子设备100的处理器106获得安装在第二车辆上的第二摄像头采集第二图像,并从第二图像中提取出多个2D特征点。
[0105] 第二实施例中的视觉定位方法对第二摄像头采集的每帧图像都会进行视觉定位,为便于阐述,将其中的一帧图像称为第二图像。从第二图像中提取2D特征点的方法可以参考第一实施例中的相关描述,不再重复阐述。
[0106] 步骤S21:电子设备100的处理器106利用安装在第二车辆上的低精度组合导航设备采集的第二位姿信息确定第二车辆的粗略位置。
[0107] 第二位姿信息包括低精度组合导航设备的位置和姿态,第二位姿信息能在一定程度上描述第二车辆的位姿,但精度较低,一般不宜作为车辆的定位结果。在步骤S21种仅使用第二位姿信息中的位置信息,例如可以将低精度组合导航设备的位置作为第二车辆的粗略位置,当然也可以在适当变换后将其作为第二车辆的粗略位置。
[0108] 步骤S22:电子设备100的处理器106获得利用本发明实施例提供的特征地图构建方法构建出的特征地图,并确定特征地图的多个3D特征点中与粗略位置邻近的多个邻近3D特征点。
[0109] 特征地图可以基于第一实施例提供的方法在步骤S22执行之前构建好,在步骤S22中直接使用该特征地图。
[0110] 由于每个3D特征点都有位置信息,因此在确定第二车辆的粗略位置(相当于一个点)后,可以在特征地图中搜索获得与粗略位置邻近的多个3D特征点,称之为邻近3D特征点。在搜索时,可以采用现有的各种邻近点搜索算法。
[0111] 考虑到3D特征点的数量较多,上述搜索过程可能十分耗时。在一种实施方式中,可以利用第一实施例中的参考帧加速搜索过程,当然前提是构建出的特征地图包含了参考帧。
[0112] 其原理在于,由于参考帧都计算出了位姿,自然也具有位置信息,因此可以获得与第二车辆的粗略位置邻近的参考帧,不妨称之为邻近参考帧,通过邻近参考帧可以索引到其对应的3D特征点,可以将这些3D特征点中的全部或部分3D特征点确定为步骤S22所需要的多个邻近3D特征点。在第一实施例中已经指出,由于很多3D 特征点对应于同一帧参考帧,因此在特征地图中参考帧的数量远远小于3D特征点的数量,因此先搜索邻近参考帧,再由邻近参考帧索引出邻近3D特征点,执行效率较高。
[0113] 进一步的,多帧参考帧也可以构建相应的数据搜索结构加速搜索邻近参考帧的过程。该数据搜索结构可以在步骤S22执行之前就构建好,甚至于在构建特征地图时就构建好并存储于特征地图中以便使用。
[0114] 这样的数据搜索结构有很多,例如可以用于搜索高维数据的邻近数据的kd-tree,kd-tree的每个节点对应一帧参考帧的位置。利用kd-tree能够在短时间内查找出与第二车辆的粗略位置邻近的多帧邻近参考帧。
[0115] 进一步的,在一种实施方式中,对于获得的邻近参考帧可以进行过滤。构想如下的场景:
[0116] 在特征地图的构建阶段,第一车辆在某一街道上反复行驶,则从正反两个方向路过所述粗略位置时都会获得参考帧,所以多帧邻近参考帧中即包括姿态为正方向的帧,也包括姿态为反方向的帧。在第二车辆的定位阶段,或者说在本次计算第二车辆的位姿时,第二车辆只有一个明确的行驶方向,或者正方向或者反方向,因此多帧邻近参考帧中的一部分邻近参考帧的姿态与第二车辆当前的姿态是不匹配的,不宜作为计算第二车辆当前的位姿的依据,可以将其过滤掉。
[0117] 低精度组合导航设备采集的第二位姿信息中包含了第二车车辆粗略的位姿,虽然精度不高,但用于过滤邻近参考帧已经够用,可以将多帧邻近参考帧中姿态与第二位姿信息中的姿态不匹配的邻近参考帧。这里匹配的含义是指位姿相同或者在误差范围内相同。被过滤掉的邻近参考帧,其对应的3D特征点也一并过滤掉。
[0118] 步骤S23:电子设备100的处理器106从多个2D特征点以及多个邻近3D特征点中确定出多个匹配的3D-2D特征点对。
[0119] 每个2D特征点从多个邻近3D特征点中找一个与之匹配的邻近 3D特征点,具体的匹配方式可以通过3D特征点对应的描述子与2D 特征点对应的描述子进行对比完成。当然可能存在找不到匹配的邻近3D特征点的情况,但这种情况并不影响本步骤的执行,只要找到一定数量的匹配的3D-2D特征点对即可,具体数量与步骤S240中采用的算法有关。例如,步骤S240中采用PnP(Perspective-n-Point) 算法时,只需要确定最少4个匹配的3D-2D特征点对即可。
[0120] 步骤S240:电子设备100的处理器106基于多个匹配的3D-2D 特征点计算获得第二图像的位姿,进而确定第二车辆的位姿。
[0121] 计算第二图像的位姿可以采用PnP算法,PnP算法是一种现有方法,这里不作详细阐述。第二图像的位姿实际上就是第二相机的位姿,由于第二相安装在第二车辆上,因此可以将第二相机的位姿作为第二车辆的位姿,当然也可以将其适当变换后作为第二车辆的位姿。
[0122] 综上所述,第二实施例提供的视觉定位方法在对车辆进行定位时,仅仅需要使用价格便宜的低精度组合导航设备获得车辆的粗略位置,然后利用事先构建好的特征地图就可以进一步获得车辆的准确位姿,并且即使在构建特征地图的过程中也只会用到高精度组合导航设备,而不需要激光雷达等昂贵的设备。从而有效降低了车辆定位过程中的硬件成本,有利于自动驾驶技术的推广。
[0123] 同时,从定位原理上看,虽然使用了低精度组合导航设备,但最终计算位姿仍然是基于特征地图中的3D特征点进行计算的,而特征地图基于高精度组合导航设备采集的数据生成,其精度是有保障的,因此第二实施例提供的视觉定位方法的定位精度仍然处于较好的水平。
[0124] 第三实施例
[0125] 图4示出了本发明第三实施例提供的特征地图构建装置200的功能模块图。参照图4,该装置包括:
[0126] 第一图像采集模块210,用于获得安装在第一车辆上的第一摄像头采集的多帧第一图像;
[0127] 第一图像位姿计算模块220,用于利用安装在第一车辆上的高精度组合导航设备采集的第一位姿信息确定每帧第一图像的位姿;
[0128] 特征点跟踪模块230,用于从每帧第一图像上提取出多个2D特征点,并基于每个2D特征点与其他帧的第一图像上的2D特征点的对应关系构建出多个特征跟踪器,其中,每个特征跟踪器包括具有对应关系的至少一个2D特征点;
[0129] 3D特征点获取模块240,用于基于每个特征跟踪器中的2D特征点在对应的第一图像上的位置,以及对应的第一图像的位姿进行三角化计算,获得与该特征跟踪器对应的一个3D特征点;
[0130] 特征地图构建模块250,用于基于与多个特征跟踪器对应的多个3D特征点构建用于计算第二车辆的位姿的特征地图。
[0131] 本发明第三实施例提供的特征地图构建装置200,其实现原理及产生的技术效果和第一实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0132] 第四实施例
[0133] 图5示出了本发明第四实施例提供的视觉定位装置300的功能模块图。参照图5,该装置包括:
[0134] 第二图像采集模块310,用于获得安装在第二车辆上的第二摄像头采集第二图像,并从第二图像中提取出多个2D特征点;
[0135] 粗略位置确定模块320,用于利用安装在第二车辆上的低精度组合导航设备采集的第二位姿信息确定第二车辆的粗略位置;
[0136] 邻近3D特征点获取模块330,用于获得利用本发明实施例提供的特征地图构建方法构建出的特征地图,并确定特征地图的多个3D 特征点中与粗略位置邻近的多个邻近3D特征点;
[0137] 3D-2D特征点匹配模块340,用于从多个2D特征点以及多个邻近3D特征点中确定出多个匹配的3D-2D特征点对;
[0138] 第二图像位姿计算模块350,用于基于多个匹配的3D-2D特征点计算获得第二图像的位姿,进而确定第二车辆的位姿。
[0139] 本发明第四实施例提供的特征地图构建装置300,其实现原理及产生的技术效果和第二实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0140] 第五实施例
[0141] 本发明第五实施例提供一种计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被计算机的处理器读取并运行时,执行本发明实施例提供的特征地图构建方法和/或视觉定位方法的步骤。该计算机存储介质可以实现为,但不限于图1示出的存储器102。
[0142] 第六实施例
[0143] 本发明第四实施例提供一种电子设备,包括处理器以及计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被处理器读取并运行时,执行本发明实施例提供的特征地图构建方法和/或视觉定位方法的步骤。该电子设备可以实现为,但不限于图1示出的电子设备100。
[0144] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0145] 本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0146] 另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0147] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得计算机设备执行本发明各个实施例所述方法的全部或部分步骤。前述的计算机设备包括:个人计算机、服务器、移动设备、智能穿戴设备、网络设备、虚拟设备等各种具有执行程序代码能力的设备,前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟、磁带或者光盘等各种可以存储程序代码的介质。
[0148] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0149] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
[0150] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。