用于跟踪身体或其部分的系统、方法、和装置与流程

文档序号:19251636发布日期:2019-11-27 20:19阅读:272来源:国知局
用于跟踪身体或其部分的系统、方法、和装置与流程

公开领域

本发明涉及一种用于跟踪身体或其部分的系统、方法和装置,并且特别地,涉及这样一种利用深度传感器和/或相机执行这种跟踪的系统、方法和装置。

公开背景

处于运动状态的对象的身体可以被认为改变了形状和位置;形状变化是因为身体的整体轮廓在改变。现有技术试图通过明确的点对应来确定形状和位置,例如:

-美国专利第8724906号,其中通过将网格应用于身体的模型,并且然后尝试通过使用随机行走分类器将数据点拟合到网格,来确定移动的身体的形状和位置;和

-美国专利第9344707b2号,其拟合这些数据点,但是通过搜索用于将数据点匹配到模型上的点的全局最小来拟合;

或者

-如maoye和ruigangyang于2016年的ieeetransactionsonpatternanalysis&machineintelligence第38卷第08发行期发表的“real-timesimultaneousposeandshapeestimationforarticulatedobjectsusingasingledepth相机”中所公开的,使用形变模型作为高斯混合模型的一部分。

至少发明的概述

本公开的实施例针对用于通过将从深度传感器和/或其他传感器和/或如本文所述的“标志器”接收的数据点拟合到身体模型来跟踪身体的至少一部分的系统、方法和装置。例如,在一些实施例中,这样的数据点中的某些数据点被识别为“超级点”,并且与其他点相比其被分配了更大的权重。这些超级点可以是从附着到身体的物体获得的,物体包括但不限于提供可检测到的信号的有源标志器,或者无源物体,包括但不限于(例如用于vr(虚拟现实)的)头盔或面罩、或者智能手表。这些超级点还可以是从与模型匹配的特殊数据点(例如与在模型中对应于关节的顶点匹配的数据点)获得的。

根据至少一些实施例,提供了一种用于跟踪身体的至少一部分的系统,该系统包括:深度传感器,该深度传感器用于提供数据以根据身体距深度传感器的距离来确定身体在空间中的三维位置;身体模型,其包括骨架;以及计算设备,其具有在其上运行的计算机指令,该计算机指令被配置为根据概率拟合算法将来自深度传感器的数据点拟合到身体模型,其中,多个数据点被识别为超级点,并且该多个数据点在拟合算法中被赋予额外的权重;所述超级点根据附着到身体的物体来限定,数据点用身体的关节或其组合来识别,并且所述概率拟合算法根据由身体限定的至少一个约束来进行约束。

可选地,所述计算设备包括硬件处理器和存储器,该硬件处理器被配置为响应于接收到从限定的本机指令代码集中选择的相对应的基本指令而执行限定的一组基本操作;其中,所述计算机指令包括从本机指令集中选择的第一组机器码。

可选地,所述约束从包括以下项的组中选择的:针对自相交约束(constraintagainstself-intersection)、角度约束和姿态先验约束,

可选地,身体模型包括模板,所述模板包括具有骨架和蒙皮的标准模型,

可选地,所述模板被调整为身体模型的输入;并且其中,所述概率拟合算法包括用于将数据点映射到身体模型的gmm(高斯混合模型)。

可选地,附着到身体的所述物体包括提供可检测到的信号的一个或更多个有源标志器,或者包括如此附着的无源物体,包括但不限于(例如用于vr(虚拟现实)的)头盔或智能手表。

可选地,用所述身体的关节识别的所述数据点是根据作为估计值的先前确定的位置来识别的。

可选地,所述模板包括具有根据作为顶点的关节的层次结构的骨架和蒙皮的标准模型,并且对身体的所述关节的位置的第一确定是根据所述模板确定的。

可选地,对于给定的关节,角度约束是根据旋转模型确定的,以用于确定1个、2个或3个自由度,并且对于每个自由度,确定最小和最大角度。

可选地,系统还包括相机,以及一个或更多个处理器,该一个或更多个处理器具有在该一个或更多个处理器上运行的计算机指令,该计算机指令被配置为使得处理器相对于用户拟合来自相机和深度传感器中的至少一者的数据点。

可选地,相机被配置成经由可选地粘附到用户的身体上的点的多个标志器来收集用户在环境中的一个或更多个运动的视频数据,深度传感器被配置成提供以下中的至少一个:用于根据在体积中一个或更多个标志器距深度传感器的距离来确定用户在环境中的三维位置(location)或定位(position)或其组合的数据;和tof(飞行时间)数据;并且指令另外被配置成使得处理器将来自深度传感器的数据与来自相机的视频数据组合,以产生用户在用户的环境中的三维地图。

可选地,每个标志器包括有源传感器或无源传感器。

可选地,每个标志器包括用于发光的有源光学标志器。

可选地,计算机指令包括被配置为使处理器作为校准模块执行的指令,该校准模块被配置为根据跟踪一个或更多个有源标志器来校准系统。

可选地,标志器中的至少一个标志器包括惯性传感器。

可选地,该系统还包括用于确定相机的方位的方位传感器,指令另外被配置成使得处理器根据相机的方位将来自深度传感器的数据与来自相机的视频数据组合。

可选地,该系统还包括一个或更多个附加传感器,其中,一个或更多个附加传感器中的至少一个附加传感器被配置成收集用户的生物信号。

可选地,一个或更多个传感器中的至少一个传感器包括惯性传感器。

可选地,指令另外被配置成使得处理器将传感器信号转换成传感器不可知的传感器数据。

可选地,计算机指令另外被配置成使处理器通过去除或至少降低噪声以及或标准化信号来清理所述信号。

可选地,计算机指令另外被配置成使得处理器对传感器数据执行数据分析。

可选地,计算机指令包括使处理器作为跟踪引擎来执行的指令。

可选地,跟踪引擎被配置为跟踪用户的身体的定位、跟踪用户的一个或更多个身体部位的定位、或者两者,一个或更多个身体部位包括但不限于以下中的一个或更多个:手臂、腿、手、脚、和头。

可选地,跟踪引擎被配置成将表示用户做出的物理动作的信号分解成表示一系列姿势(gesture)的数据。

可选地,跟踪引擎被配置成经由分类器功能将表示用户做出的物理动作的信号分解成表示一系列姿势的数据。

可选地,计算机指令包括使处理器作为校准模块来执行的指令,该校准模块被配置为相对于用户的定位校准系统。

可选地,该系统还包括多个模板,其中,计算机指令还被配置成使得处理器初始化多个模板中的模板。

可选地,模板的特征在于仅作为多个参数配置的、仅作为多个特征配置的、或两者兼有的人体的模型。

可选地,多个参数和/或特征包括骨架以及一个或更多个关节。

可选地,指令另外被配置成使得处理器利用多个参数和/或特征来帮助跟踪用户的运动。

可选地,指令被配置成将传感器数据映射到gmm(高斯混合模型)。

可选地,身体模型包括稀疏皮肤(sparse-skin)表示。

可选地,指令另外被配置成使得处理器抑制相对应的高斯(gaussians)。

可选地,数据被映射到gmm。

可选地,数据是通过分类器映射的。

可选地,跟踪引擎包括模板引擎,该模板引擎被配置为从模板数据库读取模板,并且指令另外被配置为使得处理器作为gmm映射器来操作,并且将模板发送到gmm映射器。

可选地,指令另外被配置成使得处理器作为点云分解器来操作,并且使gmm映射器能够从处理器接收点云信息。

可选地,指令被配置成应用卡尔曼过滤器来确定用户的姿态。

可选地,指令被配置成使得处理器作为校准模块来操作,该校准模块被配置成根据用户的比例校准系统。

可选地,指令被配置成使得处理器作为校准模块来操作,该校准模块被配置成根据无生命物体(inanimateobject)的移除来校准系统。

可选地,所述无生命物体包括从对点云的跟踪中分割出来的桌子。

可选地,指令被配置为从跟踪分析中排除多个点。

根据至少一些实施例,提供了一种用于跟踪身体的至少一部分的系统,该系统包括:深度传感器,所述深度传感器用于提供数据以根据距深度传感器的距离来确定身体在空间中的三维位置;身体模型,其包括骨架;以及计算设备,该计算设备具有在其上运行的计算机指令,该计算机指令被配置为根据概率拟合算法将来自深度传感器的数据点拟合到身体模型,其中,所述概率拟合算法是根据由人体限定的至少一个约束来进行约束的,所述约束从包括以下项的组中选择的:针对自相交约束、角度约束和姿态先验约束,身体模型包括模板,所述模板包括具有骨架和蒙皮的标准模型,所述模板被调整为身体模型的输入;并且其中,所述概率拟合算法包括用于将数据点映射到身体模型的gmm(高斯混合模型)。

根据至少一些实施例,提供了一种系统,该系统包括:相机;深度传感器;人体模型;一个或更多个附加传感器;以及一个或更多个处理器,该一个或更多个处理器具有在其上运行的计算机指令,该计算机指令被配置为使得处理器根据概率拟合算法相对于用户将来自相机和深度传感器中的至少一者的数据点拟合到身体模型,其中:相机被配置为经由可选地粘附到用户的身体上的点的多个标志器来收集用户在环境中的一个或更多个运动的视频数据,深度传感器被配置为提供以下中的至少一项:用于根据在体积中一个或更多个标志器距深度传感器的一个或更多个距离来确定用户在环境中的三维位置或定位、或其组合的数据;tof(飞行时间)数据;指令另外被配置成使得处理器将来自深度传感器的数据与来自相机的视频数据组合,以产生用户在环境中的三维地图。

根据至少一些实施例,提供了一种用于创建和/或使用用于无标志器的跟踪系统的模板的方法,所述方法包括:扫描用户的身体的至少一部分以形成标准身体;在3d中对身体建模;创建用于表示人体或其至少一部分的网格;其中:网格的顶点被分配为关节和/或骨架,模型被配置为对顶点的定位施加约束,并根据关节定位重新定位皮肤顶点,将所建模的身体对应于一个或更多个模板参数;以及将模板和/或所述模板的参数导出为文件。

除非特别声明,本文使用的所有技术和科学术语具有与本发明所属领域的普通技术人员通常理解的相同意思。本文提供的材料、方法、和示例仅是示例性的,并不是为了限制。

本公开的装置、设备、方法和系统的实现方式涉及手动地、自动地或其组合执行或完成某些选定的任务或步骤。具体地,若干选定的步骤可以通过硬件或通过操作系统上的软件、固件的、和/或其组合来实现。例如,对于硬件,本公开的至少一些实施例的选定步骤可以被实现为芯片或电路(例如,asic)。对于软件,本公开的至少一些实施例的选定步骤可以被实现为由计算机(例如,计算机的处理器)使用操作系统执行的多个软件指令。在任何情况下,本公开的至少一些实施例的方法的选定步骤可以被描述为由处理器执行,例如由用于执行多个指令的计算平台执行。

被配置为执行(或导致被执行)某些功能的软件(例如,应用程序、计算机指令)也可以被称为用于执行该功能的“模块”,并且也可以被称为用于执行该功能的“处理器”。因此,根据一些实施例,处理器可以是硬件部件,或者根据一些实施例,处理器可以是是软件部件。

此外,为此目的,在一些实施例中:处理器也可以被称为模块;在一些实施例中,处理器可以包括一个或更多个模块;在一些实施例中,模块可以包括计算机指令—其可以是一组指令、应用程序、软件—其可在计算设备(例如处理器)上操作,以使计算设备实施和/或完成一个或更多个特定功能。此外,与一些实施例一起使用的短语“抽象层”或“抽象接口”可以指计算机指令(可以是一组指令、应用程序、软件),其可在计算设备(如所指出的,例如处理器)上操作,以使计算设备实施(conduct)和/或完成(achieve)一个或更多个特定功能。抽象层也可以是实施和/或实现一个或更多个特定功能的电路(例如,ansic)。因此,对于一些实施例和对应于这些实施例的权利要求,可以以多种方式(例如,抽象层、计算设备、处理器、模块、软件、应用程序、计算机指令等)来描述/主张所指出的特征/功能。

某些实施例是关于“计算机”、“计算机网络”和/或“在计算机网络上运行的计算机”进行描述的。注意,任何以处理器(其可以被称为“数据处理器”;“预处理器”也可以称为“处理器”)和执行一个或更多个指令的能力为特征的设备可以被描述为计算机、计算设备和处理器(例如,见上文),包括但不限于个人计算机(pc)、服务器、蜂窝电话、ip电话、智能电话、pda(个人数字助理)、瘦客户端(thinclient)、移动通信设备、智能手表、头戴式显示器或能够进行外部通信的其他可穿戴设备、虚拟或基于云的处理器、寻呼机、和/或类似设备。彼此通信的两个或更多个这类设备可以是“计算机网络”。

附图简述

本文仅以示例的方式参考附图描述了本公开的实施例。现在详细地具体参考附图,要强调的是,所示的特定方面是通过示例的方式且仅仅是出于对本发明的一些实施例的说明性讨论的目的,并为了提供被认为是实施例中的一些实施例的原理和概念方面的最有用和容易理解的描述而被呈现的。在这一点上,没有试图比基本理解其所必需的更详细地示出一些实施例的细节。

图1a和图1b示出了根据本公开的至少一些实施例的系统的非限制性示例;

图2示出了根据本公开的至少一些实施例的用于跟踪用户的方法的非限制性示例,该方法可选地利用图1的系统来执行;

图3示出了根据本公开的至少一些实施例的跟踪引擎的非限制性示例,该跟踪引擎可选地用于图1的系统或图2的方法;

图4示出了根据本公开的至少一些实施例的模板和模板引擎;

图5示出了根据本公开的至少一些实施例的用于创建和使用模板的方法的非限制性示例。

图6a至图6e示出了根据本公开的至少一些实施例的用于映射数据以跟踪用户的方法的非限制性示例;

图7示出了根据本公开的至少一些实施例的用于应用形变模型的方法的非限制性示例;

图8示出了根据本公开的至少一些实施例的用于姿态恢复的方法的非限制性示例;

图9示出了根据本公开的至少一些实施例的用于背景对象的分割的方法的非限制性示例;

图10示出了根据本公开的至少一些实施例的用于关节检测的方法的非限制性示例;

图11示出了根据本公开的至少一些实施例的用于校准的非限制性、示例性系统;

图12a-12d示出了根据本公开的至少一些实施例的用于校准的非限制性、示例性方法;以及

图13a-13g涉及根据至少一些实施例的用于跟踪关于骨架的抽象的非限制性实现方式。

至少一些实施例的描述

图1a示出了根据本公开的至少一些实施例的系统的非限制性示例。如图所示,系统100的特征在于相机102、深度传感器104和可选的音频传感器106。可选地,还包括附加传感器120。可选地,相机102和深度传感器104被组合在单个产品中(例如,产品,和/或如美国专利第8,379,101号中所述)。图1b示出了相机102和深度传感器104的示例性实现方式。可选地,相机102和深度传感器104可以用mindmazesa的lyra相机来实现。根据一些实施例,集成的产品(即,相机102和深度传感器104)使得相机102的方位能够相对于标准参照系来确定。可选地,三个或所有四个传感器(例如,多个传感器)被组合在单个产品中。

在一些实施例中,传感器数据涉及传感器可感知的用户的物理动作(未示出)。例如,相机102可以收集用户的一个或更多个运动的视频数据,而深度传感器104可以提供数据以根据用户与深度传感器104的距离(或者更具体地,表示用户在空间中的三维体积的多个距离)来确定用户在空间中的三维位置。深度传感器104可以提供关于用户的定位的tof(飞行时间)数据,当与来自相机102的视频数据结合时,tof数据允许用户在环境中的三维地图(map)被确定。如下面更详细描述的,这种地图使得用户的物理动作能够被准确地确定,例如,关于用户做出的姿势。音频传感器106优选地收集关于用户发出的任何声音(sound)的音频数据,该任何声音可选地包括但不限于语音(speech)。附加传感器120可以收集关于用户的生物信号和/或可以收集附加信息以辅助深度传感器104。生物信号的非限制性示例包括eeg传感器、心率传感器、氧饱和度传感器、ekg或emg传感器、或其组合。

传感器信号由设备抽象层108收集,设备抽象层108优选地将传感器信号转换成传感器不可知的数据。设备抽象层108优选地操纵必要的预处理,使得如果不同的传感器被替换,则只需要对设备抽象层108进行改变;系统100的其余部分可以继续运行而没有变化(或者,在一些实施例中,至少没有实质性的变化)。设备抽象层108优选地还清理信号,例如,根据需要去除或至少降低噪声,并且设备抽象层108还可以用于标准化信号。设备抽象层108可以由计算设备来操作(未示出),并且任何方法步骤可以由计算设备来执行(注意—即使未示出,本文公开的模块和接口都被假设为包含计算设备或者是通过计算设备来操作)。

来自传感器的预处理的信号数据然后可以被传递到数据分析层110,数据分析层110优选地对传感器数据执行数据分析,以供应用层116消耗(根据一些实施例,“应用”意指与用户的任何类型的交互)。优选地,这种分析包括由跟踪引擎112执行的跟踪分析,跟踪引擎112可以跟踪用户的身体的定位,并且还可以跟踪用户的一个或更多个身体部位的定位,所述一个或更多个身体部位包括但不限于手臂、腿、手、脚、头等中的一个或更多个。跟踪引擎112可以处理预处理的信号数据,以将用户做出的物理动作分解成一系列姿势。在这种情况下,“姿势”可以包括用户的多个身体部位所采取的动作,例如在摆动手臂的同时迈出一步,在向前弯曲的同时举起手臂,移动双臂,等等。这种分解和姿势识别也可以例如借助于基于由跟踪引擎112提供的关于跟踪各个身体部位的信息训练的分类器分开完成。

注意,尽管术语“分类器”贯穿全文使用,但是该术语还旨在包括“回归器(regressor)”。对于机器学习,这两个术语之间的区别在于,对于分类器,输出或目标变量采用类标签(也就是说,是分类的)。对于回归器,输出变量假设为连续变量(见例如http://scottge.net/2015/06/14/ml101-regression-vs-classification-vs-clustering-problems/)。

对用户的身体和/或身体部位的跟踪,可选地被分解成一系列姿势,然后可以被提供给应用层116,应用层116将用户的动作解释为一种类型的反应和/或分析这些动作以确定一个或更多个动作参数。例如,但不限于,用户举起手臂所做出的物理动作是一种对于应用层116可以解释为举起虚拟对象的姿势。可选择地或附加地,这种物理动作可以由应用层116进行分析,以确定用户的运动范围或执行该动作的能力。

为了帮助该跟踪过程,可选地,一个或更多个标志器118可以被放置在用户的身体上。标志器118可选地以能够被一个或更多个传感器(例如被相机102、深度传感器104、音频传感器106或附加传感器120)检测到的特性为特征。标志器118可以被相机102检测到,例如,作为光学标志器。虽然这种光学标志器可以是无源的或有源的,但是优选地,标志器118是例如以任何类型的发光标志器(诸如,例如led灯)为特征的发光标志器的有源光学标志器。更优选地,每个标志器118或者可选择地每对标志器118可以包括指定颜色的led灯,然后其将被放置在用户的身体的指定位置上。被放置在指定位置处的不同颜色的led灯通过相机102向系统传送大量信息;如下面更详细描述的,这些信息可用于使跟踪过程高效和准确。附加地,或者可选地,一个或更多个惯性传感器可以作为一种类型的标志器118被添加到用户的手上,其可以以蓝牙或其他无线通信来被启用,使得信息将被发送到设备抽象层108。惯性传感器还可以与光学部件一起被集成在至少与手相关的标志器118中,或者甚至集成用于更多个这种标志器118。然后,可选地,信息可以被集成到跟踪过程中,例如,以提供对于特定身体部位的方位和位置的估计,例如作为先验限制。

在一些实施例中,数据分析层110包括系统校准模块114。如下面更详细描述的,系统校准模块114被配置为相对于用户的定位来校准系统,以便系统有效地跟踪用户。系统校准模块114可以相对于应用层116的操作要求来执行对传感器的校准(但是,在一些实施例中—其可以包括该实施例—设备抽象层108被配置为执行传感器特定校准)。可选地,传感器可以被封装在执行其自身的传感器特定校准的设备(例如kinect)中。

图1b示出了根据本公开的至少一些实施例的相机和深度传感器的实现方式的非限制性示例(具有与先前的图中相同或相似功能的部件使用相同的部件编号标记(label))。此处,相机140包括并入其中的多个不同的传感器,包括但不限于左rgb(红绿蓝)传感器142、右rgb传感器144、深度传感器104、音频传感器106和方位传感器146。方位传感器146被配置成提供关于相机的方位的信息。

图1a的标志器现在被更详细地示出为标志器152。标志器152优选地包括惯性传感器148和有源标志器150。有源标志器150可以包括发出可检测到的信号的任何类型的标志器,该可检测到的信号包括但不限于诸如如前所述的来自led灯的光信号。可以提供多个不同的标志器152;可以关于多个标志器152调整有源标志器150,例如,以显示如前所述的不同颜色的led灯。

图2示出了根据本公开的至少一些实施例的用于跟踪用户的示例性、说明性非限制性方法,该方法可选地使用图1的系统来执行。如图所示,在202处,系统例如通过加电(即切通)来启动活动。系统可以如图1中所描述的方式来实现,但是也可以可选地以其他方式来实现。在204处,系统执行系统校准,系统校准可以包括确定许可和/或隐私特征。系统校准还可以可选地包括对传感器的一个或更多个功能的校准,例如,如参考图1a中所述。

在206处,确定初始用户定位,(在一些实施例中)该初始用户定位是用户相对于传感器(可选地至少相对于相机和深度传感器)的位置和方位。例如,用户可能被要求或被安置成使得用户在相机和深度传感器的前面。可选地,用户可能被要求做特定的姿态,例如,诸如“t”姿态,其中用户伸直手臂面向相机站立。术语“姿态”涉及用户的身体的定位和方位。

在208处,模板被初始化。如下面更详细描述的,模板以人体的模型为特征,其仅以多个参数和特征(例如骨架、关节等)进行配置,该多个参数和特征用于帮助跟踪用户的运动。在210处,传感器数据被接收,诸如,例如深度传感器数据和/或相机数据中的一者或更多者。在212和214处,例如关于用户的运动,传感器数据被分析以跟踪用户。可选地,传感器数据可以被映射到身体模型上,例如,身体模型的特征在于关节的铰接式结构(articulatedstructure)和由顶点的网格限定的皮肤,以混合权重(blendingweight)将顶点软分配给模型的关节。以这种方式,皮肤可以随着身体姿态而相应地变形,以模拟逼真的人的形状。

可选地,如本文所述,通过映射到gmm(高斯混合模型)上来分析传感器数据。如下面更详细描述的,可选地,可以使用分类器。因为用户的姿态不可能在帧之间显著改变,所以可选地,当被迭代地执行时,在212、214处的过程只能关于有限次数的迭代来执行。例如,本发明人惊奇地发现,可以使用少至3-10次迭代来映射数据。如果使用gmm,皮肤的每个顶点定义了各向同性高斯,其在3d空间中的平均位置是顶点所附着的关节的旋转参数的函数(旋转左手腕不会影响在右手皮肤上的顶点的定位)。

身体模型优选地以稀疏皮肤表示为特征。具有稀疏皮肤表示便于处理遮挡(occlusion)。自遮挡(self-occlusion)或身体部位的遮挡都是由于混乱(clutter)或因为用户离开相机帧造成的。一种方向是,以给定帧动态地启用或禁用被认为是被遮挡的高斯,使得被禁用的高斯不会影响优化。

在不同方向上,通过抑制相对应的高斯来建模被截肢者用户也很简单。这可以在校准过程期间在线完成,或者让治疗师手动地配置身体模型。在212处,如果使用gmm,传感器数据作为点云被映射到gmm。gmm和映射可选地按照关于maoye和ruigangyang于2016年的ieeetransactionsonpatternanalysis&machineintelligence第38卷第08发行期发表的“real-timesimultaneousposeandshapeestimationforarticulatedobjectsusingasingledepthcamera”所述来实现。在该文中,描述了一个能量函数,其根据映射过程被最小化。

可选地,仅使用深度传感器数据,但是可选择地,同时使用深度传感器和相机数据。例如,计算可以如下进行。给定一组n个点x∈x,期望用m个分量(vm)来拟合gmm。

在214处,如下面更详细描述的,一个或更多个约束被施加在gmm上。例如,可选地,模型被约束成使得用户的身体部位根据其可以呈现的可能的角度被约束。在216处,映射的数据可选地与视频数据集成。

图3示出了根据本发明的至少一些实施例的示例性、说明性非限制性跟踪引擎,其可选地用于图1的系统或图2的方法。对于跟踪引擎的这个实施例,数据被假设映射到gmm,但是如本文所述,可选地使用分类器来代替。如图所示,跟踪引擎以模板引擎300为特征,模板引擎300从模板数据库302读取模板,并且然后将模板馈送到gmm映射器308。gmm映射器308还从点云分解器304接收点云信息,点云分解器304在306接收深度传感器数据作为输入。可选地,彩色相机数据也可以被提供给点云分解器304。例如,立体rgb可用于帮助将点分配给身体部位和/或改善深度传感器数据。对于将深度传感器数据配置到点云的问题的解决方案在本领域中是众所周知的,并且可以可选地根据任何合适的方法来执行。zhao等人在“alignmentofcontinuousvideoonto3dpointclouds”中提供了一种合适的方法的一个非限制性示例,其可在https://pdfs.semanticscholar.org/124c/0ee6a3730a9266dae59d94a90124760f1a5c.pdf处获得。

为了提高处理的速度,深度传感器数据可以如下配置。为了做到这一点,在每一帧构建场景的kd树,使得当计算从顶点到云的对应关系时,仅使用k最近邻(knearestneighbor)并对于其余的假设为零后验(zero-posterior)。作为结果,该算法运行快了几个数量级。对应关系的选通(gating)允许距离和后向矩阵的稀疏化,极大地提高了计算速度。

与仅利用gpu(图形处理器)达到了实时性能的maoye和ruigangyang于2016年的ieeetransactionsonpatternanalysis&machineintelligence第38卷第08发行期发表的“real-timesimultaneousposeandshapeestimationforarticulatedobjectsusingasingledepthcamera”相比,根据一些实施例,当前描述的算法仅利用cpu(中央处理器)就能达到实时性能(在i7处理器中的100+fps),这是一个显著的计算优势。

gmm映射器308的特征在于gmm数据映射模块310、映射约束模块312和模板形变模块314。gmm数据映射模块310从点云分解器304接收点云数据,并根据来自模板引擎300的输入模板进行调整,将该数据映射到gmm上。接下来,通过映射约束模块312,将来自映射约束模块312的一个或更多个约束(例如关于用户的身体部位可以假设的角度范围)施加于gmm上的被映射数据。可选地,根据来自模板形变模块314的信息通过使模板变形来增强这种信息;可选择地,由gmm数据映射模块310和映射约束模块312来动态地应用这种形变。在这种情况下,模板形变模块314或者不存在,或者可选择地可被用于应用一个或更多个启发法(heuristics),例如如下面更详细描述的根据姿态恢复。

图4更详细地示出了根据本公开的至少一些实施例的模板和模板引擎。根据一些实施例,模板引擎300的特征在于调整模板模块414,调整模板模块414从初始用户定位输入端412接收关于用户的初始定位的信息,并相应地调整模板。例如,如果模板构建是站立的用户,但是用户躺下或坐着,则优选地根据用户的实际定位来调整模板。即使用户的定位与模板的预期定位相同,例如以t姿态站立,也可以根据实际用户(诸如用户的实际尺寸)来调整模板。

模板数据库302可以在每个模板中包含各种不同类型的信息。例如,每个模板优选地包括骨架400、关节层次402和关节检测404。骨架400限定了可从点云数据确定的用户的虚拟骨架。每个骨架400包括关节层次402,关节层次402(如已知的)代表具有其虚拟部位的虚拟骨架。关节层次402使得能够定位用户的身体的每个关节,并且能够根据其他关节的位置来确定其位置。如下面更详细描述的,关节检测404可以涉及用于从点云中检测用户的作为特殊点或点组的关节的信息。

每个模板还可以以表面顶点406、表面网格连通性408、蒙皮权重410和约束416为特征。表面顶点406涉及在用户的外部身体上的顶点(与虚拟骨架对用户的身体结构的内部表示相反),而表面网格连通性408根据网格限定用户的外部身体表面。蒙皮权重410确定关于如何执行蒙皮的权重,例如在确定用户的适当的外表面方面。

约束416可被用于确定哪些身体位置是不被允许的,例如根据不同的身体部位定位的可能的角度范围来确定。例如,但不限于,约束可以包括自相交、角度和姿态先验中的一个或更多个。这些约束可以被不同地加权。优选加权而不是将约束设置为绝对条(absolutebar),因为发明人惊奇地发现,如果搜索空间太受限制,gmm模型不会有效地进行操作。因此,加权允许在不过度限制搜索空间的情况下捕获约束这一重要性。约束可以被应用于前面描述的能量函数。

自相交约束是可选的并且可能不被应用,因为根据它们应用的方式角度约束可以有效地考虑到自相交。如果被应用,自相交约束可以如下计算:

hst(θ)=(rs+rt)2-||vr(θ)-vt(θ)||2(3)

其中rs,rt代表相交高斯的半径。集合p定义了应该被禁止相交的高斯对的集合。

在一些实施例中,角度约束对于模型的正确操作很重要,并且权重很大。约束当前被应用于每个角度,但也可以可选地被联合应用于所有角度。角度约束涉及各个身体部位被允许达到的角度的范围。

对于给定的关节,角度约束优选地根据旋转模型来确定,以便例如可选地确定1个、2个或3个自由度。例如,肘部可以被确定为具有1个自由度,而肩部可以被确定为具有3个自由度。对于每个自由度,确定最小和最大角度。作为范围的另一示例,附录提供了有关角度的符号,使得limit_rotation_x涉及第一个自由度的最小和最大角度,limit_rotation_y涉及第二个自由度的最小和最大角度,以及limit_rotation_z涉及第三个自由度的最小和最大角度。如果极限旋转(limitrotation)的值被设置为零,那么关节就没有自由度,并且这些角度也根本不会改变。如果没有设置特定的极限旋转,那么关节或骨实现整个身体的旋转。

角度约束可选地由取最大值/取平均值运算符来被施加的。该运算符是非线性且涉及基于梯度的优化。这种角度约束可以作为旋转限制来被施加,其是使用非线性项来进行应用的。在以下这篇文章的公式11、12中描述了这些项的非限制性示例:taylor等人于2016年发表的“efficientandpreciseinteractivehandtrackingthroughjoint,continuousoptimizationofposeandcorrespondences”,其可从http://www.samehkhamis.com/taylor-siggraph2016.pdf处获得。计算角度约束的非限制性方法的一个示例如下:

其中,v(a,x,b)=max(0,a-x)+max(x-b,0)。由于期望的是针对δθ进行优化,因此,应使用以下等式:

应用次梯度,并且假设δθ非常小:

可选地应用姿态先验约束以避免由深度传感器噪声引起的问题,比如不能正确地检测深色头发或深色衣服。姿态先验约束的一个示例是保持盆骨或多或少笔直。如果用户坐在桌子旁或躺下,下半身或多或少会被家具隐藏,且从而,盆骨可能试图拟合通常位于家具的区域中的外露点(outlierpoint),而且盆骨朝向家具旋转,这是不正确的。另一个姿态先验约束是保持头部或多或少笔直。这被应用于解决如果头发点由于深度传感器问题而未显示时发生的头部的有噪声旋转(noisyrotation)。这些姿态先验约束可以被先验地应用和/或被动态地添加到能量函数。

在一些实施例中,姿态先验和角度限制约束二者都用能量函数中的分量的加权和来实现。角度限制能量分量优选地相对于姿态先验具有更大的权重。来自惯性传感器的数据也可以被用于一个或更多个约束。例如,但不限于,惯性的方位可以作为骨(优选地手)的方位的先验来应用。可选择地,方位数据可以在优化时被使用,不是作为先验,而是作为附加的特定项。

如本文所述,惯性数据可以作为“超级点”被引入,附加地或可选地用于上述用途。作为超级点使用提高了绝对位置数据的准确性,但是除非与上述用途之一相结合,否则方位数据不会被保留,这有助于确定手的定位方位。

可以为不同的用户定位(例如坐着、站着、躺下等等)创建不同的模板。可选地,还可以根据性别或其他人口统计信息,和/或根据身体尺寸(诸如对于身高、腰围等的各种范围),创建不同的模板。

模板引擎300可以根据上述信息(例如人口统计信息)进行更新,这将使得能够选择和/或调整特定模板。模板引擎300然后可以根据该信息从模板数据库302中选择特定模板。用于初始用户定位模块414的调整模板然后根据初始检测到的用户定位来调整模板,这也可以涉及根据第一组输入数据为该特定用户初始化模板。

图5示出了根据本公开的至少一些实施例的用于创建和使用模板的方法的非限制性示例。如图所示,在502处,在固定位置扫描示例用户的整个身体(或者可选地扫描其一部分),以形成标准身体。在504处,例如,根据作为非限制性示例的blender软件(由blender基金会创建),在3d建模软件中对用户的身体进行建模。创建表示人体的网格。网格的每个顶点,即皮肤的每个顶点,都被并入。某些顶点可以被分配为“关节”和/或“骨”。例如,左前臂的顶点将与左肘部相关联,使得当左肘部旋转时,左前臂的顶点也旋转。根据一些实施例,模型在顶点的可能位置上施加一种类型的约束,以及根据关节位置重新定位皮肤顶点。在506处,根据特定的3d建模软件的操作,建模的身体对应于模板参数。参考图4描述了(根据一些实施例的)根据所包括的项的模板参数。

在508处,模板参数可以被导出到文件,其非限制性示例的一部分在附录中给出。附录中的示例示出了处于t姿态的标准男性身体的一部分。特征通常是不言自明的,但是为了完整起见,此处描述了几个示例。全局比例参数意味着方位被设置为全局方位,而不是与身体的比例相关的对象的方位。接下来,骨列表被提供,以及它们各自的名称、它们的初始位置(作为“头部”和“尾部”参数提供)。旋转可以是如前所述的。每根骨都可以是另一根骨的父级,例如,使得“骶骨”是诸如“l.股骨”或股骨的父级。蒙皮_权重提供混合权重,或提供关于蒙皮分配的权重;每个数据点表示模型中的顶点,其中影响该顶点的一根或更多根骨加上针对该影响的权重。

在510处,获得在给定位置的对象的传感器数据,如本文所述,该数据优选地手动地被传送到模板引擎。在512处,例如关于骨长度,如本文所述,对象的至少一个测量值被确定。这种信息可以从点云确定。可选地,如下面参考图6所述,使用不同类型的点云数据。例如,但不限于,光学标志器可以提供“超级点”数据,因为根据在标志器中被特征化的led灯的不同颜色可以知道它们的位置。超级点数据的其他非限制性示例包括与vr头盔(headset)、智能手表或一些其他设备(appliance)相关联的点。

这种“超级点”数据也可以可选地利用关节检测来执行,如下面(诸如,例如关于图10)更详细描述的,或者可选地,如jung等人于2015年6月在cvpr会议上发表的“randomtreewalktowardinstantaneous3dhumanposeestimation”(可从“https://www.researchgate.net/publication/275771971_random_tree_walk_toward_instantaneous_3d_human_pose_estimation”处获得)中所述和/或根据shotton等人于2011年在“efficienthumanposeestimationfromsingledepthimages”(可从https://people.eecs.berkeley.edu/~rbg/papers/姿态-from-depth-pami.pdf处获得)中提供的描述来执行。

可选地,点云数据可以单独使用,或者与一种或更多种类型的“超级点”数据结合使用。从对象获得的测量值被用于初始化跟踪计算,以根据用户的特定参数调整模板。

在514处,根据用户的特定参数,例如但不限于,根据用户定位、人口统计数据、尺寸数据、用户的身体内的特定测量值(例如骨长度等)中的一个或更多个,缩放或以其他方式调整模板。优选地,缩放用户的尺寸,而不是缩放约束角度。为了调整用于缩放的模板,优选地,可以针对缩放骨的参数空间而不是关节约束来调整成本函数。

图6a至6e涉及根据本发明的至少一些实施例的用于映射数据以跟踪用户的不同的示例性、说明性非限制性方法。图6a示出了一种示例性方法,这样的示例性方法使用点云数据来映射到gmm模型,而不加权任何特定点和/或不具有关于这些点的先验知识。在602a处,来自深度传感器的传感器数据被分解以形成点云数据。在604a处,模板顶点被调整,其还包括估计用户的初始姿态。调整可以包括根据用户定位和比例以及可选地根据其他参数调整模板。如果该过程正在一系列视频帧上执行并且已经在至少一帧上执行过,则可选地,这样的估计可以考虑用户的先前姿态,因为用户的姿态不可能在帧之间显著改变。对模板顶点的调整优选地还包括前面描述的约束,然后可以在后续的阶段中应用这些约束来增加获得正确的最小值的概率。

在606a处,可以确定成本函数梯度。成本函数梯度可以按照关于maoye和ruigangyang于2016年在ieeetransactionsonpatternanalysis&machineintelligence第38卷第08发行期发表的“real-timesimultaneousposeandshapeestimationforarticulatedobjectsusingasingledepthcamera”所述来计算。在该文章中,描述了一个能量函数,该能量函数根据映射过程被最小化。关于成本函数梯度,计算点云中的每个点到每个顶点的距离。

在608a处,如前所述,可以对能量函数应用一个或更多个约束,但是该阶段可以在606a并行地执行,作为该阶段的一部分。在610a处,根据提供迭代解的em(期望最大化)算法,针对概率密度求解参数空间中的新位置,以确定最可能的位置。em可以根据前面描述的gmm来应用。在612a处,形变模型可以根据由em算法得到的迭代解来进行应用,例如,如参考图7所述。在614a处,可以重复步骤606a、608a、610a和612a,直到问题得到解决。

图6b示出了这种仅使用光学标志器点数据来映射到gmm模型的示例性方法。在602b处,仅从点云数据中检测光学标志器数据。光学标志器点数据是超级点的示例,其中它们在身体上的位置可以被精确地检测出和跟踪,因为led灯的指定颜色与指定位置相关联。除了仅使用光学标志器点数据之外,该方法如参考图6a所述地进行,并且图6b的步骤604b-614b对应于图6a的步骤604a-614a,不同之处在于,可选地,不需要计算从每个点到每个顶点的距离,这在一些实施例中是由于以非常高的似然度识别关于身体上的指定位置的每个标志器的可能性,从而知道哪个标志器与身体上的哪个位置相关。

图6c示出了这种仅使用关节检测点数据来映射到gmm模型的示例性方法。在602c处,从点云数据中仅检测到关节数据。关节点数据是超级点的示例,其中它们在身体上的位置可以被精确地检测出和跟踪,因为如本文所述可以使用特殊的关节检测方法。例如,如本文所述,关节检测方法可以根据分类器来执行。关节检测算法可以允许检测到难以用光学标志器标记的关节(例如,颌或颈部)。除了仅使用光学标志器点数据之外,该方法如参考图6b所述地进行,并且图6c的步骤604c-614c对应于图6b的步骤604b-614b。

图6d示出了使用具有较高的权重的超级点的组合以及结合点云数据的剩余部分来映射到gmm模型的这样一种示例性方法。在602d处,如参考图6a的602a所述,传感器数据被分解成点云。在604d处,一个或更多个超级点被检测到并被给予较高的权重。超级点可以根据前面描述的光学标志器和/或根据关节检测来进行检测。超级点的定位可能是不可靠的,但是与各个顶点的对应关系具有很高的可能性是已知的(即使与超级点的定位相关的数据有噪声)。步骤606d、608d、610d、612d、614d和616d可以如参考图6a的步骤604a、606a、608a、610a、612a和614a所述的那样来被执行,不同之处在于对于所执行的各种计算超级点被赋予比常规点云数据更高的权重。

图6e示出了使用分类器的示例性方法。如参考图6a所述,可选地执行602e。在604e处,经训练的分类器被应用于点云。经训练的分类器优选地以一些类型的身体部位分类模型为特征,例如在shotton等人于2013年12月在ieeetransactionsonpatternanalysisandmachineintelligence第35卷第12期发表的“efficienthumanposeestimationfromsingledepthimages”中所述。所描述的方法操作如下。身体部位分类(bpc)首先预测每个像素处的身体部位标记,并且然后使用这些推断的标记来定位身体关节。身体部位的数量和位置被选择以提供最多的信息来用于确定关节,而同时数据要求不会使经训练的分类器超负。经训练的分类器可以根据任何已知的方法来构建和训练,诸如,例如分类的随机树方法。关节的位置然后可以被馈送到前面描述的maoye和ruigangyang于2016年在ieeetransactionsonpatternanalysis&machineintelligence第38卷第08发行期发表的“real-timesimultaneousposeandshapeestimationforarticulatedobjectsusingasingledepthcamera”的生成模型中。这种分类将通过显著增加正确分配给特定顶点的概率来从常规点云数据中创建多个超级点。因此,可选地,过程的剩余部分将仅使用超级点继续进行,或者可选地,超级点以比其他点更高的权重来实现。过程然后如图6b所示继续,其中分类的点充当超级点,使得图6e的步骤606e、608e、610e、612e、614e和616e对应于图6b的步骤604b-614b。

图7示出了根据本公开的至少一些实施例的用于应用形变模型的方法的非限制性示例。在702处,根据模板初始化关节的定位。在704处,单独检测每个关节的定位。在706处,根据关节定位使表面顶点变形。在708处,根据蒙皮权重调整表面顶点,以平滑在多根骨和多个关节上的皮肤。如前所述,蒙皮权重是混合权重,以确定每根骨或每个关节的确定对皮肤表面矢量的输入多少。maoye和ruigangyang于2016年在ieeetransactionsonpatternanalysis&machineintelligence第38卷第08发行期发表的“real-timesimultaneousposeandshapeestimationforarticulatedobjectsusingasingledepthcamera”中描述了一个示例性实现方式。在阶段5,从最后知道的定位更新形变模型。

关于本文所述的数据建模,具体情况涉及对肩关节的建模。球关节是改进现有的3-dof(3个自由度)关节(肩)的建模的一种方式,由于旋转的表示,3-dof关节(肩)建模受到若干问题的困扰。对于每个dof,肩关节可以通过顺序地应用三次旋转来建模。现存的问题主要与万向节死锁相关,并且这种参数空间不太适合优化。

一个可选的实现方式使用扭转(twist)来联合编码角度、轴、和轴位置。如,例如在pons-moll和rosenhahn于2009年ieeeworkshoponapplicationsofcomputervision(wacv)的“balljointsformarker-lesshumanmotioncapture”(可从https://ps.is.tuebingen.mpg.de/uploads_file/attachment/attachment/140/ponswacv2010.pdf获得)中所述,为了使轴矢量自由,有必要对轴位置进行解耦。这样做的一种示例性方式是从相对于球关节旋转的点中减去轴位置,并假设在扭转中轴处于(0,0,0)。

这种调整可以被应用于任何合适的方法来建模肩关节。例如,它可以被用于如下调整maoye和ruigangyang于2016年在ieeetransactionsonpatternanalysis&machineintelligence第38卷第08发行期发表的“real-timesimultaneousposeandshapeestimationforarticulatedobjectsusingasingledepthcamera”的形变模型。在该文章中,基本形变模型通过以下被给出:

在上面的方程中,vm是前面描述的模型的顶点。

与关节角度有关。

与全局变换有关。

为了适应对肩的改进建模,插入前面描述的球关节信息,并去掉具有单位长度的ω的约束,从而可能将旋转轴和角度联合表示为ω的范数:

因此,可能在表示1d和2d关节的自由度的索引k和表示整个球关节的索引l之间做出区分。优化参数从三个标量角度δθ被变换为表示角度和轴方向的3维矢量δω'θ。矢量ql指的是关节l的轴的位置。注意,扭转已准备好,那么要恢复原始的需要撤消坐标转换:

δωlθl=((tl)-1δω′lθl)ttl

在710处,根据先前阶段中的计算,从最后知道的定位更新形变模型。

图8示出了根据本公开的至少一些实施例的用于姿态恢复的方法的非限制性示例。在802处,操作独立的姿态恢复线程,该独立的姿态恢复线程与跟踪用户并执行上述姿态计算的主线程分离。为了避免使可用的计算资源超负,优选间歇地操作姿态恢复过程,而不是连续地操作。在804处,对于每n帧,从点云数据计算恢复姿态,以确定该姿态的能量水平。数量n可以是任意多个帧,例如2至10帧,但是优选为3至5帧。使用前一帧的姿态作为种子点来应用初始化,但是重新运行以根据gmm拟合数据。然后,在阶段3利用恢复姿态重新运行算法。在808处,将当前计算出的用户的姿态与恢复姿态进行比较;当且仅当在计算点云方面恢复姿态具有较低能量时,则当前计算出的姿态被恢复姿态替换。例如,恢复姿态可以是用户的休息姿态。

图9示出了根据本公开的至少一些实施例的用于背景对象的分割的方法的非限制性示例。此处,背景对象可以是无生命对象(其不应该与用户混淆),例如桌子、椅子、床或其他家具。在902处,如前所述,从传感器数据生成点云,接着是904,在904处选择分割模型。例如,对于某些类型的背景对象,例如桌子,分割模型可以是简单的模型,例如平面模型。

在906处,根据所选择的分割模型,将ransac(随机样本一致性)算法应用于点云数据。该算法是基于概率的和迭代性的,并且被用于从点云数据中检测(并移除)异常值,以便将该数据拟合到分割模型。martynaporeba和goulette于2012年9月在波兰的symposiumdeptfit(polishsocietyforphotogrammetryandremotesensing)2012年第24卷第301-310页上发表的“ransacalgorithmandelementsofgraphtheoryforautomaticplanedetectionin3dpointclouds”中描述了根据平面模型将ransac模型应用于分割的非限制性示例。

在908处,最可能属于所选分割模型的点组被定位,并且可选地,在910处,如果本文描述的方法已经被执行了不止一次,则对先前被检测为属于模型的点向上投票(up-voted)。因为被分割的对象是一个背景、无生命对象,所以在跟踪过程期间其定位不可能改变。因此,一旦一个点被确定属于背景对象,它很可能继续正确地与该对象相关联。在912处,移除已经被确定属于模型的点,因为这样的点可能干扰用户的正确跟踪。

图10描述了根据本公开的至少一些实施例的用于关节检测的方法的非限制性示例。如图所示,在1002处接收点云作为输入;点云可以可选地如前所述地被生成。在1004处,为每个关节确定估计的位置。优选地,每个关节被确定为点云中的点,使得估计的位置与将对应于该关节的点的位置相关。为了清楚起见,关节位置被确定为骨架模型中的顶点,使得每个关节被映射为骨架模型中的离散点(顶点)。对于第一帧,可能使用来自(如下面更详细描述的)通过训练树(trainingthetrees)确定的训练数据的或来自模板数据的平均定位。对于后续帧,可能使用来自前一帧的定位作为估计值。在1006处,对靠近对应于关节的点的估计的位置的多个点进行采样。例如,这些点可以在距该点具有特定半径的球体内采样,例如,诸如0.5米。其他距离也是可能的,包括例如在0.005米至2米、或0.1米至1米范围内的任何距离,以及可选地在两者之间的任何距离。可选地,对于每个关节半径可以是不同的。

就采样点的数学表示而言,被认为是ci,j的每个候选者都具有以多种不同的方式生成的定位pi,j∈r3。对于给定的关节j,候选3d定位可以例如如下生成。给定骨架的可能3d姿态的训练数据,估计每个关节的定位的多元3d正态分布。定位可以通过简单地从该分布中采样一个点来生成。这可选地且优选地根据来自先前帧的数据进行细化。

对于后续阶段,假设关节由整数j∈j索引,j表示所有关节的集合。还假设预先将两棵训练的树训练为分类器或回归器,这将在下面参考1012进行更详细的描述。这两棵树包括可以估计距离|x-y|的树tdist,j以及可以直接估计相对于关节的偏移量y-x的树toffset,j。这些树的训练寻求最小化最小二乘目标函数。这些树可以如参考jung等人于2015年6月在cvpr会议上发表的“randomtreewalktowardinstantaneous3dhumanposeestimation”(可从https://www.researchgate.net/publication/275771971_random_tree_walk_toward_instantaneous_3d_human_pose_estimation获得)描述来进行训练。

在树tdist,j的每个叶节点处都有一组距离。一旦遍历了距离树,就到达一个叶节点,在该叶节点处,取该叶节点处的中值距离(mediandistance)作为估计的距离。对于树toffset,j,在每个叶节点处计算聚类。一旦到达该树的叶节点,就取随机选择的聚类的平均定位,选择聚类的概率与聚类中样本的数量成比例。在1008处,确定从每个采样点到估计的位置的距离。优选地,通过使用如下树来计算上述距离。若干关于其定位要被估计的每个关节。

假设有nj个关节j∈j,其中j={1,...,nj}。对于每一个关节,都会生成由c={1,...,nc}索引的nc个候选者。具有i∈c的每个候选者ci,j=(pi,j,di,j)由在相机坐标系中关节的建议定位的定位pj,i∈r3和距离di,j∈r(以米为单位)组成,距离di,j是定位pi,j离实际的、未知的关节定位有多远的估计值。距离di,j=0将意味着候选者是真实未知的3d定位的一个非常好的估计值。换句话说,它是对pi,j如何精确地逼近该真实未知的位置的一种估计度量。

让r∈r为从一组随机数r中随机生成的数字。让f∈f表示一组帧f中的输入深度帧,其由具有与每个像素相关联的深度值的像素组成。让sdirdist,j:r3×f×r→r3表示以下过程:给定定位x∈r3,使用在该定位处的树tdir,j来计算方向q,并且使用在该定位处的树tdir,j来计算距离d,获得一个新定位y=x+dq。换句话说,在给定某个定位x的情况下,可以通过首先计算朝向新定位的方向,然后按估计的距离缩放该方向,且最后将其添加到当前定位来估计关节定位y。因此,如果有定位x,那么对于给定的帧f和随机数r,按照y=sdirdist,j(x,f,r)就可以获得估计的定位y。随机数r被用于随机地选择在树tdir,j的叶节点处的聚类。

也可以定义soffset,j:r3×f×r→r3以表示以下过程:给定定位x,使用树toffset,j估计偏移p∈r3,且然后按照y=x+p计算估计的关节定位y∈r3。对于每个候选定位pi,j∈r3,通过评估在该候选定位处的树tdist,j来估计到真实定位的距离di,j。

然后在1010处,优选地执行用于确定关节的真实位置和用于选择候选点的优化问题。可以关于在每对关节之间的相对长度约束和/或根据在角度上的约束来执行优化。步骤1010可以如下根据利用在每对关节之间的相对长度约束的动态优化来执行。骨架模型提供了关于可能的长度范围的信息。然后,动态优化算法可以根据在每对关节之间可能的相对长度,来求解表示每对关节中关节的候选点的位置,之后该算法确定全局解。不需要考虑所有可能的分配,而只需要考虑每对相连的关节的分配。为了执行该计算,使用了用于建模人体骨架结构的模板。这些模板可选地可以是前面描述的模板,或者可选择地可从http://h-anim.org/specifications/h-anim1.1/appendices.html#appendixa处获得。使用了下面描述的目标函数,其从模板获取边(edge)(在每对关节之间的距离)和信息,并返回在模板中两个关节之间的距离。

具体而言,目标函数可以定义如下。假设关节是树形结构图的顶点,树形结构图由一组边连接。此外,考虑由t∈t且t={1,...,nt}索引的nt模板并引入函数d:e×t→r,函数d提供在骨架模板中边的长度(以米为单位)。优化问题的解是矢量i∈jnc,矢量i是与每个关节相关联的候选者的索引,其中ij表示与关节j相关联的候选索引:i=(i1,i2,...,inj)。

要被优化的参数是所有关节的骨架模板索引t和候选分配的矢量i。目标函数的左和是优化问题的数据项:对于候选者ij和关节j,该估计的距离是dij,j。目标函数的右和是优化问题的正则(regularization)项:给定模板t,对于树形结构骨架的每条边(m,n),其中m和n指的是关节,模板距离d((m,n),t)被候选者的两个定位pimm和pinn违背了多少。可以列举上述优化问题的所有解,并且可能的解的数量是

α参数是试探性地确定的,并且其已经被发现具有有用的值,特别是在0.4和1之间。对于有噪声的数据,α值较高,而对于干净的数据,α值较低。对于干净的数据,α项至少是0.001。如上所注释的,为了以计算方式解决优化问题,由于骨架的树形结构,可以使用动态优化方法来在合理的时间量内计算全局最优。felzenszwalb、pedrof.和raminzabih.在ieeetransactionsonpatternanalysis&machineintelligence的第33卷第4期(2011年)第721-740页的“dynamicprogrammingandgraphalgorithmsincomputervision”中描述了可以应用于该问题的合适的动态优化方法的一个非限制性示例。(可在http://www.cs.cornell.edu/~rdz/papers/fz-survey.pdf处获得)。

在1012处,可选地,使用至少一个经训练的分类器树来评估每个候选点用作表示关节的位置的适当性。优选地,训练树以确定从点到关节的方向,以及还用于估计从给定的3d定位到特定关节位置的距离。对于每个候选定位,树可以被用于确定候选者在解释关节的实际位置方面有多优秀。在一些实施例中,可以如前所述使用两组不同的树。因为方向单独不能确定候选者离特定位置有多接近,所以在一些实施例中,还使用距离树。可选地,可以训练树使得给定一个特定数据点,该点与特定关节有多接近。参考本文使用的表示法,通过将sdirdist,j或soffset,j应用于该定位或者优选地应用两者来进一步细化分配,以便获得更接近于真实关节定位的定位。

可选地,在1014处,候选点可以作为特征被用于第二过程以进行细化,从而更好地定位关节。可选地,可以重复算法的步骤1006-1012,但是(根据一些实施例)将这些候选点作为初始估计。该过程可以可选地重复不止一次,可选地具有附加的、不同的特征。

另外,可选地,用于训练前面描述的树的初始训练过程可以从jung等人于2015年6月在cvpr会议上发表的“randomtreewalktowardinstantaneous3dhumanposeestimation”(可从http://www.researchgate.net/publication/275771971_random_tree_walk_towards_instant_3d_human_pose_estimation获得)中描述的方法得到改进。在该文章中,用于划分训练样本所使用的特征如方程6中所示被确定:

其中f是当前帧,是我们评估特征的3d定位,df(x)是在x处的图像深度以及是两个偏移。

例如,假设当前定位具有分量x1、x2和x3,即x=(x1,x2,x3),可以如下添加新特征从而将当前点的深度与某个随机邻近点处的深度进行比较:

其中是随机偏移。

进一步的细化可以可选地以训练一组新的树为特征,该一组新的树也包括先前的估计值。这将包括特征:

其中|u|=1的u∈r3是随机选择的单位矢量,j是联合索引,x∈r3是评估特征的定位以及符号“·”表示两个矢量的点积。换句话说,该特征利用给定点x∈r3和该点的先前估计值p*j计算偏移,以获得考虑了先前知识的特征。除了(或代替)在前面描述的文章中提供的特征之外,这可以使用关于不同的关节j和随机单位矢量u的这种新特征来像以前一样被用于训练树。

对于给定的帧,使用经过训练的树来检测第一定位p*j。然后重新运行算法,但是使用经过训练的第二组树,除了图像数据之外,第二组树还使用检测值p*j用于第二特征。该细化的定位可被用作新的输入特征,并且然后对于每个关节获得一个甚至更好的细化p*j3。根据期望可以重复该过程许多次。如果执行该过程n次,那么对于每个关节j将会有位置p*jn。

在不希望受到单一假设的限制情况下,相对于从jung等人于2015年6月在cvpr会议上发表的“randomtreewalktowardinstantaneous3dhumanposeestimation”(可从http://www.researchgate.net/publication/275771971_random_tree_walk_towards_instant_3d_human_pose_estimation获得)或根据shotton等人于2011年发表的“efficienthumanposeestimationfromsingledepthimages”中提供的描述内容、或者它们的组合,图10的方法具有许多优点。jung等人的文章中描述的方法有许多缺点,包括关于核心随机行走算法,其倾向于与实际期望的拟合模型显著偏离。shotton等人的文章中描述的方法要求每个像素对特定位置进行投票,首先确定与对象相对的背景,且然后确定对象内的每个关节的位置,因为这些点被确定为偏离关节;这种方法在计算上非常昂贵。

可选地,根据至少一些实施例,提供了卡尔曼过滤器以用于提高跟踪系统的效率。例如,但不限于,卡尔曼过滤器的应用可以将效率提高到每秒60个身体姿态的速率。在不希望受到单一假设的限制情况下,卡尔曼过滤器通过历史数据的外推,以比基础重建算法(underlyingreconstructionalgorithm)更高的速率来提供身体姿态估计。

对于通过基础算法重建的每个姿态,姿态都以以下形式编码。身体的骨架被建模为一棵有根树(rootedtree),其中身体姿态的每个关节是这个有根的树中的一个节点。身体姿态相对于世界坐标系的3d平移被编码为骨架的根节点的3d平移t∈r3。对于每个关节i,四元数qi编码一个方位。对于根节点i=0;该四元数对应于当被应用于关节坐标时将这些坐标变换为世界坐标的旋转。对于所有其他关节,该旋转是当被应用于该关节的坐标系中的矢量时将该矢量变换为父关节的坐标系的旋转。除根关节外,每个关节在其父关节的坐标系中还有一个固定的原点。但该原点是恒定不变的。总而言之,有3个参数对身体的平移进行编码,并且然后对于身体的每个关节有4个四元数参数。如果有n个关节,那么总共有3+4n个参数对身体姿态进行编码。

现在描述过滤的算法流程的一个非限制性示例。有身体过滤器b、基础重建算法r和队列g。

身体过滤器是有状态对象,其将被称为b。它有两个操作:更新和预测。更新身体过滤器是指当该身体姿态被产生时向身体过滤器提供最近的身体姿态以及时间戳。更新身体过滤器意味着身体过滤器的内部状态也被更新,以反映新的身体姿态的知识和它被产生的时间。预测是指在最后一次更新的时间之后的任意时间的预测身体姿态的状态。这意味着在给定的时间使用身体姿态的内部状态来推断近似的身体姿态。每当通过基础重建算法重建新的身体姿态时,身体过滤器都会被更新。根据需要预测新的身体姿态。更新和预测这两个操作是互斥的,使得即使这两个操作由不同的线程对同一过滤器b同时进行调用,也可以获得一致的结果。与使用r重建身体姿态相比,这两种操作在计算上也相对便宜(cheap)。

每当一组新数据到达时,例如来自相机的帧,该数据就被加入到队列g上。当前,该队列g具有1个元素的最大大小。如果我们在该队列上加入一个元素且在队列中已经有一个元素,那么已经存在的元素被入队的新元素替换。

在单独的线程中,有一个循环:(i)或者从队列g中弹出最后的元素,或者等一个元素被放在队列上,然后其再弹出,然后(ii)将刚刚从队列中弹出的数据馈送到重建算法r,重建算法r使用该数据来重建身体姿态。一旦重建了新的身体姿态,身体过滤器b就用重建的身体姿态和传感器(例如飞行时间相机)获取输入数据时的时间戳来更新。

身体过滤器b允许在身体过滤器的最后更新之后的任何时间预测身体姿态。预测在计算上很便宜并且可以例如每当需要在屏幕上渲染新的身体姿态时来进行。

此处,在算法概述中描述了先前部分中提及的身体过滤器b的实现方式。

对于用于编码身体姿态的每个参数矢量都有一个卡尔曼过滤器。有一个卡尔曼过滤器用于过滤全局平移t,并且对于每个关节i的每个四元数qi有一个卡尔曼过滤器。对于有n个关节的身体姿态,有n+1个卡尔曼过滤器。过滤在多个线程中进行。每次用新的身体姿态更新身体过滤器b时,每个卡尔曼过滤器都用该身体姿态的相应参数来更新。每次从b预测了新的身体姿态时,卡尔曼过滤器预测相关的参数。

每个卡尔曼过滤器具有维数n,维度n对于身体平移过滤器是3,对于关节旋转过滤器是4。计数器j记录过滤器被更新了多少次。以下变量表示在j更新后过滤器的状态:

在过滤器后的维数为2n的状态矢量xj被更新了j次。该矢量的前n维是对被跟踪的状态的估计。其余n维是对这些参数的变化率的估计。在这种情况下,估计的状态对应于观察结果:对于平移过滤器,过滤器用由r重建的平移来更新,并且重建的状态也是平移。对于关节旋转过滤器,我们用四元数更新每个过滤器,并且过滤器估计的状态也是四元数。

在过滤器被更新了j次后,状态协方差矩阵pj保存状态参数的协方差。矩阵pj是大小为2n的正方形对称半正定矩阵。

最后观测j的时间戳tj是从历史时间点(例如,当过滤器被实例化时)起经过的以秒为单位的时间。

每个卡尔曼过滤器具有一组参数a=(astate,arate,aobs),其中astate是正在被估计状态的标准偏差的估计值,并且其对应于x的前n个参数。arate参数是状态变化率的标准偏差的估计值,并且其对应于卡尔曼过滤器的最后n个参数。aobs参数是观测中的噪声的估计,其被用于更新卡尔曼过滤器。

有几个保持不变的常量:q是2n×2n对角矩阵,表示状态估计协方差。它的左上n×n子矩阵是,其中每个元素都被设置为的一个对角矩阵。

左下n×n部分是其中每个元素都是的一个对角矩阵。

w矩阵是表示观测协方差的n×n对角矩阵,其中每个对角元素都是aobs。矩阵h是一个n×2n矩阵,其左边部分是一个n×n恒等式矩阵,并且所有其余元素都是0。

在实例化j=0的卡尔曼过滤器时,矩阵p0被设置为q。每次更新全部身体过滤器b时,每个卡尔曼过滤器都用其身体姿态的部分参数来更新。这些参数是观测值zj且它们具有维数n。在第一次调用卡尔曼过滤器时,状态x0的前n个元素被初始化为zj。x的其余元素被设置为0。

对于剩余的更新1<=j,对于到达的每个观测矢量zj,时间差值dj=tj-tj-1以秒为单位被计算到更新过滤器之前的时间。构造了一个n×2n大小的模型矩阵fj,其左n×n是一个恒等式矩阵。右边的n×n矩阵是每个元素都设置为t的对角矩阵。状态被预测为:xpred,j=fj*xj-1。

构建矩阵:

观测值被预测为:zpred,j=hxpred,j。

预测误差为yj=zj-zpred,j。

预测的状态中的不确定性,用协方差矩阵ppred,j表示,可以被传播到预测的观测结果中的不确定性:sj=hppred,jxt+w。

然后计算以下内容:

最后,更新状态矢量xj和状态协方差矩阵pj。如果状态矢量包含四元数,则有必要重新标准化:xj=c(xpred,j+kjyj)

标准化的功能:c:

被定义为:

否则,如果过滤平移,则不需要标准化:xj=xpred,j+kjyj

协方差被更新为:pj=(i-kjh)ppred,j。

卡尔曼过滤器预测被执行如下。根据需要或期望,在给定的时间t和在过滤器更新j次以获得正在被滤波参数的预测值k之后,x0j是xj的前n个参数,而x1j是xj的最后n个参数。对于四元数,预测需要被标准化:k=c(x0j+(t-tj)*x1j)。

否则,不需要标准化:k=x0j+(t-tj)*x1j。

图11示出了根据本公开的至少一些实施例的用于校准的非限制性、示例性系统。如图所示,系统1100以处理初始化和校准的基本初始化模块1102为特征。参照系(referenceframe)管理器1104确定rgb相机的参照系,以便能够评估所提供的视觉信息。参照系管理器1104还可以可选地确定深度传感器的参照系,例如tof(飞行时间)传感器。如下文更详细描述的,参照系管理器1104从校准管理器1116接收校准信息,以便能够确定参照系。参照系管理器1104然后向基本初始化模块1102提供参照系确定。

接下来,桌子管理器1106定位在对象的视觉检测区域内的桌子或其他家具(例如床或椅子)、或任何其他静物。桌子管理器1106使用桌子模型1108(其可以可选地涉及任何无生命对象)来分割出桌子或其他无生命对象,以防止从对这类无生命对象的检测中生成伪像(artifact)。

基本初始化模块1102还与标志器管理器1110有联系,标志器管理器1110定位可以被附着到被跟踪对象或患者的任何有源或无源标志器。如上面更详细描述的,这些标志器可以可选地包括但不限于灯(诸如,例如led灯)、惯性标志器、磁力计、无源视觉标志器等类似物。为了执行校准过程,标志器管理器1110定位被附着到对象的或以其他方式处于环境中的标志器。在标志器需要在对象上特殊放置的情况下,例如在特定的位置或身体部位放置,标志器管理器1110还验证这些标志器至少相对于彼此已经被正确放置。

例如根据检测到的标志器相对于模型标志器的定位,比例管理器1112然后确定对象的相对尺寸。

一旦定位了系统的各个部件,跟踪器管理器1114就启动对所有部件的校准,以便能够跟踪对象。校准是通过校准管理器1116来执行的,校准管理器1116如下面参考图12a-12d所述地执行校准过程。

图12a-12d示出了根据本公开的至少一些实施例的用于校准的非限制性、示例性方法。图12a示出了整个示例性校准过程,而图12b示出了用于标志器校准的过程,图12c示出了用于桌子(无生命对象)校准的过程,以及图12d示出了用于比例校准的过程。

现在转向图12a,如图所示,校准过程从阶段1200开始。接下来,在阶段1202,执行标志器校准。如下文更详细描述的,该阶段包括检测标志器,并且如果需要对标志器的特定放置(place),则确定它们彼此的相对放置。

在阶段1204执行桌子(无生命对象)校准。如下文更详细描述的,该阶段包括检测一个或更多个无生命对象(例如桌子),并且然后将它们从后续跟踪过程中分割出来,以避免生成伪像。

在阶段1206执行比例校准。如下文更详细描述的,该阶段包括通过将检测到的标志器与模型标志器进行比较来确定每个肢体(limb)的相对比例。然后,优选地,推断模型的全局比例,并在相同的跟踪成本函数上优化单个比例参数。

一旦执行了这些单独的校准过程,校准过程在1208处结束。

现在转向图12b,标志器校准过程可选地被执行如下。在阶段1210中,例如从tof传感器,优选地获得以颜色(光学)数据(rgb)和深度数据为特征的(rgbd)图像。光学数据优选地与深度数据同步并被校准到深度数据。

接下来,在阶段1212,计算从光学和/或tof传感器参照系到世界参照系的变换。优选地,该过程通过在阶段1214从相机传感器接收数据来支持,例如关于它们的相对方位。

然后,在阶段1216,开始跟踪标志器的过程。优选地检测来自每个标志器的数据。例如,如果标志器是led灯,那么优选地检测每个led灯。如果标志器被着色,例如作为彩色灯,那么优选地在阶段1218中检测每个标志器的每种颜色。然后,作为该过程的一部分,检测出的标志器的颜色优选地被映射到存储的颜色信息,使得每个标志器的颜色可以被正确地检测。

在阶段1220,优选地继续校准过程,直到所有的标志器都已被检测和映射。在阶段1222,设置游戏场景,包括确定患者是否具有足够的自由移动空间,以及确保相机相对于患者的定位/方位,允许正确和舒适的用户交互。

在阶段1224,优选地继续校准过程,直到游戏场景已被正确设置。然后,在阶段1226,该信息被显示给用户,用户然后可以选择确定游戏场景(或校准的某些其他方面)没有被正确设置并返回到校准的初始化。如果场景被正确设置并且用户在阶段1228验证了,那么该过程可以在阶段1230结束。

在跟踪对象的运动的过程期间,阶段1218-1228可选地被重复至少一次。

图12c示出了桌子(无生命对象)校准的过程。尽管该示例是针对桌子描述的,但是应当理解,该过程对于任何无生命对象或其组合都将是可操作的。步骤1232开始于图12b的步骤1210,在该步骤中获得rgbd图像。在1234处,执行模式搜索以检查一个或更多个无生命对象,对于该非限制性示例,无生命对象是桌子。可选地,桌子的模式或与桌子相关的描述性参数被存储在数据库中,以用于模式搜索。

在1236处,检测桌子模式。然后,在1238处,与该模式相关的光学和/或深度数据可选地使用合适的算法拟合,例如前面描述的ransac算法。此外,在1240处,桌子还优选地拟合到如前所述的预定模式中的一个模式。然后,1238和1240的输出的组合可以可选地被用于计算环境相对于阶段1242中的桌子的世界原点。在1246处,该计算使得桌子能够从计算中被分割出来,以避免伪像。优选地,相对于从1244接收的点云数据来执行分割。然后,在1248处,可选地显示分割出的桌子,例如以使用户能够确定桌子是否已被正确地分割。

在1250处,可选地重复该过程,例如直到一定数量的稳定帧或稳定时间段过去,并且/或者在这样数量的稳定时间帧或稳定时间段之后。在1252处,可选地在满足了关于桌子分割的一个或更多个预定标准之后,桌子的校准过程可以完成。

图12d示出了用于比例校准的过程。关于图12b,可选地执行步骤1254(获得rgbd图像)、1256(跟踪标志器)和1258(标志器检测)。可选地重复步骤1256和1258,直到检测到所有标志器为止。

步骤1260包括姿态初始化,其涉及对被跟踪对象的位置和定位(position)的初始确定。在1262处,根据标志器的相对位置缩放对象的身体。在1264处,确定标志器的偏移。在1266处,收敛标志器偏移。重复步骤1264和1266,可选地重复步骤1262,直到确定了身体比例和相对标志器定位。该过程然后在1268处结束。

根据至少一些实施例,可选地,被跟踪的标志器是混合标志器。这种混合标志器可以可选地包括不同类型的有源标志器(例如,光学和惯性)的组合,和/或有源和无源标志器(例如,光学和/或惯性,以及关节检测或另一种类型的有源标志器)的组合。

优选地,使用混合标志器,可以跟踪所有关节。置信度还可以与方位相关联,而不仅仅与关节位置相关联。

给定的关节位置可能是标志器检测的结果(已经带来了其置信度),也可能是由于点云,或者两者都有。可选地,位置正确的概率被缩放例如到范围-100,100。当在这样的范围内表示跟踪/检测置信度时,可选地,相对于检测的概率(p(检测))如下确定c(置信度):

*c=-100->p(检测)~=0.00001

*c=-80->p(检测)~=0.0001

*c=-60->p(检测)~=0.001

*c=-40->p(检测)~=0.01

*c=-20->p(检测)~=0.1

*c=0->p(检测)=0.5

*c=20->p(检测)~=0.9

*c=40->p(检测)~=0.99

*c=60->p(检测)~=0.999

*c=80->p(检测)~=0.9999

*c=100->p(检测)~=0.99999

可选地,特殊值not_tracked涉及关节从未被跟踪的情形。例如,如果系统被配置为仅跟踪人上半身,那么在跟踪期间,请求关于腿部的关节的信息将导致not_tracked值。这种情况的另一非限制性示例是,如果跟踪系统(或系统内的特定模块)被配置为仅跟踪手。在该情况下,请求不属于手(脖子、头、肩等...)的任何关节的信息将导致not_tracked值。这种划分允许系统明确地设置和跟踪完整骨架的关节的任意子集,从而支持若干用例,包括但不限于特殊身体部位的跟踪或跟踪被截肢者用户。

可选地,特殊值not_tracked涉及该值未被可靠地检测到(例如,一只手被遮挡且未被检测到)但是在给定可用的传感器的情况下理论上可以被检测到的情形。

可选地,置信度可以用32位的整数值来表示,该32位的整数值在其高16位中存储标志码而在其低16位中存储置信度的值。具有单独的位组(bit-set)标志将支持在诸如关节被遮挡、被跟踪的情形下的以30%的置信度通信。可选地,置信度的范围可以被改为0-100,以便具有更直观的如整型(prob*100)的基于概率的解释。

在任一情况下,置信度都是基于检测的概率(“检测到的x为真的概率”)。

置信度通过logit函数与概率关联,例如c=20*log_10(p/(1-p))。置信度限于区间[-100;100]。特殊值“未被检测到”(当前值:-101)可以可选地与最低可能的置信度具有等同含义。特殊值“未被跟踪”(当前值:-102)可以被用来表明跟踪算法不知道被询问的特定关节/项。

从点云计算骨置信度:

给定点云,特定骨/关节的置信度可选地被计算如下:

其中b指骨头,v指皮肤顶点,并且p指云中的点。矩阵α表示混合权重并且后验矩阵。

最后,函数conf(p)返回云中的点p的置信度。理想情况是云中的每个点都有一个相关的置信度(该置信度可以被设置为默认值或者从原始的相机数据中被推断出来),并且骨的置信度通过两个步骤来累积:首先,顶点受点影响的强度,以及然后,该骨受该顶点影响的强度。

从混合云计算骨置信度:

不失一般性,相同的公式可以被应用于基于标志器检测来计算置信度,其中替代地函数conf(m)是指标志器检测m的置信度,且顶点v对应于身体中放置标志器的位置。

为了在关节内组合两种置信度,使用了取最大值运算符:conf_bone_b=\max(conf_b_cloud,conf_b_poses)

使得如果在云中存在以高置信度影响给定的骨的标志器,则骨置信度将最终成为标志器中之一。

从骨置信度计算关节置信度:因为最终置信度必须用关节置信度而不是骨置信度来表达,所以我们将骨值映射到关节,以这种方式使得在k根骨之间共享的关节具有是该k根骨的置信度的平均值的置信度。

图13a-13g涉及根据至少一些实施例的用于跟踪关于骨架的抽象的非限制性实现方式。图13a涉及用于跟踪抽象的系统的非限制性示例,并且图13b-13f示出了示例性运动链、关节变换和姿态。图13g涉及用于实现同一内容的方法的非限制性示例。

在该实现中,但不希望受到限制,跟踪系统在跟踪期间使用skelex骨架作为用户身体的抽象表示,网格/皮肤被添加到skelex骨架中,以便能够将点云拟合到skelex姿态。

skelex与“骨架数据格式”一起被使用,以便在系统模块之间交换数据(例如,在跟踪期间将姿态导出到3d渲染引擎,例如unity3d,或者在校准期间描述用户身体比例)。最小skelex拓扑包括以下项:左腿和右腿;脊柱(椎骨的子集)和颅骨;以及左臂和右臂,不含手指。可选地,可以添加非最小的椎骨以及左手手指和右手手指。

现在转向图13a,示出了系统1300,其以如前所述的多个部件为特征。具有与前面描述的部件相同数量的部件具有相同或相似的功能。设备抽象层108还以多个skelex部件为特征。设备抽象层108的分析部件能够访问这些skelex部件,以便获得正确格式的数据。这些部件提供骨架和姿态数据交换系统、姿态数据的格式(即在空间中的位置和方位)、人形骨架的最小参考(即关节层次/拓扑)以及用于在不同骨架类型和不同数据模块之间的数据交换的工具(utilities)。

如图所示,skelex设备接口1302使得能够从各种数据源提供数据,此处使用如前所述的标志器118、相机102、深度传感器104以及可选地还有音频传感器106和/或一个或更多个附加传感器120的非限制性示例来示出。如前所述,该数据可以以使得能够对其进行分析以跟踪对象的方式进行格式化。

接下来,库1306使得数据能够被格式化为skelex结构1308,可选地接下来是串行化器(serializer)1310。串行化器1310可以将skelex数据结构转换成可以更紧凑地被存储的格式。作为串行化器1310的操作的结果,数据被提供为二进制缓冲器1312(在存储器上彼此跟随的紧凑的一组数据字节)。

skelex跟踪数据然后可以通过skelex分析接口1304以各种格式被提供给数据分析层110和相关的跟踪引擎112。可选地,skelex设备接口1302和skelex分析接口1304被组合到单个接口中,用于使得数据能够被写入skelex结构并能够从skelex结构中读取。

定义和符号:齐次坐标。以下使用齐次坐标,因此隐式地假设点x被表示为x:=[x0,x1,x2,1]t。

这允许适当的刚体变换(平移和旋转的组合—无反射)以线性形式被表示为

刚体转换可以被链接:

t[r1|t1]t[r2|t2]=t[r1r2|r1t2+t1]

t[r1|t1]t[r2|t2]…t[rn|tn]=t[r*|t*]

其中

r*=r1r2…rn

t*=r1r2...rn-1tn+r1r2…rn-2tn-1+...+r1t2+t1。

空间中的点可以用不同的参照系来描述。可以将以参照系v和从参照系v到参照系w的刚体变换表达的点的坐标写入xv。因此,例如,

使用该符号,通过消除相等的左侧下标和右侧上标,通过连接变换和点,可以很容易地表达跨越几个参照系的变换。例如

骨架被定义为有根树。树的每个节点(i)是如本文所述的变换,其具有作为父节点的树的单个变换。可以将p(i)写成变换i的父节点。根是一个特殊的关节,其在骨架中没有父关节。骨架是一棵树,从任何节点跟随父链,经过有限次数的步骤后,保证会到达根。从节点到根的向上路径定义了该变换的运动链。通过将变换与每根骨关联,由骨架形成的一组变换可以被用于映射人体的物理定位和方位。

图13b-13e示出了根据上述定义所定义的示例性运动链。图13b示出了右腿的运动链的侧视图。可以为左腿创建类似的链。图13c示出了右臂的运动链的前视图。可以为左臂创建类似的链。图13d示出了颅骨和脊柱的运动链的侧视图。图13e示出了右手的运动链的俯视图。可以为左手创建类似的链。图13f示出了根据上述定义所定义的示例性关节变换。

本文提供了skelex骨部件的非限制性列表:骶骨(acrum)、左_臀部_骨、左_股骨、左_腓、左_足、左_前_足、左_脚趾骨、右_臀部_骨、右_股骨、右_腓、右_足、右_前_足、右_脚趾骨、l1、t7、t1、颅骨(skull)、左_锁骨、左_上臂、左_前臂、左_手、右_锁骨、右_上臂、右_前臂、右_手、左_拇指_掌骨、左_拇指_近端肱骨、左_拇指_胫骨远端、左_索引_掌骨、左_索引_近端肱骨、左_索引_中间、左_索引_胫骨远端、左_中间_掌骨、左_中间_近端肱骨、左_中间_中间、左_中间_胫骨远端、左_无名指_掌骨、左_无名指_近端肱骨、左_无名指_中间、左_无名指_胫骨远端、左_小指_掌骨、左_小指_近端肱骨、左_小指_中间、左_小指_胫骨远端、右_拇指_掌骨、右_拇指_近端肱骨、右_拇指_胫骨远端、右_索引_掌骨、右_索引_近端肱骨、右_索引_中间、右_索引_胫骨远端、右_中间_掌骨、右_中间_近端肱骨、右_中间_中间、右_中间_胫骨远端、右_无名指_掌骨、右_无名指_近端肱骨、右_无名指_中间、右_无名指_胫骨远端、右_小指_掌骨、右_小指_近端肱骨、右_小指_中间、右_小指_胫骨远端、l5、l4、l3、l2、t12、t11、t10、t9、t8、t6、t5、t4、t3、t2、c7、c6、c5、c4、c3、c2、c1。

本文提供了skelex骨部件的非限制性列表://基础骨盆骶骨;//lengs左_股骨,左_腓,左_足,左_前_足,左_脚趾骨,右_股骨,右_腓,右_足,右_前_足,右_脚趾骨//脊柱l1、t7,图13g涉及一种通过从前述传感器数据中确定骨架的用于跟踪抽象的方法的非限制性、示例性实施例。如图所示,方法1350的特征在于在阶段1352的校准期间创建skelex骨架。在阶段1354接收传感器数据,并在阶段1356将其格式化为skelex结构。在阶段1358,数据可选地被紧凑地存储。

接下来,在阶段1360,在每个跟踪帧期间处理骨架,以将点云至少匹配到骨架的顶点的位置。在阶段1362,在每帧之后,skelex骨架被传送到3d渲染引擎,例如unity3d渲染引擎。

不希望受到单一实施方式的限制,为了创建如上所述的骨架,可选地包括以下设计特征。骨架数据可以被分为从静态信息到动态信息的三个层次的信息。在给定的应用中,骨架层次通常是固定的,并且由一组关节和每个关节的父关节组成。

如果新用户已经被校准,则应指定骨架尺寸。它包括每个关节在父关节的参照中的标准位置,以及每个关节的自由度和运动范围。

姿态信息是实际的姿态数据,并且由每个关节的变换tw[ri|ti]组成。

骨架优选地具有以下特征。任何关节都应该能够映射到精确的解剖位置,以便在考虑医疗应用的情况下以精确的方式传递信息。骨架可以是如上定义的完整骨架或其有效子集。有效子集被定义为包括人的根关节,并且遵守骨架层次,即,如果在子集中i是j的父级,那么在完整骨架中i必须是j的运动链的一部分。

附录(骨架的部分描述)

在本申请中提出的对出版物或其他文件的任何和所有引用,包括但不限于专利、专利申请、论文、网页、书籍等,通过引用以其整体并入本文。

本文描述了设备、系统和方法的示例实施例。如其他地方所指出的,这些实施例仅仅是为了说明的目的而被描述的,而不是限制性的。其他实施例是可能的,并且被本公开所覆盖,这从本文包含的教导中将变得明显。因此,公开的广度和范围并不限于上面所述的实施例中的任一个,而应当仅仅根据本公开所支持的权利要求以及它们的等同物来限定。此外,本主题公开的实施例可以包括方法、系统和设备,其还可以包括来自任何其他公开的方法、系统、和设备的任何和所有元件,包括对应于用于跟踪身体或其部分的系统、方法和装置/设备的任何和所有元件。换句话说,来自一个或另一个公开的实施例的元件可以与来自其他公开的实施例的元件互换。另外,所公开的实施例的一个或更多个特征/元件可以被移除,并且仍然导致可获得专利的主题(并且因此,导致主题公开的更多个实施例)。相应地,通过具体缺少一个或更多个元件/特征,本公开的一些实施例可以在专利性上区别于一个和/或另一个参考文献。换句话说,针对某些实施例的权利要求可以包含负面的限制,以具体排除一个或更多个元件/特征,从而导致实施例在专利性上区别于包括这些特征/元件的现有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1