掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请根据美国法典第35条第119(e)项要求于2018年12月20日提交的题为“虚拟表面修改”的美国临时申请序列号62/782,916的优先权,该临时申请通过引用结合于此。

背景技术

本公开大体上涉及视觉呈现,更具体地涉及渲染对相机馈送中描绘的真实世界环境的虚拟修改。

发明内容

虚拟渲染系统可用于创建引人入胜且有趣的增强现实体验,其中三维(3D)虚拟对象图形内容似乎存在于现实世界中。由于环境条件、用户动作、在相机和正在渲染的对象之间的意外视觉中断等,这种系统可能会遇到呈现问题。这可能会导致虚拟对象消失或以其他方式表现不正常,从而打破虚拟对象存在于现实世界中的错觉。例如,当用户在现实世界中移动时,虚拟渲染系统可能不会以相对于现实世界项目一致的方式呈现虚拟对象。

附图说明

在不一定按比例绘制的附图中,相同的数字可以在不同的视图中描述相似的部件。为了容易地识别任何特定元素或动作的讨论,参考数字中的一个或多个最高位有效数字是指该元素首先被引入的图号。一些实施例以示例而非限制的方式在附图中示出,其中:

图1是示出根据示例实施例的用于通过网络交换数据(例如,消息和关联内容)的示例消息传递系统的框图;

图2是示出根据示例实施例的关于消息传递系统的进一步细节的框图;

图3是图示根据示例实施例的可以存储在消息传递服务器系统的数据库中的数据的示意图;

图4是图示根据示例实施例的由消息传递客户端应用生成的用于通信的消息的结构的示意图;

图5是图示了根据示例实施例的示例访问限制过程的示意图,在该过程中,对内容(例如,临时消息和关联多媒体数据有效载荷)或内容集合(例如,临时消息故事)的访问可以有时间限制性的(例如,变得短暂的);

图6是示出根据示例实施例的虚拟渲染系统的各种部件的框图;

图7是示出根据示例实施例、在执行用于将虚拟修改渲染到3D空间的方法中虚拟渲染系统的示例操作的流程图;

图8是示出根据示例实施例、在执行用于跟踪在3D空间中渲染的对象的方法中虚拟渲染系统的示例操作的流程图;

图9-13是示出根据示例实施例、在执行用于在将虚拟修改渲染到3D空间中的表面的方法中虚拟渲染系统的示例操作的流程图;

图14A和14B是界面图,示出根据示例实施例的由虚拟渲染系统提供的界面;

图15是示出了根据示例实施例的可以与这里描述的各种硬件架构结合使用的代表性软件架构的框图;以及

图16是示出根据示例实施例的能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文中讨论的任何一种或多种方法的机器的部件的框图。

具体实施方式

下面的描述包括体现本公开的说明性实施例的系统、方法、技术、指令序列和计算机程序产品。在以下描述中,为了解释的目的,阐述了许多具体细节以提供对本发明主题的各种实施例的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实践本发明主题的实施例。一般而言,不必详细示出众所周知的指令实例、协议、结构和技术。

其中,本公开的实施例通过对图像数据(例如,图像和视频)中所描绘的3D现实世界环境渲染虚拟修改,就好像该修改存在于真实世界的环境中一样,来改进电子消息传递和成像软件和系统的功能。例如,系统可以在由图像捕获设备(例如,数码相机)生成的图像内容中描绘的3D空间内渲染应用于现实世界表面的一种或多种视觉效果。可以渲染一种或多种视觉效果,使得修改后的表面看起来存在于现实世界环境中。应用于现实世界表面的视觉效果可以是多种视觉效果中的任何一种,包括例如改变表面的颜色、改变表面的纹理、将动画效果应用到表面(例如,流水)、模糊表面、渲染移动受表面边界限制的移动虚拟对象,用其他视觉内容替换表面以及它们的各种组合。

图1是示出用于通过网络交换数据(例如,消息和相关联的内容)的示例消息传递系统100的框图。消息系统100包括多个客户端设备102,每个客户端设备托管多个应用,包括消息传递客户端应用104。每个消息传递客户端应用程序104经由网络106(例如,互联网)通信地耦合到消息传递客户端应用程序104和消息传递服务器系统108的其他实例。

因此,每个消息传递客户端应用104能够通过网络106与另一个消息传递客户端应用104和消息传递服务器系统108进行通信和交换数据。在消息传递客户端应用104之间以及在消息传递客户端应用104和消息传递服务器系统108之间交换的数据包括功能(例如,调用功能的命令)以及有效载荷数据(例如,文本、音频、视频或其他多媒体数据)。

消息传递服务器系统108通过网络106向特定的消息传递客户端应用104提供服务器端功能。尽管消息传递系统100的某些功能在本文中被描述为由消息传递客户端应用104或由消息传递服务器系统108执行,但是应当理解,某些功能在消息传递客户端应用104或消息传递服务器内系统108的某些功能的位置是设计选择。例如,最初在消息传递服务器系统108内部署某些技术和功能在技术上可能是优选的,但是稍后在客户端设备102具有足够处理能力的情况下将所述技术和功能迁移到消息传递客户端应用104。

消息传递服务器系统108支持提供给消息传递客户端应用104的各种服务和操作。此类操作包括向消息传递客户端应用104发送数据、从其接收数据以及处理由其生成的数据。作为示例,该数据可以包括消息内容、客户端设备信息、地理位置信息、媒体注释和覆盖、消息内容持久性条件、社交网络信息和现场事件信息。消息传递系统100内的数据交换通过经由消息传递客户端应用104的用户接口(UI)可用的功能来调用和控制。

现在具体地转到消息传递服务器系统108,应用程序接口(API)服务器110耦合到应用程序服务器112并向其提供编程接口。应用程序服务器112通信耦合到数据库服务器118,数据库服务器118便于访问数据库120,在数据库120中存储了与应用服务器112处理的消息相关联的数据。

具体说API服务器110,该服务器在客户端设备102和应用服务器112之间接收和发送消息数据(例如,命令和消息有效载荷)。具体地,API服务器110提供可以由消息传递客户端应用104调用或查询的一部接口(例如,例程和协议),以便调用应用服务器112的功能。API服务器110公开应用程序服务器112支持的各种功能,包括帐户注册、登录功能,经由应用服务器112从特定消息传递客户端应用104向另一个消息传递客户端应用104发送消息、将媒体文件(例如,图像或视频)从消息传递客户端应用104向消息传递服务器应用114发送并用于另一个消息传递客户端应用104的可能访问,媒体数据集合(例如,故事)的设置,检索这类集合,检索客户端设备102的用户的朋友列表,检索消息和内容,向社交图添加和删除朋友,社交图内朋友的位置,打开应用事件(例如,与消息传递客户端应用104相关的)。

应用服务器112托管多个应用和子系统,包括消息传递服务器应用114、图像处理系统116、社交网络系统122。消息传递服务器应用114实现多种消息处理技术和功能,具体涉及对从消息传递客户端应用104的多个实例接收的消息中包括的内容(例如,文本和多媒体内容)的聚合和其他处理。如将进一步详细描述的,来自多个源的文本和媒体内容可聚合成内容集合(例如,被称为故事或图库)。然后,消息传递服务器应用114使这些集合可用于消息传递客户端应用104。鉴于其他处理器和存储器密集的数据处理的硬件要求,这种处理还可在服务器侧由消息传递服务器应用114执行。

如下文将讨论的,消息传递服务器应用114包括虚拟渲染系统,所述虚拟渲染系统提供在客户端设备102的相机视图中描绘的3D真实世界环境内生成、渲染和跟踪视觉修改的功能。

应用服务器112还包括专用于执行各种图像处理操作的图像处理系统116,通常关于在消息传递服务器应用114处的消息的有效载荷内接收的图像或视频。

社交网络系统122支持各种社交网络功能和服务,并使这些功能和服务对消息传递服务器应用114可用。为此,社交网络系统122维护并访问数据库120内的实体图。社交网络系统122支持的功能和服务的示例包括特定用户与其有关系或正在“关注”的消息传递系统100的其他用户的标识,以及其他实体标识和特定用户的兴趣。

应用服务器112通信地耦合到数据库服务器118,数据库服务器118便于访问数据库120,在数据库120中存储与由消息传递服务器应用114处理的消息相关联的数据。

图2是示出根据示例实施例的关于消息传递系统100的进一步细节的框图。具体地,消息传递系统100被示出为包括消息传递客户端应用104和应用服务器112,其继而体现多个子系统,即短暂计时器系统202、集合管理系统204和注释系统206和虚拟渲染系统210。

短暂计时器系统202负责实施对由消息传递客户端应用104和消息传递服务器应用114许可的内容的临时访问。为此,短暂计时器系统202包括多个计时器,这些计时器基于与消息或消息的集合相关联的持续时间和显示参数,经由消息传递客户端应用104选择性地显示和启用对消息和相关联的内容的访问。下面提供关于短暂计时器系统202的操作的进一步细节。

集合管理系统204负责管理媒体集合(例如,文本、图像、视频和音频数据的集合)。在一些示例中,内容的集合(例如,消息,其包括图像、视频、文本和音频)可被组织成“事件库”或“事件故事”。这种集合可在指定的时间段内(诸如内容所涉及的事件的持续时间)可用。例如,与音乐会有关的内容可在该音乐会的持续时间内作为“故事”可用。集合管理系统204还可负责将提供存在特定集合的通知的图标发布到消息传递客户端应用104的用户接口。

集合管理系统204还包括策划接口(curation interface)208,其允许集合管理器管理和策划特定的内容集合。例如,策划接口208使事件组织者能够策划与特定事件有关的内容集合(例如,删除不适当的内容或冗余消息)。另外,集合管理系统204采用机器视觉(或图像识别技术)和内容规则来自动策划内容集合。在某些实施例中,可向用户支付补偿以将用户生成的内容包括在集合中。在这种情况下,策划接口208操作以自动向这些用户付款以使用其内容。

注释系统206提供使用户能够注释或以其他方式修改或编辑与消息相关联的媒体内容的各种功能。例如,注释系统206提供与由消息传递系统100处理的消息的媒体覆盖的生成和发布有关的功能。注释系统206基于客户端设备102的地理定位,可操作地向消息传递客户端应用104提供媒体覆盖(例如,过滤器)。在另一个示例中,注释系统206基于其他信息(诸如客户端设备102的用户的社交网络信息),可操作地向消息传递客户端应用104提供媒体覆盖。媒体覆盖可包括音频和视觉内容以及视觉效果。音频和视觉内容的示例包括图片、文本、徽标、动画和声音效果。视觉效果的示例包括颜色重叠。可将音频和视觉内容或视觉效果应用于客户端设备102处的媒体内容项目(例如,照片)。例如,媒体覆盖包括可覆盖在客户端设备102生成的照片的顶部上的文本。在另一个示例中,媒体覆盖包括位置覆盖的标识(例如,威尼斯海滩)、实况事件的名称或商家覆盖的名称(例如,海滩咖啡馆)。在另一个示例中,注释系统206使用客户端设备102的地理定位来识别包括客户端设备102的地理定位处的商家名称的媒体覆盖。媒体覆盖可包括与商家相关联的其他标记。媒体覆盖可存储在数据库120中并通过数据库服务器118访问。

在一个示例实施例中,注释系统206提供基于用户的发布平台,其使用户能够在地图上选择地理位置,并上载与所选择的地理位置相关联的内容。用户还可指定这样的环境,在该环境下应该向其他用户提供特定的内容。注释系统206生成包括上载的内容的媒体覆盖,并且将上载的内容与所选择的地理位置相关联。

在另一个示例实施例中,注释系统206提供基于商家的发布平台,其使商家能够通过投标过程选择与地理位置相关联的特定媒体覆盖。例如,注释系统206将最高出价商家的媒体覆盖与对应的地理定位相关联预定义的时间量。

虚拟渲染系统210提供在客户端设备102的现场相机馈送(也被本领域普通技术人员称为“相机流”、“视频流”或“视频源”)中描绘的3D真实世界环境内生成、渲染和跟踪虚拟修改的功能。由虚拟渲染系统210提供的虚拟修改可以包括将一种或多种视觉效果应用到相机馈送中描绘的真实世界表面。虚拟渲染系统210提供的虚拟修改还可以包括在客户端设备102的现场相机馈送中描绘的真实世界环境内渲染的虚拟对象。

图3是示出根据某些示例实施例的可存储在消息传递服务器系统108的数据库120中的数据300的示意图。虽然数据库120的内容被示出为包括多个表,但是应当理解,数据可存储在其他类型的数据结构中(例如,作为面向对象的数据库)。

数据库120包括存储在消息表314中的消息数据。实体表302存储实体数据,其包括实体图304。其记录被维护在实体表302内的实体可包括个人、公司实体、组织、对象、地点等。无论何种类型,消息传递服务器系统108存储数据所关于的任何实体都可以是识别的实体。每个实体被提供有唯一标识符,以及实体类型标识符(未示出)。

实体图304还存储关于实体之间的关系和关联的信息。例如,这种关系可以是社交的、专业的(例如,在共同的公司或组织工作)、基于兴趣的或基于活动的。

数据库120还以过滤器和镜头的示例形式将注释数据存储在注释表312中。为其在注释表312中存储数据的过滤器和镜头被关联于并应用于视频(其数据存储在视频表310中)和/或图像(其数据存储在图像表308中)。过滤器是这样的覆盖,其在呈现给接收用户期间被显示为在图像或视频上的覆盖。镜头包括实时视觉效果和/或声音,其可以被添加到相机馈送中描绘真实世界环境,例如(当用户经由消息传递客户端应用104的一个或多个界面查看相机馈送时,在撰写消息时,或者在呈现给接受用户期间)在一些实施例中,在客户端设备102处捕获图像或视频之后,将过滤器应用于图像或视频,而将镜头应用于客户端设备102的相机馈送,使得当应用镜头在客户端设备102处捕获图像或视频时,所应用的镜头被并入作为所生成的图像或视频的一部分。过滤器和镜头可以是各种类型,包括当发送用户正在撰写消息时,由消息传递客户端应用104呈现给发送用户的来自过滤器图库或镜头图库的用户选择的过滤器和镜头。

如上所述,视频表310存储视频数据,在一个实施例中,该视频数据与在消息表314中为其维护记录的消息相关联。类似地,图像表308存储与在实体表302中为其存储消息数据的消息相关联的图像数据。实体表302可将来自注释表312的各种注释与存储在图像表308和视频表310中的各种图像和视频相关联。

故事表306存储关于消息和相关联的图像、视频或音频数据的集合的数据,其被编译成集合。特定集合的创建可由特定用户(例如,在实体表302中为其维护记录的每个用户)发起。用户可以采用已由该用户创建和发送/广播的内容集合的形式创建“个人故事”。为此,消息传递客户端应用104的用户接口可包括用户可选择的图标,以使发送用户能够将特定内容添加到他或她的个人故事中。

集合还可构成“现场故事”,其是来自多个用户的内容的集合,其是手动、自动或使用手动和自动技术的结合而创建的。例如,“现场故事”可构成来自各种位置和事件的用户提交的内容的策划流。例如,可经由消息传递客户端应用104的用户接口向用户呈现以向特定的现场故事贡献内容的选项,该用户的客户端设备已启用位置服务并且在特定时间处于公共位置事件。可由消息传递客户端应用104基于他或她的位置向用户识别现场故事。最终结果是从社区角度讲述的“现场故事”。

另一种类型的内容集合被称为“位置故事”,其使得其客户端设备102位于特定地理位置(例如,在学院或大学校园内)的用户能够对特定集合做出贡献。在一些实施例中,对位置故事的贡献可需要第二程度的认证以验证最终用户属于特定组织或其他实体(例如,是大学校园中的学生)。

图4是示出根据一些实施例的消息400的结构的示意图,消息400由消息传递客户端应用104生成,用于与另外的消息传递客户端应用104或消息传递服务器应用114通信。具体消息400的内容用于填充存储在数据库120内的消息表314,消息表314可由消息传递服务器应用114访问。类似地,消息400的内容作为客户端设备102或应用服务器112的“传输中”或“飞行中”数据存储在存储器中。消息400被显示为包括以下组分:

·消息标识符402:标识消息400的唯一标识符。

·消息文本有效载荷404:文本,其由用户经由客户端设备102的用户接口生成并且包括在消息400中。

·消息图像有效载荷406:图像数据,其由客户端设备102的相机部件捕获或从客户端设备102的存储器取得,并且包括在消息400中。

·消息视频有效载荷408:视频数据,其由相机部件捕获或从客户端设备102的存储器部件取得并且包括在消息400中。

·消息音频有效载荷410:音频数据,其由麦克风捕获或从客户端设备102的存储器部件取得,并且包括在消息400中。

·消息注释412:注释数据(例如,过滤器、贴纸或其他增强),其表示要应用于消息400的消息图像有效载荷406、消息视频有效载荷408或消息音频有效载荷410的注释。

·消息持续时间参数414:参数值,其以秒为单位指示消息内容(例如,消息图像有效载荷406,消息视频有效载荷408,消息音频有效载荷410)将通过消息传递客户端应用104呈现给用户或可由用户访问的时间量。

·消息地理定位参数416:与消息400的内容有效载荷相关联的地理定位数据(例如,纬度和纵向坐标)。多个消息地理定位参数416值可包括在有效载荷中,这些参数值中的每一个与内容中包括的内容项目(例如,消息图像有效载荷406内的特定图像,或消息视频有效载荷408中的特定视频)相关联。

·消息故事标识符418:标识符值,其标识与消息400的消息图像有效载荷406中的特定内容项相关联的一个或多个内容集合(例如,“故事”)。例如,消息图像有效载荷406内的多个图像可各自使用标识符值与多个内容集合相关联。

·消息标签420:每一消息400可以被加上多个标签,这些标签中的每一个指示消息有效载荷中包括的内容的主题。例如,在消息图像有效载荷406中包括的特定图像描绘动物(例如,狮子)的情况下,标签值可包括在消息标签420内,其指示相关动物。标签值可基于用户输入手动生成,或者可使用例如图像识别自动生成。

·消息发送者标识符422:标识符(例如,消息传递系统标识符、电子邮件地址或设备标识符),其指示这样的客户端设备102的用户,在客户端设备102上生成消息400并且从其发送消息400。

·消息接收者标识符424:标识符(例如,消息传递系统标识符、电子邮件地址或设备标识符),其指示消息400被寻址到的客户端设备102的用户。

消息400的各种成分的内容(例如,值)可以是指向内容数据值存储在表中的位置的指针。例如,消息图像有效载荷406中的图像值可以是指向图像表308内的位置(或其地址)的指针。类似地,消息视频有效载荷408内的值可指向存储在视频表310内的数据,存储在消息注释412内的值可指向存储在注释表312中的数据,存储在消息故事标识符418内的值可指向存储在故事表306中的数据,并且存储在消息发送者标识符422和消息接收者标识符424内的值可指向存储在实体表302内的用户记录。

图5是示出访问限制过程500的示意图,在该过程中,对内容(例如,短暂的消息502以及数据的相关联的多媒体有效载荷)或内容集合(例如,短暂的消息故事504)的访问可以是有时间限制的(例如,使其短暂的)。

短暂消息502被示出与消息持续时间参数506相关联,消息持续时间参数506的值确定消息传递客户端应用104将把短暂消息502显示给短暂消息502的接收用户的时间量。在一个实施例中,在消息传递客户端应用104是应用客户端的情况下,短暂消息502可由接收用户查看最多10秒,这取决于发送用户使用消息持续时间参数506指定的时间量。

消息持续时间参数506和消息接收者标识符424被示为对消息计时器512的输入,消息计时器512负责确定向由消息接收者标识符424标识的特定接收用户显示短暂消息502的时间量。具体地,短暂消息502将仅被显示给相关接收用户由消息持续时间参数506的值确定的一段时间段。消息计时器512被示出为向更通用的短暂计时器系统202提供输出,该短暂计时器系统202负责对于接收用户的显示内容(例如,短暂消息502)的整体计时。

短暂消息502在图5中示出为包括在短暂的消息故事504(例如,个人故事或事件故事)内。短暂消息故事504具有相关联的故事持续时间参数508,其值确定短暂消息故事504被呈现给消息传递系统100的用户并且消息传递系统100的用户可访问的持续时间。例如,故事持续时间参数508可以是音乐会的持续时间,其中短暂消息故事504是与该音乐会有关的内容的集合。另选地,当执行短暂消息故事504的设置和创建时,用户(拥有用户或策划用户)可指定故事持续时间参数508的值。

另外,短暂消息故事504内的每个短暂消息502具有相关联的故事参与参数510,其值确定短暂消息502将在短暂消息故事504的上下文内可访问的持续时间。因此,在短暂消息故事504本身在故事持续时间参数508方面到期之前,特定短暂消息故事504可能在短暂消息故事504的上下文中“过期”并变得不可访问。故事持续时间参数508、故事参与参数510和消息接收者标识符424各自向故事计时器514提供输入,故事计时器514首先在操作上确定短暂消息故事504的特定短暂消息502是否将被显示给特定接收用户,并且如果是,则显示多长时间。需注意,作为消息接收者标识符424的结果,短暂消息故事504还意识到特定接收用户的身份。

因此,故事计时器514可操作地控制相关联的短暂消息故事504的整体寿命,以及短暂消息故事504中包括的个别短暂消息502。在一个实施例中,短暂消息故事504内的每个短暂消息502在故事持续时间参数508指定的时间段内保持可见和可访问。在另外的实施例中,某个短暂消息502可在短暂消息故事504的上下文中基于故事参与参数510到期。需注意,即使在短暂消息故事504的上下文中,消息持续时间参数506仍然可确定向接收用户显示特定短暂消息502的持续时间。因此,消息持续时间参数506确定向接收用户显示特定短暂消息502的持续时间,而不管接收用户是否正在观看短暂消息故事504的上下文内部或外部的短暂消息502。

短暂计时器系统202还可基于特定短暂消息502已经超过相关联的故事参与参数510的确定,在操作上从短暂消息故事504中移除特定短暂消息502。例如,当发送用户已经建立了从发布起24小时的故事参与参数510时,短暂计时器系统202将在指定的24小时之后从短暂消息故事504中移除相关的短暂消息502。短暂计时器系统202还操作以,在短暂消息故事504内的每个短暂消息502的故事参与参数510已经到期时,或者当短暂消息故事504本身已经在故事持续时间参数508方面到期时,移除短暂的消息故事504。

在某些使用情况下,特定短暂消息故事504的创建者可指定不确定的故事持续时间参数508。在这种情况下,对于短暂消息故事504内的最后剩余短暂消息502的故事参与参数510的到期将确定短暂消息故事504本身何时到期。在这种情况下,添加到短暂消息故事504的具有新故事参与参数510的新短暂消息502有效地将短暂消息故事504的寿命延长到等于故事参与参数510的值。

响应于短暂计时器系统202确定短暂消息故事504已经到期(例如,不再可访问),短暂计时器系统202与消息传递系统100(以及例如,具体地,消息传递客户端应用104)通信,以使得与相关短暂消息故事504相关联的标记(例如,图标)不再显示在消息传递客户端应用104的用户接口内。类似地,当短暂计时器系统202确定特定短暂消息502的消息持续时间参数506已经到期时,短暂计时器系统202使消息传递客户端应用104不再显示与短暂消息502相关联的标记(例如,图标或文本标识)。

图6是说明虚拟渲染系统210的功能部件的框图,其配置虚拟渲染系统210以渲染对在实况相机馈送中描绘的3D真实世界环境的虚拟修改。例如,虚拟渲染系统210可以渲染对在现场相机馈送中描绘的3D空间中的真实世界表面的虚拟修改。作为另一个例子,虚拟渲染系统210可以渲染在3D空间内的虚拟对象。

虚拟渲染系统210被示为包括渲染部件602、跟踪系统604、中断检测部件606、对象模板部件608和事件检测部件610。虚拟渲染系统210的各种部件可以被配置为彼此通信(例如,经由总线、共享存储器或交换机)。虽然图6中未示出。但在一些实施例中,虚拟渲染系统210可以包括或者可以与被配置为产生包括图像数据的相机馈送的相机通信,该图像数据包括图像序列(例如,视频)。

所描述的任何一个或多个部件可以单独使用硬件(例如,机器的一个或多个处理器612)或硬件和软件的组合来实现。例如,虚拟渲染系统210所描述的任何部件可以物理地包括处理器612中的一个或多个(例如,机器的一个或多个处理器的子集或其中的子集)的布置,处理器612被配置为执行这里描述的操作。作为另一示例,虚拟渲染系统210的任何部件可包括软件、硬件或两者,其配置一个或多个处理器612(例如,在机器的一个或多个处理器之中)的布置以执行本文所述的操作。因此,虚拟渲染系统210的不同部件可包括并配置此类处理器612的不同布置或此类处理器612在不同时间点的单个布置。

此外,虚拟渲染系统210的任意两个或更多个部件可以组合成单个部件,并且这里针对单个部件描述的功能可以在多个部件之间细分。此外,根据各种示例实施例,这里描述为在单个机器、数据库或设备内实现的部件可以分布在多个机器、数据库或设备上。

跟踪系统604可以包括第一跟踪子系统604A、第二跟踪子系统604B和第三跟踪子系统604C。每个跟踪子系统基于一组跟踪标记来跟踪对3D空间的虚拟修改的位置。

由于环境条件、用户动作、在相机与被跟踪对象/场景之间的意外视觉中断等,跟踪系统经常出现跟踪故障。传统上,此类跟踪失败会导致3D空间中虚拟对象的呈现中断。例如,虚拟对象可能会消失或以其他方式表现不稳定,从而中断虚拟对象在3D空间内呈现的错觉。这会破坏整体3D体验的感知质量。

传统的跟踪系统依赖于单一方法(自然特征跟踪(NFT)、同时定位和映射(SLAM)、陀螺仪等),由于不准确的传感器数据、移动、视觉标记的丢失或遮挡,或场景的动态中断,每种方法在实际使用中都有断点。此外,每种方法在能力上可能有各自的限制。例如,陀螺仪跟踪系统只能跟踪具有三个自由度(3DoF)的物品。此外,由于每个单独系统的固有限制,使用单个跟踪系统会提供不准确或不稳定的位置估计。例如,由于单独的视觉跟踪不准确性,NFT系统可能无法提供足够的俯仰、偏航或滚转估计,而陀螺仪跟踪系统提供不准确的平移(向上、向下、向左、向右)。

为了解决传统跟踪系统的上述问题,虚拟渲染系统210包括多个冗余跟踪子系统604A-C,其使得能够进行跟踪子系统之间的无缝转换。多个冗余跟踪子系统604A-C通过将多个跟踪方法合并到单个跟踪系统604中来解决传统跟踪系统的问题。跟踪系统604能够通过基于由跟踪系统跟踪的跟踪标记的可用性在多个跟踪系统之间进行组合和转换,来组合6DoF和3DoF跟踪技术。因此,当由任何一个跟踪系统跟踪的标记变得不可用时,虚拟渲染系统210在6DoF和3DoF中的跟踪之间无缝切换,从而为用户提供不间断的体验。例如,在视觉跟踪系统(例如,NFT、SLAM)的情况下,通常被分析以确定取向的跟踪标记可以被来自陀螺跟踪系统的陀螺跟踪标记替换。因此,这将使得能够基于跟踪标记的可用性在6Dof和3DoF中的跟踪之间转换。

在一些示例实施例中,为了在6DoF和3DoF中的跟踪之间转换,虚拟渲染系统210收集和存储在跟踪矩阵内的跟踪标记,该跟踪矩阵包括平移标记(例如,向上、向下、向左、向右)和旋转标记(例如,俯仰、偏航、滚动)。由此,可以从跟踪矩阵中提取由NFT系统收集的平移标记,并在由NFT系统收集的未来的平移标记变得不准确或不可用时使用。同时,陀螺仪继续提供旋转标记。这样,当移动设备丢失跟踪标记时,呈现在3D空间中的被跟踪对象不会在丢失跟踪标记时在帧处被突然改变。随后,当目标跟踪对象重新出现在屏幕中,并获得新的平移T

虚拟渲染系统210的渲染部件602被配置为在由客户端设备102的相机产生的现场相机馈送内捕获的3D空间中渲染虚拟修改。例如,渲染部件602可以渲染在现场相机馈送内捕获的3D空间中应用于现实世界表面的视觉效果。在渲染修改时,虚拟渲染系统210动态地将图像掩模应用到实况相机馈送中描绘的表面,并将视觉效果应用到该图像掩模。

虚拟渲染系统210可以通过按照6DoF的一个或多个跟踪系统来跟踪和调整虚拟修改的位置。例如,虚拟渲染系统210的一个或多个跟踪系统可以收集和分析一组跟踪标记(例如,滚动、俯仰、偏航、自然特征等)以便在具有6DoF的3D空间中跟踪相对于客户端设备102的虚拟修改的位置。在这样的实施例中,虚拟渲染系统210可以基于被跟踪标记的可用性在跟踪系统之间转换以保持按照6DoF的一致的跟踪。

中断检测部件606监视跟踪标记以检测中断。在中断检测部件606检测到一个或多个标记的中断从而使得按照6DoF的跟踪变得不可靠或不可能时,虚拟渲染系统210转变为跟踪按照3DoF的3D空间中的虚拟修改以防止显示的中断。例如,虚拟渲染系统210可以从第一跟踪系统(或跟踪系统集合中的第一跟踪系统集合)转换到跟踪系统集合中的第二跟踪系统(或第二跟踪系统集合),其中第二跟踪系统能够基于可用的跟踪标记在3D空间中用3DoF跟踪虚拟修改。

在一些示例实施例中,虚拟渲染系统210的跟踪系统集合包括陀螺仪跟踪系统、NFT系统和SLAM跟踪系统。跟踪系统集合中的每个跟踪系统可以分析跟踪标记以便跟踪虚拟对象在3D空间内的位置。例如,为了用6DoF跟踪虚拟对象,虚拟渲染系统210可能需要至少六个跟踪标记可用。当跟踪标记由于各种原因变得受阻或不可用时,虚拟渲染系统210可以在跟踪系统集合中的可用跟踪系统之间转换,以便维持6DoF或在必要时转换到3DoF。

将容易理解的是,虚拟渲染系统210提供在各种环境和情况下在真实世界3D空间中的一致的渲染虚拟修改(例如,应用于真实世界表面的视觉效果)。在许多应用中,可能需要当一个或多个用户、相机或其他跟踪项目在环境中四处移动时,为这些虚拟修改的位置提供牢固的一致性。这可能涉及对现实世界环境中特定固定参考点(例如,固定表面)的识别和使用。不使用固定参考点或项目会导致虚拟对象的渲染和呈现中出现浮动或其他不希望的不一致。

为了确保虚拟对象的位置的牢固一致性,可以采用对此处描述的虚拟修改跟踪和渲染特定的采用呈现镜头的示例形式的注释数据。特别是,表面感知镜头是一种演示镜头,它识别和引用真实世界的表面(例如,地面),以便在3D空间中虚拟修改的一致的渲染和呈现。表面感知镜头可以是渲染部件602内的特定部分或子部件。渲染部件602的这个表面感知镜头可以被配置为基于视觉相机内容识别参考表面,并且还可以利用其他设备输入(例如,陀螺仪、加速度计、罗盘)来确定什么是现场相机馈送中描绘的3D空间内的适当表面。一旦确定了参考表面,就可以关于该参考表面完成虚拟修改。在一个示例中,3D空间中的参考表面是地面。虚拟渲染系统210可以通过将视觉效果应用于地面来修改现场相机馈送中所描绘的地面。虚拟渲染系统210还可以在3D空间中的某个位置渲染虚拟对象,使得标题看起来被锚定到地面。

在一些实施例中,虚拟渲染系统210可以响应于触发事件来渲染对在客户端设备102的现场相机馈送中所描绘的3D空间的虚拟修改。为此,事件检测部件610负责检测这样的触发事件。事件检测部件610可基于从客户端设备102的一个或多个部件接收的数据或从经由网络106可访问的一个或多个外部源接收的数据,来检测触发事件。例如,触发事件可以基于来自客户端设备102的位置部件的地理定位数据,并且触发事件的检测可以包括检测客户端设备102在特定地理位置处或附近。作为另一示例,触发事件可以基于时间因素,并且触发事件的检测可以包括基于由客户端设备102维护的时钟信号来检测特定日期或时间。作为又一示例,触发事件可以基于描述天气状况的天气数据(例如,通过网络106从外部来源获得),并且触发事件的检测可以包括检测特定天气状况(例如,雪、雨、风等)。

图7是图示根据本公开的各种实施例的用于渲染在3D空间中的虚拟修改的方法700的流程图。方法700可以被体现在计算机可读指令中,该计算机可读指令由一个或多个处理器执行,从而使得方法700的操作可以部分或全部由虚拟渲染系统210的功能部件执行;相应地,方法700在下面通过示例的方式参考其进行描述。然而,应当理解,方法700的至少一些操作可以部署在各种其他硬件配置上,并且方法700不旨在限于虚拟渲染系统210。

如操作702中所描绘的,虚拟渲染系统210接收输入以激活表面感知镜头的。所述输入可以是手工用户输入的形式,其可以是例如按钮轻击或以指示对表面感知镜头的选择的方式握持或指向活动相机。表面感知镜头可以例如与对象模板部件608为其维护模板的任何虚拟对象一起使用,尽管表面感知镜头在应用上不限于由对象模板部件608维护的虚拟对象模板。

在操作704,渲染部件602通过检测在由相机产生的现场相机馈送中描绘的3D空间中的真实世界参考表面来响应该输入。相机馈送包括图像数据,该图像数据包括其中描绘了3D空间的图像序列(例如,视频)。在一些实施例中,参考表面可以是用户指定的参考表面。因此,参考表面的检测基于用户输入,例如用于激活表面镜头以指示参考表面的轻敲或其他手势。在许多情况下,这种参考表面可以是地板表面或地面,但也可以使用其他固定的和可确定的表面。例如,渲染部件602可以通过基于对视觉相机内容的分析来识别固定表面来确定参考表面,并且还可以利用其他设备输入(例如,陀螺仪、加速度计、罗盘)来确定什么是由相机馈送捕获的3D空间内的适当表面。在各种实施例中,可以向用户请求确认合适的参考表面已经被指示或突出显示。在一些情况下,系统可以指示不能检测到合适的参考表面,从而可能需要来自用户的进一步输入或帮助。

在操作706,渲染部件602基于检测到的参考表面来定向虚拟修改。虚拟修改的定向可以包括基于检测到的参考表面将虚拟修改(例如虚拟对象)分配到3D空间中的位置,并识别由跟踪系统604在3D空间中跟踪虚拟对象时要使用的跟踪标记。虚拟修改被分配的位置可以对应于参考表面或参考表面上方的预定距离。操作704和706中的一个或两个也可称为渲染部件602的初始化。本质上,在相对于现实世界中的参考表面的适当静态取向处,在渲染部件602中建立相机馈送内的所确定参考表面。

在操作708,渲染部件602关于参考表面渲染虚拟修改。例如,渲染部件602可以关于参考表面来渲染虚拟对象。关于参考表面对虚拟对象的渲染可以包括在3D空间内的指定位置处渲染和保持虚拟对象。因此,在所分配的位置与参考表面相距预定距离的情况下,虚拟对象的渲染可以包括将虚拟对象渲染并保持在与参考表面相距预定距离处。在这些情况下,虚拟对象在被渲染时可能实际上并不接触或靠在参考表面上,而是可以在参考表面上方悬停或以预定距离延伸远离参考表面。

图8是示出根据某些示例实施例的虚拟渲染系统210在执行用于跟踪在3D空间中相对于客户端设备102的位置处的虚拟修改的方法800的操作的流程图。方法800可以体现在计算机可读指令中,该计算机可读指令由一个或多个处理器执行,从而使得方法800的操作可以部分或全部由虚拟渲染系统210的功能部件执行;相应地,方法800在下文中以举例的方式参考其进行描述。然而,应当理解,方法800的至少一些操作可以部署在各种其他硬件配置上,并且方法800不旨在限于虚拟渲染系统210。

在操作802,渲染部件602在3D空间中在相对于客户端设备102的位置处渲染对相机馈送中描绘的3D空间的虚拟修改。

在操作804,跟踪系统604基于跟踪标记集合,经由第一跟踪子系统604A或多个跟踪子系统(例如,第一跟踪子系统604A和第二跟踪子系统604B)的组合,跟踪在3D空间中的位置处的按照6DoF的虚拟修改。当跟踪按照6DoF的虚拟修改时,在客户端设备102上查看修改的用户可以在任何方向上转动或移动,而不会中断对该修改的跟踪。例如,跟踪系统604可以基于NFT系统和陀螺仪跟踪系统的组合来跟踪虚拟修改的位置。

在操作806,中断检测部件606从由跟踪子系统(例如,第一跟踪子系统604A)跟踪的跟踪标记中检测跟踪标记的中断。例如,第一跟踪子系统604A可以包括NFT系统,该系统被配置为依赖跟踪标记,该跟踪标记包括环境的特征或接近环境(例如,地平面或地平线)内的虚拟修改的有源光源。第一跟踪子系统604A的NFT系统因此可以依赖于环境中三个或更多个已知特征的位置,来确定虚拟修改在3D空间中相对于客户端设备102的位置。如果由第一跟踪子系统604A跟踪的任何一个或多个跟踪标记变得受阻或不可用,则3D空间中对虚拟修改的跟踪将被中断。

在操作808,响应于中断检测部件606检测到一个或多个跟踪标记的中断,跟踪系统604转换到一个或多个其他跟踪子系统(例如,第二跟踪子系统604B和/或第三跟踪子系统604C),以保持在3D空间中相对于客户端设备102对虚拟对象的跟踪。这样做时,虚拟渲染系统210可以从6DoF转换到3DoF,其中3DoF测量俯仰、滚动和偏航,但不测量平移。随着跟踪标记再次变得可用,虚拟渲染系统210可由此从3DoF转换回6DoF。例如,当NFT系统变得不可用时,跟踪系统604可以在随后的3DoF体验中利用NFT系统收集和跟踪的最后的跟踪标记。

图9-13是示出根据示例实施例的虚拟渲染系统在执行用于将虚拟修改渲染到3D空间中的表面的方法900中的示例操作的流程图。方法900可以体现在计算机可读指令中,该计算机可读指令由一个或多个处理器执行,从而使得方法900的操作可以部分或全部由虚拟渲染系统210的功能部件执行;因此,方法900在下面通过示例的方式参考其进行描述。然而,应当理解,方法900的至少一些操作可以部署在各种其他硬件配置上,并且方法900不旨在限于虚拟渲染系统210。

在操作902,渲染部件602检测由计算设备(例如,客户端设备102)的相机产生的相机馈送中所描绘的3D空间中的参考表面。相机馈送包含图像序列,每个图像描绘3D空间。如前所述,参考表面可以是地面,但也可以使用任何其他固定的和可确定的表面。例如,渲染部件602可以通过基于对视觉相机内容的分析来识别固定表面来检测参考表面,并且还可以利用其他设备输入(例如,陀螺仪、加速度计、罗盘)来确定在相机馈送中描绘的3D空间内什么是合适的表面。

在一些实施例中,参考表面的检测可以基于在相机馈送的呈现上接收到的用户输入。该输入可以是手工用户输入的形式,其可以是例如按钮轻敲或者以指示表面被正在参考的方式握持或指向活动相机。在其他实施例中,这将在下面参考图10讨论,参考表面的检测可以响应于检测到与参考表面相关联的触发事件。

在操作904,渲染部件602动态地将图像掩模应用到相机馈送内描绘的3D空间内的参考表面。更具体地,渲染部件602在每个图像中描绘的参考表面的位置处将图像掩模应用于相机馈送的多个图像中的每一个,这可能由于相机相对于所述参考表面的方向或距离的改变而变化。通常,将图像掩模应用于每个图像包括基于图像中的像素是在参考表面的边界之内还是之外对它们进行分类。这种像素分类过程可以基于3D空间的确定几何形状、图像内确定的颜色区域或图像内确定的测光一致性区域。

在一些实施例中,图像掩模的应用可以包括将图像分割神经网络应用到相机馈送的多个图像。图像分割神精网络可以被训练为针对图像执行图像分割,以将每个图像分割成多个图像片段(例如,像素集)。更具体地,图像分割神经网络可以被训练为将第一标签分配给在参考表面边界内的像素并且将第二标签分配给在参考表面边界外的像素。将图像分割神经网络应用于相机馈送的图像产生具有两个图像片段的分割图像——第一图像片段,该第一图像片段包括分配给与参考表面对应的第一标签的第一组像素;以及第二图像片段,该第二图像片段包括分配给与图像中描绘的3D空间的剩余部分对应的第二标签的第二组像素。

在操作906,渲染部件602向与参考表面对应的图像掩模应用视觉效果。将视觉效果应用到图像掩模导致在计算设备的显示器上的相机馈送的呈现中将渲染经修改的表面。视觉效果可以是多种视觉效果中的任一种,包括例如改变表面的颜色、改变表面的纹理、向表面应用动画效果(例如流水)、模糊表面、渲染其移动受表面边界限制的移动的虚拟对象、用其他视觉内容替换表面以及它们的各种组合。在图14A和14B中示出并在下面描述视觉效果到参考表面的示例应用。

如图10所示,在一些实施例中,方法900还可以包括操作901和905。操作901可以在其中渲染部件602检测在相机馈送中捕获的3D空间中的参考表面的操作902之前执行。在操作901,事件检测部件610检测触发事件。例如,触发事件可以基于来自计算设备的位置部件的地理定位数据。作为示例,触发事件的检测可以包括检测计算设备何时在地理位置的预定义距离内。作为附加示例,触发事件可以基于时间因素,因此,检测触发事件可以包括检测特定日期或时间。作为又一示例,触发事件可以基于天气状况,因此,触发事件的检测可以包括检测特定天气状况(例如,雪、雨、风等)。

操作905可以在操作906之前执行,其中渲染部件602将视觉效果应用于图像掩模。在操作905,渲染部件602选择随后要应用于图像掩模的视觉效果。在一些实施例中,呈现部件602基于指定特定视觉效果的先前用户输入来选择视觉效果。

在一些实施例中,在操作901检测到的触发事件与特定的视觉效果相关联,因此,渲染部件602可以基于触发事件来选择图形事件。例如,特定视觉效果可以与特定地理位置相关联,并且当事件检测部件610检测到计算设备在该地理位置的预定义距离内时,渲染部件602选择与该地理位置相关联的视觉效果。

如图11所述,在一些实施例中,方法900还可以包括操作1102、1104和1106。操作1102、1104和1106中的一个或多个可以作为其中渲染部件602将图像掩模应用于参考表面的操作904的一部分(例如,前驱任务、子例程或一部分)来执行。下面参考来自相机馈送的单个图像来描述操作1102、1104和1106,但是应当理解,可以对相机馈送的每个图像重复操作1102、1104和1106以实现图像掩模到参考表面的动态应用,如整个相机馈送中所描绘的那样。

在操作1102,渲染部件602确定在相机馈送的图像中描绘的3D空间内的参考表面的边界。在确定参考表面的边界时,渲染部件602可以例如采用许多已知的边缘检测技术中的一种。根据一些实施例,下面参照图12和13讨论关于确定参考表面的边界的进一步细节。

在操作1104,渲染部件602根据第一类对图像中在参考表面的边界内的像素进行分类。在操作1106,渲染部件602根据第二类对图像中参考表面边界之外的像素进行分类。根据第一类分类的像素形成用于参考表面的图像掩模。

应当理解,尽管图11将确定参考表面的边界的操作(操作1102)示为与操作1104和1106分开且不同的,但在一些实施例中,参考表面的边界的确定可以被组合并作为操作1104和1106的一部分来执行。

如图12所述,在一些实施例中,方法900还可包括操作1202、1204、1206、1208、1210和1212。在一些实施例中,操作1202、1204、1206、1208、1210和1212可以作为其中渲染部件602将图像掩模应用于参考表明的操作1004的一部分(例如,前驱任务、子例程或一部分)来执行。在一些实施例中,操作1202、1204、1206、1208、1210和1212可以作为其中渲染部件602确定参考表面的边界的操作1202的一部分(例如,前驱任务、子例程或一部分)来执行。

在操作1202,渲染部件602从相机馈送的多个图像中获得点集。获得该点集可以包括对从相机馈送中随机选择的一组像素进行采样。

在操作1204,渲染部件602将点集的第一子集与图像中描绘的3D空间中的第一平面相关联。在操作1206-1208,渲染部件602分别将点集的第2至N个子集与图像中描绘的3D空间中的第2至N个平面相关联。渲染部件602可以基于所确定的3D空间的几何形状、来自计算设备的一个或多个传感器(例如,陀螺仪和加速度计)的传感器数据、来自一个或多个位置部件(例如,指南针和全球定位系统(GPS))的位置数据或两者的各种组合,来将每个子点集与3D空间中的对应平面相关联。例如,将点集与对应平面相关联可以包括:部分地基于传感器数据(例如,陀螺仪和加速度计)确定相机相对于该平面的位置和取向,并部分地基于位置数据将图像中的像素位置映射到3D空间中的位置。

在操作1210,渲染部件602确定第一平面对应于检测到的参考表面。在操作1212,渲染部件602识别第一平面的边界并且这样做时,渲染部件602确定参考表面的边界。

如图13,在一些实施例中,方法1000还可以包括操作1302、1304和1306。在一些实施例中,操作1302、1304和1306可以作为其中渲染部件602将图像掩模应用于参考表面的操作1004的一部分(例如,前驱任务、子例程或一部分)来执行。在一些实施例中,操作1302、1304和1306可以具体地作为其中渲染部件602确定参考表面的边界的操作1202的一部分(例如,前驱任务、子例程或一部分)来执行。在下面参考来自相机馈送的单个图像来描述操作1302、1304和1306,但是应当理解,操作1302、1304和1306可以对相机馈送的每个图像重复,以实现将图像掩模动态应用到参考表面,如整个相机馈送中所描绘的那样。

在操作1302,渲染部件602识别相机馈送的图像中的相似颜色的区域。相似颜色区域的识别可以包括基于像素颜色值关联图像中的像素分组。更具体地,渲染部件602可以基于分组内具有不超过阈值标准偏差的像素颜色值的像素来关联像素分组。

在操作1304,渲染部件602确定哪个相似颜色的区域对应于检测到的参考表面。在操作1306,渲染部件602识别与参考表面对应的相似颜色区域的边界,从而确定参考表面的边界。

图14A和14B是图示根据示例实施例的由虚拟渲染系统210提供的界面的各方面的界面图。参考图14A,示出了相机馈送1400。相机馈送1400可以显示在计算设备(例如,客户端设备102)的显示器上,并且尽管图14A仅图示了单个图像,但相机馈送1400可以包括由计算设备的相机产生的图像序列(例如,视频)。尽管图14A示出了单独显示的相机馈送1400,相机馈送1400可以被呈现在用户界面元素内或作为其一部分呈现,该用户界面元素被显示在其他用户界面元素当中,这些用户界面元素有助于允许用户以各种方式与相机馈送1400交互的功能。

在相机馈送1400中描绘了3D真实世界环境。特别地,在相机馈送中描绘的3D现实世界环境包括人行道表面1402。虚拟渲染系统210可以分析相机馈送1400,从而利用诸如陀螺仪、加速度计和罗盘之类的其他设备输入来识别人行道表面1402,并且根据上述任一方法动态地将图像掩模应用到人行道表面1402。虚拟渲染系统210可以通过将视觉效果应用到对应于人行道表面1402的图像掩模来修改如在相机馈送1400中呈现的人行道表面1402。将视觉效果应用到图像掩模导致在相机馈送1400的呈现中将渲染经修改的表面。

例如图14B图示了在相机馈送1400内渲染的经修改的表面1404。经修改的表面1404对应于具有所应用的视觉效果的人行道表面1402。特别地,经修改的表面1402包括使人行道表面1402在相机馈送1400中看起来是流动的水而不是人行道的动画。

图15是示出示例软件架构1506的框图,其可以与这里描述的各种硬件架构结合使用。图15是软件架构的非限制性示例,并且应当理解,可以实现许多其他架构以促进这里描述的功能。软件架构1506可以在诸如图16的机器1600之类的硬件上执行,例如,图16的机器1600包括处理器1604、存储器1614和输入/输出(I/O)部件1618。代表性的硬件层1552被示出并且可以表示例如图16的机器1600。代表性硬件层1552包括处理单元1554,其具有相关联的可执行指令1504。可执行指令1504表示软件架构1506的可执行指令,包括本文所述的方法、部件等的实现。硬件层1552还包括存储器和/或存储设备1556,其也具有可执行指令1504。硬件层1552还可以包括其他硬件1558。

在图15的示例架构中,软件架构1506可以被概念化为层的堆栈,其中每一层提供特定的功能。例如,软件架构1506可以包括诸如操作系统1502、库1520、应用程序1516、框架/中间件1518和表示层1514的层。在操作上,层内的应用程序1516和/或其他部件可以通过软件堆栈调用API调用1508并且接收响应1512作为对API调用1508的响应。所示的层本质上具有代表性,并非所有软件架构都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件1518,而其他操作系统可能提供这样的层。其他软件架构可能包括额外的或不同的层。

操作系统1502可以管理硬件资源并提供公共服务。操作系统1502可以包括例如内核1522、服务1524和驱动程序1526。内核1522可以充当硬件和其他软件层之间的抽象层。例如,内核1522可以负责存储器管理、处理器管理(例如调度)、部件管理、联网、安全设置等。服务1524可以为其他软件层提供其他公共服务。驱动器1526负责控制底层硬件或与底层硬件接口。例如,取决于硬件配置,驱动程序1526包括显示器驱动程序、相机驱动程序、

库1520提供由应用程序1516和/或其他部件和/或层使用的公共基础设施。库1520提供的功能允许其他软件部件以比直接与底层操作系统1502功能(例如,内核1522、服务1524和/或驱动程序1526)接口更容易的方式执行任务。库1520可以包括系统库1544(例如,C标准库),其可以提供诸如存储器分配函数、字符串操作函数、数学函数等的函数。此外,库1520可以包括API库1546,例如媒体库(例如,支持各种媒体格式,例如MPREG4、H.264、MP3、AAC、AMR、JPG、PNG,的呈现和操纵的库)、图形库(例如,可用于在显示器上的图形内容中呈现二维和3D的OpenGL框架)、数据库库(例如,可提供各种关系数据库功能的SQLite)、网络库(例如,可提供Web浏览功能)等。库1520还可以包括多种其他库1548以向应用1516和其他软件部件/模块提供许多其他API。

框架/中间件1518(有时也称为中间件)提供可由应用程序1516和/或其他软件部件/模块使用的更高级别的公共基础设施。例如,框架/中间件1518可以提供各种图形用户界面(GUI)功能、高级资源管理、高级定位服务等。框架/中间件1518可以提供可由应用程序1516和/或其他软件部件/模块使用的广泛范围的其他API,其中一些可以专用于特定操作系统1502或平台。

应用程序1516包括内置应用程序1538和/或第三方应用程序1540。代表性内置应用程序1538的示例可以包括但不限于联系人应用程序、浏览器应用程序、书籍阅读器应用程序、位置应用程序、媒体应用程序、消息传递应用程序和/或游戏应用程序。第三方应用程序1540可以包括由特定平台的供应商以外的实体使用ANDROID

应用程序1516可以使用内置操作系统功能(例如,内核1522、服务1524和/或驱动程序1526)、库1520和框架/中间件1518来创建用户接口以与系统用户交互。替代地或附加地,在一些系统中,与用户的交互可以通过表示层,例如表示层1514。在这些系统中,应用程序/部件“逻辑”可以与与用户交互的应用程序/部件的各个方面分开。

图16是示出根据一些示例实施例的能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文中讨论的任何一种或多种方法的机器1600的部件的框图。具体而言,图16示出了计算机系统的示例形式的机器1600的图解表示,其中指令1610(例如,软件、程序、应用程序、小应用程序、app或其他可执行代码)用于使机器1600可以执行本文讨论的任何一种或多种方法。因此,指令1610可用于实现本文描述的模块或部件。指令1610将通用的非编程机器1600转换成特定机器1600,所述特定机器1600被编程为以所描述的方式执行所描述和图示的功能。在替代实施例中,机器1600作为独立设备操作或者可以耦合(例如,联网)到其他机器。在联网部署中,机器1600可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力运行,或者在对等(或分布式)网络环境中作为对等机器运行。机器1600可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字计算机助理(PDA)、娱乐媒体系统、蜂窝电话、智能手机、移动设备、可穿戴设备(例如智能手表)、智能家居设备(例如智能电器)、其他智能设备、网络设备、网络路由器、网络交换机、网桥或任何能够顺序或以其他方式执行指令1610的机器,指令1610指定机器1600要采取的动作。此外,虽然仅示出了单个机器1600,但术语“机器”也应被视为包括单独或联合执行指令1610以执行本文讨论的任何一种或多种方法的机器的集合。

机器1600可以包括处理器1604、存储器/存储设备1606和I/O部件1618,它们可以被配置为例如经由总线1602彼此通信。在示例实施例中,处理器1604(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可以包括例如可以执行指令1610的处理器1608和处理器1612。术语“处理器”旨在包括多核处理器1604,其可包括可同时执行指令的两个或更多个独立处理器(有时称为“核”)。尽管图16示出了多个处理器,但机器1600可以包括具有单核的单处理器、具有多核的单处理器(例如,多核处理器)、具有单核的多个处理器、具有多核的多个处理器或他们的任何组合。

存储器/存储设备1606可以包括诸如主存储器或其他存储器的存储器1614和存储单元1616,两者都可由处理器1604诸如经由总线1602访问。存储单元1616和存储器1614存储体现本文描述的方法或功能中的任何一种或多种的指令1610。指令1610在其由机器1600执行期间还可以完全或部分地驻留在存储器1614内、存储单元1616内、处理器1604中的至少一个内(例如,在处理器的高速缓存内)或其任何合适的组合。因此,存储器1614、存储单元1616和处理器的存储器1604是机器可读介质的示例。

I/O部件1618可包括多种部件以接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量等等。包含在特定机器1600中的特定I/O部件1618将取决于机器的类型。例如,诸如移动电话之类的便携式机器将可能包括触摸输入设备或其他此类输入机制,而无头服务器机器可能不包括这样的触摸输入设备。应当理解,I/O部件1618可以包括图16中未示出的许多其他部件。为了简化以下讨论,根据功能来对I/O部件1618分组,并且该分组决不是限制性的。在各种示例实施例中,I/O部件1618可以包括输出部件1626和输入部件1628。输出部件1626可以包括视觉部件(例如,诸如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)之类的显示器)、声学部件(例如扬声器)、触觉部件(例如振动电机、阻力机制)、其他信号发生器等。输入部件1628可以包括字母数字输入部件(例如,键盘、被配置为接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供位置和/或触摸力或触摸手势的触摸屏,或其他触觉输入部件)、音频输入部件(例如,麦克风)等。

在进一步的示例实施例中,I/O部件1618可包括生物识别部件1630、运动部件1634、环境部件1636或在广泛的其他部件中的定位部件1638。例如,生物识别部件1630可包括部件检测表情(例如,手部表情、面部表情、声音表情、身体姿势或眼动追踪)、测量生物信号(例如血压、心率、体温、汗水或脑电波),识别个人(例如,语音识别、视网模识别、面部识别、指纹识别或基于脑电图的识别)等。运动部件1634可以包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)、等等。环境部件1636可以包括例如照明传感器部件(例如,光度计)、温度传感部件(例如,一个或多个检测环境温度的温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,检测背景噪声的一个或多个麦克风)、接近传感器部件(例如,检测附近物体的红外传感器)、气体传感器(例如,气体检测传感器,用于检测危险气体的浓度以确保安全或测量大气中的污染物),或可提供与周围物理环境相对应的指示、测量或信号的其他部件。位置部件1638可以包括定位传感器部件(例如,GPS接收器部件)、海拔传感器部件(例如,检测可以推导出海拔的气压的高度计或气压计)、朝向传感器部件(例如,磁力计)、等等。

可以使用多种技术来实现通信。I/O部件1618可以包括通信部件1640,其可操作以分别通过耦合1624和耦合1622将机器1600耦合到网络1632或设备1620。例如,通信部件1640可以包括网络接口部件或与网络1632接口的其他合适的设备。在进一步的示例中,通信部件1640可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC)部件、

此外,通信部件1640可检测标识符或包括可操作以检测标识符的部件。例如,通信部件1640可包括射频识别(RFID)标签读取器部件、NFC智能标签检测部件、光学读取器部件(例如,光学传感器检测例如通用产品代码(UPC)条码的一维条码,例如快速响应(QR)码、Aztec码、数据矩阵、Dataglyph、MaxiCode、PDF417、Ultra Code、UCC RSS-2D条形码的多维条码,和其他光学代码)或声学检测部件(例如,用于识别所标记音频信号的麦克风)。此外,可以通过通信部件1640导出各种信息,例如通过互联网协议(IP)地理定位的定位、通过

术语

在此上下文中的“载波信号”指的是能够存储、编码或携带指令以供机器执行的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进此类指令的通信。可以使用传输介质经由网络接口设备并使用多种众所周知的传输协议中的任何一种在网络上传输或接收指令。

在此上下文中的“客户端设备”是指与通信网络接口以从一个或多个服务器系统或其他客户端设备获取资源的任何机器。客户端设备可以是但不限于移动电话、台式电脑、笔记本电脑、PDA、智能手机、平板电脑、超级本、上网本、笔记本电脑、多处理器系统、基于微处理器或可编程的消费电子产品、游戏机、机顶盒或用户可用于访问网络的其他通信设备。

在此上下文中的“通信网络”是指网络的一个或多个部分,可以是自组织网络、内联网、外联网、虚拟专用网(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线广域网(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网(PSTN)的一部分、电话服务(POTS)网络、蜂窝电话网络、无线网络、

在此上下文中的“短暂消息”指的是可以在限时时间内访问的消息。短暂消息可以是文本、图像、视频等。短暂消息的访问时间可以由消息发送者设置。或者,访问时间可以是默认设置或接收者指定的设置。无论设置技术如何,消息都是暂时的。

在此上下文中的“机器可读介质”是指能够临时或永久地存储指令和数据的部件、设备或其他有形介质,并且可以包括但不限于随机存取存储器(RAM),只读存储器(ROM),缓冲存储器,闪存,光学介质,磁介质,高速缓冲存储器,其他类型的存储(例如,可擦除可编程只读存储器(EPROM)),和/或其任何合适的组合。术语“机器可读介质”应被视为包括能够存储指令的单个介质或多个介质(例如,集中式或分布式数据库,或相关联的高速缓存和服务器)。术语“机器可读介质”还应被视为包括能够存储用于由机器执行的指令(例如,代码)的任何介质或多个介质的组合,使得指令在由机器的一个或多个处理器执行时使机器执行本文所述的方法中的任何一种或多种。因此,“机器可读介质”指的是单个存储装置或设备,以及包括多个存储装置或设备的“基于云的”存储系统或存储网络。术语“机器可读介质”不包括信号本身。

在此上下文中的“部件”在本文中是指设备、物理实体或具有由功能或子例程调用、分支点、API或其他技术定义的边界的逻辑,该其他技术提供特定处理或控制功能的分区或模块化。部件可以通过它们的接口与其他部件组合以执行机器过程。部件可以是被设计用于与其他部件一起使用的封装功能硬件单元,以及通常执行相关功能的特定功能的程序的一部分。部件可以构成软件部件(例如,包含在机器可读介质上的代码)或硬件部件。“硬件部件”是能够执行特定操作的有形单元,并且可以以特定的物理方式来配置或布置。在各种示例实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件部件(例如,处理器或一组处理器)可以通过软件(例如,应用程序或应用程序部分)被配置为操作以执行如本文所述的某些操作的硬件部件。硬件部件也可以机械地、电子地或其任何合适的组合来实现。例如,硬件部件可以包括被永久配置为执行特定操作的专用电路或逻辑。硬件部件可以是专用处理器,例如现场可编程门阵列(FPGA)或ASIC。硬件部件还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦由这样的软件配置,硬件部件就变成了特定的机器(或机器的特定部件),其被独特地定制以执行所配置的功能,并且不再是通用处理器。应当理解,可以通过成本和时间考虑来驱动在专用和永久配置的电路中、或者在临时配置的电路中(例如,由软件配置)中机械地实现硬件部件。因此,短语“硬件部件”(或“硬件实现的部件”)应被理解为包含有形实体,即被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程),从而以某种方式操作或执行本文所述的某些操作的实体。考虑到硬件部件被临时配置(例如,编程)的实施例,每个硬件部件不需要在任何一个时刻都被配置或实例化。例如,在硬件部件包括由软件配置成专用处理器的通用处理器的情况下,通用处理器可以在不同时间被配置成分别不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置特定的一个或多个处理器,例如,以在一个时刻构成特定的硬件部件,并在不同的时刻构成不同的硬件部件。硬件部件可以向其他硬件部件提供信息,也可以从其他硬件部件接收信息。因此,所描述的硬件部件可以被认为是通信耦合的。在同时存在多个硬件部件的情况下,通信硬件部件中的两个或更多个之间的信号传输(例如,通过适当的电路和总线)可实现通信。在其中在不同时间被配置或实例化多个硬件部件在的实施例中,例如,通过存储和检索多个硬件部件可以访问的存储器结构中的信息,可以实现这些硬件部件之间通信。例如,一个硬件部件可以执行操作,并将该操作的输出存储在其通信耦合的存储设备中。然后,另一个硬件部件可以在稍后的时间访问该存储设备,以检索和处理所存储的输出。硬件部件也可以启动与输入或输出设备的通信,并且可以对资源(例如,信息集合)进行操作。这里描述的示例方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或永久配置为执行相关操作的一个或多个处理器来执行。无论是临时配置还是永久配置,这样的处理器可以构成处理器实现的部件,其操作来执行这里描述的一个或多个操作或功能。如本文所使用的,“处理器实现的部件”是指使用一个或多个处理器实现的硬件部件。类似地,这里描述的方法可以至少部分地由处理器实现,其中特定的一个或多个处理器是硬件的例子。例如,方法的至少一些操作可以由一个或多个处理器或处理器实现的部件来执行。此外,一个或多个处理器还可以运行以支持在“云计算”环境中或作为“软件即服务”(SaaS)的相关操作的性能。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的例子)执行,这些操作可以经由网络(例如,因特网)和经由一个或多个适当的接口(例如,API)来访问。某些操作的性能可以在处理器之间分配,不仅驻留在单个机器中,而且部署在多个机器上。在一些示例实施例中,处理器或处理器实现的部件可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施例中,处理器或处理器实现的部件可以跨多个地理位置分布。

在此上下文中的“处理器”是指任何电路或虚拟电路(由在实际处理器上执行的逻辑模拟的物理电路),其根据控制信号(例如,“命令”、“操作码”、“机器代码”等)操作数据值并产生被应用于操作机器的对应的输出信号。例如,处理器可以是中央处理单元(CPU)、RISC处理器、CISC处理器、GPU、DSP、ASIC、RFIC)或其任何组合。处理器还可以是具有可同时执行指令的两个或更多个独立处理器(有时称为“核”)的多核处理器。

在此上下文中的“时间戳”是指识别特定事件何时发生的字符序列或编码信息,例如给出日期和时间,有时精确到一秒钟的一小部分。

相关技术
  • 虚拟表面修改
  • 一种基于敏捷存储的文件存储、访问、修改、虚拟共享及虚拟删除的方法
技术分类

06120113279906