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

遮挡检测系统的制作方法

2022-04-15 10:37:53 来源:中国专利 TAG:
遮挡检测系统的制作方法

本申请要求于2019年9月10日提交的美国专利申请第16/566,474号的优先权,该美国专利申请通过引用整体并入本文。

技术领域

本公开内容的实施方式总体上涉及纹理映射,并且更具体地,涉及用于增强现实(AR)系统中的遮挡检测的系统。

背景技术

增强现实(AR)是对虚拟环境的修改。例如,在虚拟现实(VR)中,用户完全沉浸在虚拟世界中,而在AR中,用户沉浸在将虚拟对象与真实世界组合或将虚拟对象叠加在真实世界上的世界中。大多数AR系统的目标通常是生成并呈现与真实世界环境真实地交互的虚拟对象。

当一个对象的视野被另一对象挡住时,可能出现遮挡。在AR中,通常将虚拟对象叠加在通过摄像装置捕获的真实环境的呈现上。在这样的情况下,当现有的AR系统试图将虚拟对象放置在真实对象“后面”时,当从某些视角观看时,这些虚拟对象可能仅看起来被放置在真实对象的前面。作为结果,这些现有的AR系统不能提供真正的沉浸式AR体验。

附图说明

为了容易地标识对任何特定元件或动作的讨论,附图标记中的一个或多个最高位数字指代该元件被首次引入时所在的图号。

图1是示出根据一些实施方式的用于通过网络来交换数据(例如,消息和相关联的内容)的示例消息传送系统的框图,其中,该消息传送系统包括遮挡检测系统。

图2是示出根据示例实施方式的关于消息传送系统的另外的细节的框图。

图3是示出根据某些示例实施方式的遮挡检测系统的各种模块的框图。

图4是示出根据某些示例实施方式的用于检测遮挡的方法的流程图。

图5是示出根据某些示例实施方式的用于检测遮挡的方法的流程图。

图6是示出根据某些示例实施方式的用于检测遮挡的方法的流程图。

图7是示出根据某些示例实施方式的用于检测遮挡的方法的流程图。

图8是描绘根据某些示例实施方式的用于检测遮挡的方法的示意图。

图9是示出可以与本文中所描述的各种硬件架构结合使用并且可以用于实现各种实施方式的代表性软件架构的框图。

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

具体实施方式

如以上所讨论的,增强现实是对虚拟环境的修改,其中,虚拟对象被呈现在真实世界环境的呈现中。现有AR系统的问题在于对AR体验中呈现的虚拟对象的遮挡的处理。当一个对象(即,虚拟对象)的视野被另一对象(即,真实世界对象)挡住时,可能出现遮挡。

例如,AR系统可以通过将虚拟对象在多个位置处与环境的呈现叠加来在环境的呈现内呈现虚拟对象,其中,真实环境由客户端设备的摄像装置捕获。在这种情况下,当现有AR系统试图将虚拟对象放置在真实对象“后面”时,当从一些视角观看时,虚拟对象可能仅看起来被放置在真实世界对象的前面。作为结果,这些现有的AR系统不能提供真正的沉浸式AR体验。

因此,本文中描述的示例实施方式涉及遮挡检测系统,该遮挡检测系统执行操作,所述操作包括:捕获描绘客户端设备处的环境的图像数据,环境包括在环境内的位置处的目标对象;使得在客户端设备处显示环境的呈现,环境的呈现包括在环境内的位置处目标对象的显示;检测在客户端设备处目标对象的显示的第一属性;执行对目标对象的显示的第一属性和与目标对象相关联的第二属性的比较;以及基于所述比较来检测遮挡。

根据某些示例实施方式,可以基于在第一客户端设备处目标对象的显示的图像特征与在第二客户端设备处目标对象的显示的图像特征的比较来检测遮挡。例如,在一些实施方式中,遮挡检测系统可以检测在客户端设备附近的第二客户端设备处目标对象的第二显示。遮挡检测系统从第二客户端设备中提取目标对象的显示的属性,并将这些属性与来自在第一客户端设备处目标对象的显示的属性进行比较。

在一些实施方式中,遮挡检测系统可以基于包括目标对象的一个或更多个图像特征的因素以及来自客户端设备的位置数据来识别目标对象。例如,遮挡检测系统可以对储存库进行维护,其基于位置数据和图像特征来识别目标对象。响应于在环境的呈现内检测到目标对象的显示,遮挡检测系统可以访问储存库以基于来自客户端设备的位置数据以及目标对象的显示的图像特征来识别目标对象。

在检测到环境的呈现内的遮挡后,遮挡检测系统可以检测该遮挡的一个或更多个特征,以便基于该遮挡的所述一个或更多个特征生成AR内容并且使得在环境的呈现内显示该AR内容。例如,所述一个或更多个特征可以包括遮挡的语义特征以及遮挡的大小和形状。因此,可以基于遮挡的特征来修改AR内容,以在客户端设备处的环境的呈现内产生AR内容的更逼真的显示。

在一些实施方式中,遮挡检测系统可以基于客户端设备的视角来编译对象的特征的储存库。例如,储存库可以包括表格格式文件,所述表格格式文件包括一组行和列,其中,每一行对应于对象的属性类型(即,对象标识符、对象位置、对象特征等),并且列包括与属性类型中的每一个相对应的值。根据某些示例实施方式,响应于在客户端设备处的环境的呈现内检测到对象,遮挡检测系统可以识别客户端设备的位置、客户端设备相对于对象的视角以及在所述环境的呈现内对象的显示的一个或更多个属性,并且基于检测到的特征和属性来填充表格数据文件。通过这样做,遮挡检测系统可以从给定视角针对特定对象生成一组“预期”特征和值。因此,响应于在客户端设备处的环境的呈现内检测到对象(即,基于图像识别或基于位置数据),遮挡检测系统可以参考储存库来确定对象的预期特征。

在一些实施方式中,遮挡检测系统可以通过执行语义分割来检测在环境的呈现内检测到的对象的语义特征。语义分割描述了用于预测图像的每个像素的类别标签的计算机视觉技术。因此,遮挡检测系统可以识别与对象对应的一组像素,并且然后对图像(环境的呈现)执行语义分割,以便确定与对应于对象的像素相关联的一个或更多个语义特征。语义特征可以例如包括:与物理对象、位置或表面相对应的上下文特征;引用一些其他已知范畴或类的类比特征;定义表面或对象的视觉或图形属性的视觉特征;以及限定表面或对象的属性的材料参数,并且所述材料参数可以包括“粗糙度值”、“金属值”、“镜面值”和“基色值”。

图1是示出用于通过网络来交换数据(例如,消息和相关联的内容)的示例消息传送系统100的框图。消息传送系统100包括多个客户端设备102,每个客户端设备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发送数据、从消息传送客户端应用104接收数据以及对由消息传送客户端应用104生成的数据进行处理。在一些实施方式中,作为示例,该数据包括:消息内容、客户端设备信息、地理位置信息、媒体注释和叠加、消息内容持久性条件、社交网络信息以及实况事件信息。在其他实施方式中,使用其他数据。通过经由消息传送客户端应用104的图形用户界面(GUI)可用的功能来调用和控制消息传送系统100内的数据交换。

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

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

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

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

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

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

图2是示出根据示例实施方式的关于消息传送系统100的另外的细节的框图。具体地,消息传送系统100被示出为包括消息传送客户端应用104和应用服务器112,它们又包含一些子系统,即短暂定时器系统202、集合管理系统204和注释系统206。

短暂定时器系统202负责实施对由消息传送客户端应用104和消息传送服务器应用114许可的内容的临时访问。为此,短暂定时器系统202包含多个定时器,这些定时器基于与消息、消息集合或图形元素相关联的持续时间和显示参数,经由消息传送客户端应用104选择性地显示并使能访问消息和相关联的内容。下面提供关于短暂定时器系统202的操作的其他细节。

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

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

注释系统206提供使得用户能够对媒体内容作注解或以其他方式修改或编辑媒体内容的各种功能,例如将用户接收的用户支持内容转发或重新分配给一个或更多个接收者。例如,注释系统206提供与生成和发布由消息传送系统100处理的消息的媒体叠加(media overlay)相关的功能。注释系统206可操作地基于客户端设备102的地理位置向消息传送客户端应用104供应媒体叠加。在另一示例中,注释系统206基于诸如客户端设备102的用户的社交网络信息的其他信息可操作地向消息传送客户端应用104供应媒体叠加。媒体叠加可以包括音频及视觉内容和视觉效果以及增强现实叠加。音频及视觉内容的示例包括:图片、文本、标志、动画和音效,以及动画面部模型、图像过滤器和增强现实媒体内容。视觉效果的示例包括颜色叠加。音频及视觉内容或视觉效果可以应用于客户端设备102处的媒体内容项(例如,照片或视频或实况流)。例如,媒体叠加包括可以被叠加在由客户端设备102拍摄所生成的照片顶部的文本。在另一示例中,媒体叠加包括位置标识叠加(例如,威尼斯海滩)、实况事件的名称或商家名称叠加(例如,海滩咖啡馆)。在另一示例中,注释系统206使用客户端设备102的地理位置来标识包括客户端设备102的地理位置处的商家的名称的媒体叠加。媒体叠加可以包括与商家相关联的其他标记。媒体叠加可以被存储在数据库120中并通过数据库服务器118访问。

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

在另一示例实施方式中,注释系统206提供基于商家的发布平台,该基于商家的发布平台使得商家能够选择与地理位置相关联的特定媒体叠加。例如,注释系统206将最高出价商家的媒体叠加与相应地理位置相关联达预定义时间量。

图3是示出遮挡检测系统124的部件的框图300,所述部件通过执行包括以下操作的操作将遮挡检测系统124配置成检测环境的呈现内的遮挡:捕获描绘客户端设备处的环境的图像数据,环境包括在环境内的位置处的目标对象;使得在客户端设备处显示环境的呈现,环境的呈现包括在环境内的所述处的目标对象的显示;检测在客户端设备处目标对象的显示的第一属性;执行对目标对象的显示的第一属性和与目标对象相关联的第二属性的比较;以及根据某些示例实施方式,基于所述比较来检测遮挡。

遮挡检测系统124被示出为包括图像模块302、识别模块304、AR模块306和呈现模块308,所有这些模块被配置成(例如,经由总线、共享存储器或交换机)彼此通信。这些模块中的任何一个或更多个模块可以使用一个或更多个处理器310(例如,通过对这样的一个或更多个处理器进行配置以执行针对该模块所描述的功能)来实现,并且因此可以包括一个或更多个处理器310。

所描述的模块中的任何一个或更多个模块可以单独使用硬件(例如,机器的一个或更多个处理器310)或者硬件和软件的组合来实现。例如,所描述的遮挡检测系统124的任何模块可以在物理上包括被配置成执行本文针对该模块所描述的操作的一个或更多个处理器310(例如,机器的一个或更多个处理器的子组或者机器的一个或更多个处理器)的布置。作为另一示例,遮挡检测系统124的任何模块可以包括软件、硬件或者软件和硬件,其对(例如,机器的一个或更多个处理器中的)一个或更多个处理器310的布置进行配置以执行本文针对该模块所描述的操作。因此,遮挡检测系统124的不同模块可以包括这样的处理器310的不同布置或这样的处理器310在不同时间点的单个布置并对其进行配置。此外,遮挡检测系统124的任何两个或更多个模块可以被组合成单个模块,并且本文针对单个模块描述的功能可以在多个模块之间细分。此外,根据各种示例实施方式,本文中描述为在单个机器、数据库或设备内实现的模块可以分布在多个机器、数据库或设备上。

图4是示出根据某些示例实施方式的用于检测遮挡的方法400的流程图。方法400的操作可以由以上关于图3所描述的模块来执行。如图4所示,方法400包括一个或更多个操作402、404、406、408和410。

在操作402处,图像模块302捕获要在客户端设备102处的GUI内呈现的图像数据。例如,图像数据可以对环境进行描绘,环境包括在环境内的位置处的目标对象。作为说明性示例,目标对象可以包括地标,例如建筑物或结构。

在操作404处,呈现模块308基于由图像模块302收集的图像数据来生成环境的呈现并且使得在客户端设备102处显示环境的呈现。因此,可以在客户端设备102的GUI内实时呈现环境的呈现。

在操作406处,识别模块304识别环境的呈现内的目标对象并检测目标对象的一个或更多个属性(即,第一属性)。例如,目标对象的所述一个或更多个属性可以包括像素颜色值以及目标对象的显示的语义特征。

在操作408处,识别模块304执行对目标对象的显示的第一属性和与目标对象相关联的第二属性的比较。例如,在一些实施方式中,识别模块304可以基于客户端设备102的位置或者基于目标对象的显示的特征来参考储存库(即,数据库120)以检索与目标对象相关联的一个或更多个属性。

在操作410处,基于目标对象的显示的第一特征和与目标对象相关联的第二特征的比较,识别模块304检测遮挡。例如,通过将在目标对象的显示中检测到的特征与在储存库处访问的特征(即,预期特征)进行比较,遮挡检测系统124可以确定遮挡是否阻挡从客户端设备的视角观看目标对象。

图5是示出根据某些示例实施方式的用于检测遮挡的方法500的流程图。方法500的操作可以由以上关于图3所描述的模块来执行。如图5所示,方法500包括一个或更多个操作502、504和506,这些操作可以作为图4中所描绘的方法400的操作406和408的一部分(例如,子例程)来执行。

在一些实施方式中,可以通过地理栅栏包围一个或更多个对象,其中,地理栅栏可以检测位于地理栅栏的边界内的一个或更多个设备。响应于在第一客户端设备102处的环境的呈现内检测到目标对象的显示,在操作502处,图像模块302可以识别正在使得显示环境的呈现的一个或更多个第二客户端设备102,环境的呈现包括目标对象的第二显示。

在一些实施方式中,图像模块302可以基于第二客户端设备102的位置数据来识别一个或更多个第二客户端设备102。例如,图像模块302可以识别在距目标对象阈值距离内的所有设备。

在一些实施方式中,图像模块302可以基于在第二客户端设备处的显示器内显示的图像数据来识别所述一个或更多个第二客户端设备102。例如,图像模块302可以对第二客户端设备102处的环境的呈现执行一种或更多种图像识别技术,以便确定第二客户端设备102是否正在使得显示环境的呈现,环境的呈现包括目标对象的显示。

在操作504处,响应于在第二客户端设备102处的环境的呈现内检测到目标对象的第二显示,识别模块304检测目标对象的第二显示的一个或更多个属性。例如,所述一个或更多个属性(即,第二属性)可以包括目标对象的第二显示的像素值以及目标对象的第二显示的语义特征。

在操作506处,识别模块304执行对来自第一客户端设备102处的环境的呈现的目标对象的第一显示的第一属性与来自第二客户端设备102处的环境的呈现的目标对象的第二显示的第二属性的比较。基于该比较,识别模块304可以确定在目标对象与第一客户端设备之间是否存在遮挡。

图6是示出根据某些示例实施方式的用于检测遮挡的方法600的流程图。方法600的操作可以由以上关于图3所描述的模块来执行。如图6所示,方法600包括一个或更多个操作602、604和606,这些操作可以作为图4中所描绘的方法400的一部分(例如,子例程)来执行。例如,方法600可以作为图4中所描绘的方法400的操作406和408的一部分(例如,子例程)来执行。

在操作602处,识别模块308识别在客户端设备102处的环境的呈现内的目标对象。在一些实施方式中,识别模块304可以基于环境的呈现内的目标对象的显示来识别目标对象。在一些实施方式中,识别模块308可以基于来自客户端设备102的位置数据来识别目标对象,其中,位置数据可以指示客户端设备102的地理位置以及客户端设备102的视角和方位。

响应于识别到目标对象,在操作604处,识别可以至少基于所识别的目标对象来访问储存库。在一些实施方式中,储存库(即,数据库120)可以包括多个数据记录,所述数据记录与目标对象相对应并基于客户端设备的位置和视角来指示目标对象的特征。

因此,在操作606处,识别模块304可以访问储存库以检索与目标对象相关联的第二属性,以将其与在客户端设备102处的环境的呈现内目标对象的显示的第一属性进行比较。

图7是示出根据某些示例实施方式的用于检测遮挡的方法700的流程图。方法700的操作可以由以上关于图3所描述的模块来执行。如图7所示,方法700包括一个或更多个操作702、704和706,这些操作可以作为图4中所描绘的方法400的一部分(例如,子例程)来执行。例如,方法700可以作为图4中所描绘的方法400的操作406和408的一部分(例如,子例程)来执行。

根据某些示例实施方式,响应于如方法400的操作404中那样使得在客户端设备102处显示环境的呈现,环境的呈现包括目标对象的显示,在操作702处,识别模块304确定客户端设备102的位置。

在操作704处,至少基于客户端设备102的位置,识别模块304可以访问包括与目标对象相关联的多个数据记录的储存库(即,数据库120)。例如,储存库可以基于与目标对象相关联的位置列出目标对象,使得对位置的参考可以与目标对象相对应。

在操作706处,识别模块304至少基于客户端设备102的位置来识别目标对象,其中,所述位置可以包括地理位置以及客户端设备102相对于目标对象的方位和视角。在一些实施方式中,识别还可以基于在环境的呈现内目标对象的显示。

图8是示出根据某些示例实施方式的用于检测遮挡的方法的示意图800。示意图800被示出为包括:地理栅栏805、具有第一客户端设备102A的第一用户810、具有第二客户端设备102B的第二用户815、目标对象820以及遮挡825。

如在方法400中所讨论的,第一用户810可以使得显示环境的呈现,环境的呈现包括目标对象820的显示,其中,目标对象820的显示包括一个或更多个显示属性例如像素值和语义特征。

为了检测是否存在阻挡第一客户端设备102A的视角的遮挡,遮挡检测系统124可以基于第二客户端设备102B正在显示目标对象820的第二显示来访问第二客户端设备102B。遮挡检测系统访问目标对象820的第二显示并且检索目标对象820的第二显示的一个或更多个显示属性。然后,遮挡检测系统124可以将目标对象820的第一显示的属性与目标对象820的第二显示的属性进行比较以检测遮挡825。

因此,如果遮挡825正在阻挡第一客户端设备102A的视野,则目标对象820的第一显示的属性可能与目标对象820的第二显示的属性不匹配。

软件架构

图9是示出示例软件架构906的框图,示例软件架构906可以与本文中描述的各种硬件架构结合使用。图9是软件架构的非限制性示例,并且应当理解,可以实现许多其他架构以促进本文中描述的功能。软件架构906可以在硬件例如图10的机器1000的上执行,图10的机器1000除了别的以外还包括处理器1004、存储器1014和(输入/输出)I/O部件1018。代表性硬件层952被示出并且可以表示例如图9中的机器900。代表性硬件层952包括具有相关联的可执行指令904的处理单元954。可执行指令904表示软件架构906的可执行指令,包括本文中描述的方法、部件等的实现。硬件层952还包括也具有可执行指令904的存储器和/或存储模块,即存储器/存储装置956。硬件层952还可以包括其他硬件958。

在图9的示例架构中,软件架构906可以被概念化为其中每个层提供特定功能的层的堆叠。例如,软件架构906可以包括诸如操作系统902、库920、应用916和表示层914的层。在操作上,层内的应用916和/或其他部件可以通过软件堆栈来调用应用编程接口(API)API调用908以及接收响应于API调用908来接收响应。所示出的层本质上是代表性的,并且并非所有软件架构都具有所有层。例如,一些移动操作系统或专用操作系统可能不提供框架/中间件918,而其他操作系统可能提供这样的层。其他软件架构可以包括附加层或不同层。

操作系统902可以管理硬件资源并且提供公共服务。操作系统902可以包括例如内核922、服务924和驱动器926。内核922可以充当硬件层与其他软件层之间的抽象层。例如,内核922可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务924可以针对其他软件层提供其他公共服务。驱动器926负责控制底层硬件或与底层硬件接口(interface)。例如,取决于硬件配置,驱动器926包括显示驱动器、摄像装置驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(USB)驱动器)、驱动器、音频驱动器、电源管理驱动器等。

库920提供由应用916和/或其他部件和/或层使用的公共基础设施。库920提供如下功能,该功能允许其他软件组件以比与底层操作系统902的功能(例如,内核922、服务924,和/或驱动器926)直接接口的方式更容易的方式来执行任务。库920可以包括系统库944(例如,C标准库),系统库944可以提供函数例如存储器分配函数、字符串操作函数、数学函数等。另外,库920可以包括API库946例如媒体库(例如,支持各种媒体格式例如MPREG4、H.264、MP3、AAC、AMR、JPG、PNG的呈现和操纵的库)、图形库(例如,可以用于在显示器上呈现2D和3D图形内容的OpenGL框架)、数据库库(例如,可以提供各种关系数据库功能的SQLite)、网络库(例如,可以提供网络浏览功能的WebKit)等。库920还可以包括各种其他库948,以向应用916和其他软件部件/模块提供许多其他API。

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

应用916包括内置应用938和/或第三方应用940。代表性内置应用938的示例可以包括但不限于:联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用、消息收发应用和/或游戏应用。第三方应用940可以包括由除特定平台的供应商之外的实体使用ANDROIDTM或IOSTM软件开发工具包(SDK)开发的应用,并且可以是在诸如IOSTM、ANDROIDTM、Phone的移动操作系统或其他移动操作系统上运行的移动软件。第三方应用940可以调用由移动操作系统(例如,操作系统902)提供的API调用908以促进本文中描述的功能。

应用916可以使用内置操作系统功能(例如,内核922、服务924和/或驱动器926)、库920和框架/中间件918来创建用户接口以与系统的用户交互。可替选地或另外地,在一些系统中,可以通过表示层例如表示层914来进行与用户的交互。在这些系统中,应用/部件“逻辑”可以和应用/部件的与用户交互的方面分开。

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

机器1000可以包括可以被配置成例如经由总线1002彼此通信的处理器1004、存储器/存储装置1006和I/O部件1018。存储器/存储装置1006可以包括存储器1014例如主存储器或其他存储装置以及存储单元1016,处理器1004能够例如经由总线1002访问存储器1014和存储单元1016两者。存储单元1016和存储器1014存储体现本文中描述的方法或功能中的任何一个或更多个方法或功能的指令1010。指令1010还可以在其被机器1000执行期间完全地或部分地驻留在存储器1014内、在存储单元1016内、在处理器1004中的至少一个处理器内(例如,在处理器的高速缓冲存储器内)或者在其任何合适的组合内。因此,存储器1014、存储单元1016以及处理器1004的存储器是机器可读介质的示例。

I/O部件1018可以包括用于接收输入、提供输出、产生输出、传送信息、交换信息、捕获测量结果等的各种部件。包括在特定机器1000中的具体I/O部件1018将取决于机器的类型。例如,诸如移动电话的便携式机器将很可能包括触摸输入设备或其他这样的输入机构,而无头服务器(headless server)机器将很可能不包括这样的触摸输入设备。应当理解,I/O部件1018可以包括图10中未示出的许多其他部件。仅出于简化以下讨论的目的,根据功能对I/O部件1018进行分组并且该分组决不是限制性的。在各种示例实施方式中,I/O部件1018可以包括输出部件1026和输入部件1028。输出部件1026可以包括视觉部件(例如,诸如等离子显示面板(PDP)的显示器、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT))、声学部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号发生器等。输入部件1028可以包括字母数字输入部件(例如,被配置成接收字母数字输入的键盘、触摸屏;光电键盘(photo-optical keyboard)或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、跟踪球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或者其他触觉输入部件)、音频输入部件(例如,麦克风)等。

在其他示例实施方式中,I/O部件1018可以包括生物计量部件1030、运动部件1034、环境部件1036或定位部件1038以及各种其他部件。例如,生物计量部件1030可以包括用于检测表达(例如,手表达、面部表达、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑电波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1034可以包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件1036可以包括例如照明传感器部件(例如,光度计)、温度传感器部件(例如,检测环境温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声音传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近度传感器部件(例如,检测附近对象的红外传感器)、气体传感器(例如,用于检测危险气体的浓度以确保安全或者用于测量大气中的污染物的气体检测传感器)或可以提供与周围物理环境相对应的指示、测量结果或信号的其他部件。定位部件1038可以包括位置传感器部件(例如,全球定位系统(GPS)接收器部件)、海拔传感器部件(例如,检测可以根据其得到海拔的气压的高度计或气压计)、取向传感器部件(例如,磁力计)等。

可以使用各种技术来实现通信。I/O部件1018可以包括通信部件1040,通信部件1040能够进行操作以分别经由耦接1022和耦接1024将机器1000耦接至网络1032或设备1020。例如,通信部件1040可以包括网络接口部件或其他合适的设备以与网络1032接口。在其他示例中,通信部件1040可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC)部件、部件(例如,低能耗)、部件以及经由其他形式提供通信的其他通信部件。设备1020可以是另一机器或各种外围设备中的任何外围设备(例如,经由通用串行总线(USB)耦接的外围设备)。

此外,通信部件1040可以检测标识符或者可以包括可操作以检测标识符的部件。例如,通信部件1040可以包括射频识别(RFID)标签阅读器部件、NFC智能标签检测部件、光学阅读器部件(例如,用于检测诸如通用产品码(UPC)条形码的一维条形码、诸如快速响应(QR)码的多维条形码、Aztec码、数据矩阵(Data Matrix)、数据符号(Dataglyph)、最大码(MaxiCode)、PDF417、超码(Ultra Code)、UCC RSS-2D条形码以及其他光学码的光学传感器)或声学检测部件(例如,用于识别经标记的音频信号的麦克风)。另外,可以经由通信部件1040得到各种信息,例如,经由因特网协议(IP)地理位置得到位置、经由信号三角测量得到位置、经由检测可以指示特定位置的NFC信标信号得到位置等。

术语表

该上下文中的“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进这些指令的通信。可以经由网络接口设备使用传输介质并且利用多个公知的传输协议中的任何一种传输协议来通过网络发送或接收指令。

该上下文中的“客户端设备”是指与通信网络接口以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、台式计算机、膝上型计算机、便携式数字助理(PDA)、智能电话、平板计算机、超级本、上网本、膝上型计算机、多处理器系统、基于微处理器或可编程的消费电子产品、游戏控制台、机顶盒(STB)或用户可以用于访问网络的任何其他通信设备。

该上下文中的“通信网络”是指网络的一个或更多个部分,网络可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、其他类型的网络或者两个或更多个这样的网络的组合。例如,网络或网络的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任何一种,例如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电业务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准、由各种标准设置组织定义的其他标准、其他远程协议或其他数据传输技术。

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

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

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

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

该上下文中的“时间戳”指的是标识某个事件何时发生的字符或编码信息的序列,例如,给出日期和时间,有时精确到几分之一秒。

再多了解一些

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

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

相关文献