骨架关节识别和跟踪系统的制作方法

文档序号:6361065阅读:211来源:国知局
专利名称:骨架关节识别和跟踪系统的制作方法
骨架关节识别和跟踪系统
背景技术
在过去,诸如计算机游戏和多媒体应用之类的计算应用使用控制器、遥控器、键盘、鼠标等来允许用户操纵应用的游戏角色或其他方面。近来,计算机游戏和多媒体应用已开始使用相机和软件姿势识别引擎来提供自然用户界面(“NUI”)。使用NUI,检测、解释原始关节数据和用户姿势并将其用于控制游戏人物或应用的其他方面。NUI应用通常跟踪用户的所有关节的运动以及来自整个视野的背景物体。然而,用户有时只使用他或她身体的一部分来与NUI应用进行交互。例如,用户可坐在椅子上或轮椅上,不使用他或她的腿。在这些情况下,NUI应用仍然跟踪用户的下半身。

发明内容
本文公开了用于使用NUI系统来识别和跟踪用户的骨架关节的系统和方法,并且在各实施例中,公开了用于只识别和跟踪一些骨架关节(如用户的上半身)的系统和方法。该系统可包括接收来自图像捕捉设备的视野的帧数据的肢体标识引擎。肢体标识引擎随后可使用各种方法(包括Exemplar和质心生成、磁性以及各种打分测试)来评估、标识以及跟踪场景中的一个或多个用户的头部、肩部、以及其他身体部位的位置。在各实施例中,本发明系统包括用于捕捉视野中的一个或多个玩家(本文中也称为用户)的彩色图像和/或深度图像的捕捉设备。给定彩色和/或深度图像或图像序列,其中一个或多个玩家在活动,人类跟踪系统(如本发明技术的系统)的共同最终目标是分析这一(些)图像并稳健地确定这些人处于该场景中的何处,包括他们的身体部位的位置。用于解决这一问题的系统可被分解成两个子问题标识多个候选身体部位位置并随后将它们协调成整个或部分骨架。肢体标识引擎的各实施例包括用于标识多个候选的身体部位位置的身体部位建议系统以及用于将这些候选的身体部位协调成整个或部分骨架的骨架解析系统。身体部位建议系统可使用图像并产生该场景各处的一组候选的身体部位位置(其中每一身体部位可能有多个候选)。这些身体部位建议系统可以是无状态或有状态的。无状态系统是在不参考先前状态(先前帧)的情况下产生候选的身体部位位置的系统。有状态系统是在参考先前状态(或先前帧)的情况下产生候选的身体部位位置的系统。无状态身体部位建议系统的示例包括用于标识候选的身体部位的Exemplar加质心。本发明技术还公开了本文称为磁性的用于标识候选的身体部位的有状态的系统。身体部位建议系统本来就通常可产生许多假肯定。因此,肢体标识引擎还包括用于协调候选的身体部位并对视野内的假肯定和正确地标识的身体和/或身体部位加以区分的骨架解析系统。骨架解析系统使用来自一个或多个身体部位建议系统的身体部位建议(可能包括多个假肯定),并将该数据协调成整个稳健的骨架。在一个实施例中,骨架解析系统通过以各种方式连接各身体部位建议以产生大量(部分或整体)骨架假设来工作。为了降低计算复杂度,可首先解析骨架的某些部位(诸如头部和肩部),之后解析其他部位(诸如手臂)。然后,以各种方式对这些假设打分,且分数和其他信息被用来选择最佳假设并协调玩家实际在哪里。使用许多稳健的成本函数对各假设打分。在成本函数中得分较高的身体部位建议和骨架假设更可能是正确地标识的身体部位。这些成本函数中的一些是高级的,因为它们可在一开始就执行以在高级处移除若干骨架假设。根据本发明系统的这样的测试包括给定骨架假设在运动学上是否是有效的(即是否可能)。根据本发明系统的其他高级测试包括关节旋转测试,它测试骨架假设中的一个或多个关节的旋转是否超过了预期身体部位的关节旋转限制。其他成本函数较低级,并且跨所有骨架假设在骨架假设内的每一身体部位建议上执行。根据本发明系统的一个这样的成本函数是轨迹和突出性测试,它检查一个或多个身体部位建议内的轨迹样本的深度值和一个或多个身体部位建议外部的突出性样本的深度值。具有预期深度值的样本在这一测试下得分较高。根据本发明系统的另一成本函数是像素运动检测测试,它测试以确定身体部位(诸如手)是否在动。在假设的关键区域中在X、y和/或z方向上检测到的像素运动可增加该假设的分数。另外,描述了手部改进技术,它结合骨架解析系统产生极其稳健的经改进的手部位置。在本发明技术的其他实施例中,可通过将视野分成各较小的区并且一次聚焦于一个区来实现进一步的处理效率。此外,每一个区可具有它自己的被识别的并且各区不同的预定义姿势集合。这避免了在一区内接收并处理相冲突的姿势的可能性,并进一步简化且加快了处理速度。在一个示例中,本发明技术涉及一种姿势识别方法,包括以下步骤a)从场景中的用户接收位置信息,该用户具有第一身体部位和第二身体部位;b)识别来自第一身体部位的姿势;c)忽略由第二身体部位执行的姿势;以及d)执行与在所述步骤b)中识别的来自第一身体部位的姿势相关联的动作。在另一示例中,本发明技术涉及一种识别并跟踪用户的各身体部位的方法,包括以下步骤a)从场景中的用户接收位置信息;b)从在所述步骤a)中接收到的位置信息中标识用户的第一组关节;c)忽略用户的第二组关节;d)标识第一组关节中的各关节的位置;以及e)基于在所述步骤d)中标识的各关节的位置来执行动作。本发明技术的另一示例涉及能够将处理器编程以执行一种方法的计算机可读存储介质,该方法识别并跟踪具有对至少一个不能动的身体部位的至少有限使用的用户的各身体部位。该方法包括下列步骤a)从用户接收至少一个不动的身体部位的身份的指示;b)标识用户的第一组关节,这些关节不包括在至少一个不能动的身体部位内;c)标识第一组关节中的各关节的位置;以及d)基于在所述步骤c)中标识的关节的位置来执行动作。提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中所提及的任何或所有缺点的实现。


图1A示出了目标识别、分析和跟踪系统的示例实施例。
图1B示出了目标识别、分析和跟踪系统的另一示例实施例。图1C示出了目标识别、分析和跟踪系统的又一示例实施例。图2示出了可以在目标识别、分析和跟踪系统中使用的捕捉设备的示例实施例。图3是根据本发明技术的各实施例的用于经由自然用户界面来对上半身的关节进行建模和跟踪的系统的高级流程图。图4A和4B是根据本发明技术的各实施例的用于经由自然用户界面来对上半身的关节进行建模和跟踪的系统的详细流程图。图5A和5B是根据本发明技术的各实施例的、图4A中的步骤308的用于生成头部和肩部三角以供经由自然用户界面来对上半身的关节进行建模和跟踪的流程图。图6是图5的步骤368的、示出用于对图5中生成的头部和肩部三角进行打分的因素的流程图。图7是图4A的步骤312的、示出了用于对图4A、4B中的手位置进行评估的打分因素的流程图。图8是图4A的步骤318的、示出了用于对图4A、4B中的肘位置进行评估的打分因素的流程图。图9是根据本发明技术的各实施例的所生成的用户和头部三角的图示。图10是用户和头部及肩部的轨迹及突出性采样点的图示。图11是用户和用户上臂、前臂及手的轨迹及突出性采样点的图示。图12示出根据本发明技术而返回的用户的头部、肩部、肘部、腕部、以及手部的骨架关节位置。图13A和13B示出了根据本发明技术的各实施例的对视野中的像素进行采样的基于区的系统的各实施例。图14是示出了用于识别姿势的姿势识别引擎的框图。图15是图14的姿势识别引擎的操作的流程图。图16是供用户经由用户的真实世界手移动和姿势来控制屏上化身的腿部移动的方法的流程图。图17A示出了可用于解释目标识别、分析和跟踪系统中的一个或多个姿势的计算环境的示例实施例。图17B示出了可用于解释目标识别、分析和跟踪系统中的一个或多个姿势的计算环境的另一不例实施例。
具体实施例方式现在将参考附图1A-17B来描述本发明技术的各实施例,这些实施例一般涉及用于使用NUI系统来识别和跟踪用户的骨架关节的系统和方法,并且在各实施例中涉及用于只识别和跟踪一些骨架关节(如用户的上半身)的系统和方法。该系统可包括接收来自图像捕捉设备的视野(FOV)的帧数据的肢体标识引擎。一般而言,肢体标识引擎的各实施例包括用于标识多个候选的身体部位位置的身体部位建议系统以及用于将这些候选的身体部位协调成整个或部分骨架的骨架解析系统。身体部位建议系统随后可以使用Exemplar和质心生成方法以某一相关联的置信度水平来标识FOV内的各身体部位。该系统还可利用磁性,它通过将在先前帧中已经知道其位置的身体部位“咬合(snap)”到新帧的图像数据中的邻近特征来估计它们的新位置。Exemplar 和质心生成方法在题为 “Multiple Centroid Condensation of ProbabilityDistribution Clouds (概率分布云的多质心聚集)”的美国专利申请号12/770,394中详细地解释,该申请在此通过引用整体结合于此。然而,应当理解,Exemplar和质心生成只是可被用来标识候选身体部位的一种方法。其他算法可以用作Exemplar和/或质心的替换或补充,它们分析图像并可输出各身体部位的各候选关节位置(带有或不带有概率)。在使用Exemplar和质心生成技术的情况下,这些技术标识候选身体部位位置。所标识的位置可能是正确的或不正确的。本发明系统的一个目标是将各候选身体部位位置融合在一起成为人们在场景所处的位置以及他们所处的姿势的连贯图像。在各实施例中,肢体标识引擎还可包括用于这一目的的骨架解析系统。在各实施例中,骨架解析系统可以标识所捕捉的每一帧数据的上半身关节,如头部、肩部、肘部、腕部、以及手部。在这样的实施例中,肢体标识引擎可以使用Exemplar和各种打分子例程来标识与用户的肩部和头部相对应的质心编组。在本文中,这些质心编组被称为头部三角。使用来自各种源的手部建议,包括但不限于磁性、来自Exemplar的质心、或其他组件,肢体标识引擎的骨架解析系统还可标识FOV内的用户的手的潜在手部位置(即,手部建议)。骨架解析系统接着可评估每一手部建议的多个肘部位置。从这些操作中,肢体标识引擎的骨架解析系统可以标识每一帧的每一玩家的头部、肩部、以及臂部位置。只集中于用户的身体关节的一部分,本发明系统能够比其中测量所有身体关节的系统更高效地处理图像数据。为进一步帮 助处理效率,捕捉图像数据的捕捉设备可以将视野分成各较小的区。在这些实施例中,捕捉设备可以独占地聚焦于单个区,或在各连续的帧中在这些较小的区之间循环。聚焦选择身体关节或区可能存在除处理效率以外的其他优点。还可聚焦于关节或区的特定集合以避免接收并处理相冲突的姿势的概率。一旦输出了所选关节的关节位置,这一信息就可被用于各种目的。它可被用于姿势识别(对于由捕捉到的身体部位所作出的姿势)以及与NUI应用所呈现的各对象进行交互。在其他实施例中,例如用户不使用他们的腿,用户可以按“腿控制模式”与ΝΠ应用进行交互,其中用户的手的移动被转换成图像数据以用于控制屏上角色的腿的移动。这些实施例将在以下更详细地解释。最初参考图1A-2,用于实现本发明技术的硬件包括目标识别、分析和跟踪系统10,该系统可用于识别、分析和/或跟踪诸如用户18等人类目标。目标识别、分析和跟踪系统10的各个实施例包括用于执行游戏或其他应用程序的计算环境12。计算环境12可包括硬件组件和/或软件组件,以使计算环境12可用于执行诸如游戏和非游戏应用程序之类的应用程序。在一个实施例中,计算环境12可包括诸如标准化处理器、专用处理器、微处理器之类的处理器,该处理器可执行存储在处理器可读的存储设备上的用于执行此处所描述的过程的指令。系统10还包括捕捉设备20,捕捉设备20用于捕捉与捕捉设备所感测的一个或多个用户和/或对象有关的图像和音频数据。在各个实施例中,捕捉设备20可用于捕捉与一个或多个用户的部分或全部身体移动、姿势和语音相关的信息,该信息由计算环境接收并且用于呈现游戏或其他应用程序的各方面、与这些方面交互和/或控制这些方面。以下更详细地解释计算环境12和捕捉设备20的示例。目标识别、分析和跟踪系统10的各个实施例可连接到具有显示器14的音频/视觉(A/V)设备16。设备16可以例如是可向用户提供游戏或应用视觉和/或音频的电视机、监视器、高清电视机(HDTV)等。例如,计算环境12可包括诸如图形卡之类的视频适配器和/或诸如声卡之类的音频适配器,这些适配器可提供与游戏或其他应用程序相关联的音频/视觉信号。A/V设备16可从计算环境12接收音频/视觉信号,并且随后可向用户18输出与这些音频/视觉信号相关联的游戏或应用程序视觉和/或音频。根据一个实施例,音频/视觉设备16可经由例如S-视频电缆、同轴电缆、HDMI电缆、DVI电缆、VGA电缆、分量视频电缆等连接到计算环境12。在各个实施例中,计算环境12、A/V设备16和捕捉设备20可协作以在显示器14上呈现化身或屏上角色19。在各个实施例中,化身19模仿用户18在现实世界空间中的移动,使得用户18可执行控制化身19在显示器14上的移动和动作的移动和姿势。如下所述,本发明技术的一个方面允许用户移动一组肢体,如他们的手臂,来控制屏上化身19的不同肢体(例如,腿)的移动。在图1A中,在NUI系统中使用捕捉设备20,其中例如,用户18正在滚动和控制具有呈现在显示器14上的各种菜单选项的用户界面21。在图1A中,计算环境12和捕捉设备20可用于识别和分析用户上半身的移动和姿势,并且此类移动和姿势可被解释为对用户界面的控制。在这样的实施例中,如下所述,只跟踪用户的上半身的移动。图1B示出另一实施例,其中用户18正坐在椅子23中玩网球游戏应用。图1B示出了类似的实施例,但在该实施例中,用户有不同的残疾,不能使用他的全部肢体。在图1B中,用户在轮椅中,不使用他的腿。在图1B和IC中,计算环境12和捕捉设备20可用于识别和分析用户上半身的移动和姿势,并且此类移动和姿势可被解释为游戏控制或影响游戏空间中的化身19的动作的动作。图1A-1C的实施例是可在计算环境12上运行的许多不同应用中的两个,并且在计算环境12上运行的应用可以是各种其他游戏和非游戏应用。图1A-1C包括静态的背景对象23,如椅子和植物。这些对象是场景(即,捕捉设备20所捕捉的区域)内的对象,但是不逐帧改变。除了所示的椅子和植物,静态对象可以是捕捉设备20中的图像相机拾取的任何对象。场景内的附加静态对象可包括任何墙、地板、天花板、窗、I]、墙面装饰等。系统10及其组件的合适的示例在以下共同待审的专利申请中找到,这些专利申请全部特此通过引用结合于此于2009年5月29日提交的名称为“Environment And/OrTarget Segmentation (环境和/或目标分割)”的美国专利申请序列号No. 12/475, 094 ;于 2009 年 7 月 29 日提交的名称为 “Auto Generating a Visual Representation (自动生成视觉表示)”的美国专利申请序列号No. 12/511,850 ;于2009年5月29日提交的名称为“Gesture Tool (姿势工具)”的美国专利申请序列号No. 12/474, 655 ;于2009年10月21日提交的名称为“Pose Tracking Pipeline (姿态跟踪流水线)”的美国专利申请序列号 No. 12/603,437 ;于 2009 年 5 月 29 日提交的名称为 “Device for Identifying andTracking Multiple Humans Over Time (用于随时间标识和跟踪多个人类的设备)”的美国专利申请序列号No. 12/475,308 ;于2009年10月7日提交的名称为“Human TrackingSystem (人类跟踪系统)”的美国专利申请序列号No. 12/575,388 ;于2009年4月13日提交的名称为“Gesture Recognizer System Architecture (姿势识别器系统架构)”的美国专利申请序列号No. 12/422,661 ;于2009年2月23日提交的名称为“Standard Gestures(标准姿势)”的美国专利申请序列号No. 12/391,150 ;以及于2009年5月29日提交的名称为“Gesture Tool (姿势工具)”的美国专利申请序列号No. 12/474,655。图2示出可在目标识别、分析和跟踪系统10中使用的捕捉设备20的一个示例实施例。在一个示例实施例中,捕捉设备20可被配置成经由任何合适的技术来捕捉具有可包括深度值的深度图像的视频,这些技术包括例如飞行时间、结构化光、立体图像等。根据一个实施例,捕捉设备20可以将所计算的深度信息组织成“Z层”,即与从深度相机沿其视线延伸的Z轴相垂直的层。X和Y轴可被定义为与Z轴垂直。Y轴可以是垂直的,而X轴可以是水平的。X、Y和Z轴一起定义捕捉设备20所捕捉的3-D真实世界空间。如图2所示,捕捉设备20可包括图像相机组件22。根据一个示例实施例,图像相机组件22可以是可捕捉场景的深度图像的深度相机。深度图像可以包括所捕捉场景的二维(2-D)像素区域,其中2-D像素区域中的每个像素都可表示深度值,比如例如所捕捉场景中的对象距相机的以厘米、毫米等为单位的长度或距离。如图2所示,根据一个示例实施例,图像相机组件22可包括可用于捕捉场景的深度图像的IR光组件24、三维(3-D)相机26,以及RGB相机28。例如,在飞行时间分析中,捕捉设备20的IR光组件24可将红外光发射到场景上,并且随后可使用传感器(未示出)、用例如3-D相机26和/或RGB相机28来检测从场景中的一个或多个目标和物体的表面反向散射的光。在一些实施例中,可以使用脉冲红外光,使得可以测量出射光脉冲与相应入射光脉冲之间的时间,并且将其用于确定从捕捉设备20到场景中的目标或物体上的特定位置的物理距离。另外,在其他示例实施例中,可以将出射光波的相位与入射光波的相位相比较来确定相移。该相移然后可以用于确定从捕获设备20到目标或物体上的特定位置的物理距离。根据另一示例性实施例,可以使用飞行时间分析来通过经由包括例如快门式光脉冲成像在内的各种技术分析反射光束随时间的强度来间接地确定从捕捉设备20到目标或物体上的特定位置的物理距离。在另一示例实施例中,捕捉设备20可以使用结构化光来捕捉深度信息。在这样的分析中,图案化光(即被显示成诸如网格图案或条纹图案的已知图案的光)可以经由例如IR光组件24被投射到场景上。在落到场景中的一个或多个目标或物体的表面上以后,作为响应,图案可以变为变形的。图案的这样的变形可以被例如3-D相机26和/或RGB相机28捕捉,并且随后可被分析以确定从捕捉设备20到目标或物体上的特定位置的物理距离。根据另一实施例,捕捉设备20可包括可以从不同的角度观察场景的两个或更多个在物理上分开的相机,以获取可以被解析以生成深度信息的视觉立体数据。在另一示例实施例中,捕捉设备20可使用点云数据(point cloud data)和目标数字化技术来检测用户的特征。捕捉设备20还可包括话筒30。话筒30可包括可接收声音并将其转换成电信号的变换器或传感器。根据一个实施例,话筒30可用于减少目标识别、分析和跟踪系统10中的捕捉设备20与计算环境12之间的反馈。另外,话筒30可用于接收也可由用户提供的音频信号,以控制可由计算环境12执行的诸如游戏应用、非游戏应用等之类的应用。在一示例实施例中,捕捉设备20还可包括能与图像相机组件22通信的处理器32。处理器32可包括可执行指令的标准处理器、专用处理器、微处理器等,这些指令可包括用于接收深度图像的指令、用于确定合适的目标是否可包括在深度图像中的指令、用于将合适的目标转换成该目标的骨架表示或模型的指令、或任何其他合适的指令。捕捉设备20还可包括存储器组件34,存储器组件34可存储可由处理器32执行的指令、3-D相机或RGB相机捕捉到的图像或图像的帧、或任何其他合适的信息、图像等。根据一示例实施例,存储器组件34可包括随机存取存储器(RAM)、只读存储器(ROM)、高速缓存、闪存、硬盘、或任何其他合适的存储组件。如图2所示,在一个实施例中,存储器组件34可以是与图像相机组件22和处理器32通信的分开组件。根据另一个实施例,可将存储器组件34集成到处理器32和/或图像相机组件22中。如图2所示,捕捉设备20可经由通信链路36与计算环境12通信。通信链路36可以是包括例如USB连接、火线连接、以太网电缆连接等有线连接和/或诸如无线802. lib、802. llg、802.1la或802.1ln连接等无线连接。根据一个实施例,计算环境12可以经由通信链路36向捕捉设备20提供时钟,该时钟可用于确定何时捕捉例如场景。另外,捕捉设备20可提供由例如3-D照相机26和/或RGB照相机28所捕捉的深度信息和图像。有了这些设备的帮助,可开发根据本发明的技术的部分骨架模型,经由通信链路36将所得数据提供给计算环境12。计算环境12还可包括具有用于建议候选身体部位的身体部位建议系统194和用于将候选身体部位协调成整个或部分骨架的骨架解析系统196的肢体标识引擎192。在其他实施例中,包括身体部位建议系统194和骨架解析系统的肢体标识引擎192可以部分或整体在捕捉设备20内运行。以下阐明包括身体部位建议系统194和骨架解析系统196的肢体标识引擎192的进一步细节。现在将参考图3的高级流程图来描述本发明技术的各实施例的操作。在步骤280,启动系统10。在步骤282,捕捉设备20捕捉图像数据。在步骤286,身体部位建议系统194建议候选身体部位位置。在若干可能的实施例中的一个实施例中,身体部位建议系统运行Exemplar并生成质心。Exemplar和质心生成是用于接收二维深度纹理图像并生成与正确地标识该图像内的特定身体部位有关的概率的已知技术。如下所述,在各实施例中,生成用户的头部、肩部、肘部、腕部和手部的质心。然而,可以理解,在其他实施例中,可生成下半身体部位的关节、整个身体、或所选关节的质心。同样,注意,Exemplar和质心生成只是用于标识图像中的身体部位的一个示例,并且可以理解,各种各样的其他方法中的任何一种方法可被用于这一目的。可以使用其他无状态技术。在其他实施例中,如下所述,可另外使用有状态技术,包括例如磁性。身体部位建议系统步骤286可由捕捉设备20或计算环境12中的图形处理单元(GPU)执行。在其他实施例中,这一步骤的各部分可由捕捉设备20或计算环境12中的中央处理单元(CPU)或者由专用硬件执行。在步骤292,如下所述,骨架解析系统196可以标识并跟踪上半身的关节。在步骤296,骨架解析系统196返回所标识的肢体位置,以供用来控制计算环境12或在计算环境12上运行的应用。在各实施例中,肢体标识引擎192的骨架解析系统196可以返回与用户的头部、肩部、肘部、腕部、以及手部有关的信息。在其他实施例中,所返回的信息可只包括这些关节中的一些、诸如来自下半身的关节或者身体的左侧或右侧的关节等其他关节、或全身关节。现在将参考附图4A和4B来解释肢体标识引擎192的身体部位建议系统194和骨架解析系统196的更详细解释。一般而言,肢体标识引擎192标识头部、肩部、以及肢体,以及在其他实施例中可能标识其他身体部位。引擎192使用质心(或来自其他身体部位建议系统的候选身体部位位置)和深度图数据,并返回具有一对应的置信度的玩家关节位置的位置。在步骤304,捕捉设备20捕捉下一帧的FOV的图像数据。在各实施例中,帧速率可以是30Hz,但在其他实施例中,帧速率可以更高或更低。在步骤308,肢体标识引擎192首先找出头部三角。一般而言,候选头部三角可以从来自由Exemplar从图像数据中标识的一组头部和肩部质心的一个头部质心连接到两个肩部质心来形成。图10示出从候选质心502、504、以及506形成的头部三角500的示例。现在将参考附图5A和5B的流程图来解释找出头部三角的步骤308的更详细解释。一般地,Exemplar为用户提供强的头部和肩部信号,并且该信号在一个头部质心和两个肩部质心的模式可被一起发现时变得更强。头部质心可来自除了 Exemplar/质心之外的任意数量的源,包括例如头部磁性和简单模式匹配。在步骤360,肢体标识引擎192收集最新近的帧中的新头部和肩部质心。新头部和肩部质心被用来更新在先前帧中找到的现有(或“旧的”)质心。可能存在遮挡,使得并非在每一帧中都看到所有质心。旧质心被用来携带来自对给定区的先前处理的候选身体部位位置的知识。在步骤364,新头部和肩部质心被用来更新旧质心,因为所发现的靠近旧质心的任何新质心可被归并到现有旧质心中。在步骤366,添加不靠近旧质心的任何新质心来作为新的旧质心。旧质心和新质心可造成多个候选的头部三角。在步骤368,可组成头部三角。在头部和肩部可见的情况下,可以从以上描述的源中的一个或多个来组成头部三角。然而,可能发生以下情况用户的一个或多个关节被遮挡,如在一个玩家站在另一玩家前面的情况。在头部或肩部关节中的一个或多个被暂时遮挡的情况下,那里可能不存在新质心(来自新深度图)。结果,标记了位置的旧质心可被更新或不被更新。结果,该旧质心可以做以下两件事情之一。第一,旧质心可持续,其位置不改变(等待遮挡结束)。第二,旧质心可错误地跳到新的邻近位置(例如,左肩被遮挡,但长椅的左上边看起来像肩部并且相当近,旧质心跳到那里)。为了覆盖这些情况,可以构建额外的候选三角,其中该三角的顶点中的一个或多个忽略该旧质心。并不知道这三个关节中的哪一个被遮挡,所以如下所述,可提交许多可能的二角以供评估。在某些实例中,一个关节可能被遮挡。例如,左肩可能被遮挡但头部和右肩是可见的(但是同样,尚不知是左肩被遮挡)。头部和右肩也可能移动过,例如,平均向右移动了3mm。在这种情况下,将用左肩也向右移动了 3mm来构造额外的候选三角(而非将左肩拖动至其先前的位置或错误地跳至新的地方),从而即使各关节中的一个在一段时间是不可见的也保持了三角形状(尤其是随着时间推移)。在另一示例中,头部被例如另一玩家的手遮挡,但两个肩部是可见的。在这种情况下,如果肩部移动,则可使用新的肩部位置来创建额外的候选三角,但其中头部移动了与肩部的平均位移相同的位移。在一些情况下,两个关节可能被遮挡。在三个关节中只有一个可见的情况下,则其他两个可如上所述地“拖行”(即,在与单个可见关节相同的方向上移动相同量)。如果三个关节中没有一个是可见的(所有三个都被遮挡),则可创建备用的候选三角,它只是呆在原地。在一个玩家走到另一玩家前面从而整个遮挡后面玩家时这是有用的,后面玩家的头部三角在被丢弃之前被允许在某一时间量内悬浮、在原地。例如,它可呆在原地8秒钟,但在其他实施例中,它可保持得更长或更短。另一方面,如果遮挡在该时间耗尽之前结束,则三角将处于正确的位置并且可回复到后面玩家上。这有时比重新发现后面玩家作为“新”玩家更合乎需要,因为玩家的身份得到了维持。以下描述用于对头部三角进行评估的被称为头部三角轨迹和突出性的打分子例程。这一子例程对照图像中的同一像素(X,Y)位置处的深度值来测试样本点(包括它们的预期深度(即Z)值),并且被设计成使得它将选择所建议的各三角中的最佳地适合深度图的三角,即使该三角碰巧被最大地遮挡(或甚至完全遮挡)。包括上述额外三角确保了正确的三角被建议,即使旧质心暂时不正确、不见了,等等。在步骤369,可由打分子例程来评估头部三角。肢体标识引擎368的目标是标识其实际上是FOV中的一个或多个用户的头部和肩部的正确指示的旧质心的头部三角。肢体标识引擎192将通过经由连接头部旧质心与左肩和右肩旧质心以产生许多三角来开始。这些三角中的每一个形成了候选头部三角。这些三角可以是或不是给定用户的头部和肩部。随后通过执行多个打分子例程来评估这些候选头部三角中的每一个。打分子例程在候选头部三角上运行以标识最佳(B卩,最高得分的)头部三角。现在将参考图6的流程图来更详细地解释步骤368中的打分子例程的进一步细节。在步骤390,第一打分子例程可以测量 候选三角中的两个肩部质心之间的距离是否低于左肩和右肩之间的最小间隔或超过最大间隔。例如,已知人类具有左肩和右肩之间的最大肩宽是大约80cm。本发明系统可以向这一数据加上另外的缓冲。如果两个候选肩部质心超过该最大值,则候选数据从候选中移除。在步骤394,另一打分子例程可以测量头部是否低于肩部之间的线以上的最小间隔或超过最大间隔。同样,这一尺度可以具有已知的最大值和最小值。本发明系统可以向这一数据加上某一另外的缓冲。如果候选头部三角超出最大值或低于最小值,则该候选被排除。类似于步骤390和394的打分例程的其他示例包括以下。肩部中心到头部质心向量方向当从肩部中心到头部中心的向量指向不利的方向(例如,向下)时,这可造成对该三角的分数的罚分,或(在过大的情况下)造成该三角被丢弃。左肩和右肩之间的向量当左肩和右肩之间的向量指向不利的方向(例如,与预期方向相反)时,这可造成对该三角的分数的罚分,或(在过大的情况下)造成该三角被丢弃。从头部到左/右肩的距离的差在从头部到任一肩部的两个距离变得越来越不同时,这可造成对该三角的分数的罚分,或者(在过大的情况下)造成该三角被丢弃。旧质心之间的平均距离如果这三个旧质心之间的平均距离(或换言之,该头部三角的边长度)非常小或非常大,则这可造成对该三角的分数的罚分,或者(在过大的情况下)造成该三角被丢弃。在这一子例程或以上子例程中的任一个中,如果作为子例程分数的结果,候选三角被丢弃,则无需对该候选执行进一步的子例程测试。可以使用其他打分子例程。对候选头部三角进行打分的重要打分子例程是轨迹和突出性步骤402和406。轨迹步骤402涉及沿三条线取轨迹样本,每一轨迹样本始于候选三角中的肩部之间的线的中心并去往该三角的三个顶点。例如,图10示出了用户18上的头部样本轨迹510。沿轨迹样本510测量各像素,并且如果深度值是非预期的(即,用户在3-D真实世界中的深度的表示,如来自图像相机组件22的深度数据所指示的),则候选头部三角被罚分。尽管轨迹样本的以上示例涉及沿关节之间的线展开的样本,但轨迹样本可以是对于大量用户而言都落在身体的内部并且均匀地占据内部空间的任何样本。在各实施例中,样本可填充人的最小轮廓。在各实施例中,取决于候选头部三角的定向或其他候选特征,这些样本的布局可以剧烈地变化。对于轨迹样本,良好的Z匹配(其中预期深度值和与该屏幕X,Y位置处的实际深度值是相似的)得到奖励,而较差的Z匹配得到罚分。匹配的密切度/失配的严重性可影响罚分/奖励的量,并且可不同地 对正面失配对负面失配进行打分。对于匹配,密切匹配得分高于弱匹配。基于差的符号来不同地对待剧烈的失配如果深度图样本比预期的更远,则这是一个‘突出’样本并招致严厉罚分。如果深度图样本比预期的更近,则这是一个‘遮挡’样本并招致轻微罚分。在某些实施例中,所预期的Z值被简单地内插在候选身体部位位置的深度之间。在其他实施例中,调整所预期的Z值来补偿常见的非线性身体形状,诸如下巴和脸相对于颈和肩的突出。在以骨架的其他部位开始的其他实施例中,可对所预期的Z值作出类似的内插和调整。在步骤406,突出性子例程通过在给定候选头部三角的三个点中的每一个周围的一定距离处定义多个突出性样本(图10中的512)来操作。在一些实施例中,这些样本可以采取该三角的各点上方的弧的形状。因为用户的体型可能不同,所以在肩部周围形成的突出性样本512必须在足够大的半径处形成,以确保他们处于最大的(即,体型最大的)可能用户的肩部之外,有时相对于头部三角的大小或其他候选特征。基于以下观察儿童的头部在比例上大于成人的头部,这一大小调整可被应用于头部周围的样本的半径的较少程度。尽管如此,突出性样本512被定位在候选三角的头部位置周围的一定距离处,以确保他们在用户可能的最大头部之外。对于高得分的候选头部三角,与轨迹样本510形成对比,所有突出性样本512的深度值应当比用户18更深(B卩,在Z方向上更远)。对于突出性样本,良好的Z匹配造成罚分,不好的z匹配造成奖励,并且正面失配对负面失配可被不同地打分。如果深度图值接近预期值,则这造成罚分。如果深度图值比预期值更远,则这是一个‘突出’的样本并造成奖励。并且如果深度图样本比预期的更近,则这是一个‘遮挡’样本并招致轻微罚分。在步骤390-406的各子例程的分数被总计以提供总得分头部三角。打分子例程中的一些在该总和中的权重可以比其他子例程更重,如步骤402和406的轨迹和突出性测试。可以理解,在其他实施例中,不同的打分子例程可具有不同的权重。此外,其他打分子例程可以用作图6中示出的打分子例程的补充或替换,以评估候选头部三角实际上确实表示FOV中的用户的头部和肩部。现在返回图5A,一旦标识了得分靠前的候选头部三角,则这些三角被映射到现有“活动”、“不活动”以及“潜在”用户。具体而言,视野中的已被肯定地标识为人(与椅子或人体模型形成对比)的用户被分类成活动用户或不活动用户。该系统通过检测随时间的手移动来区分潜在用户与可能看起来像人的物体。在各实施例中,给定处理约束,本发明系统可以只跟踪视野中的两个用户的手移动(如下所述)。在这样的实施例中,可基于任何数量的准则来选择两个活动玩家,如哪些潜在玩家被通过类似人的手移动而首先确认为人。作为替换方案,可由该系统中的另一组件来选择活动玩家,如所协调的骨架数据的最终使用者。其余所标识的用户是不活动的用户。跟踪活动用户的手移动,而不跟踪不活动用户的手移动。在其他实施例中,超过两个用户(或所有用户)可被认为是活动的,以便跟踪他们的手移动。可发生以下情况深度相机检测到看起来(作为肢体ID引擎所进行的处理的结果)在视野中包含先前未标识的新的人的图像。可将在这种情况下指示的用户认为是潜在用户。在多个帧中跟踪潜在用户的手移动,直至他们可被肯定地标识为人为止。此时,状态从潜在用户切换到活动用户或不活动用户。在步骤370,对于每一活动玩家,将得分靠前的候选三角映射到现有活动玩家。可基于活动玩家的先前巾贞头部三角来将这些三角映射到该活动玩家,这些三角的大小或距先前帧的位置不可能显著地改变。在步骤372,距在步骤370映射的三角过近的任何候选三角被从候选中丢弃,因为两个用户在同一帧中不能占据基本上同一空间。如果存在任何其他先前帧活动用户,则该过程随后在步骤373中重复。步骤370和372可具体包括以下步骤。对于每一先前帧玩家,对照该玩家来测试每一候选三角。随后,应用与该三角形状变化的程度成比例的罚分。接着,应用与该三角(或其顶点)移动得有多远成比例的罚分(罚分可以是线性或非线性的)。在此也可考虑各点的运动预测(动量)。随后,取具有最佳分数的三角。如果分数高于阈值,则将该三角分配给先前帧玩家并丢弃邻近的所有其他候选三角。对每一其他先前帧玩家重复以上步骤。在其他实施例中,可使用不同的打分准则来将候选三角与先前帧的活动玩家的三角进行匹配。在步骤374,对于每一不活动玩家,将得分靠前的候选三角映射到现有不活动玩家。可基于不活动玩家的先前帧头部将三角映射到视野中的该不活动玩家。在步骤376,距在步骤374映射的三角过近的任何候选三角被从候选中丢弃。如果存在任何其他先前帧不活动用户,则该过程随后在步骤377中重复。步骤374和376的进一步细节与在前一段落中描述的一样。类似地,在步骤378,对于每一潜在玩家,将得分靠前的候选三角映射到所标识的潜在玩家。可基于潜在玩家的先前帧头部三角(如果标识了的话)或标识潜在玩家位置的其他已知方法来将三角映射到视野中的该潜在玩家。在步骤380,距在步骤378映射的三角过近的任何候选三角被丢弃。如果存在任何其他先前帧潜在用户,则该过程随后在步骤381中重复。步骤378和380的进一步细节与在前一段落中描述的一样。在步骤382 (图5B),肢体标识引擎192检查是否剩下了尚未被映射到用户或尚未被丢弃的任何良好的候选三角。如果是,则这些剩下的良好候选三角可被解释为属于进入视野的新用户。在这种情况下,在步骤384,剩下的头部三角被分配给该新用户,并且该新用户被称为潜在用户。随后如上所述,在连续的帧中跟踪该潜在用户的手移动以寻找手移动。再次参考图4A,在步骤308中标识了头部三角之后,在步骤310,肢体标识引擎192找出手部建议。对所有活动用户和潜在用户执行这些操作。在各实施例中,不跟踪不活动玩家的手部建议,但在其他实施例中可以跟踪。对活动、不活动、以及潜在用户,跟踪头部三角的移动。在各实施例中,可通过各种方法及方法组合来找出手部建议。第一方法是使用具有被正确地标识为手的高概率的质心。该系统可以使用多个这样的手部建议,如每一侧7个(每左手7个建议以及每右手7个建议)除在给定一侧所选择的质心手部建议之外,Exemplar有时可能混淆哪只手是哪只。因此,可以取附加数量的候选,如再4个,来用于相关联的肩部的相对一侧的手部质心。可以理解,在其他实施例中,可以使用多于或少于这些数量的手部建议。收集手部建议的第二方法是通过称为磁性的技术。磁性涉及将骨架特征(诸如手)的位置从先前的一个或多个帧“咬合”到新的深度图的概念。例如,如果在先前的帧中为用户标识了左手且该手是孤立的(未触碰任何东西),则磁性可使用新的深度图来准确地更新该手在当前帧中的位置。另外,在手移动的情况下,跟踪该手在两个或更多先前帧期间的移动可提供对其在新的帧中的位置的良好估计。这一预测位置可被当场用作手部建议;作为补充或替换,可使用磁性使这一预测位置咬合到当前深度图上,以产生更好地匹配当前帧的另一手部建议。在各实施例中,如下所述,肢体标识引擎192可以通过每玩家每侧的磁性(对于每一玩家的左手的3个建议以及对于每一玩家的右手的3个建议)基于各起始点来产生三个手部建议。在各实施例中,可以理解,质心和磁性中的一个或另一个可以用作彼此的替换。此外,在其他实施例中,可以使用用于找出手部建议的其他技术。通过磁性找出手部建议的一个特殊情况适用于检查前臂沿其轴朝向收的移动。在这种情况下,磁性可使用户的手咬合到他们的前臂的中央,这是不合乎需要的。为了准确地处理这种情况,该系统可以生成另一手部建议,其中手部位置沿前臂向下移动了一定距离,例如用户的前臂长度的15%,并随后使用磁性来进行咬合。在沿前臂的轴运动的情况下,这将确保手部建议之一被正确地定位。磁性通过将身体部位建议的位置‘咬合’到深度图而对它进行了改进。这对于终止关节(如,手部、脚部、以及头部)而言最有用。在各实施例中,这涉及搜索深度图中的邻近像素,以寻找(在3D中)最接近该建议的位置的像素。一旦找到这一“最接近的点”,则该点可被用作经改进的手部建议。然而,该点通常将处于感兴趣的特征(例如手)的边缘而非在其中心(这将是更合乎需要的)。其他实施例随后可进一步改进手部建议,通过搜索(在3D中)落入上述“最接近的点”的特定距离内的邻居像素。这一距离可被设定成与该身体部位(例如手)的预期直径大约匹配。随后,该“最接近的点”的这一距离内的像素中的一些或全部的位置可被平均,以产生手部建议的进一步改进的位置。在各实施例中,如果不能找到连接该“最接近的点”与对这一平均值有贡献的像素中的一些的平滑路径,则该作出贡献的像素可被拒绝,但在各实施例中这一步骤可被省略。—旦在步骤310根据各种方法找出了手部建议,则在步骤312对它们进行评估。如头部三角一样,可以通过使得各质心和磁性候选手部建议运行通过各打分子例程来评估手部建议。现在参考图7的流程图来更详细地解释这些子例程。在步骤410,可以运行检查靠近手部建议的像素运动的打分子例程。这一测试检测手部建议的附近的像素“移动”得有多快。在各实施例中,这一运动检测技术可被用来检测其他身体部位建议的运动,而非只是手。视野可通过笛卡尔坐标系来参照,其中Z轴是笔直的来自深度照相机20的轴而X-Y平面与Z轴垂直。在给定像素位置处的深度值在一个帧与接下来的帧之间进行比较时,在X-Y平面中的移动显得是该像素位置处的剧烈/突然的深度变化。经受这样的剧烈Z变化的(各位置处的)像素的数量给出了在手部建议的附近存在多少X-Y移动的指示。在Z方向上的移动显得是这些像素中的净的正或负的向前或向后平均移动。只有靠近手部建议位置(X-Y平面中)的其深度值(在先前帧和在该新帧中)接近该手部建议的深度的像素应当被考虑。如果这些像素的Z位移(被平均在一起)都向前或向后移动,则这是手在Z方向上的一般的空间一致的运动的指示。并且在这种情况下,运动的确切速度是直接知道的。随后可组合X-Y移动和Z移动,以指示X、Y和Z手运动的总量,这随后可被计入该手部建议的分数内(以及构建在这一手部建议上的任何手臂假设的分数)。一般而言,手部建议附近的XYZ运动将往往指示该手部建议属于活动生命而非诸如家具等没有生命的物体,并且在步骤410,这将造成该手部建议的更高分数。在各实施例中,这一分数可以对潜在玩家加权得更重,其中该系统正尝试将他确认为人类或丢弃为非人类。在步骤416,肢体标识引擎192可以运行另一打分子例程,它检查所建议的手从所确定的最终先前帧位置到该建议所指位置跳了有多远。较大的跳跃往往指示当前候选不是手并相应地对分数进行降低。罚分在此处可以是线性的或非线性的。对于由Exemplar生成的手部建议,在步骤420,肢体标识弓I擎192还可使用给定手部建议的质心置信度。高的质心置信度值将往往增加该手部建议的分数。在步骤424,肢体标识引擎192可以运行检查手部建议距对应的肩部的距离的打分子例程。如果距肩部的距离长于肩部与手部之间的可能距离,则相应地对分数进行罚分。肩-到-手的距离的这一最大范围也可根据所估计的玩家体型来伸缩,这可来自头部-肩部三角或来自该玩家的手臂长度,随时间衰减。在步骤428,结合步骤410的弱像素运动分数,另一打分子例程可以检查手部建议在先前帧中是否未被成功跟踪。这一子例程基于以下事实如果手在先前帧上未被跟踪,则只应考虑满足或超过运动分数阈值的手部建议。原因是看起来像手臂或手的非移动深度特征(如椅子的扶手)较不可能成功;手必须移动(而家具不会移动)才能开始跟踪;但一旦它移动,它可以停止移动并仍被跟踪。如下所述,给定由头部三角匹配所标识的肩部的已知位置,以及给定手部候选,计算各种可能的肘部位置。如下所述,上述手部打分子例程中的任一个可以对所找到的手部/肘部组合中的每一个来运行。然而,由于上述手部打分子例程中没有一个依赖于肘部的位置,所以从处理观点来看,在检查各肘部位置之前执行这些子例程更加高效。来自图7中的打分子例程中的每一个的分数可被总计并存储以供如下所述地使用。再次参考图4A,在步骤318,对于每一手部建议,测试多个肘部位置,并且每一肘部位置的手、肘、以及肩被打分以提供完整的手臂假设。可能的肘部位置的数量可以变化并且可例如在10和100之间,但在其他实施例中,它可以大于或小于这一范围。肘部位置的数量也可动态地改变。对于手部建议和固定肩部,选择肘部位置并且在肘部处于该位置的情况下对总手臂假设进行打分,选择下一肘部位置并且对总手臂假设进行打分,以此类推,直至测试了所需数量的肘部位置并对手臂假设进行可打分为止。或者,可以动态地确定手臂假设的数量,以最大程度地使用可用计算时间。这在步骤316之后对其余的每一手部建议执行,以确定各手臂假设的分数。一般而言,给定手部建议和已知的肩部位置,可能的肘部位置被限于沿着一个圆。该圆被如下定义通过取两个点(肩部和手部)、以及从先前帧中知道的上臂和前臂的长度(或估计,如果这一数据不可用的话)、并随后在数学上计算在给定这些约束的情况下肘部肯定处在其上的圆(圆心X、1、Z以及半径)。这一问题具有公知的解析解;一般而言,它是描述距点I距离为Dl且距点2距离为D2的所有点的圆。只要手部和肩部之间的距离小于D1+D2,就存在有效的圆。可以在所定义的圆上选择候选肘部位置。然而,也可以随机扰动这些位置。这是因为上臂和前臂长度可能不正确或肩部/手部位置可能接近但不精确。可以理解,可以通过其他方法找出候选肘部位置,包括例如根据肘部质心。在其他实施例中,可为肘部位置选择完全随机的点,可以使用先前帧肘部位置,或者可以使用动量投影肘部位置。这些预测也可被扰动(被四处移动),并且可在带不同扰动的情况下被使用不止一次。图8呈现了可对每一手部建议的每一肘部位置运行的打分子例程的进一步细节。在步骤430,肢体标识引擎192可以测量由当前肘部位置和手部建议给出的上臂和前臂的长度。在上臂和前臂的组合长度太大或太小的情况下,该肘部位置的分数被罚分。在步骤434,对于该手臂假设,肢体标识引擎192可以运行检查上臂长度对上臂和前臂的长度之和的比例(而非检查总长度)的子例程。在人体中,这一比例普遍将几乎在.45和.52之间。该范围之外的任何肘部位置可被罚分,其中罚分与该预期范围之外的侵入成比例(但不必是线性的)。一般地,这些打分函数以及本文描述的其他打分函数可以是连续且可微的。在步骤436,可以运行测试给定手臂假设在运动学上是否有效的打分子例程。gp,给定人的上臂和前臂的运动的已知范围以及手臂对躯干的可能定向,人能否有效地具有给定手臂假设中的关节位置。如果否,则手臂假设可被罚分或移除。在各实施例中,在运动学上有效的打分子例程可通过将人在3-D真实世界空间中的位置转换和旋转至人的躯干的参照系(独立于真实世界空间)来开始。虽然在其他实施例中该子例程的操作可使用人在真实世界空间中的位置/定向来完成,但先将用户转换成人的躯干的参照系在计算上更容易。在该参照系中,躯干空间的正交基向量可被可视化为+X是从左肩到右肩;+Y是在躯干/脊椎之上;而+Z是从玩家的胸穿出(即,一般是世界空间中的+Z的反向)。同样,该参考系仅作为示例并且在其他实施例中可以不同。此后,对于给定的上臂位置,肢体标识引擎192检查前臂是否位于定义给定上臂位置的前臂的可能位置(方向和角度)的锥形中。使用上述正交基向量,上臂可位于沿着(或在其间)6个正交向量位置(上臂向前、上臂向后、上臂向左、上臂向右、上臂向上和上臂向下)。对于这些上臂的正交方向中的每一个,定义前臂的可能方向的相应锥形是易于指定的且一般是已知的。因为上臂的方向(在假设中)几乎不与这6个正交方向中的一个完全对齐,并且相反常常位于这些方向中的若干之间,所以将与最接近的正交上臂方向相关联的锥形定义混合在一起以产生为上臂位于的特定方向定制的新的锥形。在该混合中,上臂沿着其最密切对齐的轴的锥形将接收较多的权重,而位于上臂的相反方向的轴的锥形将具有O权重。一旦知道了经混合的锥形,则测试前臂来查看它是否位于该锥形内。接着,前臂的方向不落在(有效前臂方向的)经混合的锥形之内的手臂假设可被罚分,或者如果异乎寻常,则可被丢弃。罚分可以是线性的或非线性的。应该理解,存在测试在运动学上有效的手臂位置的其他方法。这些方法包括姿势字典查找、神经网络或任意数量的其他分类技术。在步骤438,可以运行检查当前肘部位置从最后帧中所确定的肘部位置跳了多远的打分子例程。越大的跳跃将被罚分越多。这一罚分可以是线性的或非线性的。在步骤440和444,可以在手臂假设上运行轨迹和突出性子例程并打分。具体而言,参考图11,对于给定手部建议,肘部和已知肩部位置,可在沿上臂和前臂的中心线的半径处定义轨迹样本516。该半径被设置得足够小从而保证即使对于手臂很窄的用户而言样本也处于用户的上臂和前臂之内。一旦定义了轨迹样本,随后检查轨迹样本的深度。如果个别样本具有较差的与深度图的z失配,则该轨迹样本获得较差的分数。可对来自所有样本的分数进行计量以获得所得分数。注意,尽管用户18在图9-11中使一只手臂置于身后,但可为左臂和右臂两者都取得轨迹样本以及下述突出性样本。此外,在这一示例中,在跟踪用户的上半身的情况下,用户18在图9-11中可另选地坐下。类似地,突出性样本520被定义在X-Y平面(与捕捉设备20垂直)中的处于手臂的关节处的圆、半圆、或部分圆中。突出性样本也可位于“轨道”中,如在图11中上臂周围可见的,在这些肢体部分不与Z对齐时,这些“轨道”是在上臂或前臂的两侧的平行线(前臂周围的突出性样本在图11中出于简明而被省略)。所有在圆和轨道上的这些样本,都被展示为离实际关节或连接关节的线某一距离处(在XY平面中)。给定样本的半径必须足够大以使得如果假设是正确的,则样本将全部正好位于玩家的手臂的轮廓的外侧,即使对于非常魁梧的玩家。然而,半径不应再大以便获得最优结果。一旦样本位置在XY中被安排,可在每一采样位置处对观察到的和预期深度值进行比较。随后,如果突出性样本中的任一个指示与假设的深度类似的深度,则对这些样本进行罚分。例如,在图11中,突出性样本520A (在图中被示为被填充的正方形)将围绕上臂和手被罚分。轨迹和突出性测试的各样本的打分可以如以上针对在考虑头部三角时的轨迹和突出性测试所描述的那样。尽管以上实施例共同具有共同讨论的轨迹和突出性操作,但应当注意,在其他实施例中,它们可被单独地和/或分开地使用。例如,一系统可以只使用轨迹样本或只使用突出性样本,来对各身体部位周围的假设进行打分。轨迹和突出性子例程所给出的分数可比图7和8中示出的其他子例程被加权得更高。然而,应当理解,在不同的实施例中,图7和8中的不同子例程可被给予不同的权重。此夕卜,应当理解,图7和8中示出的子例程只是作为示例,并且其他子例程或另选的子例程可用于其他实施例中以评估手部建议和可能的肘部位置。一旦确定了所有手臂假设的分数,就在图4A的步骤322标识具有最高分数的手臂假设。这表示该帧的用户的左臂和右臂(包括手、腕、前臂、以及上臂)的位置的强指示符。在步骤326,通过在所标识的肘部位置的附近移动肘部位置来尝试改进最高得分的手臂建议上的肘部位置。在步骤328,肢体标识引擎192检查具有经改进的肘部位置的手臂假设是否造成更高的手臂位置分数。如果是,则在步骤332,经改进的手臂假设替换先前最高得分的假设。步骤326到332是可任选的并且在其他实施例中可以省略。在步骤336,用户的左臂和右臂的最高得分的手臂位置与某一预定义的阈值置信度值进行比较。在各实施例中,这一阈值可以基于手是否在先前帧上被报告具有置信度、或否、或基于其他因素而变化。现在参考图4B,在步骤340,如果高得分的左臂或右臂低于阈值,则在步骤342不作出置信度报告,并且不返回该帧的该手臂的手臂数据。如果在步骤342作出给定手臂的无置信度报告,则该系统可以不返回这一帧的该手臂的置信度值和数据。在这种情况下,如下所述,该系统可以跳到步骤354以查看是否可以确认或移除任何潜在玩家。如果一只手臂得分高于阈值而另一只不高于阈值,则该系统可返回高于阈值的那只手臂的数据。另一方面,在步骤340,如果两只手臂得分都高于阈值,则步骤346返回上半身的所有关节的位置,包括头部、肩部、肘部、腕部、以及手部。如下所述,这些头部、肩部以及手臂位置被提供给计算环境12以执行各种动作中的任何动作,包括姿势识别和与由在计算环境12上运行的应用在显示器14上呈现的虚拟对象的交互。在步骤350,肢体标识引擎192可任选地尝试改进用户的手的所标识的位置。在步骤350,肢体标识引擎192可以找出并标记沿从肘部到头部的世界空间向量距前臂最远的像素以及在该帧深度图中还连接到手的那些像素。这些像素中的多个或全部随后可被平均在一起以改进用户的手部位置。此外,可基于这些像素沿肘到手向量处于多远处来对它们打分。随后,这一集合中的多个最高得分的像素可被平均以产生平滑的手部末端位置,并且该集合中的多个下一最高得分的像素可被平均以产生平滑的腕部位置。此外,可从这两个位置之间的向量来导出平滑的手部方向。所使用的像素的数量可以基于手部建议的深度、用户的体型的估计、或其他因素。此外,在搜索相连接的像素时可以使用约束半径,这一半径基于张开的手的最大预期半径并针对玩家的体型和手的深度进行了调整。如果找到碰到这一约束半径的正得分的像素,则这是手部末端改进可能失败(溢出到该手后面的某一物体或身体部位中)的证据,并且可在没有置信度的情况下来报告该经改进的手部末端。步骤350在用户的手没有接触其他物体时表现最佳,这通常是手臂具有足够的突出性分数以通过置信度测试的情况。步骤350是任选的并且在其他实施例中可被省略。如上所示,当在帧中标识了尚未与活动或不活动用户关联的良好的头部三角时,这些头部三角被标记为潜在玩家。在步骤354,如下所述,肢体标识引擎192检查这些所标识的潜在玩家是否执行了人类手移动。如果否,则在步骤355,引擎192可以确定是否过去了足够时间或是否需要更多时间来继续搜索手移动。如果已经过去了足够数据而不能够确认来自该潜在玩家的人类手移动,则在步骤356,该潜在玩家可因为是假的而被放弃。在步骤355,如果尚未过去足够时间来得出潜在玩家是否作出人类手移动的结论,则该系统可返回图4A中的步骤304以获得下一数据帧并重复在图4A-8所示出的步骤。在每一帧的结尾,对于每一潜在玩家,肢体标识引擎192尝试确定潜在玩家是否是人类。首先,针对过去的大约15个帧来检查头部和手部跟踪历史。在其他实施例中,可以检查更多或更少的帧。如果该潜在玩家存在于该所选数量的帧中,则可进行以下检查1)在所有这些帧上,头部三角是否被强跟踪,以及2)在所有这些帧上,左手和右手是否被一贯地跟踪,以及3)在这些帧期间,该手是否沿半平滑路径移动了至少最小的净距离,例如15cm,但在其他实施例中这一距离可以更长或更短。如果是,则该玩家随后被认为“验证为人类”并且被升级成活动或不活动。如果自该玩家被首次跟踪以来尚未过去15个帧,但以上约束中的任何一个或多个在早期已被违反,则该潜在玩家可因为不是人类而被丢弃,以允许在下一帧上选择新的潜在玩家。例如,如果在潜在玩家的存在的第5个帧上,不能够跟踪到任一只手,则该潜在玩家可被立即毁坏。某一些其他测试可被用于这一确定中。“最小净距离”测试被设计成使不会运动的背景物体失败。“半平滑路径”测试被设计成使进行几乎任何人类手移动的人类的手通过,但几乎总是使处于随机的混乱的运动(通常是由于相机噪声)的背景物体失败。当以(大约)30Hz观察时,人类手运动几乎总是半平滑的,即使在该人正尝试进行尽可能快且剧烈的移动的情况下。存在各种各样的方式来设计该半平滑测试。作为示例,一个这样的实施例如下工作。如果对于一只手存在15个帧的位置历史,则可以考虑中间的11个帧。对于每一个帧,可以如下重构另选的位置1)只基于前两个帧中的位置,使用简单的线性投影来预测该手的位置;2)基于在后两个帧中的位置,使用简单的线性投影来逆向预测该手的位置;3)取这两个预测的平均;4)将该平均与在该帧上观察到的该手的位置进行比较。这是这一帧的“误差”。对这11个帧的“误差”进行总计。该手在这11个帧中逐帧行进的距离也被总计。误差总计随后除以所行进的净距离。如果结果高于特定比例(如O. 7),则该测试失败;否贝U,该测试通过。可以理解,可以使用其他方法来确定潜在玩家是否被验证为人类并被升级成活动或不活动玩家。如果如上所述在步骤354潜在玩家被验证为人类,则这一潜在玩家在步骤358被升级成不活动或活动玩家。在执行了步骤356或358后,该系统可返回图4A中的步骤304以获得下一数据帧并重复在图4A-8中示出的步骤。以此方式,本发明技术的可以评估从捕捉设备20接收到的每一帧中的数据,并标识该帧中的一个或多个用户的一个或多个关节的骨架位置。例如,如图12所示,肢体标识引擎192可以返回头部522、肩部524a和524b、肘部526a和526b、腕部528a和528b、以及手部530a和530b的位置。图12中所示的各关节的位置只是作为示例,并且在其他示例中它们在任何可能的用户位置中变化。还可理解,只测量用户的关节中的一些具有除处理效率以外的潜在益处。还可聚焦于关节的特定集合以避免接收并处理相冲突的姿势的概率。在确定是否执行了给定姿势时,未跟踪的关节被忽略。在上述实施例中,肢体标识引擎192被用来标识用户的上半身的关节。将理解,可使用相同的技术来发现用户下半身的关节。此外,诸如从中风恢复的用户等一些用户可以只能使用他们身体的左侧或右侧。以上描述的技术也可被用来跟踪用户身体的左侧或右侦U。一般而言,可以跟踪任何数量的关节。在其他实施例中,以上描述的本发明系统可被用来跟踪用户身体的所有关节。还可标识出附加的特征,比如手指或脚趾的骨骼和关节,或面部的各个特征,如鼻子和眼睛。只聚焦于用户的身体关节的一部分,本发明系统能够比其中测量所有身体关节的系统更高效地处理图像数据。这可在呈现对象时造成更快的处理和降低的等待时间。作为替换和/或补充,这可允许在给定的帧速率内执行附加处理。这一附加处理可以例如被用来执行更多的打分子例程以进一步确保在每一帧处生成的关节数据的准确度。为进一步帮助处理效率,捕捉图像数据的捕捉设备可以将视野分成各较小的区域(即,区)。例如在图13A和13B中示出了这样的实施例。在图13A中,FOV被分成三个垂直定向的区532a、532b以及532c。作出以下假定用户一般将站在捕捉设备20正前方。如此,要跟踪的大多数移动将处于中心区532b中。在各实施例中,捕捉设备20可以全部聚焦于单个区,如区532b。或者,捕捉设备可以在各连续帧中在各区之间循环,使得在该示例中,每三个帧就从每一区读取一次帧数据。在其他实施例中,捕捉设备可以聚焦于单个区,如中心区532b,但每隔预定数量的帧就周期性地扫描其余区一次。构想了对各区532a、532b以及532c的其他扫描场景。此外,分割成三个区只是作为示例。在其他实施例中,可以是两个区或不止三个区。尽管各区被示为具有清晰的边界,但在其他实施例中,各区可以彼此轻微重叠。作为另一示例,图13B水平地示出了区532a、532b以及532c。对图13B中的各区532a、532b和/或532c的扫描可以根据以上参考图13A所讨论的各示例中的任何示例来进行。尽管图13A和13B示出了二维分割,但这些实施例中的任一个或两者都还可具有作为X-Y的补充或者作为X或Y的替换的深度分量。因而,各区可以是二维或三维的。根据本发明技术的其他方面,在特定区中只允许特定姿势或动作。因而,捕捉设备可以扫描图13B中的所有区,但例如在区532a中,只跟踪用户的头部的姿势和移动。在区532b中,只跟踪用户的膝盖的姿势和移动。并且在区532c中,只跟踪用户的脚的姿势和移动。取决于在计算环境12上运行的应用,如欧洲足球赛,这样的实施例可以是有用的。以上只是示例。可以跟踪任何数量的区中的其他身体部位。在操作中,可以标识虚拟对象何时移动到域真实世界区532a、532b和532c相对应的机器空间位置。随后基于移动的对象所处的区来检索所准许的姿势的集合。姿势识别(以下解释)可以正常进行,但在有限数量的可准许姿势上进行。给定区中允许的姿势可以在计算环境12上运行的应用中定义,或以其他方式存储在计算环境12或捕捉设备20的存储器中。从其他身体部位执行的没有被如此定义的姿势可被忽略,而如果该同一姿势是由从中接受姿势的身体部位的定义内包括的身体部位执行的,则该姿势影响某一相关联的动作。这一实施例被描述为在给定区中只接受某些定义的姿势,取决于在该区中执行的姿势是否针对该区进行了定义。这一实施例还可在FOV未被分成各区的情况下操作。例如,系统10可以在定义了只接受来自它的姿势的某些身体部位的情况下操作。这样的系统简化了识别过程并防止了姿势的重叠。图14示出了姿势识别引擎190的框图,且图15示出了图14的姿势识别引擎190的操作的流程图。在步骤550中,姿势识别引擎190接收姿态信息540。姿态信息可包括与在图像数据中检测到的用户的各身体部位及关节的位置和/或运动有关的各种参数。在步骤554中,姿势识别引擎190分析接收到的姿态信息540,以查看该姿态信息是否匹配存储在姿势库540内的任何预定义的规则542。所存储的规则542描述由姿态信息540所表示的特定位置和/或动力运动何时将被解释为预定义的姿势。在各实施例中,每一个姿势都可以具有不同的、唯一规则或规则集542。每一规则可具有与图12所示的一个或多个身体部位有关的多个参数(关节位置向量、最大/最小位置、位置变化等)。所存储的规则可对每一参数并对图12所示的每一身体部位526到534b定义单个值、值范围、最大值、最小值、或关于该身体部位的参数与该规则所覆盖的姿势的判定无关的指示。规则可以由游戏作者、由游戏平台的主机或由用户本身创建。姿势识别引擎190可输出所标识的姿势和对应于用户的位置/移动与该姿势相对应的概率的置信度水平。具体而言,除定义姿势所需的参数之外,规则还可以包括在姿态信息540将被解释为姿势之前所要求的阈值置信度水平。某些姿势可能作为系统命令或游戏指令具有更大的影响,如此,在姿态被解释为该姿势之前要求较高的置信度水平。姿态信息与存储的规则的参数的比较导致关于姿态信息是否表示姿势的累积置信度水平。一旦确定了关于给定姿态或运动是否满足给定姿势规则的置信度水平,姿势识别引擎190然后就在步骤556确定该置信度水平是否超过关于所考虑的规则的预定阈值。阈值置信度水平可以与考虑中的规则相关联地存储。如果置信度水平低于阈值,则没有检测到姿势(步骤560),并且不采取动作。另一方面,如果置信度水平高于阈值,则确定用户的运动满足所考虑的姿势规则,并且在步骤564,姿势识别引擎190返回所标识的姿势。以上阐明的各实施例提供用于跟踪特定关节和/或跟踪特定区的示例。这样的实施例可用于各种各样的场景中。在图1A所示的一个场景中,用户18正与用户界面21进行交互。在这样的实施例中,该系统只需跟踪用户的头部和手部。在计算环境12上运行的应用被设定为只接收来自特定关节(如头部和手部)的输入,并且因此可以向肢体标识引擎192指示应当跟踪哪些关节或区。在其他实施例中,可以提供ΝΠ系统的一些用户界面,其中用户可以指示要跟踪哪些关节和/或要跟踪哪些区。用户界面将允许用户作出永久设置或临时设置。例如,在用户伤了他或她的右臂并且在一段时间内不能动它的情况下,该系统可被设定成在该段时间内忽略该肢体。在其他实施例中,用户可能如图1C所示坐在轮椅中,或以某一其他方式而有残疾。另一示例是只能使用他身 体的左侧或右侧的中风患者。一般而言,在此,用户可具有对他或她的身体的某些部位的有限使用或控制。在这些情况下,本发明系统可被该用户设定成只识别和跟踪来自特定关节和/或特定区的移动。这可通过姿势或与用户界面的某一其他手动交互来完成。NUI系统通常涉及以有样学样(MSMD)的方式来控制屏上化身19的移动和动画化的用户18。在其中不同残疾用户以MSMD模式来控制化身19的实施例中,则来自一个或多个不活动肢体的输入数据可被忽略,并用预先录制的动画来替换。例如,在其中轮椅用户控制化身来“走过”虚拟场地的场景中,化身的位置运动可以通过上半躯干和头部来引导,并且针对该化身的腿来播放行走动画而非肢体的MSMD映射。在一些实施例中,给定动作或与NUI系统的交互可能需要非工作肢体的运动才能实现。在这样的实施例中,本发明系统允许用户定义的肢体重新映射。即,该系统允许用户用工作肢体来代替非工作肢体,使得用户的工作肢体的移动被映射到化身19的预期肢体上。现在将参考图16的流程图来解释用于实现这一点的一个这样的实施例。在图16中,肢体标识引擎192所返回的手臂数据可被用来对屏上化身的腿进行动画化和控制。在正常的MSMD操作中,用户的一只或两只手臂的移动造成屏上化身的一只或两只手臂的对应移动。然而,可以定义预定义姿势,在该预定义姿势被作出并被识别时,切换到腿部控制模式,其中用户的手臂的移动造成屏上化身的腿部的移动。如果在步骤562姿势识别引擎190检测到这样的姿势,则在564,计算环境12可在腿部控制模式中运行。如果在步骤562没有检测到这样的姿势,则以下描述的步骤568到588可造成正常MSMD操作。在任一情况下,在步骤568中,捕捉设备和/或计算环境接收上半身位置信息,并到步骤570如上所述由肢体标识引擎192计算头部、肩部以及手臂位置。在步骤574,该系统检查它是否在腿部控制模式中运行。如果是,则计算环境12可以将用户的右臂和/或左臂中的手臂关节处理成用户的左腿和/或右腿的腿部关节的3-D真实世界位置。这可以按多种方式来完成。在一个实施例中,用户的手臂在真实空间中的移动可被映射到屏上化身19的腿部,或以其他方式被解释为腿部输入数据。例如,肩部关节可被预定义的数学函数在某一范围的运动上映射到用户的臀部。用户的左臂可被预定义的数学函数在某一范围的运动上映射到用户的膝盖(考虑以下事实肘部在与膝盖移动小腿的方向相反的方向上移动前臂)。并且用户的腕部可被数学函数在某一范围的运动上映射到用户的踝部。在进行了这样的映射后,用户可以例如一致地并以如下方式来移动他的肩部、肘部、以及腕部该方式创建用户的腿部正在走或跑的印象。作为另一示例,轮椅用户可以通过移动他的手臂来模仿踢球动作。该系统将粗略水平的运动映射到化身的骨架并可使用动画混合来允许它显得似乎是腿部运动。可以理解,用户可以用非工作肢体代替工作肢体而不使用上述步骤或通过另选的步骤。在各实施例中,在处于腿部控制模式中时,用户的手臂之一可以控制化身的一条腿,而用户的另一条手臂控制化身的手臂之一。在这样的实施例中,化身的没有被用户控制的那条腿可以简单地作出被控制的腿的镜像移动。因而,在用户移动他的手臂并用左脚迈出一步时,化身可以用对应的右腿步伐来跟随该左腿步伐。在其他实施例中,当处于腿部控制模式中时,用户可以用他在真实世界中的两条手臂来控制化身的两条腿。可以理解,在其他实施例中,可以使用各种其他方法来将手臂关节的位置处理成腿部关节以控制化身的腿。在步骤580,关节位置(是或不是在步骤576中在腿部控制模式中处理的)被提供给计算环境12以供GUI呈现。除了控制化身的腿部的移动之外,用户可以执行在腿部控制模式中可被解释为腿部姿势的某些手臂姿势。在步骤582,该系统检查所识别的腿部姿势。该腿部姿势可由用户在真实世界中的腿来执行(在不处于腿部控制模式的情况下)或由用户的手臂执行(在处于腿部控制模式的情况下)。如果在步骤582姿势识别引擎识别出了这样的姿势,则在步骤584执行相应的动作。无论在步骤582是否识别出了特定腿部姿势,该系统接着在步骤586检查是否执行了被预定义成结束腿部控制模式的某一姿势。如果是,则该系统在步骤588退出腿部控制模式并返回步骤562以再次开始该过程。另一方面,如果在步骤586没有检测到结束腿部控制模式的姿势,则跳过步骤588并且系统返回到步骤562以重复各步骤。图17A示出了可以用于在目标识别、分析和跟踪系统中解释用户的一个或多个位置和运动的计算环境的示例实施例。上文参考图1A-2所描述的诸如计算环境12等计算环境可以是诸如游戏控制台等多媒体控制台600。如图17A所示,多媒体控制台600具有中央处理单元(CPU)601,所述CPU具有一级高速缓存602、二级高速缓存604,以及闪存R0M606。一级高速缓存602和二级高速缓存604临时存储数据,并且因此减少存储器访问周期的数量,由此改进处理速度和吞吐量。CPU601可被提供为具有一个以上的核,并且由此具有附加的一级高速缓存602和二级高速缓存604。闪存R0M606可存储在多媒体控制台600通电时引导过程的初始阶段期间加载的可执行代码。图形处理单元(GPU) 608和视频编码器/视频编解码器(编码器/解码器)614形成用于高速和高分辨率图形处理的视频处理流水线。经由总线从GPU608向视频编码器/视频编解码器614运送数据。视频处理流水线向A/V (音频/视频)端口 640输出数据,用于传输至电视机或其他显示器。存储器控制器610连接到GPU608,以便于处理器对各种类型的存储器612 (诸如,但不限于RAM)的访问。多媒体控制台600包括优选地在模块618上实现的I/O控制器620、系统管理控制器622、音频处理单元623、网络接口控制器624、第一 USB主控制器626、第二 USB主控制器628以及前面板I/O子部件630。USB控制器626和628用作外围控制器642 (I) -642 (2)、无线适配器648、以及外置存储器设备646 (例如,闪存、外置⑶/DVD ROM驱动器、可移动介质等)的主机。网络接口 624和/或无线适配器648提供对网络(例如,因特网、家庭网络等)的访问,并且可以是包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等的各种不同的有线或无线适配器组件中的任何一种。提供系统存储器643来存储在引导过程期间加载的应用数据。提供媒体驱动器644,并且其可包括DVD/CD驱动器、硬盘驱动器,或其他可移动媒体驱动器等。媒体驱动器644可内置或外置于多媒体控制台600。应用数据可经由媒体驱动器644访问,以供多媒体控制台600执行、回放等。媒体驱动器644经由诸如串行ATA总线或其他高速连接(例如IEEE1394)等总线连接到I/O控制器620。系统管理控制器622提供与确保多媒体控制台600的可用性相关的各种服务功能。音频处理单元623和音频编解码器632形成具有高保真度和立体声处理的相应音频处理流水线。音频数据经由通信链路在音频处理单元623与音频编解码器632之间传输。音频处理流水线将数据输出到A/V端口 640,以供外置音频播放器或具有音频能力的设备再现。前面板I/O子部件630支持暴露在多媒体控制台600的外表面上的电源按钮650和弹出按钮652、以及任何LED (发光二极管)或其他指示器的功能。系统供电模块636向多媒体控制台600的组件供电。风扇638冷却多媒体控制台600内的电路。多媒体控制台600内的CPU601、GPU608、存储器控制器610、以及各种其他组件经由一条或多条总线互连,该总线包括串行和并行总线、存储器总线、外围总线、以及使用各种总线体系结构中的任一种的处理器或局部总线。作为示例,这些架构可以包括外围部件互连(PCI)总线、PC1-Express总线等。当多媒体控制台600通电时,应用数据可从系统存储器643加载到存储器612和/或高速缓存602、604中,并且可在CPU601上执行。应用可在导航到多媒体控制台600上可用的不同媒体类型时呈现提供一致的用户体验的图形用户界面。在操作中,媒体驱动器644中所包含的应用和/或其他媒体可从媒体驱动器644启动或播放,以将附加功能提供给多媒体控制台600。多媒体控制台600可通过简单地将该系统连接到电视机或其他显示器而作为独立系统来操作。在该独立模式中,多媒体控制台600允许一个或多个用户与该系统交互、看电影、或听音乐。然而,在通过网络接口 624或无线适配器648可用的宽带连接集成的情况下,多媒体控制台600还可作为更大网络社区中的参与者来操作。当多媒体控制台600通电时,可以保留设定量的硬件资源以供多媒体控制台操作系统作系统使用。这些资源可以包括存储器保留量(例如,16MB)、CPU和GPU周期保留量(例如,5%)、网络带宽保留量(例如,8kbs)等。因为这些资源是在系统引导时保留的,所以所保留的资源从应用的角度而言是不存在的。具体而言,存储器保留量优选地足够大,以包含启动内核、并发系统应用程序和驱动程序。CPU保留量优选地为恒定,使得若所保留的CPU用量不被系统应用使用,则空闲线程将消耗任何未使用的周期。对于GPU保留量,通过使用GPU中断来调度代码以将弹出窗口渲染为覆盖图,从而显示由系统应用生成的轻量消息(例如,弹出窗口)。覆盖图所需的存储器量取决于覆盖区域大小,并且覆盖图优选地与屏幕分辨率成比例缩放。在完整的用户界面被并发系统应用使用的情况下,优选使用独立于应用分辨率的分辨率。定标器可用于设置该分辨率,从而无需改变频率和引起TV重新同步。在多媒体控制台600引导且系统资源被保留之后,执行并发系统应用来提供系统功能。系统功能被封装在上述所保留的系统资源内执行的一组系统应用中。操作系统内核标识出作为系统应用线程而非游戏应用线程的线程。系统应用优选地被调度为在预定时间并以预定时间间隔在CPU601上运行,以便提供对应用而言一致的系统资源视图。调度是为了使在控制台上运行的游戏应用的高速缓存中断最小化。当并发系统应用需要音频时,由于时间敏感性而将音频处理异步地调度给游戏应用。多媒体控制台应用管理器(如下所描述的)在系统应用活动时控制游戏应用的音频级别(例如,静音、衰减)。输入设备(例如,控制器642 (I)和642(2))由游戏应用和系统应用共享。输入设备不是保留资源,而是在系统应用和游戏应用之间切换以使其各自具有设备的焦点。应用管理器优选控制输入流的切换,而无需知道游戏应用的知识,并且驱动器维护关于焦点切换的状态信息。相机26、28和捕捉设备20可为控制台600定义附加输入设备。图17B示出了计算环境720的另一示例实施例,它可以是用来解释目标识别、分析和跟踪系统中的一个或多个位置和运动的、图1A-2中示出的计算环境12。计算系统环境720只是合适的计算环境的一个示例,并且不旨在对当前公开的主题的使用范围或功能提出任何限制。也不应当将计算环境720解释为对示例性操作环境720中所示的任一组件或其组合有任何依赖性或要求。在一些实施例中,各个所示的计算元素可包括被配置成实例化本公开的特定方面的电路。例如,本公开中使用的术语电路可包括被配置成通过固件或开关来执行功能的专用硬件组件。在其他示例实施例中,术语电路可包括通过体现可操作以执行功能的逻辑的软件指令来配置的通用处理单元、存储器等。在电路包括硬件和软件的组合的示例实施例中,实施者可以编写体现逻辑的源代码,且源代码可以被编译为可以由通用处理单元处理的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件组合之间几乎没有差别的地步,因而选择硬件或是软件来实现具体功能是留给实现者的设计选择。更具体地,本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身可被变换成等价的软件进程。由此,对于硬件实现还是软件实现的选择是设计选择之一并留给实现者。在图17B中,计算环境720包括通常包括各种计算机可读介质的计算机741。计算机可读介质可以是能由计算机741访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。系统存储器722包括诸如R0M723和RAM760之类的易失性和/或非易失性存储器形式的计算机存储介质。包含诸如在启动期间帮助在计算机741内的元件之间传输信息的基本例程的基本输入/输出系统724 (BIOS)通常存储在R0M723中。RAM760通常包含处理单元759可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图17B示出了操作系统725、应用程序726、其他程序模块727,以及程序数据728。图17B还包括具有用于高速和高分辨率的图形处理和存储的相关联的视频存储器729的图形处理器单元(GPU) 730。GPU729可通过图形接口 731连接到系统总线721。计算机741也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。只作为示例,图17B示出了读写不可移动非易失性磁性介质的硬盘驱动器738、读写可移动非易失性磁盘754的磁盘驱动器739、以及读写诸如CDROM或其他光学介质之类的可移动的非易失性光盘753的光盘驱动器740。可在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器738通常通过诸如接口 734之类的不可移动存储器接口连接到系统总线721,并且磁盘驱动器739和光盘驱动器740通常通过诸如接口 735之类的可移动存储器接口连接到系统总线721。上面所讨论的并且在图17B中所示出的驱动器以及它们的相关联的计算机存储介质,为计算机741提供了计算机可读的指令、数据结构、程序模块及其他数据的存储。例如,在图17B中,硬盘驱动器738被示为存储了操作系统758、应用程序757,其他程序模块756,以及程序数据755。注意,这些组件可与操作系统725、应用程序726、其他程序模块727和程序数据728相同,也可与它们不同。在此操作系统758、应用程序757、其他程序模块756以及程序数据755被给予了不同的编号,以说明至少它们是不同的副本。用户可通过诸如键盘751和定点设备752 (通常称为鼠标、跟踪球或触摸垫)之类的输入设备将命令和信息输入计算机741。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些以及其他输入设备通常通过耦合到系统总线的用户输入接口 736连接到处理单元759,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构来连接。相机26、28和捕捉设备20可为控制台700定义附加输入设备。监视器742或其他类型的显示设备也经由诸如视频接口 732之类的接口连接至系统总线721。除了监视器以外,计算机还可包括诸如扬声器744和打印机743之类的其他外围输出设备,它们可通过输出外围接口 733来连接。计算机741可使用到一个或多个远程计算机(诸如,远程计算机746)的逻辑连接而在联网环境中操作。远程计算机746可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,通常包括上文参考计算机741所描述的许多或全部元件,但是图17B中只示出了存储器存储设备747。图17B中所描绘的逻辑连接包括局域网(LAN)745和广域网(WAN) 749,但是也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。当在LAN联网环境中使用时,计算机741通过网络接口或适配器737连接到LAN745。当在WAN联网环境中使用时,计算机741通常包括调制解调器750或用于通过诸如因特网等WAN749建立通信的其他手段。调制解调器750可以是内置的或外置的,可经由用户输入接口 736或其他适当的机制连接到系统总线721。在联网环境中,相对于计算机741所示的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图17B示出了驻留在存储器设备747上的远程应用程序748。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。在各实施例中,本发明技术涉及用于从捕捉设备所捕捉的图像数据中标识视野中的用户的系统,该系统包括无状态身体部位建议系统。在各实施例中,无状态身体部位建议系统产生身体部位建议和/或骨架假设。在各实施例中,无状态身体部位建议系统产生头部三角、手部建议和/或手臂假设的身体部位建议。在各实施例中,无状态身体部位建议系统可通过Exemplar加质心来操作。在各实施例中,本发明技术涉及用于从捕捉设备所捕捉的图像数据中标识视野中的用户的系统,该系统包括有状态身体部位建议系统。在各实施例中,无状态身体部位建议系统可通过磁性来操作。

在各实施例中,无状态身体部位建议系统使用磁性来产生身体部位建议和/或骨架假设。在各实施例中,无状态身体部位建议系统使用磁性来产生头部三角、手部建议和/或手臂假设的身体部位建议。在各实施例中,本发明技术涉及用于从由捕捉设备捕捉到的图像数据中标识视野中的用户的系统,该系统包括身体部位建议系统和用于对身体部位建议系统所生成的建议进行协调的骨架解析系统。在各实施例中,骨架解析系统采用一个或多个成本函数(S卩,稳健的打分测试)来对身体部位建议系统所生成的候选建议进行协调。在各实施例中,骨架解析系统使用大量身体部位建议和/或骨架假设。在各实施例中,骨架解析系统使用轨迹和/或突出性样本来评估并协调身体部位建议系统所存储的各候选建议,和/或候选建议的组合。在各实施例中,轨迹样本测试在一个或多个候选身体部位和/或骨架假设内的样本的检测到的深度值是否像在该候选身体部位和/或骨架假设是正确的情况下所预期的那样。在各实施例中,突出性样本测试在一个或多个候选身体部位和/或骨架假设的轮廓外部的样本的检测到的深度值是否像在该候选身体部位和/或骨架假设是正确的情况下所预期的那样。在各实施例中,轨迹和/或突出性样本可被用来对关于任何和全部身体部位的假设或甚至整个骨架假设进行打分。在各实施例中,骨架解析系统使用测试来确定身体部位是否在动。在各实施例中,用于确定手是否在动的测试检测X、y和/或z方向上的与该身体部位的运动相对应的像素运动。在各实施例中,像素运动测试检测手部建议的运动。
在各实施例中,像素运动测试检测头部、手臂、腿部、以及脚部的运动。在各实施例中,骨架不被确认,直至在关键身体部位(如手部或头部)附近检测到像素运动为止。在各实施例中,骨架不被确认,直至观察到关键身体部位随时间遵循半平滑路径为止。在各实施例中,骨架解析系统确定给定骨架假设是否在运动学上是有效的。在各实施例中,骨架解析系统确定骨架假设中的一个或多个关节是否旋转超过了该预期身体部位的关节旋转限制。在各实施例中,本发明系统还包括手部改进技术,它结合骨架解析系统来产生极其稳健的经改进的手部位置。在以上实施例中,骨架解析系统首先基于头部和肩部关节来标识玩家并随后标识手部和肘部的位置。在其他实施例中,骨架解析系统可以首先在身体关节的任何子集上标识玩家并随后标识其他身体关节的位置。此外,骨架解析系统对身体部位进行标识的次序可以与以上描述的不同。可从先前帧中首先解析任何身体部位,如躯干、臀部、手部、或腿部,并将其绑定到玩家,并随后,可使用以上针对手臂描述(但适用于其他身体部位)的技术来解析骨架的其余部分。此外,骨架解析系统对身体部位进行标识的次序可以是动态的。换言之,要解析的第一组身体部位可依赖于动态条件。例如,如果玩家侧身站立并且他们的左臂是他们身体的最清晰可见的部位,则骨架解析系统可以使用该手臂(而非头部三角)来标识该玩家,并随后解析骨架的其他部位和/或骨架整体。在各实施例中,本发明系统还包括用于准确地确定手的末端的位置以及手的角度的方法。本发明系统的前述详细描述是出于说明和描述的目的而提供的。这并不旨在穷举本发明系统或将本发明系统限于所公开的精确形式。鉴于上述教导,许多修改和变型都是可能的。选择所述实施例以最好地解释本发明系统的原理及其实践应用,从而允许本领域技术人员能够在各种实施例中并采用各种适于所构想的特定用途的修改来最好地利用本发明系统。本发明系统的范围旨在由所附权利要求书来定义。
权利要求
1.一种在包括耦合到用于从场景中捕捉位置信息的捕捉设备的计算环境的系统中的、姿势识别的方法,包括 a)从所述场景中的用户接收位置信息,所述用户具有第一身体部位和第二身体部位; b)识别来自所述第一身体部位的姿势; c)忽略由所述第二身体部位执行的姿势;以及 d)执行与在所述步骤b)中识别的来自所述第一身体部位的姿势相关联的动作。
2.如权利要求1所述的方法,其特征在于,忽略所述第二身体部位执行的姿势的所述步骤c)包括具有从中接受姿势的身体部位的定义的步骤,所述第二身体部位不被包括在所述定义中。
3.如权利要求1所述的方法,其特征在于,忽略所述第二身体部位执行的姿势的所述步骤c)包括不接收来自所述第二身体部位的位置信息的步骤。
4.如权利要求1所述的方法,其特征在于,还包括将所述视野分成多个区的步骤,在所述第二身体部位作出的姿势被忽略时所述第二身体部位处于所述多个区中的第一区内,并且所述方法还包括当在所述多个区中的第二区作出来自所述第二身体部位的同一姿势时识别该姿势并对该姿势进行响应的步骤。
5.一种在包括耦合到用于从场景中捕捉位置信息的捕捉设备的计算环境的系统中的、识别和跟踪用户的身体部位的方法,包括 a)从接收来自所述场景的位置信息的无状态身体部位建议系统获得身体部位建议; b)从有状态身体部位建议系统获得身体部位建议;以及 c)由骨架解析系统将各候选身体部位协调成整个或部分骨架。
6.如权利要求5所述的方法,其特征在于,从无状态机器学习身体部位建议系统获得身体部位建议的所述步骤a)包括通过质心概率来获得所述用户的头部和肩部的身体部位建议的步骤。
7.如权利要求5所述的方法,其特征在于,从有状态身体部位建议系统获得身体部位建议的所述步骤b)包括通过自过去的帧的磁性或持续的至少之一来获得所述用户的头部和肩部的身体部位建议的步骤。
8.如权利要求5所述的方法,其特征在于,将各候选身体部位协调成整个或部分骨架的所述步骤包括运行一个或多个打分测试,这允许标识具有最高支持的假设。
9.如权利要求8所述的方法,其特征在于,标识第一组关节的所述步骤b)还包括以下步骤 d)标识对应于真实玩家的候选头部和肩部建议; e)评估可能属于所述步骤d)中的每一候选的每一肩部的手部建议;以及 f)评估将所述步骤e)中的手部建议与所述步骤d)中的肩部建议连接在一起的肘部建议。
10.一种能够将处理器编程以执行一种方法的计算机可读存储介质,所述方法识别并跟踪具有对至少一个不动的身体部位的至少有限使用的用户的各身体部位,所述方法包括 a)从所述用户接收所述至少一个不动的身体部位的身份的指示; b)标识所述用户的第一组关节,所述关节不包括在所述至少一个不动的身体部位内;c)标识所述第一组关节中的各关节的位置;以及d)基·于在所述步骤C)中标识的关节的位置来执行动作。
全文摘要
本发明公开了用于使用NUI系统来识别和跟踪用户的骨架关节的系统和方法,并且进一步公开了用于只识别和跟踪一些骨架关节(如用户的上半身)的系统和方法。该系统可包括肢体标识引擎,它可使用各种方法来评估、标识并跟踪场景中的一个或多个用户的身体部位的位置。在各示例中,可通过将视野分成各较小的区并且一次集中于一个区来实现进一步的处理效率。此外,每一个区可具有它自己的被识别的预定义姿势。
文档编号G06T7/20GK103038727SQ201180032265
公开日2013年4月10日 申请日期2011年6月14日 优先权日2010年6月29日
发明者P·托塞尔, A·威尔逊, A·A-A·基普曼, J·C·李, A·巴兰, J·肖顿, R·摩尔, O·威廉姆斯, R·盖斯, M·菲诺齐奥, K·S·佩雷斯, A·科恩布卢姆, J·克拉维 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1