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

用于关联多人AR系统中的设备坐标系的方法和系统与流程

2022-07-10 18:39:34 来源:中国专利 TAG:

用于关联多人ar系统中的设备坐标系的方法和系统
技术领域
1.本公开一般涉及增强现实,更具体地且非限制性地,涉及映射多个设备的坐标系。


背景技术:

2.虚拟现实演示(ar presentations)可以在设备的显示屏所显示的真实世界环境内投影虚拟物体。增强现实设备的摄像头可以拍摄真实世界环境。可以创建虚拟物体并通过设备的显示屏呈现,使得虚拟物体看起来像自然地处在环境中。例如,摄像头可以拍摄包括空野餐桌的真实世界环境的实时视频。虚拟现实设备可以生成被呈现为如同放置在野餐桌上一样的虚拟物体。该虚拟物体呈现在显示设备中,看起来基本上如同该物体物理上位于该野餐桌一样。
3.在多设备增强现实系统中,每个设备可以呈现真实世界环境的虚拟表示。特别地,每个设备从该设备的角度呈现环境的虚拟表示。因此,在这样的系统中,虚拟环境在设备之间呈现的一致性很重要。


技术实现要素:

4.本公开的各方面包括用于映射多人增强现实应用中的设备坐标系的方法。该方法包括:第二移动设备接收指示第一移动设备的第一姿势的数据,其中,第一姿势相对于与第一移动设备关联的第一坐标系定义;第二移动设备确定第二移动设备的第二姿势,其中,第二姿势相对于与第二移动设备关联的第二坐标系定义;第二移动设备接收第一移动设备的显示屏的图像,该图像示出标记;第二移动设备基于第一姿势和上述图像识别与基准标记关联的三维坐标,该三维坐标相对于第一坐标系定义;基于三维坐标确定第二移动设备的第三姿势,其中,第三姿势相对于与第一移动设备关联的第一坐标系定义;第二移动设备基于第二姿势和第三姿势生成坐标系变换,坐标系变换在第一坐标系和第二坐标系之间映射坐标;第二移动设备基于坐标系变换在第二移动设备的显示屏上呈现第一虚拟物体。
5.本公开的另一方面包括一种系统,该系统包括一个或多个处理器以及非暂时性计算机可读介质,非暂时性计算机可读介质包括指令,当由一个或多个处理器执行时,该指令使一个或多个处理器执行上述方法。
6.本公开的另一方面包括一种非暂时性计算机可读介质,其包括指令,当由一个或多个处理器执行时,该指令使一个或多个处理器执行上述方法。
7.从下文提供的具体实施方式中,本公开的其他应用领域将变得显而易见。应当理解,具体实施方式和具体示例虽然指示了各种实施例,但仅旨在用于说明的目的,而不旨在必然限制本公开的范围。
附图说明
8.本公开结合附图进行描述。
9.图1是根据本公开至少一个方面的增强现实系统的图示,其中多个设备的坐标系
可以被映射。
10.图2示出了根据本公开至少一个方面的可以呈现在第一设备上以用于多设备坐标系映射的基准标记的示例。
11.图3a示出了根据本公开至少一个方面的生成一个设备相对于另一设备的坐标系的姿势的过程。
12.图3b示出了根据本公开至少一个方面的生成坐标系变换的过程。
13.图4是根据本公开至少一个方面的映射两个移动设备的坐标系的过程的流程图。
14.图5示出了根据本公开至少一个方面的执行增强现实应用的计算系统的组件的示例。
15.在附图中,相似的组件和/或特征可以具有相同的附图标记。此外,可以通过在附图标记后加上破折号和区分相似组件的第二标签来区分相同类型的各种组件。如果在说明书中仅使用了第一附图标记,则说明书适用于具有相同第一附图标记的任何类似部件,而与第二附图标记无关。
具体实施方式
16.以下描述仅提供优选的示例性实施例,并不旨在限制本公开的范围、适用性或配置。相反,以下优选示例性实施例的描述将为本领域技术人员提供用于实现优选示例性实施例的有效说明。应当理解,在不脱离所附权利要求中阐述的精神和范围的情况下,可以对元素的功能和布置进行各种改变。
17.增强现实应用在设备上执行,以在对设备所在的真实世界环境同时拍摄的视频中呈现虚拟物体。设备可以在设备的显示屏上呈现所拍摄的视频,其中呈现虚拟物体,使得虚拟物体正确地显现在真实世界环境中。例如,如同对应的真实世界物体物理地处于真实世界环境中所显现的一样,虚拟物体可以以基本相同的位置和方向呈现在显示器上。为了在设备移动时保持虚拟物体的连贯性,设备可以跟踪其在真实世界环境中的位置和方向,以确保虚拟物体在设备视角发生变化的情况下继续正确显现。位置和方向定义了设备的姿势。该设备可以定义一个坐标系来将真实世界环境映射到虚拟环境并跟踪其相对于该坐标系的姿势。
18.在多设备增强现实应用中,同一虚拟物体可以呈现在位于真实世界环境中的多个设备的每个显示器上。通常,每个设备都会执行跟踪过程,例如slam过程,以根据其自己的坐标系跟踪其在真实世界环境中的姿势(例如位置和方向)。由于设备的坐标系不同,因此可能需要坐标系之间的变换,以便以协调连贯的方式在设备上显示同一虚拟物体的各个实例。可以基于显示已知基准标记或自然图像的设备以及拍摄这些基准标记或自然图像的图像的其余设备中的一个或多个来生成变换。
19.在示例中,在ar校准过程中,第一设备可以跟踪其相对于第一设备的第一坐标系的姿势(t
11
)。类似地,第二设备可以跟踪其相对于第二设备的第二坐标系的姿势(t
22
)。这里所使用的姿势(t
ij
)指的是在坐标系“j”中设备“i”的姿势。第一设备可以在第一设备的显示屏上呈现基准标记或标记图像,并将其姿势(t
11
)(或一系列姿势(t
11
))与时间戳(或一系列时间戳,其中该系列中的每个时间戳对应于上述一系列姿势中的一个姿势)一起发送给第二设备。可以在第一坐标系中跟踪每个姿势。标记图像可以是具有可检测特征的任何图
像,这些特征可以由设备用于定义设备相对于可检测特征的姿势。
20.第二设备可以拍摄第一设备显示的基准标记或标记图像的单个或一系列图像。可以选择一系列图像中的最佳图像以及匹配姿势(t
11
)的时间戳的第二设备的姿势(t
22
)。基于该图像,第二设备从基准标记或标记图像检测特征点。选择后,第二设备从第一设备的姿势(t
11
)、关于基准标记或标记图像的已知信息、以及关于第一设备的几何形状的已知信息推导出基准点的三维(three-dimensional,3d)坐标,以建立3d坐标和2d特征点之间的对应关系。通过使用基于对应关系的pnp(perspective-n-point)技术,第二设备可以推导出其在第一坐标系中的姿势(t
21
)。第二设备分别相对于第一坐标系和第二坐标系的两个姿势(t
21
)和(t
22
)可以用于生成坐标系变换。坐标系变换可以将位置和方向从第一坐标系变换到第二坐标系,反之亦然。
21.图1是根据本公开至少一个方面的增强现实系统100的图示,其中可以确定多个设备的坐标系之间的变换。增强现实系统100包括多个设备,例如第一设备104和第二设备116。设备104和116位于真实世界环境中。设备104和116中的每一个执行ar应用以显示真实世界环境的虚拟表示,其中,虚拟环境包括虚拟物体。
22.在示例中,第一设备104可以在第一设备104的显示屏108上呈现虚拟物体,就好像该虚拟物体是位于真实世界环境中的物理物体一样。虚拟物体在虚拟环境中的呈现基于第一设备104的第一坐标系102。第二设备116也可以在其显示屏120上呈现虚拟物体的另一个实例。这里同样,该呈现取决于第二设备116的第二坐标系118。要在显示屏108和120以协调连贯的方式呈现虚拟物体的实例,需要第一坐标系和第二坐标系之间的变换124。
23.在校准在第一设备104和第二设备116上执行的增强现实应用期间,可以将第二设备116的第二坐标系118映射到第一设备104的第一坐标系102,而无需使用环境中的固定参考点。相反,如下文进一步描述的,第一设备104向第二设备116呈现参考,并且第二设备116生成并处理该参考的图像以定义两个坐标系之间的变换。在校准期间执行其他操作。例如,第一设备104可以执行跟踪其相对于第一坐标系102的姿势的过程。类似地,第二设备116也可以跟踪其相对于第二坐标系118的姿势。在校准之后,每个设备可以基于坐标系之间的变换和跟踪的姿势,开始以协调连贯的方式呈现虚拟物体。
24.例如,在校准期间,可以确定第一设备104的当前位置是在其自身坐标系102的原点。第一设备104可以使用内部传感器(例如,加速度计、全球定位系统(global positioning system,gps)传感器、指南针及其组合等))、图像处理(例如,使用机器学习、深度学习等)或其组合来跟踪其自身的移动,并更新其在坐标系102内的位置。第一设备104可能不知道其所处的环境,但其可以跟踪其相对于第一设备104最初被校准的位置(例如其原点)的位置。例如,如果内部传感器指示第一设备104在校准之后已经移动了一米,则第一设备104的位置可以被确定为(在特定方向上)距原点一米。因此,第一设备104的坐标系102可以用于指示第一设备104的相对位置(例如,相对于在校准时第一设备104的位置),而不一定是第一设备104的绝对位置,因为环境可能是未知的。
25.在某些情况下,第一设备104可以执行同时定位和建图(simultaneous localization and mapping,slam)过程,该过程可以定义坐标系102并跟踪设备在环境内的姿势。即使真实世界环境对于slam过程是未知的(至少最初是未知的),slam过程也可用于跟踪真实世界环境中的第一设备104。slam过程可以将诸如但不限于控制数据ct、传感器
数据st、和时间间隔t等变量作为输入,并生成一个输出,该输出可以包括在给定时间间隔内设备的大致位置xt和环境的地图mt。
26.slam可以从校准步骤开始,其中,可以初始化表示真实世界环境的坐标系102,其中第一设备104位于原点。当第一设备104捕获指示特定方向上的移动的传感器数据(以及可选的来自第一设备104的摄像头的可用于指示环境中的物体的图像数据)时,slam过程可以更新xt和mt。slam可以是一个迭代过程,会在设定的时间间隔内或在可以检测到新的传感器数据或图像数据时更新xt和mt。例如,如果在时间间隔t和t 1之间没有发生传感器变化,那么slam过程可以延迟更新位置和地图以保留处理资源。在检测到传感器数据的变化表明设备已从其先前位置xt移动的可能性很高时,slam过程可以计算设备的新位置xt并更新地图mt。第二设备116可以执行同样的过程,以定义第二设备116的坐标系和第二设备116相对于坐标系118的位置和方向n。
27.一旦检测到第一设备104和第二设备116的初始姿势,第一设备104可以在第一设备104的显示屏108上呈现基准标记112(或其他类型的参考)。可以预先确定基准标记112,使得多设备增强现实系统100中的设备可以知道尺寸、形状、颜色、图案、阴影等。例如,基准标记112可以是尺寸已知的黑白方块的棋盘图案。在显示基准标记112时,第一设备104可以向第二设备116发送其在第一坐标系102中定义的姿势、用于拍摄基准标记112的图像的指令,以及可选地,关于第一设备104的几何形状的信息(例如,屏幕尺寸)以及指示由第一设备104呈现的特定基准标记的基准标记标识符。在一些情况下,第一设备104可以发送一系列姿势,其中,该系列姿势中的每个姿势包括与确定该姿势的时刻对应的第一时间戳。
28.第二设备116可以被引导以拍摄由第一设备104显示的基准标记的图像。如果从第一设备接收到一个以上的姿势,则第二设备可以从该系列姿势中选择具有最接近第二时间戳的第一时间戳的姿势,第二时间戳对应于拍摄图像的时刻。在一些情况下,第二设备116可以拍摄一系列图像以确保该系列图像中的至少一个图像捕获了定义坐标系变换所需的基准标记的特定特征。每个图像可以包括指示图像被捕获的时刻的第二时间戳。第二设备可以从该系列图像中选择最佳图像。如果从第一设备接收到多个姿势,则第二设备可以从该系列姿势中选择具有最接近最佳图像的第二时间戳的第一时间戳的姿势。
29.在一些情况下,第二设备116可以使用从第一设备104接收到的两个(或更多个)姿势。例如,第二设备116识别被确定为在时间上最接近拍摄最佳图像的时刻的两个或更多姿势(基于其各自的时间戳)。然后,第二设备可以使用姿势的对应时间戳在从第一设备104接收到的两个姿势之间进行插值,以生成第一设备104的新姿势,该姿势对应于在最佳图像被第二设备116拍摄的时刻第一设备的姿势。
30.在一些情况下,第二设备116可以预先存储第一设备104的设备几何信息和/或第一设备104可以呈现的可能的基准标记。例如,第二设备116可以从本地存储器加载设备几何信息和基准标记的已知特性。如果在ar应用中可以使用多于一种类型的设备,则第二设备116可以接收标识符,例如设备型号标识符,以确定正确的设备几何信息。可以从本地存储器或从服务器接收设备几何信息。如果第一设备104不发送基准标记标识符,则第二设备116可以使用分类器结合诸如边缘检测的一个或多个图像处理技术来识别基准标记。
31.由于基准标记的尺寸、颜色、图案等是已知的,因此可以处理基准标记112的图像以定义一组二维(two-dimensional,2d)特征点。每个2d特征点可以对应于基准标记112内
的一个点,例如正方形的中心、正方形之间的顶点、基准标记的角,或者可以基于基准标记的特征容易地识别的基准标记的任何其他点。该组2d特征点可以与第一设备104在环境内相对于第一设备104的坐标系102的姿势和第一设备的已知几何信息一起被处理,以识别每个特征点的3d坐标。该组2d特征点和每个3d坐标之间的对应关系可用于计算第二设备116相对于第一设备104的坐标系102的姿势。该姿势可用于生成坐标系变换,坐标系变换可以映射第一设备104的坐标系102和第二设备116的第二坐标系118的特征点。
32.可以在校准期间将第二坐标系映射到第一坐标系。在某些情况下,可以在校准之后再次执行映射过程,例如当slam过程重置时(因为这将为该设备启动新的坐标系),在校准值指示映射不再准确之后,或者经过预定的时间间隔。
33.图2示出了根据本公开至少一个方面的可以呈现在第一设备上以用于多设备坐标系映射的基准标记的示例。标记204-236可以是可用于将第一坐标系的坐标映射到第二坐标系的对应坐标的基准标记。基准标记204-236可以包括拍摄基准标记的图像的设备可以知道的预定尺寸、形状和图案。由于基准标记的特性是已知的,因此可以使用例如图像处理来检测基准标记(一旦被设备的摄像头捕获)。在图像中捕获的基准标记的特征例如可用于定义设备相对于基准标记的位置,确定现实世界环境中物体的比例,确定设备的方向,将设备的坐标系映射到另一个设备等等。
34.例如,可以选择每个基准标记的特性以使得不管所拍摄图像内标记如何特定旋转或变换,都能够检测基准标记及其特征点。例如,基准标记可以包括基准标记内的一个或多个形状,当旋转或变换时这些形状看起来不同,以便在检测时指示旋转和/或变换的程度。旋转/变换的程度可用于确定拍摄图像的设备的方向。例如,如果图像中的基准标记旋转了45度,则可以确定设备也旋转了45度。
35.在一些情况下,可以对基准标记的图像执行一个或多个旋转、仿射变换、欧几里得变换、反射、转置及其组合,并输出以预定方向显现的经处理的基准标记。例如,拍摄基准标记的设备可以存储基准标记的特性(例如,尺寸、图案、颜色等)。然而,基准标记可能不会按预期显现(例如,旋转、模糊、拉伸等)。可以处理图像以分离基准标记并旋转和/或变换基准标记,使得基准标记显现在预期的方向上。在其他情况下,基准标记的图像可能不被处理以改变图像内基准标记的方向。
36.设备通过检测基准标记的一个或多个特征点来检测基准标记的方向。可以使用检测到的基准标记的特性和基准标记的已知特性来检测特征点。例如,特征点可以基于标记的特定特性。例如,基准标记204可以是棋盘图案。可以在每组四个正方形之间的顶点、每个白色正方形或黑色正方形的中心、角、每个白色正方形的角、每个黑色正方形的角、及其组合等地方检测特征点。每个基准标记可以包括可以在图像内检测到的一个或多个特征点。在某些情况下,每个基准标记可以包括三个或更多个特征点。虽然可以检测任意数量的特征点,但是可以检测到的特征点越多,映射坐标系的精确度就越高。
37.设备可以使用图像处理来从图像的其他部分检测基准标记以及从基准标记中检测特征点。一种这样的图像处理技术包括边缘检测。边缘检测可以包括滤波技术,其中,一个或多个滤波器可以应用于图像。滤波器可以通过模糊、锐化、变换(例如但不限于一个或多个仿射变换、欧几里得变换等)等来修改图像。滤波器可以通过例如去除图像伪影和/或图像的不对应于基准标记的其他部分来减少图像噪声。
38.在某些情况下,图像的某些部分可能比图像的其他部分被处理得更多。例如,图像的一部分看起来模糊,而图像的另一部分可能是清晰的。不同的滤波器可以应用于图像的不同部分,此外,一组不同的滤波器可以应用于图像的不同部分。不同的滤波器可以应用于图像的不同部分。例如,可以对图像的第一部分进行滤波以锐化第一部分,并且可以利用仿射变换滤波器和降噪对图像的第二部分进行滤波。可以将任意数量的不同滤波器应用于图像和/或每个分块。
39.一旦应用了滤波器,边缘检测就可以识别相邻像素之间像素强度梯度的变化。相邻像素之间强度的变化大可以指示存在边缘。例如,与具有低强度值的像素相邻的第一像素具有高强度值,可以提供第一像素是边缘的一部分的指示。在某些情况下,可以抑制不属于边缘部分的像素(例如,设置为预定的红色/绿色/蓝色值,例如黑色,其中红色=0、蓝色=0和绿色=0,或任何预定的红色/绿色/蓝色值)。诸如roberts交叉算子、prewitt算子、sobel算子等的边缘检测算子可以用作像素强度梯度的识别的一部分。
40.可以使用非极大值抑制过程来抑制与边缘不强烈对应的像素。非极大值抑制过程将边缘强度值分配给使用像素强度梯度识别为边缘一部分的每个像素。对于识别为边缘一部分的每个像素,可以将像素的边缘强度值与像素的八个周围像素的边缘强度值进行比较。如果该像素具有比周围像素的边缘强度值更高的边缘强度值(例如,局部最大值),则周围像素被抑制。可以对整个图像中的每个像素重复非极大值抑制。
41.然后,可以执行双阈值过程以去除本文应用的先前图像处理技术所带来的噪声和/或虚假边缘像素。可以定义两个像素强度阈值,一个高一个低。阈值可用于将强或弱的强度属性分配给每个像素。包括高于高阈值的强度值的像素可以被分配强强度属性,其中包括在高阈值和低阈值之间的强度值的像素可以被分配弱强度属性。可以抑制包括低于低阈值的强度值的像素(例如,以与上述相同的方式)。
42.接着,可以执行滞后过程以去除具有弱强度属性(由于噪声、颜色变化等而弱)的像素。例如,可以对具有弱强度属性的每个像素执行局部统计分析(例如,连通域分析等)。可以抑制未被包括强强度属性的像素包围的具有弱强度属性的像素。滞后过程之后的剩余像素(例如,未抑制的像素)仅包括那些属于边缘部分的像素。尽管以特定顺序描述了上述五个处理过程,但是在不背离本公开的精神或范围的情况下,每个过程可以被执行任意次数(例如,重复执行)和/或以任意顺序执行。在某些情况下,只需对图像执行五个过程的子集。例如,图像处理可以执行像素强度梯度的识别处理,而不首先执行滤波处理。在一些情况下,可以接收部分处理后的图像(例如,上述过程中的一个或多个已经被执行)。在这种情况下,可以执行一个或多个附加过程来完成图像处理。
43.在某些情况下,可以对图像执行信号处理(例如,类似于射频信号)。可以将图像变换到频域(例如,使用傅里叶变换等)以表示图像中存在特定像素特征的频率(例如,像素强度、rgb值等)。在频域中,可以将一个或多个滤波器(例如但不限于巴特沃斯滤波器、带通等)应用于图像(例如,在预处理、边缘检测期间或之后)以抑制或更改特定频率。抑制特定频率可以减少噪声、消除图像伪影、抑制非边缘像素、消除特定颜色或颜色梯度的像素、标准化颜色梯度等。高通滤波器可以显出图像中的边缘(例如,锐化相邻像素之间的颜色和/或强度),而低通滤波器可以混合边缘(例如,模糊)。在信号处理之前可以执行图像填充以改进信号处理技术。在一些情况下,图像的不同部分和/或分块可以被不同地处理,其中一
些用高通滤波器处理,而另一些用低通滤波器处理。在一些情况下,可以针对图像的不同部分修改阈值(例如,高通或低通滤波器的截止频率)(例如,基于图像处理一个或多个先前图像、机器学习和/或类似)。
44.信号处理还可以确定图像的其他属性,例如识别像素之间的关系的连贯性(例如,用于边缘检测、分割、模式分析等)。像素之间的关系可用于进一步细化边缘检测和/或识别图像内描绘的结构特性。例如,连贯性可用于识别出相关的图像部分(例如,同一物体的部分)和不相关的图像部分。
45.标记204-236是可用于映射两个或更多个设备的坐标系的基准标记的示例。例如,基准标记204可以是具有两种或更多种颜色的交替正方形的棋盘图案。在某些情况下,颜色可以具有高对比度,例如白色和黑色。在其他情况下,可以使用黑色和白色之外的一种或多种颜色,例如红色、绿色和/或蓝色(或替代地,青色、品红色和/或黄色)。在又一些情况下,可以使用对比图案填充,其中一组正方形可以不包括图案,而另一组正方形可以使用交叉影线。标记204可以包括或不包括围绕基准标记的边界,因为可以使用边缘检测来定义基准标记的边界。
46.标记可以具有不规则的形状并且可以不遵照设置的图案。例如,基准标记208、212、220和236包括散布在预定区域的一组黑色方块。基准标记的正方形形状可以部分地用于确定基准标记的特定轮廓。此外,该组正方形的散布图案(例如,两个或多个特定正方形之间的距离等)可用于指示拍摄图像的设备的位置。例如,两个不相邻的正方形之间的距离可以是设备已知的。该设备可以计算已知距离和在拍摄的图像中检测到的距离之间的差异。已知值与从图像计算的距离之间的差异越大,摄像头可能离基准标记越远。
47.类似地,可以计算特定一组正方形的大小并将其与已知大小进行比较。正方形大小的变化可用于确定设备相对于基准标记的方向。例如,正方形的一条边大于正方形的其他边,则设备的摄像头可能是从与基准标记的角度偏移而不是垂直的角度拍摄基准标记的图像。
48.在一些情况下,基准标记可以具有非方形形状,例如基准标记224和228。标记224和228可以是具有内部圆形形状的圆形形状。在一些情况下,这些基准标记内可以包括一个或多个附加形状,例如平分圆的线。这些附加形状可以指示基准标记的方向以便指示设备的方向。
49.虽然图2中示出的特定形状具有特定图案、形状、颜色、方向等,但基准标记可以具有任何特定的形状,该形状可以是几何形状,例如所示的正方形和圆形,或无定形的。
50.图3a示出了根据本公开至少一个方面的生成一个设备相对于另一设备的坐标系的姿势的示例。第二设备可以拍摄正在呈现基准标记304的第一设备的图像,可以检测基准标记304的一个或多个特征点。特征点可以是基准标记的任何可见独特点。在一些情况下,检测基准标记内的特征点可以包括检测基准标记的独特部分的尺寸,例如尺寸308和312。此外,可以检测非相邻形状之间的距离,例如316和320,以确定拍摄图像的摄像头的方向。在其他情况下,可以使用在基准标记内检测到的特征点来确定独特形状的尺寸或非相邻形状之间的距离。可以基于基准标记304的特定特性来检测特征点。例如,基准标记304可以包括在每个顶点324处的特征点,该顶点324由共享同一颜色的两个相邻形状形成。标记304可以包括九个特征点。其他基准标记可以包括更多或更少的特征点。可以将特征点聚合成一
组特征点328。
51.第二设备可以接收在拍摄标记的图像的时刻的第一设备的姿势(t
11
)332。姿势可以表示第一设备相对于第一设备的坐标系的位置和方向。在一些情况下,姿势332可以由旋转向量r[r1,r2,r3]和平移向量t[t1,t1,t1]来表示。在其他情况下,姿势332可以表示为变换矩阵。可以使用在第一设备上执行的slam过程、对第一设备拍摄的图像进行的图像处理、设备几何信息(例如设备的尺寸)、摄像头信息(例如,缩放焦距、偏斜参数、主点、比例因子等)、内部传感器(例如,加速度计、陀螺仪、罗盘等)、以上组合等来确定姿势(t
11
)。
[0052]
第一设备的姿势(t
11
)和一组特征点可用于识别指示该组特征点中的每个特征点相对于第一设备的坐标系的三维坐标336的数据。例如,每个特征点可以表示与显示在第一设备上的基准标记关联的2d坐标。第一设备的姿势表示第一设备的位置和方向。设备几何信息与第一设备的位置和方向的组合可用于为每个特征点生成3d坐标(在第一坐标系中)。
[0053]
可以建立特征点与特征点的三维坐标之间的对应关系。第二设备可以使用三维坐标和一组特征点之间的对应关系来执行pnp过程,以生成第二设备相对于第一设备的坐标系的当前姿势。例如,该组特征点可用于确定第二设备相对于该组特征点的位置和方向。由于对应关系将三维坐标(基于第一设备的坐标系)和该组特征点联系起来,所以第二设备可以识别其相对于第一设备的坐标系的位置和方向或姿势344(t
21
)。
[0054]
图3b示出了根据本公开至少一个方面的生成坐标系变换的过程。第二设备相对于第一设备的坐标系的姿势(t
21
)344可以与第二设备相对于第二设备的坐标系的姿势(t
22
)一起用于生成坐标系变换352。坐标系变换可用于将第二坐标系的点(例如,坐标)映射到第一坐标系中的对应坐标,反之亦然。
[0055]
例如,点集360可以是第二坐标系内对应于虚拟物体的点。通过将点集360转换为第一坐标系的对应点集356,可以在第一设备的显示屏内呈现虚拟物体。坐标系变换可以将第二坐标系中的点转换为第一坐标系中的对应点和/或将第一坐标系中的点转换为第二坐标系中的对应点。因此,坐标系变换可用于将根据一个坐标系定义的虚拟物体呈现在另一个坐标系中基本相同的位置和方向。
[0056]
图4是根据本公开至少一个方面的映射两个移动设备的坐标系的过程的流程图。在框404,可以接收第一移动设备的第一姿势(t
11
)。第一移动设备可以执行位置跟踪过程,例如slam过程,该过程跟踪第一移动设备的与第一移动设备的坐标系关联的姿势(t
11
)。在框404接收到的第一姿势(t
11
)可以是在特定时刻的特定姿势。第一姿势可以与第一时间戳关联,第一时间戳对应于确定第一姿势的时刻。在一些情况下,可以接收一系列姿势,其中该系列姿势中的每个姿势与对应的第一时间戳关联。
[0057]
在框406,第二设备可以确定第二姿势(t
22
)。第二姿势(t
22
)可以相对于与第二移动设备关联的坐标系定义。可以使用位置跟踪过程(例如slam过程)确定第二姿势。
[0058]
在框408,第二移动设备可以接收在第一移动设备的显示屏上呈现的基准标记的图像。基准标记的图像可以与第二时间戳关联,第二时间戳指示该图像被拍摄的时刻。在一些情况下,可以拍摄基准标记的一系列图像,其中每个图像与对应的第二时间戳关联。例如,第二移动设备可以(从服务器或第一移动设备)接收指令,该指令用于使用第二移动设备的摄像头在第一移动设备正在呈现基准标记时拍摄第一移动设备的显示屏的图片。该指令可以呈现在第二移动设备的显示屏上。在另一示例中,第二移动设备可以经由网络连接
等接收一个或多个图片。基准标记可以是任何具有预定义尺寸或几何形状的标记。
[0059]
尽管描述了基准标记,但是可以使用任何类型的标记。通常,在移动设备正在运行时(例如,在ar会话期间),移动设备生成图像。该图像示出了真实世界环境中的元素。这些元素可以用作图4的示例流程和本公开实施例中的标记。元素的一个示例是基准标记。元素的其他示例包括地标,例如真实世界环境中的独特建筑或其一部分、真实世界环境中的可识别特征、真实世界环境中的图形、覆盖在图像上的图形等。
[0060]
在框412,第二移动设备可以接收对齐信息。对齐信息可以从第一移动设备或从服务器发送到第二移动设备。对齐信息可以包括第一移动设备的姿势(或一系列姿势)、第一移动设备所显示的基准标记的标识、第一设备的设备几何信息、第一设备的设备型号标识符等。在一些情况下,可以从第一移动设备接收一些对齐信息,可以从服务器接收另一些对齐信息。例如,第一移动设备的设备型号标识符可用于从第二移动设备的存储器或从服务器中查找设备几何信息。如果第一设备的设备型号标识符与第二移动设备的设备型号标识符匹配,则可以不需要获取设备几何信息。在其他情况下,可以从第一移动设备接收所有对齐信息。第二移动设备可以在与在框410处获得基准标记的图像的基本同时、之前不久或之后不久接收对齐信息。
[0061]
在框416,可以从基准标记的图像中检测一组特征点。如果拍摄了一系列图像,则可以从该系列图像中选择最佳图像,并且可以使用最佳图像检测一组特征点。最佳图像可以是拍摄到整个基准标记的视图的图像,其具有最多数量的可见特征点、最清晰的图像、具有最少图像伪影或缺陷的图像等。由于基准标记具有已知的尺寸和几何形状,因此特征点可用于确定第二移动设备相对于基准标记的姿势。在某些情况下,该组特征点包括三个特征点。在其他情况下,该组特征点包括四个或更多个特征点。
[0062]
在框420,可以定义指示三维坐标的数据。可以使用第一姿势、移动设备几何信息以及上述一组特征点定义三维坐标。如果第二设备接收了一系列姿势,则第二移动设备可以从该系列姿势中选择特定姿势作为第一姿势。该特定姿势可以是具有最接近被拍摄图像(或如果拍摄了一个以上的图像,则为选择的最佳图像)的第二时间戳的第一时间戳的姿势。例如,如果一系列姿势p1、p2、p3(分别)与第一时间戳t1、t2、t3关联,并且被拍摄图像与第二时间戳t2.1关联,则姿势p2将被选择为第一姿势,因为p2所关联的第一时间戳t2最接近于被拍摄图像的第二时间戳t2.1。在一些情况下,如果一个姿势的时间戳不近似等于图像的对应时间戳,则第二设备可以使用每个姿势的对应时间戳来在第一设备的两个姿势之间进行插值,从而计算第一设备在第二设备拍摄最佳图像的确切时刻的姿势。例如,可以对姿势p2和p3进行插值以计算第一设备在被拍摄图像的时间戳t2.1的图像。通过使用移动设备几何形状来估计显示在第一移动设备上的每个特征点的物理位置,可以充分利用基准标记的已知尺寸和几何形状。第一移动设备的姿势可以用于确定每个特征点在第一坐标系中的三维坐标。
[0063]
在框424,可以生成三维坐标和一组特征点之间的对应关系。该对应关系可以表示将三维坐标(与第一坐标系关联)和基准标记的图像的特征点联系起来的映射。
[0064]
在框428,可以使用三维坐标和一组特征点之间的对应关系定义第二移动设备相对于第一坐标系的第三姿势(t
21
)。例如,pnp过程可以使用上述对应关系作为输入(连同摄像头校准数据如缩放焦距、偏斜参数、主点、比例因子等一起)以生第二移动设备的估计第
二姿势。第二移动设备的第二姿势可以与第一移动设备的坐标系关联。
[0065]
在框432,可以使用第二移动设备相对于与第二移动设备关联的坐标系的第二姿势(t
22
)以及第二移动设备相对于第一移动设备的坐标系的第三姿势(t
21
)生成坐标系变换。坐标系变换可以将第一移动设备的第一坐标系中的点映射到第二移动设备的第二坐标系中的对应点。在一些情况下,由第一移动设备的slam过程计算的位置可以被转换成第二移动设备的第二坐标系中的位置。在其他情况下,由第二移动设备的slam过程计算的位置可以被转换为第一移动设备的第一坐标系中的位置。
[0066]
在框436,可以基于坐标系变换,在第二移动设备的显示屏上以相对于呈现在第一移动设备的显示屏上的虚拟物体的第二实例自然且连贯的方式呈现虚拟物体的实例。例如,第二移动设备可以从第一移动设备接收与虚拟物体关联的数据,例如虚拟物体在第一坐标系中的3d坐标。第二移动设备可以使用坐标系将虚拟物体的与第一坐标系关联的3d坐标转换为第二坐标系中的3d坐标。第二移动设备可以使用虚拟物体在第二坐标系中的3d坐标呈现虚拟物体的实例。
[0067]
例如,在增强现实应用中,第二移动设备可以拍摄环境的图像或视频。第二移动设备可以定义要在第二移动设备的显示屏上如同物理地位于环境中一样呈现的虚拟物体的实例。slam过程可以在第二移动设备在环境中移动时对其进行跟踪,以使虚拟物体继续显现为如同物理地(并且自然地)位于环境中(无论第二移动设备的位置或方向如何变化)。
[0068]
然后,第一移动设备可以使第二虚拟物体(例如,虚拟物体的实例)在第一移动设备的显示屏内呈现在虚拟环境内与虚拟物体大致相同的位置和方向。例如,第一设备可以拍摄环境的图像/视频并在所拍摄的图像/视频内呈现第二虚拟物体,使得第二虚拟物体看起来好像物理地(并且自然地)位于环境内(不管第二移动设备的位置或方向如何变化)。
[0069]
在框440,通过根据映射的坐标系持续跟踪第一移动设备和第二移动设备(例如,使用各个移动设备上执行的相应slam过程),可以同步第一坐标系和第二坐标系。
[0070]
图4的过程可以完全由第一移动设备执行,部分由第一移动设备执行,完全由第二移动设备执行,部分由第二移动设备执行,完全由服务器执行,或部分由服务器执行。服务器可以指导第一移动设备和第二移动设备的坐标系的映射并执行全部或部分增强现实应用。例如,第一移动设备可以定义第一姿势(使用由第一移动设备执行的slam过程)并且第二移动设备可以定义第二姿势(使用由第二移动设备执行的slam过程)。第二移动设备可以被引导以获得呈现在第一移动设备的显示屏上的基准标记的图像。第二移动设备可以检测一组特征点。在一些情况下,第一姿势可以被发送到第二移动设备并且第二移动设备可以识别三维坐标。在其他情况下,该组特征点可以被发送到第一移动设备并且第一移动设备可以识别三维坐标。在又一些其他情况下,该组特征点可以被发送到服务器。服务器可以识别三维坐标。
[0071]
继续该示例,第二姿势可以由第二移动设备定义,或由服务器定义,服务器将定义的第二姿势发送回第二移动设备。第二移动设备可以使用第二姿势来生成坐标系变换以将第二坐标系的位置映射到第一坐标系的位置。在一些情况下,第一移动设备可以使用第二姿势来生成坐标系变换以将第一坐标系的位置映射到第二坐标系的位置。坐标系变换可以与在第二移动设备上执行的slam过程一起使用,以跟踪环境内根据第一设备的坐标系定义的虚拟物体。
[0072]
虽然图4中的框按照特定顺序呈现,但这些框可以按照任何特定顺序执行。在一些情况下,在进行到下一个框之前,图4的每个框可以被执行一次或多次。虽然图4描述了对两个设备的坐标系的映射,但是图4的过程可以为扩展到映射任何数量的设备的坐标系,例如,通过使每个附加设备执行404-432的过程来实现。例如,每个附加设备可以使用第一设备作为参考物体,或具有先前已经与第一设备的坐标系进行映射的坐标系的任何其他设备。
[0073]
图5示出了根据本公开至少一个方面的执行增强现实应用的计算系统的组件的示例。计算系统504可以是结合图4描述的移动设备的示例。尽管这些组件被示为计算系统504的一部分,但是计算系统504也可以是分布式的,使得一些组件可以位于与其他组件不同的硬件平台内。
[0074]
计算系统504包括至少处理器508、存储器512、存储设备516、输入/输出外围设备(input/output,i/o)520、通信外围设备524、一个或多个摄像头528和接口总线532。接口总线532可以用于在计算系统504的各种组件之间通信、发送和传输数据、控制和命令。存储器512和存储设备516可以包括计算机可读存储介质,例如ram、rom、电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、硬盘驱动器、cd-rom、光存储设备、磁存储设备、电子非易失性计算机存储,例如存储器,以及其他有形存储介质。任何这样的计算机可读存储介质都可以用于存储实施本公开的各方面的指令或程序代码。存储器512和存储设备516还可以包括计算机可读信号介质。计算机可读信号介质包括传播的数据信号,其中包含计算机可读程序代码。这种传播的信号采用多种形式中的任何一种,包括但不限于电磁、光或其任何组合。计算机可读信号介质包括不是计算机可读存储介质并且可以通信、传播或传输用于与计算系统504结合使用的程序的任何计算机可读介质。
[0075]
此外,存储器512可以包括操作系统、程序和应用。处理器508可以用于执行存储的指令并且包括例如逻辑处理单元、微处理器、数字信号处理器和其他处理器。存储器512和/或处理器508可以被虚拟化并且可以托管在例如云网络或数据中心的另一计算系统中。i/o外围设备520可以包括用户接口,例如键盘、屏幕(例如,触摸屏)、麦克风、扬声器、其他输入/输出设备,以及计算组件,例如图形处理单元、串行端口、并行端口、通用串行总线和其他输入/输出外围设备。i/o外围设备520通过耦合到接口总线532的任何端口连接到处理器508。通信外围设备524可以用于促进计算系统504和其他计算设备之间通过通信网络的通信,并且包括例如网络接口控制器、调制解调器、无线和有线接口卡、天线和其他通信外围设备。
[0076]
尽管本主题已针对其特定实施例进行了详细描述,但应当理解,本领域技术人员在获得对前述内容的理解后,可以容易地产生对这些实施例的改变、变化和等价物。因此,应当理解,本公开是为了示例而不是限制的目的而呈现的,并且不排除包含对于普通技术人员来说是显而易见的对本主题的这种修改、变化和/或添加。实际上,本文描述的方法和系统可以以多种其他形式实施;此外,在不背离本公开的精神的情况下,可以对本文描述的方法和系统的形式进行各种省略、替换和改变。所附权利要求及其等价物旨在覆盖落入本公开的范围和精神内的此类形式或修改。
[0077]
除非另有明确说明,否则应了解,贯穿本说明书的讨论使用诸如“处理”、“计算”、“计算”、“确定”和“识别”等术语是指计算设备(例如一个或多个计算机或类似的电子计算设备)的动作或过程,计算设备在计算平台的存储器、寄存器或其他信息存储设备、传输设备或显示设备中操纵或转换表示为物理电子或磁量的数据。
[0078]
这里讨论的一个或多个系统不限于任何特定的硬件架构或配置。计算设备可以包括提供以一个或多个输入为条件的结果的任何合适的组件布置。合适的计算设备包括访问存储的软件的基于微处理器的多用途计算机系统,该软件将计算系统从通用计算装置编程或配置为实现本主题的一个或多个实施例的专用计算装置。任何合适的编程、脚本或其他类型的语言或语言的组合可用于在用于编程或配置计算设备的软件中实施本文中包含的教导。
[0079]
本文公开的方法的实施例可以在这样的计算设备的操作中执行。以上示例中呈现的框的顺序可以改变——例如,框可以被重新排序、组合和/或分解成子框。某些框或过程可以并行执行。
[0080]
本文使用的条件性语言,例如“可以”、“可能”、“例如”等,除非另有明确说明或在所使用的上下文中以其他方式理解,通常旨在传达某些示例包括而其他示例不包括某些特征、元素和/或步骤。因此,这种条件性语言通常并不意味着一个或多个示例以任何方式需要特征、元素和/或步骤,或者一个或多个示例必须包括用于在有或没有作者输入或提示的情况下决定是否包括或将在任何特定示例中执行这些特征、元素和/或步骤的逻辑。
[0081]
术语“包括”、“有”、“具有”等是同义词,并且以开放式的方式包容性地使用,并且不排除其他元素、特征、动作、操作等。此外,术语“或”以其包容性(而不是排他性)使用,从而当例如用于连接元素列表时,术语“或”表示列表中的一个、一些或全部元素。此处使用的“适用于”或“用于”是指开放和包容性的语言,不排除适用于或用于执行附加任务或步骤的设备。此外,“基于”的使用意味着开放和包容,因为“基于”一个或多个列举的条件或值的过程、步骤、计算或其他动作实际上可能基于列举的之外的附加条件或值。类似地,“至少部分基于”的使用意味着开放和包容,因为“至少部分基于”一个或多个列举的条件或值的过程、步骤、计算或其他动作在实践中可以基于列举的之外的附加条件或值。本文包括的标题、列表和编号仅是为了便于解释,并不意味着限制。
[0082]
上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合使用。所有可能的组合和子组合旨在落入本公开的范围内。此外,在一些实施方式中可以省略某些方法或过程框。本文描述的方法和过程也不限于任何特定的顺序,并且与其相关的框或状态可以以其他适当的顺序来执行。例如,所描述的框或状态可以以不同于具体公开的顺序执行,或者多个框或状态可以组合在单个框或状态中。示例框或状态可以串行、并行或以某种其他方式执行。可以将框或状态添加到所公开的示例中或从所公开的示例中删除。类似地,本文描述的示例系统和组件可以被配置为与所描述的不同。例如,与所公开的示例相比,可以将添加、移除或重新排列元素。
[0083]
尽管上面已经结合具体装置和方法描述了本公开的原理,但是应当清楚地理解,该描述仅作为示例而不是对本公开范围的限制。
再多了解一些

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

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

相关文献