使用3D线交汇点进行位置确定和映射的制作方法


使用3d线交汇点进行位置确定和映射
1.相关申请的交叉引用
2.本技术要求于2019年12月20日提交的美国临时申请号62/952,016的权益,该申请通过引用整体并入本文。
技术领域
3.本公开总体上涉及3d映射,并且具体地涉及使用3d线交汇点来确定设备的位置。


背景技术:



4.平行现实游戏可以提供共享虚拟世界,该共享虚拟世界与真实世界的至少部分平行,可以托管可以吸引玩家社区的各种交互。提供具有与真实世界的至少部分平行的地理环境的虚拟世界允许玩家通过在真实世界中导航来在虚拟世界中导航。在游戏过程中,玩家可以通过手持或可穿戴设备来查看虚拟世界,该设备使用计算机介导的现实技术来添加、减去或以其他方式改变玩家对其环境的视觉或听觉感知。
5.然而,准确地改变玩家对环境的视觉感知通常涉及准确地了解玩家在真实世界中的位置。这可能很难确定,因为传统的定位设备不足以准确地确定玩家的位置而没有相当大的误差范围。因此,需要改进的方法来确定玩家在真实世界中的位置。


技术实现要素:



6.在基于位置的平行现实游戏中,玩家通过利用诸如智能电话等位置感知客户端设备在真实世界中移动来在虚拟世界中导航。平行现实游戏中的玩家使用的很多客户端设备可以包括定位设备,当玩家在玩平行现实游戏的同时在真实世界中移动时,该定位设备跟踪玩家位置信息。在各种实施例中,客户端设备使用由(多个)设备上相机捕获的图像数据来确定玩家的位置,该位置可以用来代替或补充从定位设备收集的玩家位置信息。客户端设备可以基于所确定的玩家位置来产生增强现实(ar)图像以覆盖在图像数据上。
7.根据一个实施例,ar平台确定用于平行现实游戏的环境中的相机的位置。使用由相机捕获的一个或多个图像,ar平台标识一个或多个图像中的线交汇点(junction),即,线在空间中相交的点。ar平台将这些线交汇点与环境的三维(3d)地图进行比较,以确定线交汇点是否对应于3d地图中的地图线交汇点。基于由ar平台标识的一个或多个对应关系,ar平台确定环境中的相机的位置。ar平台可以生成计算机介导的现实图像,用于显示在与相机相关联的客户端设备上,以反映与真实世界中的确定的位置相对应的虚拟世界中的位置。
8.在附加或备选实施例中,ar平台可以从集成在客户端设备中的地理定位/全球定位系统来接收表示由相机看到的环境的近实时视图和地理定位位置的一个或多个图像。ar平台估计特定时间点的相机位置处与一个或多个图像中的一个或多个映射点之间的距离。基于所估计的距离,ar平台将一个或多个图像与位于3d地图中特定位置的计算机生成的图像叠加。当玩家将相机移动到空间中的不同位置时,计算机生成的图像会保持定位在特定
位置。
9.这些和其他特征、方面和优点参考以下描述和所附权利要求可以更好地理解。附图示出了具体实施例,并且与说明书一起用于解释各种原理。然而,附图不应当被认为是限制性的。相反,保护范围应当根据权利要求来确定。
附图说明
10.图1是根据一个实施例的ar计算系统100的框图。
11.图2a描绘了根据一个实施例的线交汇点。
12.图2b描绘了根据一个实施例的线交汇点处的相交线。
13.图2c描绘了根据一个实施例的2d和3d中的线交汇点的表示。
14.图3是示出根据一个实施例的由图1的计算系统可执行以用于生成和显示增强现实数据的过程的流程图。
15.图4描绘了根据一个实施例的与真实世界平行的虚拟世界的概念图,该虚拟世界可以充当基于位置的平行现实游戏的玩家的游戏板。
16.图5是示出根据一个实施例的用于确定环境中的相机的位置的过程的流程图。
17.图6是示出根据一个实施例的适合在图1的网络计算环境中使用的示例计算机系统的框图。
具体实施方式
18.一种系统和方法确定环境中的客户端设备的位置,并且基于该位置来启用用户经由客户端设备与真实世界的交互。此外,系统可以创建环境的三维(3d)地图(例如,分辨率为1厘米),以用于确定客户端设备的位置。在各种实施例中,映射在客户端(例如,电话或耳机)上完成并且与后端服务器配对,该后端服务器提供先前编译的图像并且将映射回客户端设备。
19.在一个实施例中,系统使用一个或多个模型来基于由相机捕获的一个或多个图像来评估相机的位置(例如,在客户端设备上)。使用一个或多个模型涉及系统检测一个或多个图像内的线交汇点并且在3d空间与2d空间之间投影线交汇点,以确定它们是否对应于来自相机周围的环境的3d地图的地图线交汇点。基于线交汇点与地图线交汇点之间的对应关系,系统可以对相机在空间中的位置进行三角测量(triangulate)。使用该位置,系统可以增强针对平行现实游戏的一个或多个图像,使得使用客户端设备的游戏的玩家可以在虚拟世界中看到与其在真实世界中的位置相对应的虚拟元素或其他虚拟信息。
20.示例系统
21.图1是根据一个实施例的ar计算系统100的框图。ar计算系统100包括与经由网络104访问的元素协作的客户端设备102。例如,该元素可以是被配置为产生ar数据的服务器设备的组件。在所示实施例中,客户端设备102包括游戏引擎106和ar平台108。游戏引擎106绘制平行现实游戏以供客户端设备102的用户玩。游戏引擎可以是游戏引擎或其他物理/渲染引擎。ar平台108可以对由客户端设备102的相机捕获的图像数据执行分割和对象识别。
22.图1所示的ar平台108包括复杂可视化模块110、定位和映射模块112、地图取回模
块114和深度学习模块116。在其他实施例中,ar平台可以包括备选或附加模块,诸如训练模块或对象识别模块。此外,在一些实施例中,ar平台可以位于具有元素的服务器设备处并且经由网络104来访问,或者元素可以位于ar平台108处。
23.复杂计算机可视化模块110执行客户端图像处理。这样的图像处理可以包括图像分割、局部3d估计等。在一些实施例中,复杂计算机可视化模块110可以将图像转换为点云或处理图像以将图像中描述的特征添加到客户端设备102周围的环境的3d地图中。
24.定位和映射模块112映射客户端设备102周围的环境并且确定环境中的客户端设备102的位置。定位和映射模块112可以使用多种方法中的一种或多种方法用于映射环境并且确定客户端设备102的位置。
25.定位和映射模块112从客户端设备102的相机接收一个或多个图像(或其他图像数据,诸如视频)。在一些实施例中,定位和映射模块112接收由客户端设备102捕获的其他传感器数据(例如,照明数据、图像数据和/或gps坐标),定位和映射模块112可以使用该数据来确定客户端设备102的位置。定位和映射模块112可以在客户端设备102在环境中移动时实时接收图像(和传感器数据)。
26.定位和映射模块112基于接收的图像来确定环境中的客户端设备102的位置。在一些实施例中,定位和映射模块112从位于客户端设备102处的全球定位系统接收客户端设备102在真实世界中的gps坐标。定位和映射模块112可以使用这些gps坐标来表示客户端设备102的位置,或者可以使用这些gps坐标作为针对客户端设备102的一般位置的参考,并且使用一个或多个其他模型或系统来确定客户端设备102的更准确位置。
27.在一些实施例中,定位和映射模块112使用同时定位和映射(slam)软件开发工具包(sdk)功能来生成环境的地图。特别地,slam sdk功能可以包括映射系统,该映射系统基于图像或其他图像数据来构建点云,该点云用于形成环境地图。定位和映射模块112可以将地图存储在本地,或者可以将地图存储在地图数据库124中。基于地图,定位和映射模块112可以使用跟踪来查客户端设备102在空间中的位置。定位和映射模块112进一步使用slam过程将一个或多个动画或增强的值重新投影到图像上用于显示给客户端设备的用户。例如,基于客户端设备的位置,定位和映射模块112可以将一个或多个虚拟元素或来自虚拟世界的其他信息添加到用户的图像以供查看。虚拟元素等关于图4进行描述。
28.在其他实施例中,定位和映射模块112具有可用于确定客户端设备102的位置的多个模型。这些模型可以包括基于点云的模型(例如,由slam提供的)、平面匹配模型、线匹配模型、地理信息系统(gis)模型、建筑物识别模型和景观识别模型。定位和映射模块112可以基于由客户端设备102捕获的传感器数据来选择一个或多个模型用于定位。例如,平面和线匹配模型在室内可能是最准确的,而景观和建筑模型在室外可能是最准确的。因此,客户端设备102可以基于传感器数据来确定客户端设备102是在室内还是在室外,并且选择更有效的模型用于定位。
29.在一个示例性实施例中,定位和映射模块112将线交汇点模型应用于图像,以定位客户端设备102。具体地,线交汇点模型标识一个或多个图像中的一个或多个线交汇点。线交汇点是空间中两条或更多个条线相交的点,如图所示。例如,一张桌子前面的图像可能会在桌子上的每个边(例如,线)相交的地方示出线交汇点。在一些实施例中,线交汇点模型可以标识图像中的其他特征,诸如曲线。
30.线交汇点模型访问环境的3d地图。3d地图可以被本地存储在客户端设备处或者存储在经由网络104访问的地图数据库124处。3d地图可以包含地图线交汇点,地图线交汇点是已经在3d地图中标识的线交汇点,或者可以包含其他特征,诸如线和曲线。备选地,地图取回模块114可以访问用于线交汇点模型的3d地图并且将3d地图输入线交汇点模型。
31.线交汇点模型将所标识的线交汇点(或者在某些情况下将特征)与3d地图进行比较,以查对应线交汇点(或特征)。基于由线交汇点模型到的对应关系,线交汇点模型确定环境中的客户端设备102的位置。由线交汇点模型用来确定客户端设备102的位置的过程将结合图2a至图2c进一步描述。
32.在一个实施例中,为了选择一个或多个模型,定位和映射模块112为每个模型分配得分,该得分指示该模型将生成针对客户端设备102的准确位置的可能性。得分可以基于由传感器数据指示的客户端设备102的当前情况而被确定。定位和映射模块112基于得分和选择标准集来选择一个或多个模型用于定位。例如,客户端设备102可以选择具有得分最高的模型、得分最高的三个模型或得分高于阈值的所有模型。
33.附加地或备选地,定位和映射模块112可以基于先前在相似位置中选择了哪些模型来选择一个或多个模型。例如,如果针对客户端设备102的gps坐标在先前成功使用平面匹配模型的gps坐标的阈值内,则定位和映射模块112可以提高平面匹配模型的得分或者选择平面匹配模块,除非另一模型的得分超过针对平面匹配模型的得分达阈值量。类似地,如果特定模型先前被选择并且未能提供准确位置,则定位和映射模块112可以降低该模型的得分。因此,相似gps坐标处的模型的成功和失败可以用于告知定位和映射模块112选择哪个或哪些模型来确定比由gps坐标提供的更精确的位置(例如,在一厘米内)。
34.以类似的方式,定位和映射模块112可以考虑模型在传感器数据指示的、与客户端设备102的当前位置相似的位置处的成功和失败。例如,定位和映射模块112可以基于传感器数据指示客户端设备102当前在室内还是室外来将位置分类为室内和室外并且排除或选择某些模型(或增加或减少其对应得分)。类似地,定位和映射模块112可以基于照明等级来选择一个或多个模型(例如,一个模型在低照明条件下相对于其他模型可能特别有效,并且因此如果客户端设备102检测到的照明等级低于阈值,则优先选择该模型)。本领域技术人员将认识到可以使用所收集的数据来影响选择哪个或哪些模型以有利于在当前条件下最有可能产生准确结果的那些模型的选择的其他方法。
35.定位和映射模块112可以应用所选择的一个或多个模型来生成针对客户端设备102的潜在位置。在仅选择单个模型的情况下,定位和映射模块112可以使用所生成的位置、客户端设备102的实际位置。然而,在gps坐标可用的情况下,如果使用模型确定的位置与gps坐标的差异超过阈值量,则定位和映射模块112可以应用附加模型或以其他方式以寻求验证当前位置。
36.在多于一个模型被选择的情况下,每个模型可以产生客户端设备102的潜在位置。定位和映射模块112基于潜在位置来确定针对客户端设备102的当前位置。在一个实施例中,定位和映射模块112计算当前位置作为由模型生成的位置的均值。在另一实施例中,定位和映射模块112使用潜在位置的加权平均。例如,定位和映射模块112可以用来自模型选择阶段的模型的得分来对每个模型的贡献进行加权。备选地,定位和映射模块112可以预设权重以使某些模型优于其他模型。在另外的实施例中,定位和映射模块112可以以其他方式
组合潜在位置,诸如以采用与设备的gps坐标最接近匹配的位置。
37.在一些实施例中,一旦定位和映射模块112已经确定了客户端设备102的位置,定位和映射模块112就将描述虚拟世界的ar数据取回到要在客户端设备102处呈现的一个或多个图像。例如,定位和映射模块112可以访问地图数据库124(存储在本地或在经由网络104访问的服务器设备处)以从虚拟世界中取回一个或多个虚拟元素或其他信息以添加到图像。虚拟元素等关于图4进行描述。
38.地图取回模块114取回先前生成的地图。例如,地图取回模块114可以经由网络104来访问地图数据库124,并且将从地图数据库中取回到的信息发送给客户端设备102的一个或多个其他模块,诸如定位和映射模块112。在一些实施例中,地图取回模块114可以在本地存储一些地图(例如,用于用户家庭位置的地图)。深度学习模块116将机器学习算法应用于对象识别。深度学习模块116可以在经由网络104进行训练之后来获取机器学习算法。在一些实施例中,深度学习模块116还可以提供对象识别和/或用户反馈的结果以启用另外的模型训练。
39.在所示实施例中,经由网络104(例如,在服务器计算设备处)而被访问的组件包括ar后端引擎118,ar后端引擎118与一个世界映射模块120、对象识别模块122、地图数据库124、对象数据库126和深度学习训练模块128通信。在其他实施例中,可以包括附加或不同组件。此外,该功能可以以不同于本文中描述的方式分布。例如,对象识别功能中的一些或所有功能可以在客户端设备102处执行。
40.一个世界映射模块120将不同局部地图融合在一起以创建合成真实世界地图。如前所述,来自最初生成地图的客户端设备102的gps位置数据可以用于标识可能相邻或重叠的局部地图。然后可以使用模式匹配来标识地图的重叠部分或彼此相邻的两个局部地图(例如,因为它们包括同一对象的相对侧的表示)。如果确定两个局部地图重叠或相邻,则可以存储(例如,在地图数据库中)指示这两个地图如何彼此关联的映射。
41.对象识别模块122使用图像/对象信息和所收集的3d数据来标识在数据中表示的真实世界中的特征。以这种方式,服务器104确定例如椅子在3d位置处并且访问与该位置相关联的对象数据库126。深度学习模块128可以用于将地图信息与对象信息融合。以这种方式,系统100可以将用于对象识别和用于融合的3d信息连接回地图中。
42.地图数据库124包括一种或多种计算机可读介质,该介质被配置为存储由客户端设备102生成的地图数据。地图数据可以包括与图像相关联地存储的3d点云的局部地图以及由客户端设备102在位置处收集的其他传感器数据。地图数据还可以包括指示不同局部地图之间的地理关系的地图信息。类似地,对象数据库126包括被配置为存储关于识别的对象的信息的一个或多个计算机可读介质。例如,对象数据库126可以包括具有对应位置的已知对象(例如,椅子、桌子、树木、建筑物等)以及这些对象的属性的列表。属性可以是对象类型的通用属性,也可以是为对象的每个实例而专门定义的(例如,所有椅子都可能被视为家具,但每个的位置是被个体定义的)。尽管地图数据库124和对象数据库126被示出为单个实体,但它们可以跨多个设备处的多个存储介质而被分布(例如,作为分布式数据库)。
43.示例线交汇点模型
44.定位和映射模块112可以采用线交汇点模型,该线交汇点模型使用3d地图基于其捕获的一个或多个图像来定位客户端设备102。以下段落解释了模型的一个实施例如何在
数学上定义和应用。
45.1.参数化3d交汇点
46.如图2a描绘了根据一个实施例的3d线交汇点的示例。线交汇点包括点q和方向向量(或者,在一些实施例中的线或线段)d1和d2。每个方向向量是单位向量,其长度为1。每个3d线交汇点具有七个自由度:三个自由度用于点q,表示其在3d空间中的位置,两个自由度用于每个方向向量(d1和d2),因为它们是单位向量。
47.为了避免有约束优化,线交汇点模型对两个方向向量进行如下参数化,其中x、y和z表示方向向量在3d空间中的坐标,θ表示与+z轴的夹角增加的方向,α表示在x-y平面中从+z轴逆时针方向的角度增加的方向:
[0048][0049][0050]
由于单位向量的范数为1,因此
[0051]
(cosθcosα)2+(cosθsinα)2+(sinθ)2[0052]
=cos2θ(cos2α+sin2α)+sin2θ
[0053]
=ωs2θ+sin2θ
[0054]
=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0055]
因此,线交汇点模型可以将3d线交汇点参数化为7个向量
[0056]
2.将3d交汇点投影到2d空间
[0057]
线交汇点模型将3d线交汇点投影到2d空间中,以得到两条相交线(l1和l2),如图2b所示。特别地,使用点q、一个方向向量d1和相机姿势(r,t),2d线函数被定义为线上两个不同点(p1和p2)的交叉积,得到以下等式:
[0058]
p1∧p2[0059]
~(rq+t)∧(r(q+d1)t)
[0060]
~(rq+t)∧(rq+t+rd1)
[0061]
~(rq+t)∧(rq+t)+(rq+t)∧(rd1)
[0062]
~(rq+t)∧(rd1)
[0063]
~r(q∧d1)+t∧rd1[0064]
~(rq
x
+t
x
r)d1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)其中p1、p2是线上的两个点,∧是交叉积,qx、tx是向量q和t的斜对称矩阵。
[0065]
因此,对于方向向量d1,2d投影为(rq
x
+t
x
r)d1。线交汇点模型可以使用相同的过程来导出方向向量d2的2d投影。
[0066]
3.重新投影误差
[0067]
线交汇点模型确定一个或多个图像中的关键线,以确定从3d线交汇点中创建2d投影的误差。关键线是分隔图像中不同颜区域的边界线。由于2d投影是线函数,因此线交汇点模型可以将该点与距检测到的关键线的两个端点的线距离进行比较。如果四个端点分别在两条关键线上表示为u、v、x和y,则线交汇点模型可以确定针对每个端点的距离。以u为
例,距离为其中l=(a,b,c)是2d线投影的2d线等式,并且d2=a2+b2。
[0068]
l=(rq
x
+t
x
r)d
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0069]
如果l1和l2分别是两条3d线的2d投影,则实际残差是4向量,如下所示:
[0070][0071]
*这里,u、v、x、y是常数,并且l1、l2、d1、d2是(q,d1,d2,r,t)的变量。
[0072]
4.优化设置
[0073]
为了优化2d投影的设置,线交汇点模型必须解决无约束最小化问题,以确定环境中的客户端设备102(例如,相机)的位置。由于非线性,在一个实施例中,线交汇点模型使用列文伯格-马夸尔特法(levenberg-marquardt)(或“lm”)求解器。一般更新步骤如下:
[0074]
δp=-(j
t
j+λi)-1jtr[0075]
其中j是重新投影误差的雅可比(jacobian),r是残差,λ是req项。
[0076]
一个或多个图像包括多个地标(例如,线交汇点、点云、线等),并且由于典型图像中有大量地标,线交汇点模型可以使用交替方向方法来优化设置。这使得线交汇点模型能够在固定所有其他变量的同时一次计算图像的一个地标或帧的步长。这种方法的一个优点是雅可比矩阵的大小相对较小,这使针对线交汇点模型的计算速度更快。
[0077]
在一个实施例中,用于优化的线交汇点模型所遵循的流水线可以总结如下:
[0078]
在没有收敛时:
[0079]
对于每个地标:
[0080]
计算lm步长
[0081]
更新地标
[0082]
对于每个帧:
[0083]
计算lm步长
[0084]
更新帧。
[0085]
线交汇点模型使用该过程来优化和计算每个变量的雅可比,如下所述。这些推导
是关于线交汇点模型描述的,但在一些实施例中,线交汇点模型可能不会在每次应用时都完成这些推导,或者线交汇点模型可能仅使用所得到的等式来确定客户端设备102的位置而不是自己完成推导。
[0086]
5.雅可比——3d交汇点——交汇点q
[0087]
要计算针对q、jq的雅可比,雅可比的大小应当为4k
×
3,其中k是一个或多个图像中的帧数。对于每个帧k,残差rk如下:
[0088][0089]
其中
[0090]
l
k1
=(rkqk+t
krk
)d1[0091]
l
k2
=(rkqk+t
krk
)d2[0092]
并且
[0093][0094][0095]
根据残差rk,线交汇点模型可以导出针对每个帧k的雅可比jq:
[0110]
线交汇点模型计算针对d1和d2的雅可比。以d1为例,由于d2的推导本质上是相同的,因此线交汇点模型从残差和雅可比维度开始,如上面第5节所述。残差与等式(6)相同,而雅可比为:
[0111][0112]
与第5节不同,都为零。因此,线交汇点模型可以将jk的大小减小到r
2x2
,并且将残差rk的大小减小到r
2x1

[0113]
此外,线交汇点模型在导数链中又添加了一步:
[0114]

[0115]
使用与前面描述的方法类似的方法给出针对的雅可比,然后将它们组合起来,然后给出针对一个帧的完整雅可比,j
k-r
4x7

[0116]
6.雅可比——r、t
[0117]
与导出针对t的雅可比矩阵相比,导出雅可比矩阵r涉及线交汇点模型的更多工作。线交汇点模型旨在确定关于三个欧拉角的雅可比。
[0118]
定义从欧拉角到旋转矩阵的转换会得到:
[0119][0120]
其中其中
[0121]
如果r被展开,其中则线交汇点模型得到:
[0122]a11
=cosθcosφ
[0123][0124][0125]a21
=cosθsinφ
[0126][0127][0128]a31
=-sinφ
[0129][0130]a33
=cosφcosθ
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(16)
[0131]
以下步骤与第5节和第6节类似,只是在计算关于欧拉角的导数时,在链式规则中,线交点模型插入额外步,即在计算之后,jr∈r
4x3
,j
t
∈r
4x3
·jrt
∈r
4x6

[0132]
交汇点三角测量
[0133]
使用上面导出的等式,线交汇点模型可以确定给定一个或多个图像的环境中相机(例如,客户端设备102)的姿势(位置和定向)。在一个实施例中,线交汇点模型使用3d地图来确定3d地图内的端点,这些端点被用作针对3d线交汇点的顶点。线交汇点模型使用预测的姿势将端点从3d投影到2d,以确定端点是否被反映在一个或多个图像中。由于投影中存在误差,因此线交汇点模型计算重新投影误差,并且更新针对一个或多个图像的相机的一个或多个预测姿势,以减少重新投影误差。通过针对多次迭代改变相机姿势,线交汇点模型可以收敛其对相机姿势的估计,直到计算的误差低于阈值。线交汇点模型使用这个确定的位置作为相机在环境中的位置。
[0134]
线交汇点模型使用上述等式确定环境中的相机的位置。特别地,给定k个帧以及相机的内在和外在参数,表示为:
[0135][0136]
其中mi的形式为pi的形式为并且
[0137]
在每个帧上,存在由两个2d线等式和一个交点(类似于图2a的q或图2b的p)组成的2d线交点ji=(l
i1
,l
i2
,pi),两条线在此相交。
[0138]
注意,2d线的等式是2d线在3d空间中的法线向量,其通过连接相机的中心和线的
两个端点而被跨越。通过假定所有相机都带有校准,线交汇点模型可以与相机坐标一起工作。例如,ji=(l
i1
,l
i2
,pi)都在相机坐标系中。
[0139]
给定线交汇点的k个对应关系,线交汇点模型的目标是将对应关系三角测量到3d空间以获取3d线交汇点。线交汇点模型可以使用任何适当的3d点三角测量方法(例如,使用2d和3d交汇点)。在一个实施例中,可以将3d线交汇点定义为j-(l1,l2,p),其中l1、l2是指示两个方向的两个单位向量,并且p是两条3d线在3d空间中相交的交汇点。
[0140]
与两条2d线不同,两条3d线可能不会相交,无论它们是否不平行。然而,在一个实施例中,线交汇点模型强制关于这两条3d线相交的约束,以使得线交汇点模型能够使用两个方向向量和一个点来表示3d线交汇点。由于两个方向向量是如前所述的单位向量,因此该表示具有7个自由度。这由图2c表示,图2c描绘了与在世界空间220中具有点p以及线l1和l2的3d线交汇点相关的在相机空间210中具有点pi以及线l
i1
和l
i2
的2d线交汇点。线交汇点模型或定位和映射模块112可以通过将一个或多个图像投影到顶点(点)和边(线)的图形中来创建类似于图2c的环境表示,并且使用该表示来标识线交汇点。
[0141]
从3d到2d
[0142]
图2c描绘了3d线交汇点与2d线交汇点的关系。相机中心oi、图像帧上的2d线交汇点pi和线上的任何点l为客户端设备102的相机提供相机空间210中的平面200。平面200的法线向量是第1行l
i1
的等式。
[0143]
为了在第i帧的第1行到任意点qi,在第2行到si:
[0144][0145]
由{oi,pi,qi}跨越的平面上的任何点(记为xi)满足:
[0146]
l
i1t
xi=0
[0147]
类似地,对于由{oi,pi,si}跨越的平面上的任何点yi[0148]
p
i2t
yi=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0149]
注意,方向向量也表示该平面上的点,但它位于世界空间220中,而不是相机空间210中。为了在帧i上将l1带到相机210空间,线交汇点模型使用以下变换。
[0150]
qi=ril1+ti[0151]
但是,由于l1是方向向量,因此可以忽略平移,得到:
[0152][0153]
结合等式(2)和(3)可以得出3d线交汇点方向向量与2d线之间的直接关系,如下所示:
[0154]
[0155]
这适用于所有帧i=1,...,k。
[0156]
可以使用下式将点p从世界220空间转移到相机220空间:
[0157]
pi=rip+tiꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0158]
由于它在帧上的图像应当同时与两条2d线相交,结合等式(2)和(5)给出:
[0159][0160]
从2d到3d
[0161]
(4)和(6)给出了用于从2d交汇点对应关系求解3d交汇点的等式。
[0162]
令两个k
×
3矩阵。
[0163]
根据等式(4),这是
[0164][0165]
因为l1和l2两者都是单位向量。||l1||=||l2||=1,线交汇点模型可以对n1和n2应用奇异值分解(svd):
[0166][0167]
其中令l1为与最小奇异值相关联的奇异向量,并且对l2进行相同操作。
[0168]
根据等式(6),令并且则线交汇点模型可以通过到np=b的最小二乘解来求解p。因此,
[0169][0170]
当相机(例如,客户端设备102)在环境中移动并且捕获更多图像时,线交汇点模型可以使用上述过程来多次计算相机的位置。
[0171]
示例数据流
[0172]
图3是示出根据一个实施例的由客户端设备102和服务器设备执行以生成和显示ar数据的过程的流程图。客户端设备102和服务器设备(统称为“设备”)可以类似于图1所示的那些,其中服务器设备由通过网络104连接到客户端设备102的元件表示。虚线表示客户端设备102与服务器设备之间的数据通信,而实线表示设备中的一个设备内的数据通信。在其他实施例中,功能可以在设备之间不同地分布,和/或不同设备可以被使用。
[0173]
在302处,通过客户端设备102上的一个或多个传感器在客户端设备102处收集传感器数据。在一个实施例中,传感器数据包括图像和惯性测量信息。图像由一个或多个相机捕获。惯性测量信息可以使用客户端设备102上的全球定位系统(例如,gps)和陀螺仪/加速度计模块来收集。可以收集附加传感器数据,诸如压力等级、照明等级、声音等级、音频数据等。
[0174]
在304处,客户端设备102可以维护局部地图存储库。局部地图存储库可以被包含在图1所示的定位和映射模块112中或者在客户端设备102处的另一位置。局部地图存储库包括局部点云数据。点云数据包括形成网格表面的空间位置,该网格表面可以被构建成一个或多个环境的3d地图,该3d地图也可以存储在局部地图存储库中。
[0175]
如果地图在306处被初始化,则客户端设备102可以在308处发起定位和映射模块112处的slam功能。slam功能包括映射系统,该映射系统构建点云并且使用跟踪来查相机在空间中的位置(例如,在客户端设备102上)。该示例的slam过程进一步将动画或增强值重新投影回真实词中。如果在310处没有定位出地图,其可以在304处存储在局部地图存储库中,则客户端设备102在312处使用初始化模块来创建地图。
[0176]
如果在314检测到环境中的新的视点(例如,如果将拐角变成尚未映射/成像的区域,或者存在重叠并且并非真实世界的所有当前可见部分都已经映射/成像),则客户端设备102可以在316处记录由客户端设备102处的局部环境推断收集的数据。例如,在确定客户端设备102当前具有新的视点时,由具有该视点的相机捕获的图像可以被发送给服务器设备。局部环境推断可以用于确定何时以及如何在客户端设备102与服务器设备之间传输具有3d数据的图像。局部环境推断可以包括用于局部映射系统(例如,定位和映射模块112)的更新后的关键帧、以及序列化的图像和/或地图数据。
[0177]
在由服务器设备执行动作的服务器端侧,新的视点数据(例如,包括顶部具有网格数据的点云信息)可以在318存储在云地图存储库中。服务器设备可以添加来自所存储的云地图存储库320和对象数据库322的真实世界地图的不同部分。云环境推断324(包括由客户端设备102捕获并且由服务器设备处理的添加的数据)可以被发送回客户端设备102。添加的数据可以包括点和网格以及要在304存储在局部地图存储库中的具有语义标签的对象数据(例如,墙壁或床)。
[0178]
虚拟世界的概念图
[0179]
图4描绘了根据一个实施例的平行于真实世界400的虚拟世界410的概念图,该虚拟世界410可以充当基于位置的平行现实游戏的玩家的游戏板。图1的客户端设备102可以托管平行现实游戏(或其他基于位置的游戏),虚拟世界410对应于图4所示的真实世界400。
[0180]
如图所示,虚拟世界410可以包括与真实世界400的地理平行的地理。具体地,定义真实世界400中的地理区域或空间的坐标范围被映射到定义虚拟世界410中的虚拟空间的对应坐标范围。真实世界400中的坐标范围可以与城镇、小区、城市、校园、场所、国家、大陆、全球或其他地理区域相关联。地理坐标范围内的每个地理坐标都被映射到虚拟世界中的虚拟空间中的对应坐标。
[0181]
玩家在虚拟世界410中的位置对应于玩家在真实世界400中的位置。例如,位于真实世界400中的位置412处的玩家a在虚拟世界410中具有对应位置422。类似地,位于真实世界中的位置414的玩家b在虚拟世界中具有对应位置424。当玩家在真实世界400中的地理坐
标范围内四处移动时,玩家也在定义虚拟世界410中的虚拟空间的坐标范围内四处移动。具体地,当玩家在真实世界中的地理坐标范围内导航时,与由玩家携带的客户端设备102相关联的定位系统(例如,由定位和映射模块112使用的gps系统或其他系统)可以用于跟踪玩家的位置。与玩家在真实世界400中的位置相关联的数据被用于更新玩家在定义虚拟世界410中的虚拟空间的对应坐标范围内的位置。以这种方式,通过简单地在真实世界400中的对应地理坐标范围之间行进,玩家可以在定义虚拟世界410中的虚拟空间的坐标范围内导航连续轨迹,而不必在真实世界400中的特定离散位置处登记或周期性地更新位置信息。
[0182]
平行现实游戏可以包括多个游戏目标,该游戏目标要求玩家前往散布在虚拟世界410中的各个虚拟位置的各种虚拟元素和/或虚拟对象和/或与之进行交互。玩家可以通过前往真实世界400中的虚拟元素或对象的对应位置来前往这些虚拟位置。例如,客户端设备102的定位系统可以连续跟踪玩家的位置,使得当玩家在真实世界400中连续导航时,玩家还在平行虚拟世界410中连续导航。然后玩家可以在特定位置处与各种虚拟元素和/或对象交互以实现或执行一个或多个游戏目标。
[0183]
例如,参考图4,游戏目标可以要求玩家捕获或声明位于虚拟世界410中的各个虚拟位置处的虚拟元素430的所有权。这些虚拟元素430可以链接到真实世界400中的地标、地理位置或对象440。真实世界地标或对象440可以是艺术品、纪念碑、建筑物、企业、图书馆、博物馆或其他合适的真实世界地标或对象。为了捕获这些虚拟元素430,玩家必须前往与真实世界中的虚拟元素430链接的地标、地理位置或对象440,并且必须与虚拟世界410中的虚拟元素430执行任何必要的交互。例如,为了经由客户端设备102同与该特定地标240链接的虚拟元素430交互或捕获该虚拟元素430,图4的玩家a将不得不前往真实世界400中的地标440。与虚拟元素430的交互可能需要在真实世界400中的动作,诸如拍摄照片和/或验证、获取或捕获关于与虚拟元素430相关联的地标或对象440的其他信息。
[0184]
游戏目标可以要求玩家使用由玩家在平行现实游戏中收集的一个或多个虚拟项。例如,玩家可能必须在虚拟世界410中行进,以寻对完成游戏目标有用的虚拟项(例如,武器或其他项)。这些虚拟项可以通过前往真实世界400中的不同位置或通过在虚拟世界410或真实世界400中完成各种动作来寻或收集。在图4所示的示例中,玩家使用虚拟项432来捕获一个或多个虚拟元素430。具体地,玩家可以在虚拟世界410中靠近虚拟元素430的位置处部署虚拟项432。靠近虚拟元素430部署一个或多个虚拟项432可以导致为特定玩家或为特定玩家的团队和/或派系捕获虚拟元素430。
[0185]
在一个特定实现中,作为平行现实游戏的部分,玩家可能必须收集虚拟能量。如图4所示,虚拟能量450可以分散在虚拟世界210中的不同位置。玩家可以通过前往真实世界400中虚拟能量450的对应位置来收集虚拟能量450。虚拟能量450可以用于为虚拟项提供动力和/或在平行现实游戏中执行各种游戏目标。失去所有虚拟能量450的玩家可以与平行现实游戏断开连接。
[0186]
根据本公开的方面,平行现实游戏可以是大型多人的基于位置的游戏,其中平行现实游戏中的每个参与者共享相同虚拟世界。玩家可以分成不同团队或派系,并且可以一起工作以实现一个或多个游戏目标,诸如捕获或声称虚拟元素430的所有权。以这种方式,平行现实游戏本质上可以是社交游戏,其鼓励玩家之间在平行现实游戏中的合作。来自相对的队伍的玩家可以在平行现实游戏中彼此对抗。玩家可以使用虚拟项432来攻击或阻碍
对方队伍的玩家前进。
[0187]
平行现实游戏可以具有各种特征以增强和鼓励在平行现实游戏中玩游戏。例如,玩家可以积累虚拟货币或可以在整个平行现实游戏中使用的其他虚拟奖励。当玩家完成一个或多个游戏目标并且在平行现实游戏中获取经验时,玩家可以前进通过各种等级。玩家可以通过平行现实游戏中提供的一种或多种通信接口来彼此交流。玩家还可以获取增强的“权力”或虚拟项432,这些可以用于完成平行现实游戏中的游戏目标。使用本文中提供的公开内容,本领域普通技术人员应当理解,在不偏离本公开内容的范围的情况下,可以将各种其他游戏特征包括在平行现实游戏中。
[0188]
示例方法
[0189]
图5是示出根据一个实施例的用于确定环境中的相机的位置的过程(或“方法”)的流程图的步骤。图5是从客户端设备102执行过程500的角度示出的。然而,一些或所有步骤可以由其他实体或组件执行,诸如由服务器设备执行。此外,一些实施例可以并行地执行这些步骤、以不同顺序执行这些步骤、或者执行不同步骤。
[0190]
在图5所示的实施例中,过程500开始于客户端设备102接收510由客户端设备102的相机捕获的图像。在一些实施例中,客户端设备102可以从传感器接收附加传感器数据,包括视频、音频、光等级、声级、惯性数据、定向、压力和/或任何其他可用数据。客户端设备102标识520图像中的特征。特征可以是线交汇点、直线、曲线、或在图像中发现的任何其他特征。
[0191]
客户端设备102从地图数据库124中取回环境的3d地图。3d地图可能已经由客户端设备102或服务器设备使用由一个或多个相机捕获的环境的图像数据以及在图像数据被捕获时一个或多个相机的相对位置来创建。客户端设备102将所标识的特征与环境的3d地图进行比较530,3d地图包括地图特征,诸如地图线交汇点、地图线、地图曲线等。客户端设备102标识540从图像中标识520的特征与地图特征之间的对应关系。在一些实施例中,客户端设备102可以将模式匹配应用于所标识520的特征和3d地图以确定所标识520的特征和3d地图是否重叠或相邻(例如,对应)。客户端设备102基于(多个)对应关系来确定550客户端设备102的位置。该位置可以是与针对平行现实游戏的虚拟世界中的位置相对应的真实世界位置。如果该位置在服务器设备处被确定,则服务器设备可以将虚拟世界中的位置视图发送给客户端设备102以供玩家经由显示器查看。
[0192]
在一些实施例中,客户端设备102可以选择并且应用其他定位模型来生成针对客户端设备102的潜在位置。例如,每个模型可以输出潜在位置。潜在位置可以基于局部地图内的坐标系来定(例如,如基于客户端设备102的gps坐标而选择的)。例如,gps坐标可以指示客户端设备102可能在建筑物内的某处,因此使用该建筑物的局部地图。客户端设备102可以将所确定550的位置与潜在位置进行比较以确定客户端设备102在建筑物内的更准确的位置(例如,瞄准一厘米的精度)。在一些实施例中,客户端设备102可以基于潜在位置来改变所确定550的位置,或者可以将所确定550的位置与潜在位置组合以生成客户端设备102的新位置。此外,平均加权组合或其他合适的技术可以用于从所确定550的位置和潜在位置中生成新位置。
[0193]
此外,客户端设备102可以基于传感器数据来检查所确定550的位置的可行性。例如,客户端设备102可以确定所确定550的位置是否在由gps坐标指示的位置的阈值距离内,
图像中检测到的照明等级是否与针对所确定550的位置的预期一致,由客户端设备102捕获的图像是否与在类似位置处捕获的其他图像一致,等等。
[0194]
在一些实施例中,客户端设备102可以在平行现实游戏中从连接到客户端设备102的附加客户端设备接收一个或多个附加图像。附加图像可以示出环境中的客户端设备102,并且客户端设备102可以使用这些附加图像来确定客户端设备的位置。
[0195]
计算机器架构
[0196]
图6是示出适合用作客户端设备102或服务器的示例计算机600的高级框图。示例计算机600包括耦合到芯片组604的至少一个处理器602。芯片组604包括存储器控制器集线器620和输入/输出(i/o)控制器集线器622。存储器606和图形适配器612耦合到存储器控制器集线器620,并且显示器618耦合到图形适配器612。存储设备608、键盘610、指向设备614和网络适配器616耦合到i/o控制器集线器622。计算机600的其他实施例具有不同架构。
[0197]
在图6所示的实施例中,存储设备608是非暂态计算机可读存储介质,诸如硬盘驱动器、光盘只读存储器(cd-rom)、dvd或固态存储设备。存储器606保存处理器602使用的指令和数据。指向设备614是鼠标、轨迹球、触摸屏或其他类型的指向设备,并且与键盘610(可以是屏幕上键盘)结合使用以将数据输入计算机系统600中。图形适配器612在显示器618上显示图像和其他信息。网络适配器616将计算机系统600耦合到一个或多个计算机网络。
[0198]
由图1的实体使用的计算机类型可以根据实施例和实体所需要的处理能力而可以有所不同。例如,服务器可能包括分布式数据库系统,该系统包括一起工作以提供所描述的功能的多个刀片服务器。此外,计算机可能缺少一些上述组件,诸如键盘610、图形适配器612和显示器618。
[0199]
本领域技术人员可以对本文中公开的装置和技术进行多种使用和修改以及背离,而没有背离所描述的概念。例如,本公开中图示或描述的组件或特征不限于图示或描述的位置、设置或上下文。根据本公开的装置的示例可以包括与参考一个或多个前述附图所描述的那些组件相比的全部、更少或不同的组件。因此,本公开不限于本文中描述的具体实现,而是应当被赋予与可能发布的任何权利要求及其等价一致的可能的最广泛范围。

技术特征:


1.一种用于从由相机捕获的一个或多个图像定位环境中的所述相机的方法,所述方法包括:接收由客户端设备的所述相机捕获的一个或多个图像;标识所述一个或多个图像中的线交汇点;将标识的线交汇点与所述环境的3d地图进行比较,所述3d地图包括地图线交汇点;标识所述标识的线交汇点与地图线交汇点之间的对应关系;以及使用所述对应关系来确定所述相机在所述环境内的姿势。2.根据权利要求1所述的方法,还包括:通过将所述一个或多个图像投影到顶点和边的图形中来创建所述相机周围的所述环境的表示;并且其中所述标识的线交汇点从所述表示中被标识,所述标识的线交汇点包括所述表示中的重叠边。3.根据权利要求1所述的方法,还包括:从被连接到所述客户端设备的附加客户端设备接收针对虚拟游戏的图像数据。4.根据权利要求1所述的方法,其中将所述标识的线交汇点与所述环境的3d地图进行比较包括:将模式匹配应用于所述标识的线交汇点和所述3d地图,以确定所述标识的线交汇点和所述3d地图是否重叠或相邻。5.根据权利要求1所述的方法,其中所述3d地图使用由一个或多个相机捕获的所述环境的图像数据以及在所述图像数据被捕获时所述一个或多个相机的相对位置而被创建。6.根据权利要求1所述的方法,其中所确定的所述位置对应于虚拟世界中的位置。7.根据权利要求6所述的方法,还包括:向所述客户端设备发送与所确定的所述位置相对应的所述虚拟世界中的所述位置的视图。8.根据权利要求1所述的方法,其中所述标识的线交汇点中的每个线交汇点具有七个自由度,其中三个自由度用于交汇点,两个自由度用于两个方向向量中的每个方向向量。9.根据权利要求1所述的方法,其中通过利用列文伯格-马夸尔特法求解器来计算针对所述线交汇点的更新,所述一个或多个图像各自被逐帧优化。10.根据权利要求1所述的方法,其中标识所述一个或多个图像中的所述线交汇点包括:确定所述一个或多个图像中的线的2d线等式,其中每个2d线等式描述3d空间中的法线向量;确定所述一个或多个图像中的每个图像中的2d线交汇点,其中每个2d线交汇点包括两个2d线等式和交点;将所述2d线交汇点三角测量到3d空间中以获取3d线交汇点。11.根据权利要求10所述的方法,其中对所述2d线交汇点进行三角测量包括:将来自所述一个或多个图像中的每个图像的所述2d线交汇点的坐标转换到一个相机坐标空间;以及将转换后的所述2d线交汇点变换为3d线交汇点。
12.一种非暂态计算机可读存储介质,包括用于从由相机捕获的一个或多个图像定位环境中的所述相机的指令,所述指令包括:用于接收由客户端设备的所述相机捕获的一个或多个图像的指令;用于标识所述一个或多个图像中的线交汇点的指令;用于将标识的线交汇点与所述环境的3d地图进行比较的指令,所述3d地图包括地图线交汇点;用于标识所述标识的线交汇点与地图线交汇点之间的对应关系的指令;以及用于使用所述对应关系来确定所述相机在所述环境内的位置的指令。13.根据权利要求1所述的非暂态计算机可读存储介质,所述指令还包括:用于通过将所述一个或多个图像投影到顶点和边的图形中来创建所述相机周围的所述环境的表示的指令;并且其中所述标识的线交汇点从所述表示中被标识,所述标识的线交汇点包括所述表示中的重叠边。14.根据权利要求1所述的非暂态计算机可读存储介质,所述指令还包括:用于从被连接到所述客户端设备的附加客户端设备接收针对虚拟游戏的图像数据的指令。15.根据权利要求1所述的非暂态计算机可读存储介质,其中用于将所述标识的线交汇点与所述环境的3d地图进行比较的指令还包括:用于将模式匹配应用于所述标识的线交汇点和所述3d地图,以确定所述标识的线交汇点和所述3d地图是否重叠或相邻的指令。16.根据权利要求1所述的方法,其中所述3d地图使用由一个或多个相机捕获的所述环境的图像数据以及在所述图像数据被捕获时所述一个或多个相机的相对位置而被创建。17.根据权利要求1所述的方法,其中所确定的所述位置对应于虚拟世界中的位置。18.根据权利要求17所述的方法,所述指令还包括:用于向所述客户端设备发送与所确定的所述位置相对应的所述虚拟世界中的所述位置的视图的指令。19.根据权利要求1所述的方法,其中所述标识的线交汇点中的每个线交汇点具有七个自由度,其中三个自由度用于交汇点,两个自由度用于两个方向向量中的每个方向向量。20.一种计算机系统,包括:计算机处理器;以及非暂态计算机可读存储介质,存储用于从由相机捕获的一个或多个图像定位环境中的所述相机的指令,所述指令在由所述计算机处理器执行时执行动作,所述动作包括:接收由客户端设备的所述相机捕获的一个或多个图像;标识所述一个或多个图像中的线交汇点;将标识的线交汇点与所述环境的3d地图进行比较,所述3d地图包括地图线交汇点;标识所述标识的线交汇点与地图线交汇点之间的对应关系;以及使用所述对应关系来确定所述相机在所述环境内的位置。

技术总结


本文中描述了一种用于确定客户端设备的位置的系统和方法。特别地,客户端设备接收由客户端设备处的相机捕获的图像。客户端设备标识图像中的特征。这些特征可以是线交汇点、直线、曲线或在图像中发现的任何其他特征。客户端设备从地图数据库中取回环境的3D地图,并且将所标识的特征与环境的3D地图进行比较,3D地图包括地图特征,诸如地图线交汇点、地图线、地图曲线等。客户端设备标识从图像中标识的特征与地图特征之间的对应关系,并且基于该对应关系来确定客户端设备在真实世界中的位置。客户端设备可以显示表示与真实世界中的位置相对应的虚拟世界中的位置的可视化数据。应的虚拟世界中的位置的可视化数据。应的虚拟世界中的位置的可视化数据。


技术研发人员:

A

受保护的技术使用者:

奈安蒂克公司

技术研发日:

2020.12.18

技术公布日:

2022/10/10

本文发布于:2024-09-22 01:42:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/7543.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:交汇点   设备   客户端   所述
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议