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

用于同时定位和映射的系统和方法

文献发布时间:2023-06-19 19:32:07


用于同时定位和映射的系统和方法

本申请是2017年8月30日提交的申请号为201780052981.6、发明名称为“用于同时定位和映射的系统和方法”的专利申请的分案申请。

相关申请的交叉引用

本申请要求于2016年8月30日递交的美国临时专利申请第62/381,036号的优先权和权益,其通过引用并入本文。

技术领域

本文描述的实施例涉及物理环境内的传感器的定位和映射,并且更具体地,涉及用于执行同时定位和映射(SLAM)的系统、方法、设备和指令。

背景技术

SLAM(同时定位和映射)过程(例如算法)可以由移动计算设备(例如移动电话、平板电脑、可穿戴增强现实(AR)设备、可穿戴自主航空或地面车辆、或者机器人)使用以映射移动计算设备周围的物理环境的结构并且定位移动计算设备在该映射环境内的相对位置。当移动计算设备在其物理环境内移动时,SLAM过程通常可以实时地映射和定位。

尽管不是专门基于图像,但是一些SLAM过程通过使用由与移动计算设备相关联的图像传感器(例如移动电话的内置相机)提供的物理环境的图像来实现映射和定位。从捕获的图像中,这样的SLAM过程可以恢复移动计算设备位置,并通过恢复图像传感器的姿势和地图的结构(最初无需知道任何一个)来构建移动计算设备周围的物理环境的地图。

使用捕获图像的SLAM过程通常需要在物理环境中相应物理特征(下文称为特征)的若干图像,这些图像由不同姿势的图像传感器(例如移动计算设备的)捕获。从不同相机位置捕获的图像允许这样的SLAM过程收敛并开始它们的定位和映射过程。不幸的是,基于图像的SLAM过程中的定位问题通常难以解决,因为匹配捕获图像之间的相应特征中的误差——这些误差倾向于将SLAM过程的最小化问题的局部结果移动到局部最小值而不是提供特定位置的全局最小值。

附图说明

各种附图仅示出了本公开的一些实施例,并且不应被视为限制其范围。附图不一定按比例绘制。为了容易地识别对任何特定元素或动作的讨论,引用编号中的最高有效数字指的是首先引入该元素的图形编号,并且相同标记可以描述不同视图中的类似组件。

图1是示出根据一些实施例的包括同时定位和映射(SLAM)系统的示例性的基于客户端-服务器的高级网络架构的框图;

图2是示出根据一些实施例的包括SLAM系统的示例计算设备的框图;

图3-7是示出根据各种实施例的用于SLAM过程的示例方法的流程图;

图8是示出代表性软件架构的框图,该架构可以与本文描述的各种硬件架构结合使用以实现实施例;以及

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

具体实施方式

各种实施例提供用于执行同时定位和映射(SLAM)的系统、方法、设备和指令,其涉及使用来自物理环境中的相机的少至两个不同姿势(例如物理位置)的图像(以下称为图像帧)来初始化SLAM过程。一些实施例可以通过忽略在匹配由移动计算设备的图像传感器捕获的(物理环境的)图像帧中描绘的对应特征中的误差(下文称为特征误差),并且通过以导致最小化过程收敛到全局最小值而不是落入局部最小值的方式更新SLAM过程,来实现这一点。全局最小值可以提供图像传感器的物理位置。

根据一些实施例,SLAM过程通过检测移动计算设备在物理环境内在两个物理位置之间的运动来初始化,其中移动由两个图像帧(下文称为图像)限制,这两个图像帧可由移动计算设备的图像传感器区分和捕获。移动计算设备可以通过移动计算设备将经由图像传感器检测到的图像模糊与经由移动计算设备的运动传感器(例如惯性测量单元(IMU)或加速度计)检测到的运动冲击或冲动相关联,来识别两个可区分图像。由移动计算设备检测到的运动可以包括当移动计算设备最初开始运动时检测到的冲击或冲动,并且还可以包括当移动计算设备最终停止运动时检测到的冲击或冲动。以这种方式,各种实施例可以将来自移动计算设备的一个或多个传感器的数据绑定到由移动计算设备的图像传感器捕获的特定图像,这依次可以初始化SLAM过程的操作。另外,各种实施例可以允许实施例的SLAM过程基于先前图像帧初始化每个关键图像帧并使用IMU来确定初始距离。

对于一些实施例,该运动包括由持有移动计算设备的人类个人执行的侧步,其可以为良好的SLAM初始化提供足够的视差。特别地,实施例可以使用在侧步(例如基于典型的人类侧步)的开始和结束时产生的冲动来分析人类个人的运动并提取运动的相关部分。随后,实施例可以使用那些相关部分来识别第一和第二关键图像帧,并基于第一和第二关键图像帧初始化SLAM过程。

一些实施例使得SLAM过程能够确定移动计算设备的定位并且映射移动计算设备的物理环境(例如具有可用或可接受的准确度),同时使用提供差的准确度的运动传感器(例如嘈杂的IMU)。一些实施例使得SLAM过程能够在使用有限量的图像数据的同时确定定位并映射物理环境。一些实施例使得SLAM过程能够在使用有限的计算资源(例如低功率处理器)的同时确定定位并实时映射物理环境。另外,一些实施例使SLAM过程能够确定定位并映射物理环境而不使用深度数据。

一些实施例的SLAM技术可用于:跟踪二维(2D)图像帧(例如视频流的)中的关键点(跟踪点);并且识别2D图像帧中的三维(3D)特征(例如物理环境中的物理对象)以及相机到3D特征的相对物理姿势(例如位置)。

例如,实施例的SLAM技术可以与增强现实(AR)图像处理和图像帧跟踪一起使用。具体地,可以使用SLAM技术跟踪为AR系统捕获的图像帧,然后可以将虚拟对象放置在捕获的图像帧内或相对于捕获的图像帧放置作为设备(例如智能眼镜、智能手机、平板电脑或另一移动计算设备)的AR显示器的一部分。如本文所使用的,增强现实(AR)指的是可以捕获图像帧、利用附加信息增强那些图像帧、然后在显示器上呈现增强信息的系统、方法、设备和指令。例如,这可以使用户能够举起移动计算设备(例如智能电话或平板电脑)以捕获场景的视频流,以及移动计算设备的输出显示器以将该场景呈现为与附加信息一起为用户可见。该附加信息可以包括将虚拟对象放置在场景中,使得虚拟对象被呈现为好像它们存在于场景中。如果从捕获物理环境的图像传感器的视角来看另一个真实或虚拟对象在该虚拟对象前面经过的话,处理这些虚拟对象的方面以遮挡虚拟对象。当真实对象和虚拟对象都随时间运动时以及当捕获环境的图像传感器的视角改变时,还处理这样的虚拟对象以维持它们与真实对象的关系。

一些实施例提供了一种方法,该方法包括:执行完整SLAM过程的循环、执行部分SLAM过程的循环、以及执行部分SLAM过程循环和完整SLAM过程循环使得部分SLAM过程循环被执行得比完整SLAM过程循环更频繁。根据各种实施例,完整SLAM过程循环执行完整SLAM过程,而部分SLAM过程循环执行部分SLAM过程,执行部分SLAM过程需要的计算资源(例如处理、存储器资源或两者)比执行完整SLAM过程需要的更少。另外,部分SLAM过程可以比完整SLAM过程循环执行得更快。

对于一些实施例,部分SLAM过程仅执行SLAM过程的定位部分。在替代实施例中,部分SLAM过程仅执行SLAM过程的映射部分。通过仅执行SLAM过程的一部分,部分SLAM过程可以使用比完整SLAM过程更少的计算资源来执行,并且可以比完整SLAM过程执行得更快。此外,通过比部分SLAM过程循环更不频繁地执行完整SLAM过程循环,各种实施例实现SLAM结果(例如有用且准确的SLAM结果),同时限制实现那些结果所需的计算机资源。因此,各种实施例适合于在这样的设备上执行SLAM过程,否则对于执行传统SLAM技术该设备具有的计算资源有限,例如具有有限处理能力的智能电话或智能眼镜。

对于一些实施例,通过诸如移动电话的相机之类的设备的图像传感器捕获(例如以具体的采样率连续捕获)图像帧。一些实施例在被识别(例如被生成)为新关键图像帧的那些捕获的图像帧上执行完整SLAM过程循环,而对未被识别为关键图像帧的那些捕获的图像帧执行部分SLAM过程循环。在一些实施例中,当满足一个或多个关键图像帧条件时,将捕获的图像帧识别(例如生成)为新关键图像帧。各种实施例使用关键图像帧条件来确保从捕获的图像帧识别的新关键图像帧足够独特,以确保每个完整SLAM过程循环按想要的或预期的执行。

例如,当捕获的图像帧至少具有(如果不是更好的话)预定质量(例如公正图像质量)时,可以生成新关键图像帧。以这种方式,实施例可以避免将在图像传感器的运动期间捕获的那些图像帧指定为新的图像帧,这可能捕获由图像传感器的运动引起的图像模糊。可以通过梯度直方图方法来确定捕获图像帧的图像质量,该梯度直方图方法可以基于预定数量的先前捕获图像帧的质量来确定当前图像帧的质量。在另一实例中,可以仅在最后一个新关键图像帧的识别(例如生成)之间经过一定量的时间或一定数量的循环(例如部分SLAM过程循环)之后生成新关键图像帧。以这种方式,实施例可以避免每个捕获的图像帧被视为关键图像帧并且由完整的SLAM循环处理,如本文所述,该完整的SLAM循环的执行可以是处理器密集型的或者是存储器密集型的,并且不适合于在具有有限计算资源的设备上连续执行。在另一实例中,可以仅在当前捕获的图像帧和前一个图像帧之间检测到一定量的转换(例如由物理环境中相对于X、Y或Z坐标的图像传感器位置变化引起的)之后生成新关键图像帧。以这种方式,实施例可以避免太多的图像帧、捕获物理环境中的相同点、被指定为新关键图像帧,这些对于三维(3D)映射目的是没有帮助的。

对于一些实施例,可以并行执行完整SLAM过程循环和部分SLAM过程循环,由此仅对被识别为新关键图像帧的那些捕获图像帧执行完整SLAM过程循环,在非关键图像帧之间捕获的所有其他图像帧上执行部分SLAM过程循环。另外,对于一些实施例,在如本文所述执行SLAM初始化之后,完整SLAM过程循环和部分SLAM过程循环开始执行。例如,实施例的SLAM初始化过程可以产生前两个关键图像帧(例如基于人类个人的侧步),提供初始定位数据(例如包括用于第二关键图像帧的六个自由度(6DOF)),并提供初始映射数据(例如包括在前两个关键图像帧之间匹配的特征的3D位置)。随后,基于SLAM初始化过程提供的初始定位和映射数据,可以开始执行完整SLAM过程循环和部分SLAM过程循环。

虽然本文关于IMU的使用描述了各种实施例,但是应当理解,一些实施例可以使用除IMU之外或代替IMU的一个或多个其他传感器,例如加速度计或陀螺仪。如本文所使用的,自由度(DOF)(例如由IMU、加速度计或陀螺仪测量的)可以包括位移(例如根据X、Y和Z坐标测量的)和方位(例如根据psi、theta和phi测量的)。因此,六个自由度(6DOF)参数可以包括表示沿x轴、y轴和z轴的距离的值,以及表示根据欧拉角psi、theta和phi的旋转的值。四个自由度(4DOF)参数可以包括表示沿x轴、y轴和z轴的距离的值,以及表示根据欧拉角(例如phi)的旋转的值。

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

现在将详细参考本公开的实施例,其示例在附图中示出。然而,本公开可以以许多不同的形式实施,并且不应该被解释为限于本文阐述的实施例。

图1是示出根据一些实施例的包括同时定位和映射(SLAM)系统126的示例性的基于客户端-服务器的高级网络架构100的框图。如图所示,网络架构100包括:客户端设备102A和客户端设备102B(以下统称为客户端设备102)、SLAM系统126包括在客户端设备102B中;消息传递服务器系统108;以及促进客户端设备102和消息传递服务器系统108之间的数据通信的网络106(例如互联网或广域网(WAN))。在网络架构100中,消息传递服务器系统108可以经由网络106向客户端设备102提供服务器侧功能。在一些实施例中,用户(未示出)使用客户端设备102之一与客户端设备102或消息传递服务器系统108之一交互。

客户端设备102可以包括计算设备,该计算设备至少包括经由网络106提供与消息传递服务器系统108的通信的显示和通信能力。每个客户端设备102可以包括但不限于远程设备、工作站、计算机、通用计算机、互联网设备、手持设备、无线设备、便携式设备、可穿戴计算机、蜂窝或移动电话、个人数字助理(PDA)、智能手机、平板电脑、超极本、上网本、笔记本电脑、台式机、多处理器系统、基于微处理器的或可编程消费电子产品、游戏机、机顶盒、网络个人计算机(PC)、小型计算机等。根据实施例,客户端设备102中的至少一个可以包括触摸屏、惯性测量单元(IMU)、加速度计、陀螺仪、生物识别传感器、相机、麦克风、全球定位系统(GPS)设备等中的一个或多个。

对于一些实施例,客户端设备102B表示包括图像传感器的移动计算设备,诸如移动电话、平板电脑或可穿戴设备(例如智能眼镜、智能遮阳板或智能手表)。如图所示,客户端设备102B包括传感器128,其可以包括客户端设备102B的图像传感器(例如相机)和其他传感器(诸如惯性测量单元(IMU)、加速度计或陀螺仪)。对于各种实施例,传感器128促进客户端设备102B上的SLAM系统126的操作。

SLAM系统126在客户端设备102B上执行实施例的SLAM技术,这可以允许客户端设备102B映射其物理环境,同时确定其在该物理环境内的位置。另外,对于一些实施例,尽管客户端设备102B具有有限的计算资源(例如处理或存储器资源),SLAM系统126允许在客户端设备102B上执行SLAM技术,这可以防止传统的SLAM技术在客户端设备102B按预期执行。由SLAM系统126执行的SLAM技术可以支持客户端设备102B的增强现实系统124的图像帧跟踪。

如图所示,客户端设备102B包括增强现实系统124,增强现实系统124可以表示在客户端设备102B上操作的增强现实应用。增强现实系统124可以提供生成增强现实图像以在客户端设备102B的显示器(例如AR显示器)上显示的功能。网络架构100可以用于通过客户端设备102B包括的增强现实系统124传送要在客户端设备102B上显示的虚拟对象的信息,或者提供用于创建增强现实系统124所使用的模型的数据(例如街景数据)。可以使用SLAM系统126跟踪为增强现实系统124捕获的图像帧,然后可以将虚拟对象放置在捕获的图像帧内或相对于捕获的图像帧放置,作为客户端设备102B的AR显示的一部分。

每个客户端设备102可以托管多个应用,包括消息传递客户端应用104,例如短暂的消息应用。每个消息传递客户端应用104可以经由网络106(例如互联网)通信地耦合到消息传递客户端应用104和消息传递服务器系统108的其他实例。因此,每个消息传递客户端应用104可能能够经由网络106与另一消息传递客户端应用104和消息传递服务器系统108通信和交换数据。在消息传递客户端应用104之间以及消息传递客户端应用104和消息传递服务器系统108之间交换的数据可以包括功能(例如调用功能的命令)以及有效载荷数据(例如文本、音频、视频或其他多媒体数据)。

消息传递服务器系统108经由网络106向具体的消息传递客户端应用104提供服务器侧功能。虽然网络架构100的某些功能在本文中被描述为由消息传递客户端应用104或通过消息传递服务器系统108来执行,应当理解,消息传递客户端应用104或消息传递服务器系统108内的某些功能的位置是设计选择。例如,技术上优选的是在消息传递服务器系统108内初始部署某些技术和功能,但稍后将该技术和功能迁移到消息传递客户端应用104,其中客户端设备102具有足够的处理能力。

消息传递服务器系统108支持提供给消息传递客户端应用104或增强现实系统124的各种服务和操作。这些操作包括向消息传递客户端应用104或增强现实系统124传输数据、从消息传递客户端应用104或增强现实系统124接收数据,以及处理由消息传递客户端应用104或增强现实系统124生成的数据。作为示例,该数据可以包括消息内容、客户端设备信息、地理定位信息、媒体注释和覆盖、消息内容持久性条件、社交网络信息、增强现实(AR)内容和直播事件信息。通过经由消息传递客户端应用104或增强现实系统124的用户界面(UI)可用的功能来调用和控制网络架构100内的数据交换。

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

具体地用应用程序界面(API)服务器110处理,该服务器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执行其他处理器和存储器密集型的数据处理。

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

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

应用服务器112通信地耦合到数据库服务器118,数据库服务器118便于访问数据库120,在数据库120中存储与由应用服务器112处理的消息或增强现实内容相关联的数据。

图2是示出根据一些实施例的包括SLAM系统240的示例计算设备200的框图。计算设备200可以表示人类可以在物理环境中带其容易地运动的移动计算设备,诸如移动电话、平板电脑、膝上型电脑、可穿戴设备等。如图所示,计算设备200包括处理器210、图像传感器220、惯性测量单元(IMU)230和SLAM系统240。SLAM系统240包括图像帧捕获模块241、IMU数据捕获模块242、关键图像帧模块243、完整SLAM循环模块244和部分SLAM循环模块245。取决于实施例,SLAM系统240可以包括或可以不包括SLAM初始化模块246。

SLAM系统240的任何一个或多个功能组件(例如模块)可以使用硬件(例如计算设备200的处理器210)或硬件和软件的组合来实现。例如,本文描述的组件中的任何一个可以配置处理器210以针对该组件执行本文描述的操作。此外,这些组件中的任何两个或更多个可以组合成单个组件,并且本文针对单个组件描述的功能可以在多个组件之间细分。此外,根据各种示例实施例,图2所示的任何功能组件可以在单个机器、数据库或设备内一起或单独实现,或者可以分布在多个机器、数据库或设备上。

处理器210可以包括中央处理单元(CPU),图像传感器220可以包括内置于计算设备200中或者外部耦合到计算设备200的相机,并且IMU230可以包括传感器,该传感器能够测量如果不是相对于计算设备200也至少相对于图像传感器220的自由度(例如6DOF)。虽然未示出,但是计算设备200可以包括其他传感器以促进SLAM系统240的操作,例如加速度计或陀螺仪。

图像帧捕获模块241可以通过图像传感器220调用、促成或执行计算设备200的物理环境的新图像帧的连续捕获。可以根据预定的采样率执行连续捕获,例如每秒25或30帧。图像帧捕获模块241可以将由图像传感器220连续捕获的新图像帧添加到捕获图像帧集合,其可以由SLAM系统240进一步处理。

IMU数据捕获模块242可以对应于由图像帧捕获模块241捕获的图像帧来调用、促成或执行来自IMU 230的IMU数据的连续捕获。例如,IMU数据捕获模块242可以捕获对于所捕获的每个图像帧的IMU数据。对于给出的捕获图像帧,捕获的IMU数据可以包括图像传感器捕获该图像帧时图像传感器的自由度(DOF)参数。DOF参数可以包括例如相对于图像传感器220测量的四个自由度(4DOF)或六个自由度(6DOF)。其中IMU230、图像传感器220和计算设备200物理上集成为单个单元,IMU数据可以反映图像传感器220和计算设备200的DOF参数。

对于添加到捕获的图像帧集合中的每个具体的新图像帧(例如通过图像帧捕获模块241),关键图像帧模块243可以确定对于该具体的新图像帧关键图像帧条件集合是否被满足。响应于针对具体的新图像帧该关键图像帧条件集合被满足,关键图像帧模块243可以将该具体的新图像帧识别为新关键图像帧。这样,关键图像帧模块243可以根据关键图像帧条件集合生成新关键图像帧。如本文所述,关键图像帧条件集合可以确保新关键图像帧足够独特,以便通过完整SLAM过程循环进行处理。示例关键图像帧条件可以涉及新图像帧是否满足或超过特定图像质量、自上次执行完整SLAM过程循环以来是否已经过去了最小时间、或者先前图像帧与新图像帧之间的转换是否满足或超过最小转换阈值。

完整SLAM循环模块244可以对由关键图像帧模块243识别的每个特定新关键图像帧执行完整SLAM过程循环。对具体的新关键图像帧执行完整SLAM过程循环可以包括确定与该具体的新关键图像帧相关联的计算设备的图像传感器的6DOF。另外,对具体的新关键图像帧执行完整SLAM过程循环可以包括确定在该具体的新关键图像帧中匹配的新3D特征的3D位置集合。关于部分SLAM过程循环的更多内容在本文中参考图6描述。

部分SLAM循环模块245可以对由关键图像帧模块243未识别的每个具体的新图像帧执行部分SLAM过程循环。对于一些实施例,部分SLAM过程循环仅执行SLAM过程的定位部分。在具体的新图像帧上执行部分SLAM过程循环可以包括确定与特定新图像帧相关联的计算设备200的图像传感器220的6DOF。另外,对特定新图像帧执行部分SLAM过程循环可以包括基于图像传感器220的6DOF在特定新图像帧上投影跟踪点集合。替代地,对于一些实施例,部分SLAM过程循环仅执行SLAM过程的映射部分。在此关于图7描述了关于部分SLAM过程循环的更多内容。

SLAM初始化模块246可以基于来自IMU数据捕获模块242的捕获的IMU数据检测图像传感器220从在物理环境中的第一姿势(例如图像传感器220的方位或位置)到物理环境中的第二姿势的运动。SLAM初始化模块246可以基于该运动识别第一关键图像帧和第二关键图像帧。特别地,可以识别第一和第二关键图像帧,使得第一关键图像帧对应于运动的开始冲动,第二关键图像对应于运动的结束冲动。例如,在人类个人握住计算设备200的情况下,运动的开始冲动可以是由人类个人执行的侧步的开始,并且运动的结束冲动可以是侧步的结束。可以使用计算设备200的冲击功能来检测开始或结束冲动。

图3-7是示出根据各种实施例的用于SLAM过程的示例方法的流程图。应当理解,根据一些实施例,本文描述的示例方法可以由诸如计算设备(例如计算设备200)之类的设备来执行。另外,本文描述的示例方法可以以存储在计算机可读介质上的可执行指令的形式或以电子电路形式实现。例如,图3的方法300的一个或多个操作可以由可执行指令表示,该可执行指令当由计算设备的处理器执行时使计算设备执行方法300。取决于实施例,本文描述的示例方法的操作可以以不同方式重复,或者涉及未示出的中间操作。尽管可以以特定顺序描绘和描述示例方法的操作,但是执行操作的顺序可以在实施例之间变化,包括并行地执行某些操作。

图3是示出根据一些实施例的用于SLAM过程的示例方法300的流程图。特别地,方法300示出了实施例可以如何执行完整SLAM过程循环和部分SLAM过程循环。如图所示,方法300开始于操作302通过计算设备的图像传感器调用、促成或执行计算设备的物理环境的新图像帧的连续捕获。操作302将新图像帧添加到捕获图像帧集合,该捕获图像帧集合可以由方法300进一步处理。方法300继续操作304,操作304对应于由操作302捕获的图像帧,调用、促成或执行对来自计算设备的惯性测量单元的IMU数据的连续捕获(IMU)。如本文所述,具体图像帧的IMU数据可以包括在操作302捕获图像帧时由IMU测量的图像传感器的自由度(DOF)。

方法300继续操作306,针对由操作302捕获并添加到捕获图像帧集合的每个具体的新图像帧执行操作320至326。操作306开始于操作320确定对于该具体的新图像帧是否满足关键图像帧条件集合。操作306继续操作322,以响应于操作320确定对于该具体的新图像帧满足关键图像帧条件集合,将该具体的新图像帧识别为新关键图像帧。

操作306继续操作324,对新关键图像帧执行完整SLAM过程循环。为了将来的处理目的,一些实施例跟踪被识别为关键图像帧的那些图像帧。对具体的新关键图像帧执行完整SLAM过程循环可以包括确定与该具体的新关键图像帧相关联的计算设备的图像传感器的6DOF。另外,对该具体的新关键图像帧执行完整SLAM过程循环可以包括确定在该具体的新关键图像帧中匹配的新3D特征的3D位置集合。关于部分SLAM过程循环的更多内容在本文中参考图6描述。

操作306继续操作326,响应于操作320确定对于具体的新图像帧(即,非关键新图像帧)不满足关键图像帧条件集合,对该具体的新图像帧执行部分SLAM过程循环。对具体的新图像帧执行部分SLAM过程循环可以包括确定与该具体的新图像帧相关联的计算设备的图像传感器的6DOF。另外,对该具体的新图像帧执行部分SLAM过程循环可以包括基于图像传感器的6DOF在该具体的新图像帧上投影跟踪点集合。在此关于图7描述了关于部分SLAM过程循环的更多内容。

图4是示出根据一些实施例的用于SLAM过程的示例方法400的流程图。特别地,方法400示出了实施例如何初始化SLAM过程,执行完整SLAM过程循环以及执行部分SLAM过程循环。如图所示,方法400以操作402和404开始,根据一些实施例,操作402和404分别类似于上面关于图3描述的方法300的操作302和304。

方法400继续操作406,基于捕获的IMU数据,检测图像传感器从在物理环境中的第一姿势(例如图像传感器的方位或位置)到物理环境中第二姿势的运动。方法400继续操作408,基于操作406检测到的运动识别第一关键图像帧和第二关键图像帧。对于一些实施例,第一关键图像帧对应于运动的开始冲动,并且第二关键图像帧对应于运动的结束冲动。通过操作406和408,一些实施例可以通过操作410初始化方法400以执行完整和部分SLAM过程循环。如本文所述,运动可以由人类个人执行侧步同时握持执行方法400并包括图像传感器的计算设备引起。

方法400继续操作410,其对于由操作402捕获并添加到捕获图像帧集合中的每个具体的新图像帧执行操作420至426。根据一些实施例,操作420至426分别类似于以上参照图3描述的方法300的操作320至326。

图5是示出根据一些实施例的用于SLAM过程的示例方法500的流程图。特别地,方法500示出了实施例如何初始化SLAM过程。如图所示,方法500以操作502和504开始,根据一些实施例,操作502和504分别类似于上面关于图3描述的方法300的操作302和304。

方法500继续操作506,从该捕获图像帧集合中识别第一关键图像帧。识别的第一关键图像帧可以包括特定图像质量(例如公平质量),并且可以是当IMU(例如IMU 230)指示图像传感器稳定时由图像传感器(例如图像传感器220)捕获的图像帧。因此,操作506可能不识别第一关键图像帧,直到在图像传感器稳定时捕获图像帧并且捕获的图像帧满足特定图像质量。

方法500继续操作508,从由操作504捕获的IMU数据中识别与第一关键图像帧相关联的第一IMU数据。对于一些实施例,第一IMU数据包括4DOF参数(例如x、y、z和phi)。第一IMU数据可以表示在图像传感器捕获第一关键图像帧时捕获的IMU数据。

方法500继续操作510,由IMU检测图像传感器从物理环境中的第一姿势(例如方位或位置)到物理环境中的第二姿势的运动。如本文所述,该运动可以由执行侧步同时握持执行方法500并且包括图像传感器和IMU的计算设备的人类个人引起。

方法500继续操作512,响应于通过操作510检测到运动而执行操作520至528。操作512开始于操作520从该捕获图像帧集合中识别第二关键图像帧。虽然可以通过操作506识别第一关键图像帧,使得第一关键图像帧对应于由操作510检测到的运动的开始,但是可以通过操作520识别第二关键图像帧,使得第二关键图像帧对应于操作510检测到的运动的结束。

操作512继续操作522,从操作504捕获的IMU数据中识别与第二关键图像帧相关联的第二IMU数据。对于一些实施例,第二IMU数据包括4DOF参数(例如x、y、z和phi)。第二IMU数据可以表示在图像传感器捕获第二关键图像帧时捕获的IMU数据。

操作512继续操作524,对至少第一和第二关键图像帧执行特征匹配,以识别物理环境中的匹配3D特征集合。对于一些实施例,操作524使用基于KAZE或A-KAZE的特征匹配器,其通过跨图像帧匹配特征从图像帧集合中提取3D特征。操作512继续操作526,基于误差标准集合,通过从操作524产生的匹配3D特征集合中滤出至少一个误差特征,生成过滤的匹配3D特征集合。例如,该误差标准集合可以包括与极轴、投影误差或空间误差有关的误差标准。如果发现特征误差,则方法500可以返回到操作524以再次执行特征匹配。操作512继续操作528,确定用于第二关键图像帧的图像传感器的6DOF参数集合和用于该匹配3D特征集合的3D位置集合。为了便于该确定,操作512基于由操作506识别的第一IMU数据、由操作522识别的第二IMU数据以及由操作526提取的过滤的匹配3D特征集合,对第二关键图像帧执行(完整)SLAM过程。。

图6是示出根据一些实施例的用于SLAM过程的示例方法600的流程图。特别地,方法600示出了实施例如何执行完整SLAM过程循环。对于一些实施例,直到通过SLAM初始化过程(例如方法500)产生至少两个关键图像帧才执行方法600。如图所示,方法600开始于操作602从捕获IMU数据中识别与新关键图像帧相关联的特定IMU数据。IMU数据可以表示在图像传感器捕获新关键图像帧时捕获的IMU数据。

方法600继续操作604,对新关键图像帧和至少一个先前图像帧(例如最后两个捕获的图像帧)执行特征匹配,以识别物理环境中的匹配3D特征集合。对于一些实施例,操作604使用基于KAZE或A-KAZE的特征匹配器,其通过匹配图像帧上的特征从图像帧集合中提取3D特征。方法600继续操作606,通过基于由操作604提取的匹配3D特征集合以及由操作602识别的特定IMU数据对新关键图像帧执行(完整)SLAM过程,为新关键图像帧确定图像传感器的第一6DOF参数集合。

方法600继续操作608,基于误差标准集合和由操作606确定的第一6DOF参数集合,通过从操作604提取的匹配3D特征集合中滤除至少一个误差特征,生成过滤的匹配3D特征集合。如本文所述,该误差标准集合可以包括与极轴、投影误差或空间误差有关的误差标准。例如,误差标准可以指定滤除表示最差投影误差的前3%的那些特征。

方法600继续操作610通过基于由操作608生成的过滤的匹配3D特征的第二集合和由操作602识别的特定IMU数据对所有关键图像帧执行(完整)SLAM过程,来确定用于新关键图像帧的图像传感器的第二6DOF参数集合和物理环境中的新3D特征的3D位置集合。

图7是示出根据一些实施例的用于SLAM过程的示例方法700的流程图。特别地,方法700示出了实施例如何执行部分SLAM过程循环。如图所示,方法700开始于操作702,基于由完整SLAM过程循环(例如方法600)的上次执行提供(例如提取)的新3D特征的3D位置和集合最近由完整SLAM过程循环(例如通过方法600)处理的新图像帧,对非关键图像帧执行特征跟踪。对于一些实施例,操作702使用基于Kanade-Lucas-Tomasi(KLT)方法的2D跟踪器,其从上次执行的完整SLAM过程循环处理的新关键图像帧中提取2D特征。方法700继续操作704,通过基于来自操作702的2D特征集合仅执行SLAM过程的定位部分,来确定用于非关键图像帧的图像传感器的6DOF参数集合。方法700继续操作706,通过基于误差标准集合和由操作704确定的6DOF参数集合,从操作702识别的2D特征集合中滤除至少一个误差特征,来生成过滤的2D特征集合。该误差标准集合可以包括例如与极轴、投影误差或空间误差有关的误差标准。方法700继续操作708,基于由操作706生成的过滤的2D特征集合和由操作704确定的6DOF参数集合,在非关键图像帧上投影跟踪点集合。对于一些实施例,该跟踪点集合允许在非关键图像帧上进行2D虚拟跟踪,这在诸如增强现实的应用中可能是有用的。

软件架构

图8是示出示例软件架构806的框图,该示例软件架构806可以与本文描述的各种硬件架构结合使用以实现实施例。图8是软件架构的非限制性示例,并且应当理解,可以实现许多其他架构以促进本文描述的功能。软件架构806可以在诸如图9的机器900之类的硬件(其尤其包括处理器904、存储器914和I/O组件918等)上执行。代表性的硬件层852被示出并且可以表示例如图9的机器900。代表性硬件层852包括具有相关联的可执行指令804的处理器单元854。可执行指令804表示软件架构806的可执行指令,包括本文描述的方法、组件等的实现。硬件层852还包括也具有可执行指令804的存储器和/或存储模块存储器/存储器856。硬件层852还可以包括其他硬件858。

在图8的示例架构中,软件架构806可以概念化为层的堆栈,其中每个层提供特定功能。例如,软件架构806可以包括诸如操作系统802、库820、框架/中间件818、应用816和表示层814之类的层。在操作上,层中的应用816和/或其他组件可以通过软件堆栈调用应用编程界面(API)调用808并接收响应作为消息812。所示的层本质上是代表性的,并且并非所有软件架构都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件818,而其他可以提供这样的层。其他软件架构可以包括附加的或不同的层。

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

库820提供由应用816和/或其他组件和/或层使用的公共基础结构。库820提供允许其他软件组件以比直接与底层操作系统802功能(例如内核822、服务824和/或驱动器826)直接接口更容易的方式执行任务的功能。库820可以包括系统库844(例如C标准库),其可以提供诸如存储器分配功能、字符串操作功能、数学功能等的功能。另外,库820可以包括API库846,诸如媒体库(例如用于支持各种媒体格式的呈现和操作的库,诸如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG)、图形库(例如可用于在显示器上的图形内容中渲染2D和3D的OpenGL框架)、数据库库(例如可以提供各种关系数据库功能的SQLite)、web库(例如可以提供web浏览功能的WebKit)等。库820还可以包括各种其他库848,以向应用816和其他软件组件/模块提供许多其他API。

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

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

应用816可以使用内置操作系统功能(例如内核822、服务824和/或驱动器826)、库820和框架/中间件818来创建用户界面以与系统的用户交互。替代地或另外地,在一些系统中,与用户的交互可以通过表示层(例如表示层814)发生。在这些系统中,应用/组件“逻辑”可以从和用户交互的应用/组件的方面中分离出。

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

机器900可以包括可以被配置为例如经由总线902彼此通信的处理器904、存储器/存储设备906和I/O组件918。存储器/存储设备906可以包括存储器914,例如主存储器或其他存储设备,以及存储单元916,两者都可由处理器904例如经由总线902访问。存储单元916和存储器914存储体现本文描述的任何一种或多种方法或功能的指令910。指令910在由机器900执行期间还可以完整或部分地驻留在存储器914内、在存储单元916内、在处理器904的至少一个存储器(例如处理器的高速缓存存储器内)内或其任何合适的组合中。因此,存储器914、存储单元916和处理器904的存储器是机器可读介质的示例。

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

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

可以使用各种技术来实现通信。I/O组件918可以包括通信组件940,其可操作以分别经由耦合924和耦合922将机器900耦合到网络932或设备920。例如,通信组件940可以包括网络接口组件或与网络932接口的其他合适的设备。在其他示例中,通信组件940可以包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(NFC)组件、

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

如本文所使用的,“短暂消息”可以指代可以在时间有限的持续时间(例如最多10秒)内可访问的消息。短暂消息可以包括文本内容、图像内容、音频内容、视频内容等。短暂消息的访问时间可以由消息发送者设置,或者替代地,访问时间可以是默认设置或由接收者指定的设置。无论设置技术如何,短暂消息都是临时的。与短暂消息相关联的消息持续时间参数可以提供确定短暂消息的接收用户可以显示或访问短暂消息的时间量的值。可以使用能够接收和显示短暂消息的内容的消息传递客户端软件应用(例如短暂消息传递应用)来访问或显示短暂消息。

如本文中还使用的,“短暂消息故事”可以指可以在时间有限的持续时间内可访问的短暂消息内容的集合,类似于短暂消息。短暂消息故事可以从一个用户发送到另一个用户,并且可以使用能够接收和显示短暂内容的集合的消息传递客户端软件应用(例如短暂消息传递应用)来访问或显示。

在整个说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管一个或多个方法的各个操作被示出并描述为单独的操作,但是可以同时执行一个或多个的各个操作,并且不需要以所示的顺序执行操作。在示例配置中作为单独组件呈现的结构和功能可以实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以实现为单独的组件。这些和其他变化、修改、添加和改进都落入本文主题的范围内。

尽管已经参考特定示例实施例描述了本发明主题的概述,但是在不脱离本公开的实施例的更宽范围的情况下,可以对这些实施例进行各种修改和改变。

以足够的细节描述了本文所示的实施例,以使本领域技术人员能够实践所公开的教导。可以使用其他实施例并从中导出其他实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替换和改变。因此,详细描述不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求所赋予的等同物的全部范围来限定。

如本文所使用的,模块可以构成软件模块(例如存储或以其他方式体现在机器可读介质或传输介质中的代码)、硬件模块或其任何合适的结合。“硬件模块”是能够执行某些操作并且可以以特定物理方式被配置或布置的有形(例如非暂时性)物理组件(例如一组一个或多个处理器)。在各种实施例中,一个或多个计算机系统或其一个或多个硬件模块可以由软件(例如应用或其一部分)配置为硬件模块,该硬件模块用于执行本文描述的用于该模块的操作。

在一些实施例中,硬件模块可以以电子方式实现。例如,硬件模块可以包括被永久配置为执行某些操作的专用电路或逻辑。硬件模块可以是或可以包括专用处理器,例如现场可编程门阵列(FPGA)或ASIC。硬件模块还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路。作为示例,硬件模块可以包括CPU或其他可编程处理器内包含的软件。

考虑其中临时配置(例如编程)硬件模块的实施例,不需要在任何一个时刻配置或实例化每个硬件模块。例如,在硬件模块包括由软件配置成为专用处理器的CPU的情况下,CPU可以在不同时间被分别配置为不同的专用处理器(例如每个包括在不同的硬件模块中)。软件(例如软件模块)可以相应地配置一个或多个处理器,例如以在一个时刻变为或以其他方式构成特定硬件模块,并且在不同的时刻变为或以其他方式构成不同的硬件模块。

硬件模块可以向其他硬件模块提供信息并从其接收信息。因此,所描述的硬件模块可以被视为通信地耦合。在同时存在多个硬件模块的情况下,可以通过在两个或更多个硬件模块之间或之中的信号传输(例如通过合适的电路和总线)来实现通信。在其中在不同时间配置或实例化多个硬件模块的实施例中,可以例如通过存储和检索多个硬件模块可访问的存储器结构中的信息来实现这些硬件模块之间的通信。例如,一个硬件模块可以执行操作并将该操作的输出存储在与其通信耦合的存储器(例如存储器设备)中。然后,另一硬件模块可以稍后访问存储器以检索和处理所存储的输出。硬件模块还可以启动与输入或输出设备的通信,并且可以在资源(例如来自计算资源的信息的集合)上操作。

本文描述的示例方法的各种操作可以至少部分地由临时配置(例如,通过软件)或永久配置为执行相关操作的一个或多个处理器来执行。无论是临时配置还是永久配置,这样的处理器可以构成处理器实现的模块,其用于执行本文描述的一个或多个操作或功能。如本文所使用的,“处理器实现的模块”指的是硬件模块,在其中硬件包括一个或多个处理器。因此,本文描述的操作可以至少部分地由处理器实现、硬件实现或两者实现,因为处理器是硬件的示例,并且本文所讨论的任何一个或多个方法内的至少一些操作可以由一个或多个处理器实现的模块、硬件实现的模块或其任何合适的组合执行。

如本文所使用的,术语“或”可以以或者包含性或者排他性的含义来解释。术语“一”或“一个”应理解为表示“至少一个”、“一个或多个”等。使用诸如“一个或多个”、“至少”、“但不限于”的单词和短语或其他类似短语不应被理解为意味着在这样的扩展短语缺乏的情况下意图或要求更窄的范围。

各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中示出了特定操作。设想了其他功能分配,并且其可以落入本公开的各种实施例的范围内。通常,在示例配置中作为分开的资源呈现的结构和功能可以实现为组合结构或资源。类似地,作为单个资源呈现的结构和功能可以实现为分开的资源。这些和其他变化、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应被视为说明性的而非限制性的。

以上描述包括体现本公开的说明性实施例的系统、方法、设备,指令和计算机介质(例如计算机程序产品)。在说明书中,出于解释的目的,阐述了许多具体细节以便提供对本发明主题的各种实施例的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实践本发明主题的实施例。通常,不一定详细示出公知的指令实例、协议、结构和技术。

技术分类

06120115939926