CN110648397B - 场景地图生成方法、装置、存储介质及电子设备 - Google Patents

场景地图生成方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN110648397B
CN110648397B CN201910879562.0A CN201910879562A CN110648397B CN 110648397 B CN110648397 B CN 110648397B CN 201910879562 A CN201910879562 A CN 201910879562A CN 110648397 B CN110648397 B CN 110648397B
Authority
CN
China
Prior art keywords
frame image
corner
acquiring
current frame
scene
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910879562.0A
Other languages
English (en)
Other versions
CN110648397A (zh
Inventor
杨宇尘
金珂
马标
李姬俊男
蒋燚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201910879562.0A priority Critical patent/CN110648397B/zh
Publication of CN110648397A publication Critical patent/CN110648397A/zh
Application granted granted Critical
Publication of CN110648397B publication Critical patent/CN110648397B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models

Abstract

本申请实施例公开了场景地图生成方法、装置、存储介质及电子设备,包括:获取针对目标场景采集的场景视频中的关键帧图像集合,获取关键帧图像集合中的当前帧图像;获取当前帧图像包含的角点集合中各角点对应的3D坐标,并获取各角点对应的2D坐标、当前帧图像的像素信息以及当前帧图像的相机位姿;基于2D坐标以及像素信息获取各角点在当前帧图像中的描述子;在关键帧图像集合中获取当前帧图像的下一帧图像,将下一帧图像确定为当前帧图像,并执行获取当前帧图像包含的角点集合中各角点对应的3D坐标的步骤;当不存在下一帧图像时,基于描述子、相机位姿以及3D坐标生成场景视频对应的场景地图。采用本申请实施例,可以提高建图算法复用性。

Description

场景地图生成方法、装置、存储介质及电子设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种场景地图生成方法、装置、存储介质及电子设备。
背景技术
即时定位与地图构建(Simultaneous Localization and Mapping,SLAM)技术,是指将机器人放在未知的环境中,从一个未知位置开始移动对环境进行增量式地图创建,同时利用创建的地图进行自主定位和导航。定位算法与地图表示通常成对应用,SLAM问题中机器人定位依赖于环境地图,而地图创建过程也要依赖于机器人的准确定位,这是一个高度相关的过程,必须同时求解,任何一个问题都不能单独解决。
现有的场景地图建立方法由于和SLAM系统紧耦合,当针对同一场景创建地图,从一个SLAM系统切换到另一个SLAM系统时,需要针对切换后的SLAM系统进行算法修改,导致算法复用性降低。
发明内容
本申请实施例提供了一种场景地图生成方法、装置、存储介质及电子设备,构建场景地图的算法,可以适用于任意SLAM系统,提高了建图算法的复用性。
所述技术方案如下:
第一方面,本申请实施例提供了一种场景地图生成方法,所述方法包括:
获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像;
获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿;
基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子;
在所述第一关键帧图像集合中获取所述第一当前帧图像的下一帧图像,将所述下一帧图像确定为第一当前帧图像,并执行所述获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标的步骤;
当不存在下一帧图像时,基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。
第二方面,本申请实施例提供了一种场景地图生成装置,所述装置包括:
第一图像获取模块,用于获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像;
3D坐标获取模块,用于获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿;
描述子获取模块,用于基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子;
关键帧循环模块,用于在所述第一关键帧图像集合中获取所述第一当前帧图像的下一帧图像,将所述下一帧图像确定为第一当前帧图像,并执行所述获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标的步骤;
地图生成模块,用于当不存在下一帧图像时,基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像,获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿,再基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子,按照上述方式对每个关键帧图像作相同的处理,最后基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。通过计算关键帧中角点的3D坐标并结合相机位姿以及角点的描述子等信息构建场景地图,可以适用于任意SLAM系统,可以在任意平台上,用平台自带的SDK进行建图,并实现不同平台用户之间的地图共享,提高了建图算法的复用性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施场景示意图;
图2是本申请实施例提供的一种场景地图生成方法的流程示意图;
图3是本申请实施例提供的一种场景地图生成方法的流程示意图;
图4是本申请实施例提供的一种场景地图生成装置的结构示意图;
图5是本申请实施例提供的一种场景地图生成装置的结构示意图;
图6是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
请参见图1,是本申请实施例提供的一种实施场景示意图,如图1所示,用户采用设置有摄像头的用户终端100对拍摄区域200进行视频拍摄,从而生成场景视频300,该场景视频300可以包括多帧图像。
所述用户终端100包括但不限于:个人电脑、平板电脑、手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中用户终端可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、个人数字处理(personal digital assistant,PDA)、5G网络或未来演进网络中的终端设备等。
如图1所示,用户触发用户终端100针对目标场景200进行视频采集,并获取所采集的第一场景视频中的第一关键帧图像集合,并获取所述第一关键帧图像集合中的第一当前帧图像;
其中,第一场景视频包括多帧图像,分为普通帧图像以及关键帧图像。可通过对每帧图像进行光流追踪确定追踪到的角点数量,并通过角点数量确定哪些帧为关键帧,哪些帧为普通帧,从而生成第一关键帧图像集合。再依次遍历各关键帧图像,将当前遍历到的图像作为第一当前帧图像。
所述用户终端100获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿;
其中,第一当前帧图像的第一角点集合包括第一新角点以及第一旧角点。第一旧角点为追踪到的角点,第一新角点为在追踪到第一旧角点之后所提取的角点。
通过获取所述第一当前帧图像包含的第一新角点对应的第一3D坐标,并获取所述第一当前帧图像包含的第一旧角点对应的第二3D坐标,将所述第一3D坐标与所述第二3D坐标组合为所述各第一角点对应的3D坐标。
每一帧图像对应一个相机位姿。
所述用户终端100基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子;
所述用户终端100在所述第一关键帧图像集合中获取所述第一当前帧图像的下一帧图像,将所述下一帧图像确定为第一当前帧图像,并执行所述获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标的步骤;
当不存在下一帧图像时,所述用户终端100基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。
在本申请实施例中,获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像,获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿,再基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子,按照上述方式对每个关键帧图像作相同的处理,最后基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。通过计算关键帧中角点的3D坐标并结合相机位姿以及角点的描述子等信息构建场景地图,可以适用于任意SLAM系统,可以在任意平台上,用平台自带的SDK进行建图,并实现不同平台用户之间的地图共享,提高了建图算法的复用性。
下面将结合附图2-附图3,对本申请实施例提供的场景地图生成方法进行详细介绍。该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的场景地图生成装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。其中,本申请实施例中的场景地图生成装置可以为图1所示的用户终端。
请参见图2,为本申请实施例提供的一种场景地图生成方法的流程示意图。如图2所示,本申请实施例的所述方法可以包括以下步骤:
S101,获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像;
目标场景为真实场景中的某一场景,包括环境信息。采用摄像头对目标场景进行视频拍摄,从而可生成第一场景视频。
在第一场景视频中包括多帧图像,分为普通帧图像和关键帧图像。关键帧图像是指角色或者物体运动或变化中的关键动作所处的那一帧。关键帧与关键帧之间的动画可以由软件来创建,叫做过渡帧或者中间帧。
可通过采用光流追踪法追踪每帧图像中的角点,从而得到角点数量,当追踪到的角点数量小于某一阈值(如最大追踪角点数量的80%)时,则认为该帧为关键帧,否则为普通帧,或当距离上一个关键帧已经过去了多个(如20个)普通帧时,需要插入一个关键帧图像,按照上述方式确定出该场景视频中的所有关键帧后,将所确定的关键帧组合为第一关键帧图像集合。其中,角点是一种局部特征,具有旋转不变性和不随光照条件变化而变化的特点,一般将图像中曲率足够高或者曲率变化明显的点作为角点。
所谓“光流”,从字面上理解就是光的流动。其实在日常生活中,人眼观察到的物体的运动就是光流。因为物体反射光进入人的眼睛,当物体移动后,相应的反射光也会移动,从而使人意识到物体在运动。在计算机中,我们就可以利用像素亮度的变化追踪光线移动的方向,从而确定物体运动方向,进而得到相机运动方向。
再依次遍历第一关键帧图像集合中的各第一关键帧图像,并将当前遍历到的图像作为第一当前帧图像。
S102,获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿;
需要说明的是,第一角点集合包括第一新角点以及第一旧角点。第一旧角点为通过光流追踪到的角点,第一新角点为在光流追踪后所提取的角点。
例如,第一帧初始化时,提取150个角点,将150确定为最大追踪角点数量。在后面帧当中,有一些角点不能再被追踪到。若某一个关键帧追踪到的角点数量为100,后又提取50个角点,那么这100个角点为第一旧角点,50个角点为第一新角点。第一新角点的数量为150减去第一旧角点数量。
其中,可采用FAST特征点检测算法或Harris角点检测算法或SIFT、SURF等算法提取角点。其中,FAST特征点检测算法是基于模板和机器学习的角点检测方法,它不仅计算速度快,还具有较高的精确度。基本思想是:以某个像素点为圆心,某半径的圆周上其他像素点与圆心像素点特性差异达到某种标准时即认为该点就是角点。
具体可通过在追踪到的点周围设置一个圆形的掩膜mask,设置mask半径大小为20个像素,再在所有mask以外的地方提取角点,所提取的角点为新角点,数量为最大追踪角点数量减去当前能够追踪到的角点(旧角点)数量。
具体实现中,通过获取所述第一当前帧图像包含的第一新角点对应的第一3D坐标,并获取所述第一当前帧图像包含的第一旧角点对应的第二3D坐标,将所述第一3D坐标与所述第二3D坐标组合为所述各第一角点对应的3D坐标。
其中,通过获取所述第一当前帧图像包含的第一角点集合中各第一角点的第一角点标识以及第一2D坐标,在所述第一关键帧图像中获取所述第一当前帧图像的上一帧图像,获取所述上一帧图像包含的第二新角点集合中各第二新角点的第二角点标识以及第二2D坐标,确定所述第一角点标识与所述第二角点标识相同时所指示的第一新角点,基于所述第一新角点的第一2D坐标以及所述第一新角点的第二2D坐标,获取第一新角点对应的第一3D坐标。
所述第一角点标识和所述第二角点标识可以为角点ID。每个角点通过唯一的ID标识。
通过获取时间窗口中所述第一当前帧图像的第一相机位姿,在所述时间窗口中查找所述第一相机位姿对应的第一旧角点的第二3D坐标。
在所述时间窗口中存放距离第一当前帧图像在时间上最近的多帧图像的信息,包括每个相机位姿,与相机位姿对应的某一帧中角点的2D坐标和3D坐标。
S103,基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子;
描述子是刻画特征的一个数据结构,一个描述子的维数可以是多维的。
基于所述第一2D坐标以及所述像素信息,提取所述各第一角点的BRIEF特征,由于BRIEF仅仅是特征描述子,所以事先要得到特征点的位置,可以利用FAST特征点检测算法或Harris角点检测算法或SIFT、SURF等算法检测特征点的位置,然后再在特征点邻域利用BRIEF算法,计算词袋模型特征以建立特征描述符,将所述词袋模型特征作为所述各第一角点在所述第一当前帧图像中的描述子。
词袋模型是一种在检索中应用的特征表达方式。一段文本,一个图像的特征点可以用一个装有特定词的“袋子”表示。
S104,在所述第一关键帧图像集合中获取所述第一当前帧图像的下一帧图像,将所述下一帧图像确定为第一当前帧图像,并执行所述获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标的步骤;
可以理解的是,在得到第一当前关键帧图像的描述子、相机位姿以及3D坐标等信息后,再采用相同的方式依次获取其他关键帧的相关信息。
S105,当不存在下一帧图像时,基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。
当不存在下一帧图像时,表明对所有的第一关键帧图像处理完毕,则对每个关键帧中的描述子、所述第一相机位姿以及所述3D坐标进行序列化,并生成二进制文件(场景地图)至云端。所述场景地图即为包含目标场景整个环境信息的地图。
当然,所生成的场景地图还包括关键帧、每个角点ID等信息,其对应的二进制文件中包含这些信息的对应关系,如表1所示,包含所有关键帧所采集到的角点所在的关键帧、相机位姿、角点ID、角点的2D坐标、3D坐标以及描述子等。
表1
关键帧 相机位姿 角点ID 2D坐标 3D坐标 描述子
1 A1 B1 C1 D1 E1
2 A2 B2 C2 D2 E2
3 A3 B3 C3 D3 E3
n An Bn Cn Dn En
在本申请实施例中,获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像,获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿,再基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子,按照上述方式对每个关键帧图像作相同的处理,最后基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。通过计算关键帧中角点的3D坐标并结合相机位姿以及角点的描述子等信息构建场景地图,可以适用于任意SLAM系统,可以在任意平台上,用平台自带的SDK进行建图,并实现不同平台用户之间的地图共享,提高了建图算法的复用性。
请参见图4,为本申请实施例提供的一种场景地图生成方法的流程示意图。本实施例以场景地图生成方法应用于智能手机中来举例说明。该场景地图生成方法可以包括以下步骤:
S201,获取针对目标场景所采集的第一场景视频,获取所述第一场景视频包含的全部帧图像中每帧图像追踪到的角点数量;
目标场景为真实场景中的某一场景,包括环境信息。采用摄像头对目标场景进行视频拍摄,从而可生成第一场景视频。
第一场景视频包括有多帧图像,需要对每帧图像进行角点追踪,从而确定每帧图像追踪到的角点数量。所述角点是一种局部特征,具有旋转不变性和不随光照条件变化而变化的特点,一般将图像中曲率足够高或者曲率变化明显的点作为角点。
其中,可通过采用光流追踪法追踪每帧图像中的角点。光流,就是画面移动过程中,图像上每个像素的x,y位移量,比如第t帧的时候A点的位置是(x1,y1),那么在第t+1帧的时候再找到A点,假如它的位置是(x2,y2),就可以确定A点的运动了:(u,v)=(x2,y2)-(x1,y1)。LK光流是光流法的一种,它对观测量做了“灰度不变”假设和“某个窗口内的像素具有相同的运动”假设,因而能够从前后两幅图片中追踪到同一个点的位置移动。
S202,将所述角点数量小于预设数量阈值的帧图像确定为第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像;
所述预设数量阈值可以为基于经验所设定的统计值,也可以为所提取角点的最大数量的一定比例。
假设第一帧初始化时,提取150个角点,将150确定为最大追踪角点数量。在后面帧当中,有一些角点不能再被追踪到,若某一个帧追踪到的角点数量为100,小于阈值150*80%=120,则确定该帧为关键帧。若某一个帧追踪到的角点数量为130,大于阈值150*80%=120,则确定该帧为普通帧。
按照上述方式依次对每帧进行判断,从而找出所有的关键帧,进而生成第一关键帧图像集合。然后再遍历第一关键帧图像集合中的各第一关键帧图像,并将当前遍历到的图像作为第一当前帧图像。
S203,获取所述第一当前帧图像包含的第一角点集合中各第一角点的第一角点标识以及第一2D坐标,所述第一角点集合包括第一新角点和第一旧角点;
第一角点集合包括第一旧角点和第一新角点。在上述追踪到的角点为第一旧角点(如100个),则需要再提取150-100=50个新角点,因此,第一焦点集合包括150个角点。
其中,可以在追踪到的角点周围设置一个圆形的mask,设置mask的半径大小为20个像素,然后在所有mask以外的地方提取角点。
每个角点对应一角点标识,所述第一角点标识用于唯一识别第一角点,可以为该角点的ID,如编号30。该角点在第一当前帧图像中的第一2D坐标为z1=(u1,v1)。
S204,在所述第一关键帧图像中获取所述第一当前帧图像的上一帧图像,获取所述上一帧图像包含的第二新角点集合中各第二新角点的第二角点标识以及第二2D坐标;
同样的,在上一帧图像中包括第二角点集合,第二角点集合包括第二旧角点和第二新角点。
每个角点对应一角点标识,所述第一角点标识用于唯一识别第一角点,可以为该角点的ID,如编号80。该角点在上一帧图像中的第二2D坐标为z2=(u2,v2)。
S205,确定所述第一角点标识与所述第二角点标识相同时所指示的第一新角点,基于所述第一新角点的第一2D坐标以及所述第一新角点的第二2D坐标,获取第一新角点对应的第一3D坐标;
将第一当前关键帧的第一角点和上一个关键帧生成的第二新角点的ID相同进行比对,并找出具有相同ID的角点,并分别获取这两个关键帧的相机位姿,计算该角点在空间中的位置(第一3D坐标)。
例如,这两帧的投影矩阵分别为P1和P2,投影矩阵和相机位姿矩阵[R|t]的关系是:
P=K[RT|-RTt],R为旋转,t为平移,K为内参矩阵。
由两帧的投影矩阵P1和P2和同一个角点在两帧中的对应2D特征z1=(u1,v1)和z2=(u2,v2),可以求出该角点的3D位置。方法如下:
设A为4x4矩阵,定义为:
Figure BDA0002205464260000111
.row(i)表示矩阵的第i行。
得到A后,对A进行奇异值分解,得到U,W,V,那么该角点的3D位置为V的第三行。用V的第三行的第四个元素对该3D位置进行归一化,从而得到的是一个齐次坐标
Figure BDA0002205464260000112
S206,采用最小二乘拟合的方式对所述第一新角点对应的第一3D坐标进行修正。
由于仅用两帧的相机位姿和该角点在两帧图像中的2D特征生成的3D位置通常不够准确,因此,可以通过多帧对该3D位置进行优化。
在一些SLAM系统中,为了优化当前相机位姿,和当前相机附近的点云,或者说当前相机和之前不久的相机能够观测到的3D点云,需要维护一个滑动窗口,该窗口存放时间上最近几帧的信息,如存放普通帧的信息(如相机位姿、所包含的角点、焦点的2D坐标等),从而进行一个局部的bundle adjustment,进而实现稳定的相机位姿追踪。
在本申请实施例中,不需要对相机位姿进行优化,而只需要优化角点的3D位置。不对相机位姿进行优化的理由是,首先这个位姿已经足够准确,其次,如果在建图中修改了相机位姿,导致和SLAM系统的相机位姿不同,那么当相对于SLAM系统的相机位姿放置一些虚拟物体时,又会与建图的相机位姿之间产生偏移。
在本申请实施例中,通过采用最小二乘拟合的方式对所述第一新角点对应的第一3D坐标进行优化。
例如,角点的集合为X={x0,x1,...,xN},对应的2D特征集合为Z={z0,z1,...,zN},即为观测量。滑动窗口内的相机位姿集合为Y={y0,y1,...,yM}。那么优化目标函数即为:
Figure BDA0002205464260000113
其中g(yi,xj)表示位姿yi是否观测到了角点xj。如果观测到了,即为1,没有观测到即为0。f(yi,xj,zj)为重投影误差函数。表示角点xj在位姿yi下的投影和对应2D特征差值的二范数。
S207,获取时间窗口中所述第一当前帧图像的第一相机位姿,在所述时间窗口中查找所述第一相机位姿对应的第一旧角点的第二3D坐标;
需要说明的是,在上述优化过程中,滑动窗口内还存放有第一旧角点,因此,通过用g(yi,xj)遍历滑动窗口中每个相机位姿yi对应的2D特征集合Zi和滑动窗口内所有的角点X,就可以得到每个第一旧角点的第二3D坐标。
S208,将所述第一3D坐标与所述第二3D坐标组合为所述各第一角点对应的3D坐标;
S209,获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿;
可以直接从滑动窗口中调用。
S210,基于所述第一2D坐标以及所述像素信息,提取所述各第一角点的BRIEF特征;
S211,基于所述BRIEF特征,计算词袋模型特征,将所述词袋模型特征作为所述各第一角点在所述第一当前帧图像中的描述子;
描述子是刻画特征的一个数据结构,一个描述子的维数可以是多维的。
为减少噪声干扰,先对图像进行高斯滤波,然后以特征点为中心,取SxS的邻域窗口。在窗口内随机选取一对(两个)点,比较二者像素的大小,进行如下二进制赋值,再在窗口中随机选取N对随机点,重复二进制赋值,形成一个二进制编码(词袋模型特征),这个编码就是对特征点的描述,即特征描述子。
可选的,可以考虑使用基于深度学习的特征描述子,例如superpoint,ContextDesc等。
S212,在所述第一关键帧图像集合中获取所述第一当前帧图像的下一帧图像,将所述下一帧图像确定为第一当前帧图像,并执行所述获取所述第一当前帧图像包含的第一角点集合中各第一角点的第一角点标识以及第一2D坐标的步骤;
可以理解的是,在得到第一当前关键帧图像的描述子、相机位姿以及3D坐标等信息后,再采用相同的方式依次获取其他关键帧的相关信息。
S213,当不存在下一帧图像时,对所述描述子、所述第一相机位姿态以及所述3D坐标进行序列化处理,生成二进制文件;
S214,基于所述二进制文件生成所述第一场景视频对应的场景地图;
当不存在下一帧图像时,表明对所有的第一关键帧图像处理完毕,则对每个关键帧中的描述子、所述第一相机位姿以及所述3D坐标进行序列化,并生成二进制文件(场景地图)至云端。所述场景地图即为包含目标场景整个环境信息的地图。
S215,获取针对所述目标场景所采集的第二场景视频,获取所述第二场景视频中的第二关键帧图像集合,获取所述第二关键帧图像集合中的第二当前帧图像;
可以理解的是,所述第二场景视频为通过摄像头针对该目标场景的另一不同视角的视频。
在第二场景视频中同样包括多帧图像,获取第二场景视频中的第二关键帧图像集合的方式与获取第一场景视频中的第一关键帧图像集合的方式相同,具体可参见S101,此处不再赘述。
S216,在所述第一关键帧图像集合中获取与所述第二当前帧图像相匹配的参考帧图像;
在每一帧中提取150个角点,并在角点周围提取BRIEF特征。基于整帧图像的BRIEF特征,计算这帧图像的词袋模型特征。接着在场景地图中寻找和这一帧词袋模型特征最接近的一帧,作为参考帧。
特征点匹配方法有很多,本申请实施例中采用词袋模型描述特征以进行特征点的匹配。具体原理是,BRIEF描述子的词袋模型,是一种离线的,训练好的树状结构。BRIEF描述子是256bit的二进制码,那么就有2256种可能性。而词袋模型可以根据训练集中真实图像中的实际特征点,将相似的特征放到同一个节点中。这就相当于一种根据训练数据的降维处理。
S217,将所述第二当前帧图像包含的第三角点集合与所述参考帧图像中的第一3D坐标进行匹配,生成匹配点对;
由于前述已经计算了第二当前帧图像的FAST角点和对应的BRIEF特征,并计算了词袋模型特征,也就是将BRIEF特征分配到了词袋模型的节点中,每个BRIEF特征有一个唯一的词袋模型节点编号。提取了BRIEF特征和对应的词袋模型特征,也就是BRIEF特征在词袋模型树中的节点编号后,只对两帧图像中,在同一个词袋模型节点中的特征进行匹配,计算汉明距离。汉明距离越小,说明这两个描述子越相似。
记录在参考帧特征中,与第二当前帧特征的汉明距离最小和第二小的特征。当第二当前帧中的某个特征和参考帧中的某个特征之间的汉明距离小于阈值th1(这里取50),并且最小的汉明距离小于0.9乘以第二小的汉明距离时,则生成2D-3D匹配点对。
其中,小于阈值th1表明汉明距离足够小,两个特征足够相似。最小的汉明距离小于第二小的汉明距离乘以0.9,表明这是一个很显著的特征匹配,没有其他类似的匹配。
S218,基于所述匹配点对,获取所述第二当前帧在所述场景地图中的第三相机位姿以及所述第二当前帧在所述第二场景视频中的第四相机位姿;
S219,将所述第三相机位姿与所述第四相机位姿之间的差值确定为所述第二场景视频与所述第一场景视频之间的位移;
相机位姿估计pose estimation就是通过几个已知坐标(世界坐标)的特征点,结合他们在相机照片中的成像(像素坐标)求解出相机所在的世界坐标以及旋转角度,用旋转矩阵(R)和平移矩阵(t)表示。PnP就是其中的一种2D-3D解决上述问题的算法,也就是说,这个算法的输入是一组点的3D世界坐标和2D像素坐标,输出是相机的旋转矩阵(R)和平移矩阵(t).OpenCV有相应的库函数solvePnP()和solvePnPRansac(),也就是计算第二当前帧在场景地图坐标系下的第三位姿,然后再用第二当前帧在场景地图坐标系下的第三位姿,和在当前坐标系下的第四位姿,计算出两个坐标系之间的相对坐标变换。
S220,基于所述位移将所述第一场景视频中的虚拟物体在所述第二场景视频中展示。
基于所计算的位移,将场景地图中的锚点,也就是虚拟物体,转换到当前SLAM坐标系下,使得虚拟物体仍在真实场景中的同一个位置上。
在本申请实施例中,获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像,获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿,再基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子,按照上述方式对每个关键帧图像作相同的处理,最后基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。通过计算关键帧中角点的3D坐标并结合相机位姿以及角点的描述子等信息构建场景地图,可以适用于任意SLAM系统,可以在任意平台上,用平台自带的SDK进行建图,并实现不同平台用户之间的地图共享,提高了建图算法的复用性;同时,基于滑动窗口,保持相机位姿不变,只优化点云位置,避免了重复计算相机位姿,更加高效;另外,定位精度方面,锚点位移在较小范围内。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参见图4,其示出了本申请一个示例性实施例提供的场景地图生成装置的结构示意图。该场景地图生成装置可以通过软件、硬件或者两者的结合实现成为用户终端的全部或一部分。该装置1包括第一图像获取模块10、3D坐标获取模块20、描述子获取模块30、关键帧循环模块40和地图生成模块50。
第一图像获取模块10,用于获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像;
3D坐标获取模块20,用于获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿;
描述子获取模块30,用于基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子;
关键帧循环模块40,用于在所述第一关键帧图像集合中获取所述第一当前帧图像的下一帧图像,将所述下一帧图像确定为第一当前帧图像,并执行所述获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标的步骤;
地图生成模块50,用于当不存在下一帧图像时,基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。
可选的,所述第一图像获取模块10,具体用于:
获取针对目标场景所采集的第一场景视频,获取所述第一场景视频包含的全部帧图像中每帧图像追踪到的角点数量;
将所述角点数量小于预设数量阈值的帧图像确定为第一关键帧图像集合。
可选的,所述3D坐标获取模块20,具体用于:
获取所述第一当前帧图像包含的第一新角点对应的第一3D坐标,并获取所述第一当前帧图像包含的第一旧角点对应的第二3D坐标;
将所述第一3D坐标与所述第二3D坐标组合为所述各第一角点对应的3D坐标。
可选的,所述3D坐标获取模块20,具体用于:
获取所述第一当前帧图像包含的第一角点集合中各第一角点的第一角点标识以及第一2D坐标;
在所述第一关键帧图像中获取所述第一当前帧图像的上一帧图像,获取所述上一帧图像包含的第二新角点集合中各第二新角点的第二角点标识以及第二2D坐标;
确定所述第一角点标识与所述第二角点标识相同时所指示的第一新角点,基于所述第一新角点的第一2D坐标以及所述第一新角点的第二2D坐标,获取第一新角点对应的第一3D坐标。
可选的,所述3D坐标获取模块20,具体用于:
获取所述第一当前帧图像对应的第一相机位姿,基于所述第一相机位姿以及预设内参矩阵,得到所述当前帧图像对应的第一投影矩阵;
获取所述上一帧图像对应的第二相机位姿,基于所述第二相机位姿以及所述预设内参矩阵,得到所述上一帧图像对应的第二投影矩阵;
基于所述第一投影矩阵、所述第二投影矩阵、所述第一2D坐标以及所述第二2D坐标,计算所述第一新角点的第一3D坐标。
可选的,如图5所示,所述装置还包括:
坐标修正模块60,用于采用最小二乘拟合的方式对所述第一新角点对应的第一3D坐标进行修正。
可选的,所述3D坐标获取模块20,具体用于:
获取时间窗口中所述第一当前帧图像的第一相机位姿,在所述时间窗口中查找所述第一相机位姿对应的第一旧角点的第二3D坐标。
可选的,描述子获取模块30,具体用于:
基于所述第一2D坐标以及所述像素信息,提取所述各第一角点的BRIEF特征;
基于所述BRIEF特征,计算词袋模型特征,将所述词袋模型特征作为所述各第一角点在所述第一当前帧图像中的描述子。
可选的,所述地图生成模块50,具体用于:
对所述描述子、所述第一相机位姿态以及所述3D坐标进行序列化处理,生成二进制文件;
基于所述二进制文件生成所述第一场景视频对应的场景地图。
可选的,如图5所示,所述装置还包括:
位移计算模块70,用于获取针对所述目标场景所采集的第二场景视频,计算所述第二场景视频与所述第一场景视频之间的位移;
物体展示模块80,用于基于所述位移将所述第一场景视频中的虚拟物体在所述第二场景视频中展示。
可选的,所述位移计算模块70,具体用于:
获取所述第二场景视频中的第二关键帧图像集合,获取所述第二关键帧图像集合中的第二当前帧图像;
在所述第一关键帧图像集合中获取与所述第二当前帧图像相匹配的参考帧图像;
基于所述参考帧图像的相机位姿以及所述第二当前帧图像的相机位姿,计算所述第二场景视频与所述第一场景视频之间的位移。
可选的,所述位移计算模块70,具体用于:
将所述第二当前帧图像包含的第三角点集合与所述参考帧图像中的第一3D坐标进行匹配,生成匹配点对;
基于所述匹配点对,获取所述第二当前帧在所述场景地图中的第三相机位姿以及所述第二当前帧在所述第二场景视频中的第四相机位姿;
将所述第三相机位姿与所述第四相机位姿之间的差值确定为所述第二场景视频与所述第一场景视频之间的位移。
需要说明的是,上述实施例提供的场景地图生成装置在执行场景地图生成方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的场景地图生成装置与场景地图生成方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请实施例中,获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像,获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿,再基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子,按照上述方式对每个关键帧图像作相同的处理,最后基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。通过计算关键帧中角点的3D坐标并结合相机位姿以及角点的描述子等信息构建场景地图,可以适用于任意SLAM系统,可以在任意平台上,用平台自带的SDK进行建图,并实现不同平台用户之间的地图共享,提高了建图算法的复用性;同时,基于滑动窗口,保持相机位姿不变,只优化点云位置,避免了重复计算相机位姿,更加高效;另外,定位精度方面,锚点位移在较小范围内。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图2-图3所示实施例的方法步骤,具体执行过程可以参见图2-图3所示实施例的具体说明,在此不进行赘述。
请参见图6,为本申请实施例提供了一种电子设备的结构示意图。如图6所示,所述电子设备1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个电子设备1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行电子设备1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图6所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及场景地图生成应用程序。
在图6所示的电子设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的场景地图生成应用程序,并具体执行以下操作:
获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像;
获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿;
基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子;
在所述第一关键帧图像集合中获取所述第一当前帧图像的下一帧图像,将所述下一帧图像确定为第一当前帧图像,并执行所述获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标的步骤;
当不存在下一帧图像时,基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。
在一个实施例中,所述处理器1001在执行获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合时,具体执行以下操作:
获取针对目标场景所采集的第一场景视频,获取所述第一场景视频包含的全部帧图像中每帧图像追踪到的角点数量;
将所述角点数量小于预设数量阈值的帧图像确定为第一关键帧图像集合。
在一个实施例中,所述处理器1001在执行获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标时,具体执行以下操作:
获取所述第一当前帧图像包含的第一新角点对应的第一3D坐标,并获取所述第一当前帧图像包含的第一旧角点对应的第二3D坐标,所述第一角点集合包括第一新角点和第一旧角点;
将所述第一3D坐标与所述第二3D坐标组合为所述各第一角点对应的3D坐标。
在一个实施例中,所述处理器1001在执行获取所述第一当前帧图像包含的第一新角点对应的第一3D坐标时,具体执行以下操作:
获取所述第一当前帧图像包含的第一角点集合中各第一角点的第一角点标识以及第一2D坐标;
在所述第一关键帧图像中获取所述第一当前帧图像的上一帧图像,获取所述上一帧图像包含的第二新角点集合中各第二新角点的第二角点标识以及第二2D坐标;
确定所述第一角点标识与所述第二角点标识相同时所指示的第一新角点,基于所述第一新角点的第一2D坐标以及所述第一新角点的第二2D坐标,获取第一新角点对应的第一3D坐标。
在一个实施例中,所述处理器1001在执行基于所述第一新角点的第一2D坐标以及所述第一新角点的第二2D坐标,获取第一新角点对应的第一3D坐标时,具体执行以下操作:
获取所述第一当前帧图像对应的第一相机位姿,基于所述第一相机位姿以及预设内参矩阵,得到所述当前帧图像对应的第一投影矩阵;
获取所述上一帧图像对应的第二相机位姿,基于所述第二相机位姿以及所述预设内参矩阵,得到所述上一帧图像对应的第二投影矩阵;
基于所述第一投影矩阵、所述第二投影矩阵、所述第一2D坐标以及所述第二2D坐标,计算所述第一新角点的第一3D坐标。
在一个实施例中,所述处理器1001在执行获取第一新角点对应的第一3D坐标之后,还执行以下操作:
采用最小二乘拟合的方式对所述第一新角点对应的第一3D坐标进行修正。
在一个实施例中,所述处理器1001在执行获取所述第一当前帧图像包含的第一旧角点对应的第二3D坐标时,具体执行以下操作:
获取时间窗口中所述第一当前帧图像的第一相机位姿,在所述时间窗口中查找所述第一相机位姿对应的第一旧角点的第二3D坐标。
在一个实施例中,所述处理器1001在执行基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子时,具体执行以下操作:
基于所述第一2D坐标以及所述像素信息,提取所述各第一角点的BRIEF特征;
基于所述BRIEF特征,计算词袋模型特征,将所述词袋模型特征作为所述各第一角点在所述第一当前帧图像中的描述子。
在一个实施例中,所述处理器1001在执行基于所述描述子、所述第一相机位姿态以及所述3D坐标生成所述第一场景视频对应的场景地图时,具体执行以下操作:
对所述描述子、所述第一相机位姿态以及所述3D坐标进行序列化处理,生成二进制文件;
基于所述二进制文件生成所述第一场景视频对应的场景地图。
在一个实施例中,所述处理器1001在执行基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图之后,还执行以下操作:
获取针对所述目标场景所采集的第二场景视频,计算所述第二场景视频与所述第一场景视频之间的位移;
基于所述位移将所述第一场景视频中的虚拟物体在所述第二场景视频中展示。
在一个实施例中,所述处理器1001在执行计算所述第二场景视频与所述第一场景视频之间的位移时,具体执行以下操作:
获取所述第二场景视频中的第二关键帧图像集合,获取所述第二关键帧图像集合中的第二当前帧图像;
在所述第一关键帧图像集合中获取与所述第二当前帧图像相匹配的参考帧图像;
基于所述参考帧图像的相机位姿以及所述第二当前帧图像的相机位姿,计算所述第二场景视频与所述第一场景视频之间的位移。
在一个实施例中,所述处理器1001在执行基于所述参考帧图像的相机位姿以及所述第二当前帧图像的相机位姿,计算所述第二场景视频与所述第一场景视频之间的位移时,具体执行以下操作:
将所述第二当前帧图像包含的第三角点集合与所述参考帧图像中的第一3D坐标进行匹配,生成匹配点对;
基于所述匹配点对,获取所述第二当前帧在所述场景地图中的第三相机位姿以及所述第二当前帧在所述第二场景视频中的第四相机位姿;
将所述第三相机位姿与所述第四相机位姿之间的差值确定为所述第二场景视频与所述第一场景视频之间的位移。
在本申请实施例中,获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像,获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,并获取所述各第一角点对应的第一2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿,再基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子,按照上述方式对每个关键帧图像作相同的处理,最后基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图。通过计算关键帧中角点的3D坐标并结合相机位姿以及角点的描述子等信息构建场景地图,可以适用于任意SLAM系统,可以在任意平台上,用平台自带的SDK进行建图,并实现不同平台用户之间的地图共享,提高了建图算法的复用性;同时,基于滑动窗口,保持相机位姿不变,只优化点云位置,避免了重复计算相机位姿,更加高效;另外,定位精度方面,锚点位移在较小范围内。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (13)

1.一种场景地图生成方法,其特征在于,所述方法包括:
获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,获取所述第一关键帧图像集合中的第一当前帧图像;
获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的三维3D坐标,并获取所述各第一角点对应的第一二维2D坐标、所述第一当前帧图像的像素信息以及所述第一当前帧图像的第一相机位姿;
基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子;
在所述第一关键帧图像集合中获取所述第一当前帧图像的下一帧图像,将所述下一帧图像确定为第一当前帧图像,并执行所述获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标的步骤;
当不存在下一帧图像时,基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图;
其中,所述基于所述描述子、所述第一相机位姿态以及所述3D坐标生成所述第一场景视频对应的场景地图,包括:
对所述描述子、所述第一相机位姿态以及所述3D坐标进行序列化处理,生成二进制文件;
基于所述二进制文件生成所述第一场景视频对应的场景地图。
2.根据权利要求1所述的方法,其特征在于,所述获取针对目标场景所采集的第一场景视频中的第一关键帧图像集合,包括:
获取针对目标场景所采集的第一场景视频,获取所述第一场景视频包含的全部帧图像中每帧图像追踪到的角点数量;
将所述角点数量小于预设数量阈值的帧图像确定为第一关键帧图像集合。
3.根据权利要求1所述的方法,其特征在于,所述获取所述第一当前帧图像包含的第一角点集合中各第一角点对应的3D坐标,包括:
获取所述第一当前帧图像包含的第一新角点对应的第一3D坐标,并获取所述第一当前帧图像包含的第一旧角点对应的第二3D坐标,所述第一角点集合包括第一新角点和第一旧角点;
将所述第一3D坐标与所述第二3D坐标组合为所述各第一角点对应的3D坐标。
4.根据权利要求3所述的方法,其特征在于,所述获取所述第一当前帧图像包含的第一新角点对应的第一3D坐标,包括:
获取所述第一当前帧图像包含的第一角点集合中各第一角点的第一角点标识以及第一2D坐标;
在所述第一关键帧图像中获取所述第一当前帧图像的上一帧图像,获取所述上一帧图像包含的第二新角点集合中各第二新角点的第二角点标识以及第二2D坐标;
确定所述第一角点标识与所述第二角点标识相同时所指示的第一新角点,基于所述第一新角点的第一2D坐标以及所述第一新角点的第二2D坐标,获取第一新角点对应的第一3D坐标。
5.根据权利要求4所述的方法,其特征在于,所述基于所述第一新角点的第一2D坐标以及所述第一新角点的第二2D坐标,获取第一新角点对应的第一3D坐标,包括:
获取所述第一当前帧图像对应的第一相机位姿,基于所述第一相机位姿以及预设内参矩阵,得到所述当前帧图像对应的第一投影矩阵;
获取所述上一帧图像对应的第二相机位姿,基于所述第二相机位姿以及所述预设内参矩阵,得到所述上一帧图像对应的第二投影矩阵;
基于所述第一投影矩阵、所述第二投影矩阵、所述第一2D坐标以及所述第二2D坐标,计算所述第一新角点的第一3D坐标。
6.根据权利要求4所述的方法,其特征在于,所述获取第一新角点对应的第一3D坐标之后,还包括:
采用最小二乘拟合的方式对所述第一新角点对应的第一3D坐标进行修正。
7.根据权利要求3所述的方法,其特征在于,所述获取所述第一当前帧图像包含的第一旧角点对应的第二3D坐标,包括:
获取时间窗口中所述第一当前帧图像的第一相机位姿,在所述时间窗口中查找所述第一相机位姿对应的第一旧角点的第二3D坐标。
8.根据权利要求1所述的方法,其特征在于,所述基于所述第一2D坐标以及所述像素信息获取所述各第一角点在所述第一当前帧图像中的描述子,包括:
基于所述第一2D坐标以及所述像素信息,提取所述各第一角点的BRIEF特征;
基于所述BRIEF特征,计算词袋模型特征,将所述词袋模型特征作为所述各第一角点在所述第一当前帧图像中的描述子。
9.根据权利要求1所述的方法,其特征在于,所述基于所述描述子、所述第一相机位姿以及所述3D坐标生成所述第一场景视频对应的场景地图之后,还包括:
获取针对所述目标场景所采集的第二场景视频,计算所述第二场景视频与所述第一场景视频之间的位移;
基于所述位移将所述第一场景视频中的虚拟物体在所述第二场景视频中展示。
10.根据权利要求9所述的方法,其特征在于,所述计算所述第二场景视频与所述第一场景视频之间的位移,包括:
获取所述第二场景视频中的第二关键帧图像集合,获取所述第二关键帧图像集合中的第二当前帧图像;
在所述第一关键帧图像集合中获取与所述第二当前帧图像相匹配的参考帧图像;
基于所述参考帧图像的相机位姿以及所述第二当前帧图像的相机位姿,计算所述第二场景视频与所述第一场景视频之间的位移。
11.根据权利要求10所述的方法,其特征在于,所述基于所述参考帧图像的相机位姿以及所述第二当前帧图像的相机位姿,计算所述第二场景视频与所述第一场景视频之间的位移,包括:
将所述第二当前帧图像包含的第三角点集合与所述参考帧图像中的第一3D坐标进行匹配,生成匹配点对;
基于所述匹配点对,获取所述第二当前帧在所述场景地图中的第三相机位姿以及所述第二当前帧在所述第二场景视频中的第四相机位姿;
将所述第三相机位姿与所述第四相机位姿之间的差值确定为所述第二场景视频与所述第一场景视频之间的位移。
12.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~11任意一项的方法步骤。
13.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~11任意一项的方法步骤。
CN201910879562.0A 2019-09-18 2019-09-18 场景地图生成方法、装置、存储介质及电子设备 Active CN110648397B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910879562.0A CN110648397B (zh) 2019-09-18 2019-09-18 场景地图生成方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910879562.0A CN110648397B (zh) 2019-09-18 2019-09-18 场景地图生成方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN110648397A CN110648397A (zh) 2020-01-03
CN110648397B true CN110648397B (zh) 2023-05-16

Family

ID=69010750

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910879562.0A Active CN110648397B (zh) 2019-09-18 2019-09-18 场景地图生成方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN110648397B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113129437A (zh) * 2020-01-14 2021-07-16 北京地平线机器人技术研发有限公司 一种标志物的空间坐标确定方法及装置
CN111311756B (zh) * 2020-02-11 2023-04-11 Oppo广东移动通信有限公司 增强现实ar显示方法及相关装置
CN111814869B (zh) * 2020-07-06 2022-11-08 北京邮电大学 一种同步定位与建图的方法、装置、电子设备及存储介质
CN112164037A (zh) * 2020-09-16 2021-01-01 天津大学 一种基于光流追踪的mems器件面内运动测量方法
CN112277957B (zh) * 2020-10-27 2022-06-24 广州汽车集团股份有限公司 一种用于驾驶员分心纠正的预警方法及其系统、存储介质
CN112288816A (zh) * 2020-11-16 2021-01-29 Oppo广东移动通信有限公司 位姿优化方法、位姿优化装置、存储介质与电子设备
CN112269851A (zh) * 2020-11-16 2021-01-26 Oppo广东移动通信有限公司 地图数据更新方法、装置、存储介质与电子设备
CN112800279B (zh) * 2020-12-30 2023-04-18 中国电子科技集团公司信息科学研究院 基于视频的应急目标信息获取方法、装置、设备和介质
CN113160406B (zh) * 2021-04-26 2024-03-01 北京车和家信息技术有限公司 道路三维重建方法、装置、存储介质及电子设备
CN117576494A (zh) * 2022-08-08 2024-02-20 腾讯科技(深圳)有限公司 特征地图生成方法、装置、存储介质和计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108648240A (zh) * 2018-05-11 2018-10-12 东南大学 基于点云特征地图配准的无重叠视场相机姿态标定方法
EP3451288A1 (en) * 2017-09-04 2019-03-06 Universität Zürich Visual-inertial odometry with an event camera
CN109816769A (zh) * 2017-11-21 2019-05-28 深圳市优必选科技有限公司 基于深度相机的场景地图生成方法、装置及设备
CN109947886A (zh) * 2019-03-19 2019-06-28 腾讯科技(深圳)有限公司 图像处理方法、装置、电子设备及存储介质
WO2019169540A1 (zh) * 2018-03-06 2019-09-12 斯坦德机器人(深圳)有限公司 紧耦合视觉slam的方法、终端及计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3451288A1 (en) * 2017-09-04 2019-03-06 Universität Zürich Visual-inertial odometry with an event camera
CN109816769A (zh) * 2017-11-21 2019-05-28 深圳市优必选科技有限公司 基于深度相机的场景地图生成方法、装置及设备
WO2019169540A1 (zh) * 2018-03-06 2019-09-12 斯坦德机器人(深圳)有限公司 紧耦合视觉slam的方法、终端及计算机可读存储介质
CN108648240A (zh) * 2018-05-11 2018-10-12 东南大学 基于点云特征地图配准的无重叠视场相机姿态标定方法
CN109947886A (zh) * 2019-03-19 2019-06-28 腾讯科技(深圳)有限公司 图像处理方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于ORB关键帧匹配算法的机器人SLAM实现;艾青林等;《机电工程》;20160520(第05期);全文 *

Also Published As

Publication number Publication date
CN110648397A (zh) 2020-01-03

Similar Documents

Publication Publication Date Title
CN110648397B (zh) 场景地图生成方法、装置、存储介质及电子设备
CN110310333B (zh) 定位方法及电子设备、可读存储介质
CN108875523B (zh) 人体关节点检测方法、装置、系统和存储介质
US10096122B1 (en) Segmentation of object image data from background image data
CN111243093B (zh) 三维人脸网格的生成方法、装置、设备及存储介质
US11928800B2 (en) Image coordinate system transformation method and apparatus, device, and storage medium
CN109815843B (zh) 图像处理方法及相关产品
CN109410316B (zh) 物体的三维重建的方法、跟踪方法、相关装置及存储介质
CN109934065B (zh) 一种用于手势识别的方法和装置
CN108876804B (zh) 抠像模型训练和图像抠像方法、装置和系统及存储介质
CN109242961A (zh) 一种脸部建模方法、装置、电子设备和计算机可读介质
US20110248995A1 (en) System and methods for creating interactive virtual content based on machine analysis of freeform physical markup
CN112506340B (zh) 设备控制方法、装置、电子设备及存储介质
CN109842811B (zh) 一种在视频中植入推送信息的方法、装置及电子设备
CN111862205A (zh) 一种视觉定位方法、装置、设备及存储介质
JP7164589B2 (ja) 室内測位方法、装置、機器および記憶媒体
CN112308977B (zh) 视频处理方法、视频处理装置和存储介质
CN113112542A (zh) 一种视觉定位方法、装置、电子设备及存储介质
CN113160231A (zh) 一种样本生成方法、样本生成装置及电子设备
CN112802081A (zh) 一种深度检测方法、装置、电子设备及存储介质
KR102464271B1 (ko) 포즈 획득 방법, 장치, 전자 기기, 저장 매체 및 프로그램
CN111353325A (zh) 关键点检测模型训练方法及装置
JP2015032256A (ja) 画像処理装置およびそのデータベース構築装置
US11961256B2 (en) Method for indoor localization using deep learning
CN111179408A (zh) 三维建模的方法及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant