跟踪增强现实设备的制作方法

文档序号:33191618发布日期:2023-02-04 08:44阅读:39来源:国知局
跟踪增强现实设备的制作方法
跟踪增强现实设备
1.相关申请的交叉引用
2.本技术要求2020年6月1日提交的美国临时申请序列第62/704,881号和2020年10月29日提交的美国专利申请序列第17/083,722号的优先权的权益,这两件美国申请中的每一个的内容通过引用整体并入本文中。


背景技术:

3.增强现实(ar)是指可以捕获图像帧、利用附加信息增强这些图像帧、并且然后将所增强的信息呈现在显示器上的系统、方法、设备和指令。这可以例如使得用户能够拿起移动计算设备(例如,智能电话或平板电脑)来捕获场景的视频流,并且移动计算设备的输出显示器可以将该场景与附加信息一起呈现为对用户可见。该附加信息可以包括将虚拟对象放置在场景中,使得虚拟对象被呈现为好像它们存在于场景中一样。当真实对象和虚拟对象二者随时间移动时,并且当捕获环境的图像传感器的视角改变时,这样的虚拟对象也被处理以保持它们与真实对象的关系。
附图说明
4.为了容易地识别对任何特定元件或动作的讨论,附图标记中的一个或更多个最高位数字指代该元件被首次引入时所在的图号。
5.图1是根据一些示例实施方式的可以部署本公开内容的联网环境的图解表示。
6.图2是根据一些示例实施方式的在其中可以执行一组指令以使机器执行本文中讨论的方法中的任何一种或更多种的以计算机系统形式的机器的图解表示。
7.图3是示出根据示例实施方式的在其中可以实现本公开内容的软件架构的框图。
8.图4是示出根据示例实施方式的跟踪方法的流程图。
9.图5是示出根据示例实施方式的适合在图4的方法中使用的基于图像的跟踪器方法的流程图。
10.图6是示出根据示例实施方式的呈现基于位置的ar内容的界面流动图。
具体实施方式
11.存在允许将虚拟对象正确放置到真实场景的视频流或图像中所需的多个要求。一个要求是存在具有与真实世界中的特征相对应的特征的3d模型。3d模型的生成被称为“映射”,并且通常涉及定位真实世界中的可识别特征并且将它们记录在3d模型中。虽然记录在3d模型中的特征通常被称为“界标”,但是相比于与真实世界中的结构或物品的角或边缘对应的点或边缘,记录在3d模型中的特征可能少得多。可以通过处理场景的多个不同图像以提取界标并将它们放置在3d模型中来进行映射。这样的映射的一种技术被称为sfm(运动恢复结构(structure from motion))。无论3d模型是即时生成的(如在sfm中)还是预先存在的,本文中描述的构思都是适用的。
12.另一要求是用于捕获最初要确定的场景的设备的位置和取向(也称为“姿态”),这
被称为定位。定位涉及确定设备沿三个轴(俯仰、偏航和滚动)的取向(旋转)和设备沿三个轴的位置,总共六个自由度。定位的目标是在不给定先前姿态信息的情况下将真实世界中的设备的视点与3d模型中的设备的虚拟视点对准。
13.一旦已经确定了设备的姿态,就可以生成3d模型中的与设备的实际视点对应的虚拟视点,然后该虚拟视点允许将虚拟对象定位到由设备生成的场景的图像中。
14.如果设备以任何方式移动,“跟踪”是指在给定先前的姿态估计的情况下尝试将设备的更新视点或姿态对准到3d模型。最初,该姿态由定位提供。本文中描述的构思主要但非排他地涉及跟踪,并且提供跟踪的设备功能被称为跟踪器。
15.改进用于对设备进行定位的初始姿态并改进设备后定位的跟踪,会允许虚拟对象(或其他增强信息)在要显示给使用显示设备的用户的图像或图像流中的定位更准确和/或更稳定。因此,本文中描述的方法和系统改进了包括增强现实功能的设备或系统的功能。
16.如本文中所描述的,给定场景的3d模型和现有姿态,跟踪器可以使用设备的摄像装置流以及加速度计和陀螺仪信息的组合来实时更新用户的设备相对于3d模型的位置。跟踪器采用以下混合方法:即经由视觉测距和运动传感器信息两者来跟踪摄像装置运动,并且使用组合方法相对于模型持续地重新定位其姿态。这种方法相对于在高速运动中可能变得难以匹配的简单地跟踪图像特征来说对跟踪故障更为稳健,同时对于在仅传感器测距中可能发生的传感器漂移也是稳健的。
17.给定先前图像帧的先前姿态,当存在新捕获的图像(也称为当前帧)时,跟踪系统执行以下任务。首先,通过执行当前帧与先前帧之间的图像相似性测量来估计当前姿态。
18.然后,从当前帧提取图像关键点和描述符,并且将其与3d模型中的界标进行匹配。然后,如下面更详细描述的,使用所提取的关键点(2d图像点)和所跟踪的界标连同传感器数据来细化摄像装置姿态。然后,对所得到的最终姿态进行低通滤波以去除高频抖动。
19.在一个示例中,公开了一种操作增强现实设备的方法,包括:使用基于图像的处理,根据当前图像帧、先前图像帧和先前姿态来确定姿态估计;接收根据由包括运动传感器的惯性测量单元生成的数据所确定的imu姿态;确定姿态估计与imu姿态之间的变换;以及将变换应用于姿态估计以生成姿态更新。然后,可以将媒体内容应用于图像内的位置,该位置基于姿态更新。
20.该方法还可以包括在将变换应用于姿态估计之前对变换进行低通滤波。基于图像的处理可以包括:通过将当前图像帧与先前图像帧进行比较来确定中间姿态;通过将当前图像帧中的特征与3d模型中的特征进行比较来确定中间姿态;以及/或者通过将当前图像中的特征与3d模型中的特征进行比较来确定姿态估计。基于图像的处理还可以包括通过使用上述中间姿态中的一个或两个将当前图像帧中的特征与3d模型中的特征进行比较来确定姿态估计。imu姿态还可以被确定为具有与姿态估计的时间戳相邻的时间戳的两个imu姿态值之间的内插值。
21.在另一示例中,提供了一种非暂态机器可读介质,该非暂态机器可读介质包括指令,所述指令在被机器读取时使机器执行用于生成增强现实系统的姿态的操作,操作包括:使用基于图像的处理,根据当前图像帧、先前图像帧和先前姿态来确定姿态估计;接收根据由包括运动传感器的惯性测量单元生成的数据所确定的imu姿态;确定姿态估计与imu姿态之间的变换;以及将变换应用于姿态估计以生成姿态更新。然后,可以将媒体内容应用于图
像内的位置,该位置基于姿态更新。
22.指令可以使机器执行以下操作,所述操作还包括在将变换应用于姿态估计之前对变换进行低通滤波。指令可以使机器执行以下操作:通过将当前图像帧与先前图像帧进行比较来确定中间姿态;通过将当前图像帧中的特征与先前帧中的特征进行比较来确定中间姿态;以及/或者通过将当前图像帧中的特征与3d模型中的特征进行比较来确定姿态估计。机器还可以通过使用上述中间姿态中的一个或两个将当前图像中的特征与3d模型中的特征进行比较来确定姿态估计。指令可以使机器将imu姿态确定为具有与姿态估计的时间戳相邻的时间戳的两个imu姿态值之间的内插值。
23.在另一示例中,提供了一种增强现实系统,该增强现实系统包括:一个或更多个处理器;运动感测部件;图像捕获设备,其用于生成图像帧;以及一个或更多个机器可读介质,其存储指令,所述指令在由一个或更多个处理器执行时使该系统执行以下操作,所述操作包括:使用基于图像的处理,根据当前图像帧、先前图像帧和先前姿态来确定姿态估计;接收根据由运动感测部件生成的数据所确定的imu姿态;确定姿态估计与imu姿态之间的变换;以及将该变换应用于姿态估计以生成姿态更新。然后,可以将媒体内容应用于图像内的位置,该位置基于姿态更新。
24.指令可以使增强现实系统执行以下操作,所述操作还包括:在将变换应用于姿态估计之前对变换进行低通滤波。指令可以使增强现实系统执行以下操作:通过将当前图像帧与先前图像帧进行比较来确定中间姿态;通过将当前图像帧中的特征与先前帧中的特征进行比较来确定中间姿态;以及/或者通过将当前图像帧中的特征与3d模型中的特征进行比较来确定姿态估计。增强现实系统还可以通过使用所提及的中间姿态中的一个或两个将当前图像中的特征与3d模型中的特征进行比较来确定姿态估计。指令可以使增强现实系统将imu姿态确定为具有与姿态估计的时间戳相邻的时间戳的两个imu姿态值之间的内插值。
25.图1是示出用于通过网络来交换数据(例如消息和相关联的内容)的示例消息收发系统100的框图。消息收发系统100包括客户端设备106的多个实例,每个实例托管包括客户端应用108和ar系统124的多个应用。虽然在图1中与客户端应用108分开示出,但是ar系统124在一个示例中被实现为客户端应用108的子组件,并且ar系统124在客户端应用108的管理下操作。每个客户端应用108经由网络102(例如,因特网)通信地耦接至客户端应用108和消息收发服务器系统104的其他实例。
26.客户端应用108能够经由网络102与另一客户端应用108并且与消息收发服务器系统104通信和交换数据。在客户端应用108之间以及在客户端应用108与消息收发服务器系统104之间交换的数据包括函数(例如,激活函数的命令)以及有效载荷数据(例如,文本、音频、视频或其他多媒体数据)。消息收发系统100可以用于传送要在客户端设备102上显示的虚拟对象的信息、用于创建3d模型的图像数据以及所得到的3d点模型或模型数据(当它们被ar系统124使用时)。
27.消息收发服务器系统104经由网络102向特定客户端应用108提供服务器侧功能。虽然消息收发系统100的某些功能在本文中被描述为由客户端应用108或消息收发服务器系统104执行,但是将某些功能定位在客户端应用108内、ar系统124内或消息收发服务器系统104内是设计选择。例如,在技术上优选的是:可以最初将某些技术和功能部署在消息收发服务器系统104内,但是稍后将该技术和功能迁移至客户端设备106具有足够处理能力的
客户端应用108。
28.如图1所示,消息收发系统100或客户端应用108包括提供生成增强现实图像的功能的ar系统124。在一些实施方式中,ar系统124可以实现为客户端应用108上的独立系统,并且不一定包括在消息收发系统100中。在其他实施方式中,客户端应用108或客户端设备106包括ar系统124的一部分(例如,增强现实系统160的一部分可以包括在或独立地包括在客户端应用108中)。在客户端设备106包括ar系统124的一部分的实施方式中,客户端设备106可以单独工作或者与包括在特定应用服务器中或以其他方式包括在消息收发系统100中的ar系统124的一部分一起工作。
29.消息收发服务器系统104支持提供给客户端应用108的各种服务和操作。这样的操作包括:向客户端应用108发送数据;从客户端应用108接收数据;以及处理由客户端应用108生成的数据。该数据可以包括消息内容、3d模型数据、地理位置信息、媒体注释和覆盖物、虚拟对象数据、消息内容持久性条件、社交网络信息和实时事件信息作为示例。通过经由客户端应用108的用户界面(ui)可用的功能来激活和控制消息收发系统100内的数据交换。
30.现在具体地转至消息收发服务器系统104,应用程序接口(api)服务器112耦接至应用服务器110并且向应用服务器112提供编程接口。应用服务器110通信地耦接至数据库服务器116,这便于访问其中存储有与由应用服务器110处理的消息和其他数据相关联的数据的数据库122。
31.应用程序接口(api)服务器112在客户端设备106与应用服务器110之间接收和发送消息数据(例如命令和消息有效载荷)。具体地,应用程序接口(api)服务器112提供接口集合(例如例程和协议),客户端应用108可以调用或查询接口集合以激活应用服务器110的功能。应用程序接口(api)服务器112公开由应用服务器110支持的各种功能,包括帐户注册、登录功能、经由应用服务器110将消息从特定客户端应用108发送至另一客户端应用108、将媒体文件(例如图像或视频)从客户端应用108发送至消息收发服务器应用114并用于另一客户端应用108的可能访问、设置媒体数据的集合(例如故事)、检索客户端设备106的用户的朋友列表、检索这样的集合、检索消息和内容、向社交图添加朋友以及从社交图删除朋友、定位社交图内的朋友、以及打开应用事件(例如,与客户端应用108有关的)。
32.应用服务器110托管若干应用和子系统,包括消息收发服务器应用114、图像处理系统118和社交网络系统120。消息收发服务器应用114实现了若干消息处理技术和功能,特别是与从客户端应用108的多个实例接收到的消息中包括的内容(例如文本和多媒体内容)的聚合和其他处理有关的消息处理技术和功能。如将进一步详细描述的,来自多个源的文本和媒体内容可以被聚合成内容的集合(例如,被称为故事或图库)。然后,由消息收发服务器应用114使这些集合对客户端应用108可用。鉴于用于这样的处理的硬件要求,还可以由消息收发服务器应用114在服务器侧执行其他处理器和存储器密集型的数据处理。
33.应用服务器110还包括图像处理系统118,图像处理系统118专用于通常关于在消息收发服务器应用114处的消息的有效载荷内接收的图像或视频执行各种图像处理操作。图像处理系统118还可以负责生成和/或托管3d模型和虚拟对象数据。
34.应用服务器110通信地耦接至数据库服务器116,这便于访问其中存储有通过消息收发系统100的操作生成或要求的数据的数据库122。
35.图2是机器200的图解表示,在该机器200中可以执行使机器700执行本文中所讨论的方法中的任何一种或更多种的指令210(例如,软件、程序、应用、小程序、app或其他可执行代码)。例如,指令210可以使机器200执行本文中所描述的方法中的任何一个或更多个方法。指令210将通用的非编程的机器200转换成被编程成以所描述的方式执行所描述和所示出的功能的特定机器200。机器200可以作为独立设备操作或者可以耦接(例如,联网)至其他机器。在联网的部署中,机器200可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器200可以包括但不限于服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、pda、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能家用电器)、其他智能设备、web设备、网络路由器、网络交换机、网络桥接器或能够顺序地或其他方式执行指定机器200要采取的动作的指令210的任何机器。此外,虽然仅示出了单个机器200,但是术语“机器”还应被视为包括单独或联合执行指令210以执行本文中讨论的方法中的任何一种或更多种的机器的集合。
36.机器200可以包括被配置成经由总线240彼此通信的处理器204、存储器206和i/o部件202。在示例实施方式中,处理器204(例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、asic、射频集成电路(rfic)、其他处理器或其任何合适的组合)可以包括例如执行指令210的处理器208和处理器212。术语“处理器”旨在包括多核处理器,所述多核处理器可以包括可以同时执行指令的两个或更多个独立的处理器(有时被称为“核”)。尽管图2示出了多个处理器204,但是机器200可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或其任何组合。
37.存储器206包括主存储器214、静态存储器216以及存储单元218,所述主存储器、静态存储器216和存储单元218均可由处理器204经由总线240访问。主存储器206、静态存储器216和存储单元218存储实现本文中所描述的方法或功能中的任何一个或更多个方法或功能的指令210。指令210还可以在其被机器200执行期间完全地或部分地驻留在主存储器214内、在静态存储器216内、在存储单元218内的机器可读介质220内、在处理器204中的至少一个处理器内(例如,在处理器的高速缓存存储器内)或其任何合适的组合内。
38.i/o部件202可以包括用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量等的各种各样的部件。包括在特定机器中的特定i/o部件202将取决于机器的类型。例如,诸如移动电话的便携式机器可以包括触摸输入设备或其他这样的输入机构,而无头服务器机器将不太可能包括这样的触摸输入设备。将理解的是,i/o部件202可以包括图2中未示出的许多其他部件。在各种示例实施方式中,i/o部件202可以包括用户输出部件226和用户输入部件228。用户输出部件226可以包括视觉部件(例如,诸如等离子体显示面板(pdp)的显示器、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt))、声学部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号发生器等。用户输入部件228可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸姿
势的位置和/或力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
39.在其他示例实施方式中,i/o部件202可以包括生物计量部件230、运动感测部件232、环境部件234或定位部件236以及广泛的其他部件。例如,生物计量部件230包括用于检测表达(例如,手表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、排汗或脑波)、识别人(例如,声音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动感测部件232包括加速度传感器部件(例如,加速度计246)、旋转传感器部件(例如,陀螺仪250)等。环境部件234包括例如:一个或更多个摄像装置242(具有静止图像/照片和视频能力)或其他图像捕获设备、照明传感器部件(例如,光度计)、温度传感器部件(例如,检测环境温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近度传感器部件(例如,检测附近对象的红外传感器)、气体传感器(例如,为了安全而检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)、或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。定位部件236可以包括位置传感器部件(例如,gps接收器244)、高度传感器部件(例如,检测可以从其得出高度的气压的高度计或气压计)、取向传感器部件(例如,磁力计248)等。i/o部件202还可以包括诸如重力传感器的派生传感器,其提供相对于客户端设备106的取向的重力矢量。重力传感器通常从加速度计246得出,其中,其他传感器(例如,磁力计248和陀螺仪250)有助于从加速度计数据去除线性加速度。
40.可以使用各种各样的技术来实现通信。i/o部件202还包括通信部件238,该通信部件238可操作以经由相应的耦接或连接将机器200耦接至网络222或设备224。例如,通信部件238可以包括与网络222对接的网络接口部件或另一合适的设备。在另外的示例中,通信部件238可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(nfc)部件、部件(例如,低功耗)、部件以及经由其他模态提供通信的其他通信部件。设备224可以是另一机器或各种外围设备中的任何外围设备(例如,经由usb耦接的外围设备)。
41.此外,通信部件238可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件238可以包括射频识别(rfid)标签阅读器部件、nfc智能标签检测部件、光学阅读器部件(例如,用于检测诸如通用产品码(upc)条形码的一维条形码、诸如快速响应(qr)码的多维条形码、aztec码、数据矩阵(data matrix)、数据符号(dataglyph)、最大码(maxicode)、pdf417、超码(ultra code)、ucc rss-2d条形码以及其他光学码的光学传感器)或声学检测部件(例如,用于识别经标记的音频信号的麦克风)。另外,可以经由通信部件238得到各种信息,例如经由因特网协议(ip)地理位置的定位、经由信号三角测量的定位、经由检测可以指示特定位置的nfc信标信号的定位等。
42.各种存储器(例如,主存储器214、静态存储器216和/或处理器204的存储器)和/或存储单元218可以存储一个或更多个指令集合和数据结构(例如,软件),所述一个或更多个指令集合和数据结构体现本文中所描述的方法或功能中的任何一种或更多种方法或功能或者由本文中所描述的方法或功能中的任何一种或更多种方法或功能来使用。这些指令(例如,指令210)在被处理器204执行时使各种操作实现所公开的实施方式。
43.可以经由网络接口设备(例如,包括在通信部件238中的网络接口部件)使用传输介质并且使用若干公知的传输协议中的任何一种传输协议(例如,超文本传输协议(http))在网络222上发送或接收指令210。类似地,可以使用传输介质经由到设备224的耦接(例如,对等耦接)来发送或接收指令210。
44.图3是示出软件架构304的框图300,该软件架构304可以安装在本文中所描述的设备中的任何一个或更多个设备上。软件架构304由诸如包括处理器320、存储器326和i/o部件338的机器302的硬件支持。在该示例中,软件架构304可以被概念化为层的堆栈,在该层的堆栈中,每个层提供特定的功能。软件架构304包括诸如操作系统312、库310、框架308和应用306的层。在操作上,应用306通过软件堆栈来激活api调用350并且响应于api调用350来接收消息352。
45.操作系统312管理硬件资源并且提供公共服务。操作系统312包括例如内核314、服务316和驱动器322。内核314充当硬件层与其他软件层之间的抽象层。例如,内核314提供存储器管理、处理器管理(例如,调度)、部件管理、联网和安全设置以及其他功能。服务316可以为其他软件层提供其他公共服务。驱动器322负责控制底层硬件或与底层硬件对接。例如,驱动器322可以包括显示驱动器、摄像装置驱动器、或低功耗驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动器、音频驱动器、电源管理驱动器等。
46.库310提供由应用306使用的低级别公共基础设施。库310可以包括系统库318(例如,c标准库),该系统库318提供诸如存储器分配功能、字符串操纵功能、数学功能等的功能。另外,库310可以包括api库324,例如媒体库(例如,用于支持各种媒体格式的呈现和操作的库,所述各种媒体格式例如运动图像专家组-4(mpeg4)、高级视频编码(h.264或avc)、运动图像专家组层面-3(mp3)、高级音频编码(aac)、自适应多速率(amr)音频编解码器、联合图像专家组(jpeg或jpg)或便携式网络图形(png))、图形库(例如,用于在显示器上的图形内容中以二维(2d)和三维(3d)进行呈现的opengl框架)、数据库库(例如,提供各种关系数据库功能的sqlite)、web库(例如,提供网页浏览功能的webkit)等。库310还可以包括各种各样的其他库328,以向应用306提供许多其他api。
47.框架308提供由应用306使用的高级别公共基础设施。例如,框架308提供各种图形用户接口(gui)功能、高级别资源管理和高级别定位服务。框架308可以提供可以由应用306使用的广泛的其他api,其中一些api可以特定于特定操作系统或平台。
48.在示例实施方式中,应用306可以包括家庭应用336、联系人应用330、浏览器应用332、图书阅读器应用334、定位应用342、媒体应用344、消息收发应用346、游戏应用348以及诸如第三方应用340的广泛分类的其他应用。应用306是执行程序中限定的功能的程序。可以采用各种编程语言来创建以各种方式构造的应用306中的一个或更多个应用,所述编程语言例如面向对象的编程语言(例如,objective-c、java或c++)或过程编程语言(例如,c语言或汇编语言)。在特定示例中,第三方应用340(例如,由特定平台的供应商以外的实体使用android
tm
或ios
tm
软件开发工具包(sdk)开发的应用)可以是在诸如ios
tm
、android
tm
、phone的移动操作系统或其他移动操作系统上运行的移动软件。在该示例中,第三方应用340可以激活由操作系统312提供的api调用350以有助于本文中描述的功
能。
49.图4是示出根据一个示例的通常在客户端设备106的ar系统124中执行的跟踪方法的流程图。从图中可以看出,存在两种方法同时运行。左边是跟踪方法400本身,在子例程框402处开始。右边是相关联的imu方法401,该方法收集并存储由定位部件236和相关联的固件(统称为惯性测量单元或imu)生成的数据以供跟踪方法400本身使用。跟踪方法400以摄像装置242的帧速率操作,而imu方法401以系统时钟速率操作。
50.imu方法401在框420处开始,其中ar系统124基于由客户端设备106的imu生成的数据来接收imu姿态。imu姿态具有相关联的时间戳。在框424处,ar系统124将imu姿态和时间戳存储在缓冲器中,该缓冲器足够大以在给定摄像装置的帧速率与imu的系统时钟速率的差的情况下提供与跟踪方法400的操作所需的一样多的时间戳姿态读数。在框422之后,如图所示,该方法返回至框420,以使ar系统124接收另一imu姿态更新。
51.跟踪方法400在子例程框402处开始,其中基于图像的跟踪方法由ar系统124执行,ar系统124根据初始姿态、初始图像帧和更新的图像帧来提供估计的姿态输出。虽然可以使用任何基于图像的跟踪方法,但是下面参照图5描述可以在子例程框402中使用的说明性的基于图像的跟踪方法。
52.在框404处,ar系统124根据基于图像的跟踪方法接收更新的姿态估计。利用更新的图像帧的时间戳对更新的姿态估计加上时间戳,更新的姿态估计基于该更新的图像帧的时间戳。在框406处,ar系统124从缓冲器获得与跟踪器姿态估计(例如,之前和之后)时间上相邻的两个imu姿态。然后,在框408处,ar系统124使用两个带时间戳的imu姿态和更新的图像帧的时间戳来确定更新的姿态估计时的内插imu姿态。
53.内插imu姿态和基于图像的跟踪器姿态估计不能直接组合,因为它们在不同的坐标系中。因此,在框410处,ar系统124首先将内插imu姿态转换到由基于图像的跟踪器使用的坐标系中。然后,在框412处,ar系统124确定将姿态从内插imu姿态到基于图像的姿态进行的变换。
54.在框414处,ar系统124对所得到的变换序列(例如,由跟踪方法400的先前迭代生成并且包括当前变换)进行低通滤波以去除高频抖动。imu的输出处于高频并且可能有噪声,从而影响imu姿态的输出。类似地,来自基于图像的跟踪器的姿态的输出可能具有轻微未对准,这种轻微未对准将在跟踪系统的公差内,但是当试图使用ar内容时这种稍微未对准可能产生较差的体验。此外,将两个姿态信号直接组合在一起将加剧该问题。因此,ar系统124使用合适的低通滤波器来计算在框412中计算的变换的平滑版本。
55.在框418中,ar系统124将来自框410的经转换和内插的imu姿态与框416的经低通滤波的变换相乘来确定由ar系统124执行的跟踪方法400报告的最终姿态。
56.图5是适合在图4中的子程序框402中使用的基于图像的跟踪器方法的示例。该方法在框502处开始,其中加载由ar系统124从摄像装置242接收的新图像帧。在框504处,ar系统124执行帧到帧对准方法以估计先前帧到当前帧的变换。可以使用的帧到帧(f2f)对准方法的一个示例是esm(高效二阶最小化)。f2f对准方法通常是旨在减少更精确的基于特征的方法所需的初始搜索窗口的仅旋转姿态更新。
57.然后,ar系统124将f2f确定的变换乘以与先前帧相关联的姿态,以获得当前帧的初始姿态估计。
58.然后,在框506处,ar系统124执行先前帧与当前帧之间的图像块相似性匹配和跟踪。图像块相似性匹配取决于找到从先前帧提取的图像块与当前帧中的图像块的匹配。ar系统124存储在框528处从先前帧提取的“历史”图像块以及它们来自原始模型的相关联的界标,以用于将来的比较。另外,ar系统124还存储指示已发现与当前帧中的块成功匹配的值,以用于从进一步考虑中去除这样的块。最后,使用从框504接收的初始姿态,ar系统124通过使界标与匹配的块之间的再投影误差最小化来计算更新姿态。可以使用的图像块相似性匹配的示例是ssd(平方差之和)和ncc(归一化互相关)基于块的跟踪。
59.可以在框506中使用的示例ssd跟踪函数的输入是:(1)m:先前帧中的界标和对应2d点的对的列表,以及(2)(块)prev:在框528处获得的从先前帧提取的块的列表。m通过以下来确定:从先前帧提取关键点和描述符(在框506处)并且使用初始姿态(来自框504)搜索对应的界标(在框514处从先前帧确定)以引导搜索。
60.在判定框508处,ar系统124执行检查以查看在框506中是否已经找到足够的匹配。在测试期间确定该阈值。通常,阈值需要大于成功地跟踪姿态所需的点的最小数目,该数目是3。然而,通常选择阈值的数目,该阈值的数目考虑预期错误率以及如果姿态正确则预期最多的点与最终姿态匹配的事实,并且还平衡计算资源。
61.如果找到足够的匹配,则将框506的由基于块的跟踪所确定的估计姿态用作框514的输入。如果未获得足够的匹配,则在框510处,将由f2f对准所确定的姿态用作框514的输入。
62.在框514处,ar系统124使用从框510或框512获得的当前帧的姿态来获得用于3d模型中的界标的关键点和描述符。描述符是通常为二进制的一组唯一数据,其可以用于在某种程度上可靠地描述特定图像区域,而关键点指定帧中特定图像区域的定位。
63.在框528处,ar系统124从当前帧提取关键点和描述符。该提取使用诸如orb或brisk的已知特征检测和提取系统来完成。
64.然后,在框516处,ar系统124将3d描述符和关键点与图像关键点和描述符进行匹配。进行该匹配的一种方法是通过将每个3d模型描述符和关键点与从当前帧提取的附近图像关键点和描述符进行比较。在这种情况下,附近意指由图像描述符和关键点限定的特征在再投影(3d)界标坐标的某个像素半径内。再投影界标坐标是通过使用当前的估计姿态将界标投影到当前图像帧中而生成的2d特征。
65.ar系统124基于汉明距离选择每个3d模型描述符与图像关键点和描述符之间的最接近匹配,汉明距离是用于比较两个二进制数据串的度量。当比较两个相等长度的二进制串时,汉明距离是其中两个比特不同的比特位置的数目。如果发现汉明距离低于立即可接受的阈值(例如,30),则立即将所比较的描述符标记为有效匹配。否则,返回在最小可接受阈值(例如,60)内具有最小汉明距离的匹配作为匹配。一旦3d关键点和描述符与图像关键点和描述符匹配,则以相同的方式匹配下一3d关键点和描述符,直到已经考虑了最后的3d关键点和描述符或者达到最大阈值。
66.在判定框518处,ar系统124执行检查以查看是否已经找到足够的匹配。该阈值也在测试期间确定,具有最小值3。然而,大多数特征应当匹配的假设在此处比基于块的跟踪更不适用,因为这种跟踪是根据历史模型数据而不是帧到帧进行的,所以低得多的命中率是可能的。因此,足够的匹配数目可能低于基于块的跟踪。如果在判定框518处找到足够的
匹配,则在框520处提供从框510或框512接收的估计姿态作为框526的输出姿态。
67.如果找到足够的匹配,则在框522处,ar系统124使用用于这样做的已知技术根据匹配的关键点和描述符的对来生成输出姿态。例如,给定由框516处的描述符匹配提供的对应关系,可以使用标准最小二乘方法来计算最终姿态,该方法迭代地使特定姿态的再投影误差最小化。使用从框510或框512接收的初始姿态,ar系统124将3d界标投影到当前帧中,并且使界标被投影到图像中的位置与在图像中实际找到对应特征的位置之间的误差(再投影误差)最小化,直至收敛。在不存在更新将导致所有点上的误差进一步减小或者已经执行了固定次数的迭代的情况下,达到收敛。
68.然后,在框524处,ar系统124从当前帧中提取并且存储图像块,以与在框506处的基于图像块的跟踪一起用于下一帧。然后,在框526处,ar系统124将从框510或框512接收的估计姿态作为输出姿态提供给客户端应用108。根据ar系统与客户端应用108之间的责任的划分和实现方式,ar系统124还可以使用输出姿态例如以呈现ar内容,如下面参照图6所讨论的。
69.图6是示出根据某些示例实施方式的由ar系统124呈现的基于位置的ar内容的呈现的界面流动图的示例。如在图6中看到的,界面流程图600包括界面图602和界面图604。
70.在一个示例中,客户端设备106使得显示界面图602的呈现。例如,客户端设备106经由摄像装置242捕获图像数据并且生成由界面图602描绘的界面。
71.如在界面图604中看到的,ar系统124基于客户端设备106的位置访问存储库(例如数据库服务器116)内的媒体内容。包括虚拟对象或其他增强信息或图像的媒体内容(例如媒体内容606)可以与媒体存储库内的位置相关联,使得对存储库内的位置的引用标识媒体内容606。
72.然后,ar系统124可以基于输出姿态使得在gui内的位置处显示媒体内容606的呈现,如在界面图604中看到的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1