全自动动态关节连接的模型校准
背景
成像系统获得关于关节连接的对象(诸如人)或其他物体在物理空间中的位置、姿态和/或移动的数据,并且可使用该数据作为计算系统中的某一应用的输入。可以有许多应用,例如用于军事、娱乐、体育和医学目的。例如,对象的姿态和/或运动可用于控制动画人物或化身、参与游戏、从命令的屏幕上菜单中作出选择等等。姿态可表示对象在某一时间点(诸如一深度像素帧)的构造或形状,而对象的运动可由诸如在多个深度像素帧中的姿态序列来表示。成像系统可包括使用相机来在视野中检测对象的存在的光学系统。然而,以更高的保真度来对对象进行成像需要进一步细化。具体而言,希望以高度的保真度来对诸如手之类的关节连接(articulated)的身体部位进行成像。
概述
提供了用于以改进的保真度来对诸如用户的手之类的关节连接的身体部位进行成像的处理器实现的方法、成像系统和有形计算机可读存储设备。例如,用户可以作出手势来导航菜单、在浏览或购物体验中交互、选择要玩的游戏、或访问通信特征,如向朋友发送消息。用户可使用手来控制光标以从屏幕上菜单选择项目,或者控制化身在3D虚拟世界中的移动。一般来说,手位置和姿态可被检测并用作对成像系统中的应用的控制输入。
为提升成像系统准确地标识关节连接的身体部位的能力,提供了关节连接的身体部位的模型。该模型被匹配到从深度传感器获取的对应深度像素,以提供初始匹配。该匹配过程随后使用距离约束、冲突约束、角度约束以及使用光栅化模型的像素比较来细化。
在一个实施例中,提供了其上包含计算机可读软件的计算机可读存储设备,该计算机可读软件用于对至少一个处理器进行编程以执行一种用于对对象(诸如用户/人、动物、机器人等)的关节连接的身体部位的姿态进行建模的方法。该方法包括获取关节连接的身体部位的深度像素。深度像素可使用深度传感器例如在一个或多个帧中获取。深度像素是传感器数据。该方法还包括处理该一个或多个帧的深度像素以标识关节连接的身体部位。该方法还包括访问模型,其中该模型包括与该对象的关节连接的身体部位相对应的关节连接的身体部位。该模型的关节连接的身体部位被匹配到所标识的该对象的关节连接的身体部位,以提供初始匹配。在一种可能的方式中,此匹配过程将该模型的每一关节连接的身体部位的代表性吸引点匹配到一个或多个帧中的深度像素的相应质心。
该方法还包括估计该模型的关节连接的身体部位在初始匹配中违反距离约束的程度,其中这些距离约束包括对该模型的关节连接的身体部位之间的距离的约束。该模型被调整以试图满足距离约束,包括基于距离约束被违反的程度来调整该模型的关节连接的身体部位中的至少一个的长度。作为一个示例,可以增大或减小关节连接的身体部位的长度。
在该模型满足指定条件时,诸如在该模型的至少两个相邻手指指节(segment)被确定为位于指定相对位置(例如,彼此平行)时,可以实施冲突约束。该模型可被调整以诸如通过减小该模型的至少两个相邻手指指节的宽度来试图满足冲突约束。
像素比较可涉及将手的关节连接的部位中的至少一个的深度像素与一个或多个帧中的深度像素进行比较,以标识一个或多个帧中的非重叠深度像素以及手的关节连接的部位中的至少一个的非重叠深度像素。该模型可基于比较步骤来调整,以便诸如通过减小和/或增加该模型的关节连接的身体部位中的至少一个的维度,使得该模型更紧密地匹配一个或多个帧中的深度像素。
提供本概述以便以简化形式介绍将在以下的具体实施方式中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
附图简述
在附图中,相同编号的元件彼此对应。
图1描绘了成像系统的示例实施例。
图2描绘了图1的成像系统的示例框图。
图3描绘了可以在图1的成像系统中使用的计算环境的示例框图。
图4描绘了可以在图1的成像系统中使用的计算环境的另一个示例框图。
图5描绘了包括关节和吸引点的用户的手的模型。
图6描绘了用于以改进的保真度在成像系统中检测关节连接的身体部位的姿态的方法。
图7A描绘了图6的步骤700、720和750的进一步细节。
图7B描绘了图6的步骤760的进一步细节。
图8A描绘了深度像素(包括用户的手的深度像素)的帧。
图8B描绘了图8A的用户的手的深度像素,而背景像素被移除。
图9A描绘了来自图7A的样例步骤712、针对图8B的用户的手的深度像素的远端手指指节以及远端拇指指节的概率值。
图9B描绘了在图7A步骤721中针对图8B的用户的手的深度像素的中间手指指节以及近端拇指指节所生成的质心。
图9C描绘了在图7A步骤721中针对图8B的用户的手的深度像素的近端手指指节所生成的质心。
图9D描绘了在图7A步骤721中针对图8B的用户的手的深度像素的手掌所生成的质心。
图9E描绘了在图7A步骤721中针对图8B的用户的手的深度像素的手腕所生成的质心。
图10描绘了在图7A步骤721中从用户的手的测试数据所生成的质心。
图11描绘了图7A中针对质心到吸引点匹配的步骤734的细节。
图12A描绘了图7A中针对吸引点到质心的刚性变换的步骤736的细节。
图12B描绘了图7A中用于将吸引点移向更接近质心的步骤752的细节。
图12C描绘了图7B中用于使模型光栅化以提供该模型的深度像素的步骤764的细节。
图12D描绘了图7B中用于针对拇指区域,将模型的深度像素与传感器的深度像素进行比较的步骤766-772的细节。
图12E描绘了图7B的步骤778的细节,其与图12D相一致地示出了根据基于像素的调整向量对该模型的关节的调整。
图12F描绘了图12E中使用的基于像素的调整向量。
图12G描绘了图7B中的步骤792的细节,其与图12E相一致地示出了对模型的更新。
图13A描绘了图7B中用于将模型的深度像素与传感器的深度像素进行比较的步骤768、770和772的进一步细节,其中比较平面横穿深度传感器的深度轴。
图13B描绘了图13A的比较平面1310的进一步细节。
图14描绘了用于以改进的保真度在成像系统中使用距离约束、冲突约束以及像素比较来检测关节连接的身体部位的姿态的方法。
图15描绘了供与图14的方法一起使用的用户的手的深度像素的示例。
图16A1描绘了将图5的模型匹配到图15的深度像素,其中距离约束不被施加,并且该模型比所期望的小。
图16A2是图16A1的替代,其中描绘了父和子关节。图16B1描绘了图16A1的图像中针对食指的细节。
图16B2是图16B1的替代,其中描绘了父和子关节。
图16C描绘了在施加距离约束之后对图16B1的模型的调整。
图16D描绘了光栅化之后图16C的模型,以及与深度传感器的深度像素的比较。
图16E描绘了基于像素比较来对图16D的模型进行的调整。
图17A描绘了将图5的模型匹配到图15的深度像素的另一示例,其中距离约束不被施加,并且该模型比所期望的大。
图17B是图17A的替代,其中描绘了父和子关节。
图18A描绘了图5的模型中的两个相邻手指示出冲突。
图18B描绘了施加冲突约束之后图18A的这两个相邻手指。
详细描述
此处所提供的技术提供了通过概率信息和约束以高度自由度来实时地估计关节连接的对象的状态(姿态和/或形状),以生成可作为各种人机交互任务的输入源来消费的提议。关节连接的对象可以是具有大部分有六个自由度的许多关节的已知3D形状对象。该状态是已知的关节连接的对象的所有部分的平移、定向、比例和其他形状描述性信息。
在需要更精细的细节水平时,该问题的解决方案对于诸如完全身体跟踪之类的更受限的情况通常是不足的,而该解决方案对于标识诸如躯干和头之类的身体特征而言是足够的。例如,在检测用户的手时,由于用户在像素空间上快速移动手的能力,因此可能存在较低程度的帧到帧连贯性。当用户的手填满视野的一大部分时(诸如当用户接近深度传感器时)尤其是这样。此外,相比于完全身体跟踪,手通常具有因自身遮挡导致的更大的模糊性,并且具有许多相似外观的部分,例如手指。然而,此处所提供的解决方案同样适于完全身体跟踪和姿态估计。
在某些情况下,使用具有固定拓扑结构的关节连接的模型。然而,对于模型的每个关节连接部分而言具有各不同维度可能是有利的。在该情况下,对于诸如模型拟合之类的任务而言,动态地对该模型的所有部分的维度进行良好估计并且实时地调整维度以纠正错误是有用的。关节连接的姿态估计方法可假定模型大小参数事先是已知的,或是通过直接测量或是在其中用户采用特定预定义校准姿态的预处理步骤中计算。然而,避免这样的校准过程是合乎需要的,因为该过程对用户而言可能是不方便的。此处所提供的解决方案动态地校准并实时地调整关节连接的模型的所有部分的维度。这可通过对与关节连接的模型的每一部分的维度有关的多个信息源进行组合并加权来完成。所提议的解决方案不要求用户输入、预校准步骤、或用户采用简化姿态。
通过对某连续时间段从不同的源所获取的信息进行加权和组合,已知的关节连接的模型可被动态地调整到它的正确维度。这可作为静态初始化步骤或正在进行的调整步骤来完成,以适应更灵活的关节连接的对象或在建模都是相同已知类型的不同关节连接的对象之间进行切换。
该解决方案的特征包括:(1)使用距离约束违反量来估计关节连接部分的长度,(2)使用冲突约束违反量来找出对关节连接部分的宽度的估计,(3)使用来自模型拟合的像素分类来估计关节连接部分的宽度,以及(4)使用刚性3D点云变换来估计使用1D到3D比例的关节连接的模型的总体大小。
图1描绘了其中用户8与应用交互的成像系统10的示例实施例。这示出了成像系统诸如在用户家中的真实世界部署。成像10包括显示器196、深度相机系统20、以及计算环境或装置12。深度相机系统20可包括图像相机组件22或深度传感器,其具有红外(IR)光发射器24、红外相机26和红-绿-蓝(RGB)相机28。也称为个人或玩家的用户8站在深度传感器的视野6中。线2和4表示视野6的边界。在该示例中,深度相机系统20和计算环境12提供了其中显示器196上的化身197跟踪用户8的移动的应用。例如,当用户举起手臂时,化身可举起手臂。用户还可用手作出姿势以便向应用提供控制输入。化身197站在3D虚拟世界的公路198上。可以定义笛卡儿世界坐标系,其包括:沿着深度相机系统20的焦距例如水平地延伸的z轴;垂直地延伸的y轴;以及侧向地(横穿z轴)且水平地延伸的x轴。注意,附图的透视被修改为简化,因为显示器196在y轴方向垂直地延伸,且z轴从深度相机系统垂直于y轴和x轴并平行于用户8所站立的地面伸出。
一般而言,成像系统10用于识别、分析和/或跟踪人类目标。计算环境12可包括计算机、游戏系统或控制台等等,以及执行应用的硬件组件和/或软件组件。
深度相机系统20可以包括相机,相机用于在视觉上监视诸如用户8等的一个或多个人,从而可以捕捉、分析并跟踪用户所执行的姿态、姿势和/或移动(包括一只或两只手的姿态、姿势和/或移动),以执行应用内的一个或多个控制或动作,如使化身或屏幕上人物动画化或选择用户界面(UI)中的菜单项。手姿态表示用户的手在某时间点(诸如在一深度像素帧)的构造,而姿势表示诸如在多个深度像素帧中的姿态序列。多个用户可类似地被监视。
成像系统10可以连接到诸如显示器196等的向用户提供视觉和音频输出的视听设备,如电视机、监视器、高清电视机(HDTV)等,或甚至是墙或其他表面上的投影。还可以经由单独的设备来提供音频输出。为驱动显示器,计算环境12可包括提供与应用相关联的视听信号的诸如图形卡之类的视频适配器和/或诸如声卡之类的音频适配器。显示器196可以通过例如S-视频电缆、同轴电缆、HDMI电缆、DVI电缆、VGA电缆等等连接到计算环境12。
用户8可使用深度相机系统20来跟踪,以使得用户的姿态、姿势和/或移动被捕捉并用于使化身或屏幕上人物动画化,和/或被解释为对计算机环境12所执行的应用的输入控制。
用户8的某些移动可被解释为可对应于除控制化身之外的动作的控制。例如,在一个实施例中,玩家可以使用姿态和/或移动来结束、暂停或保存游戏,选择级别,查看高分,与朋友进行交流等等。玩家可以使用姿态和/或移动来从主用户界面中选择游戏或其他应用,或以其他方式导航选项菜单。由此,用户8的全范围姿态和/或运动可以用任何合适的方式来获得、使用并分析以与一个或多个应用进行交互。
成像系统10还可以用于将目标姿态和/或移动解释成处于游戏或旨在娱乐和休闲的其他应用的领域之外的操作系统和/或应用控制输入。例如,操作系统和/或应用的基本上任何可控方面可由用户8的姿态和/或移动来控制。
图2描绘了图1a的成像系统10的示例框图。深度相机系统20可以被配置为通过任何合适的技术捕捉带有深度信息(包括可以包括深度像素值的深度图像)的视频,这些技术包括例如飞行时间、结构化光、立体图像等等。深度相机系统20可将深度信息组织为“Z层”,即可与从深度相机沿其视线延伸的Z轴垂直的层。
深度相机系统20可包括图像相机组件22,如捕捉物理空间中的场景的深度图像的深度相机。深度图像可包括所捕捉的场景的二维(2D)像素区域,其中该2D像素区域中的每一像素具有代表距离图像相机组件22的线性距离的相关联深度值。
图像相机组件22可包括可用于捕捉场景的深度图像的红外(IR)光发射器24、红外相机26、以及红-绿-蓝(RGB)相机28。3D相机由红外发射器24和红外相机26的组合形成。例如,在飞行时间分析中,IR光发射器24将红外光发射到物理空间上,并且红外相机26检测来自物理空间中的一个或多个目标和物体的表面的反向散射光。在某些实施方式中,可以使用脉冲式红外光,从而可以测量出射光脉冲和相应的入射光脉冲之间的时间并将其用于确定从深度相机系统20到物理空间中的目标或物体上的特定位置的物理距离。可将出射光波的相位与入射光波的相位进行比较来确定相移。然后可以使用该相移来确定从深度相机系统到目标或物体上的特定位置的物理距离。
也可使用飞行时间分析,通过经由包括例如快门式光脉冲成像的各种技术来分析反射光束随时间的强度以间接地确定从深度相机系统20到目标或物体上的特定位置的物理距离。
在另一示例实施方式中,深度相机系统20可使用结构化光来捕捉深度信息。在这一分析中,图案化光(即,被显示为诸如网格图案或条纹图案等已知图案的光)可经由例如IR光发射器24被投影到场景上。在落到场景中的一个或多个目标或物体的表面上以后,作为响应,图案可以变为变形的。图案的这种变形可由例如红外相机26和/或RGB相机28来捕捉,然后可被分析以确定从深度相机系统到目标或对象上的特定位置的物理距离。
深度照相机系统20可包括可以从不同的角度观察场景的两个或更多在物理上分离的相机,以获取可以被解析以生成深度信息的视觉立体数据。
深度相机系统20还可以包括话筒30,其包括例如接收声波并将其转换成电信号的换能器或传感器。另外,话筒30可用于接收也可由人提供的诸如声音之类的音频信号,以控制由计算环境12运行的应用程序。音频信号可包括人的嗓音,如说的话、口哨声、喊声及其他发声,以及非嗓音,如掌声或跺脚。
深度相机系统20可包括与图像相机组件22进行通信的处理器32。处理器32可包括可执行指令的标准化处理器、专用处理器、微处理器等,这些指令可包括例如用于接收深度图像的指令;用于基于深度图像来生成体素网格的指令;用于移除体素网格中所包括的背景以隔离与人类目标相关联的一个或多个体素的指令;用于确定被隔离的人类目标的一个或多个肢端的位置或方位的指令;用于基于一个或多个肢端的位置或方位来调整模型的指令;或任何其他合适的指令,下面将对它们进行更详细的描述。
深度相机系统20还可以包括存储器组件34,该存储器组件34可以存储由处理器32执行的指令,以及存储由3D相机或RGB相机捕捉到的图像或图像的帧,或任何其他合适的信息、图像等等。根据一个示例实施例,存储器组件34可包括随机存取存储器(RAM)、只读存储器(ROM)、高速缓存、闪存、硬盘或任何其他合适的有形计算机可读存储组件。存储器组件34可以是经由总线21与图像捕捉组件22和处理器32通信的单独的组件。根据另一实施例,存储器组件34可被集成到处理器32和/或图像捕捉组件22中。
深度相机系统20可以通过通信链路36与计算环境12进行通信。通信链路36可以是有线和/或无线连接。根据一个实施方式,计算环境12可以经由通信链路36向深度相机系统20提供时钟信号,该时钟信号指出何时从位于深度相机系统20的视野中的物理空间捕捉图像数据。
另外,深度相机系统20可经由通信链路36向计算环境12提供由例如3D相机26和/或RGB相机28捕捉的深度信息和图像,和/或可由深度相机系统20生成的骨架模型。然后,计算环境12可以使用模型、深度信息、以及捕捉到的图像来控制应用。例如,如图2所示,计算环境12可包括诸如姿势/姿态过滤器的集合之类的姿势/姿态库190,每一个过滤器都具有关于可以由模型(随着用户摆姿态或移动)执行的姿势/姿态的信息。例如,可提供针对各种手姿态和/或姿势的姿势/姿态过滤器。手的示例姿态包括举起手而手掌朝前、处于“停止”姿态,举起一个或多个手指以指示数量等等。手的示例姿势包括手的挥动或投掷。通过将检测到的姿态或运动与每一个过滤器进行比较,可以标识由人执行的指定的姿态或姿势。
可以将由深度相机系统20以模型的形式捕捉的数据与姿势/姿态库190中的姿势/姿态过滤器进行比较,以标识(如由骨架模型所表示的)用户何时执行了与应用的各种控制输入相关联的一个或多个特定姿态或移动。
计算环境也可以包括处理器192,其用于执行存储在存储器194中的指令,以向显示设备196提供音频-视频输出信号,并实现如此处所描述的其他功能。
存储器34可以是一种其上包含有计算机可读软件的有形计算机可读存储设备,该计算机可读软件用于对至少一个处理器进行编程以执行如本文描述的用于对用户的手或其他关节连接的身体部位的姿态进行建模的方法。并且,处理器32可以是提供处理器实现的用于对用户的姿态进行建模的方法的一个或多个处理器,其中该方法包括如本文描述的处理器实现的步骤。
图3描绘了可以在图1的成像系统中使用的计算环境的示例框图。可以使用计算环境来解释一个或多个姿势或其他移动,并作为响应,更新显示器上的视觉空间。上文所描述的诸如计算环境12等的计算环境可包括诸如游戏控制台等的多媒体控制台100。多媒体控制台100包括具有1级高速缓存102、2级高速缓存104和闪存ROM(只读存储器)106的中央处理单元(CPU)101。一级高速缓存102和二级高速缓存104临时存储数据,并且因此减少存储器访问周期的数量,由此改进处理速度和吞吐量。CPU101可被提供为具有一个以上的核,并且由此具有附加的一级高速缓存102和二级高速缓存104。诸如闪存ROM之类的存储器106可存储当多媒体控制台100通电时在引导过程的初始阶段期间加载的可执行代码。
图形处理单元(GPU)108和视频编码器/视频编解码器(编码器/解码器)114形成用于高速和高分辨率图形处理的视频处理流水线。数据经由总线从图形处理单元108输送到视频编码器/视频编解码器114。视频处理流水线向A/V(音频/视频)端口140输出数据,以供传输到电视机或其他显示器。存储器控制器110连接到GPU108,以便于处理器对各种类型的存储器112,比如RAM(随机存取存储器)的处理器访问。
多媒体控制台100包括优选地在模块118上实现的I/O控制器120、系统管理控制器122、音频处理单元123、网络接口124、第一USB主控制器126、第二USB控制器128以及前面板I/O子部件130。USB控制器126和128用作外围控制器142(1)-142(2)、无线适配器148、以及外置存储器设备146(例如,闪存、外置CD/DVD ROM驱动器、可移动介质等)的主机。网络接口(NW IF)124和/或无线适配器148提供对网络(例如,因特网、家庭网络等)的访问并且可以是包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等的各种不同的有线或无线适配器组件中的任一种。
提供系统存储器143来存储在引导过程期间加载的应用数据。提供了媒体驱动器144,其可以包括DVD/CD驱动器、硬盘驱动器、或其他可移动媒体驱动器。媒体驱动器144可内置或外置于多媒体控制台100。应用数据可经由媒体驱动器144访问,以供多媒体控制台100执行、回放等。媒体驱动器144经由诸如串行ATA总线或其他高速连接等总线连接到I/O控制器120。
系统管理控制器122提供与确保多媒体控制台100的可用性相关的各种服务功能。音频处理单元123和音频编解码器132形成具有高保真度和立体声处理的相应音频处理流水线。音频数据经由通信链路在音频处理单元123与音频编解码器132之间传输。音频处理流水线将数据输出到A/V端口140,以供外置音频播放器或具有音频能力的设备再现。
前面板I/O子部件130支持暴露在多媒体控制台100的外表面上的电源按钮150和弹出按钮152、以及任何LED(发光二极管)或其他指示器的功能。系统供电模块136向多媒体控制台100的组件供电。风扇138冷却多媒体控制台100内的电路。
多媒体控制台100内的CPU101、GPU108、存储器控制器110、以及各种其他组件经由一条或多条总线互连,该总线包括串行和并行总线、存储器总线、外围总线、以及使用各种总线体系结构中的任一种的处理器或局部总线。
当多媒体控制台100通电时,应用数据可从系统存储器143加载到存储器112和/或高速缓存102、104中并在CPU101上执行。应用可在导航到多媒体控制台100上可用的不同媒体类型时呈现提供一致用户体验的图形用户界面。在操作中,媒体驱动器144中所包含的应用和/或其他媒体可从媒体驱动器144启动或播放,以将附加功能提供给多媒体控制台100。
多媒体控制台100可通过简单地将该系统连接到电视机或其他显示器而作为独立系统来操作。在该独立模式中,多媒体控制台100允许一个或多个用户与该系统交互、看电影、或听音乐。然而,在通过网络接口124或无线适配器148可用的宽带连接集成的情况下,多媒体控制台100还可作为更大网络社区中的参与者来操作。
当多媒体控制台100通电时,指定量的硬件资源被保留以供多媒体控制台操作系统作系统使用。这些资源可以包括存储器保留量(例如,16MB)、CPU和GPU周期保留量(例如,5%)、网络带宽保留量(例如,8kbs)等。因为这些资源是在系统引导时保留的,所以所保留的资源从应用的视角而言是不存在的。
具体而言,存储器保留量优选地足够大,以包含启动内核、并发系统应用和驱动程序。CPU保留量优选地为恒定,以使得若所保留的CPU用量不被系统应用使用,则空闲线程将消耗任何未使用的周期。
在多媒体控制台100引导且系统资源被保留之后,执行并发系统应用来提供系统功能。系统功能被封装在上述所保留的系统资源内执行的一组系统应用中。操作系统内核标识出作为系统应用线程而非游戏应用线程的线程。系统应用优选地被调度为在预定时间并以预定时间间隔在CPU101上运行,以便提供对应用而言一致的系统资源视图。调度是为了使针对在控制台上运行的游戏应用的高速缓存中断最小化。
当并发系统应用需要音频时,由于时间敏感性而将音频处理异步地调度给游戏应用。多媒体控制台应用管理器(如下所描述的)在系统应用活动时控制游戏应用的音频级别(例如,静音、衰减)。
输入设备(例如,控制器142(1)和142(2))由游戏应用和系统应用共享。输入设备不是保留资源,而是在系统应用和游戏应用之间切换以使其各自将具有设备的焦点。应用管理器较佳地控制输入流的切换,而无需知晓游戏应用的知识,并且驱动程序维护有关焦点切换的状态信息。控制台100可以从图2的包括相机26和28的深度相机系统20接收附加的输入。
图4描绘了可以在图1的成像系统中使用的计算环境的另一个示例框图。
在成像系统中,可以使用计算环境来解释一个或多个姿势或姿态,并作为响应,更新显示器上的视觉空间。计算环境220包括通常包括各种有形计算机可读存储介质或设备的计算机241。这可以是能由计算机241访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。系统存储器222包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)223和随机存取存储器(RAM)260。包含诸如在启动期间帮助在计算机241内的元件之间传输信息的基本例程的基本输入/输出系统224(BIOS)通常存储在ROM223中。RAM260通常包含处理单元259可立即访问和/或当前正在操作的数据和/或程序模块。图形接口231与GPU229进行通信。作为示例而非限制,图4描绘了操作系统225、应用程序226、其他程序模块227,以及程序数据228。
计算机241也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质,例如,读写不可移动、非易失性磁性介质的硬盘驱动器238,读写可移动、非易失性磁盘254的磁盘驱动器239,以及读写诸如CD ROM或其他光学介质之类的可移动、非易失性光盘253的光盘驱动器240。可以在该示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性有形计算机可读存储介质或设备包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器238通常由例如接口234之类的不可移除存储器接口连接至系统总线221,而磁盘驱动器239和光盘驱动器240通常由例如接口235之类的可移除存储器接口连接至系统总线221。
上文所讨论的并且在图4中所描绘的驱动器以及其相关联的计算机存储介质为计算机241提供了计算机可读指令、数据结构、程序模块及其他数据的存储。例如,硬盘驱动器238被描绘为存储了操作系统258、应用程序257、其他程序模块256、以及程序数据255。注意,这些组件可与操作系统225、应用程序226、其他程序模块227和程序数据228相同,也可与它们不同。在此给操作系统258、应用程序257、其他程序模块256、以及程序数据255提供了不同的编号,以说明至少它们是不同的副本。用户可以通过输入设备,例如键盘251和定点设备252——通常是指鼠标、跟踪球或触摸垫——向计算机241输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些以及其他输入设备通常通过耦合到系统总线的用户输入接口236连接到处理单元259,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构来连接。图2的深度相机系统20,包括相机26和28,可以为控制台100定义附加的输入设备。监视器242或其他类型的显示器也通过接口,诸如视频接口232,连接至系统总线221。除监视器之外,计算机还可以包括可以通过输出外围接口233连接的诸如扬声器244和打印机243之类的其他外围输出设备。
计算机241可使用到一个或多个远程计算机(诸如,远程计算机246)的逻辑连接而在联网环境中操作。远程计算机246可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,通常包括上文相对于计算机241所描述的许多或全部元件,但是图4中只描绘了存储器存储设备247。逻辑连接包括局域网(LAN)245和广域网(WAN)249,但也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机241通过网络接口或适配器237连接到LAN245。当在WAN联网环境中使用时,计算机241通常包括调制解调器250或用于通过诸如因特网等WAN249建立通信的其他手段。调制解调器250可以是内置的或外置的,可经由用户输入接口236或其他适当的机制连接到系统总线221。在联网环境中,相关于计算机241所示的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图4描绘了驻留在存储器设备247上的远程应用程序248。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。
计算环境可包括其上包含有计算机可读软件的有形计算机可读存储设备,计算机可读软件用于对至少一个处理器进行编程以执行如本文所描述的用于对用户的手或其他关节连接的身体部位的姿态进行建模的方法。有形计算机可读存储设备可包括,例如,组件222、234、235、230、253和254中的一个或多个。此外,计算环境的一个或多个处理器可以提供用于对用户的手或其他关节连接的身体部位的姿态进行建模的处理器实现的方法,其中该方法包括如本文所描述的处理器实现的步骤。处理器可包括,例如,组件229和259中的一个或多个。
图5描绘了包括关节(通过菱形来描绘)和吸引点(通过方形来描绘)的用户的手的模型。可提供要对其检测姿态的预定关节连接的身体部位的模型。在一种方式中,提供手部区域的模型。模型500可包括手臂504,手掌502,手指510、520、530和540,以及拇指550。手指包括远端指节512、522、532和542,中间指节514、524、534和544,以及近端指节516、526、536和546。拇指包括远端指节552和近端指节554。模型的手指和拇指指节对应于人类身体中的趾骨。在相邻身体部位之间提供了关节,诸如手臂/腕和手掌之间的关节503,远端拇指部分和近端拇指部分之间的关节560,以及近端拇指部分和手掌之间的关节564。这些关节一般对应于人类身体中具有限定的移动范围的关节。这一移动主要是角度的,但也可以是平移的。诸如指尖(远端手指指节和远端拇指指节的尖部)上的附加点可用于限定远端指节的位置。出于方便起见,即使这些尖点与人类骨架中的关节不对应,这些尖点也将被称为“关节”。远端拇指指节上的关节556是一个示例。因此,某些关节可能与人类骨架中的关节不对应,诸如关节556,而某些关节确实与人类骨架中的关节对应,诸如关节560和564。身体部位的定向可通过身体部位的至少两个关节的位置来定义。对于拉长的身体部位,诸如手指指节,关节可能例如位于身体部位的相对端。
此外,可为每一身体部位指定一个或多个代表性吸引点。例如,分别为手指530的远端指节、手指540的近端指节、远端拇指部分552、近端拇指部分554、手掌502以及手臂504提供了示例代表性吸引点531、541、558、562、501和505。例如,对于相对大和/或具有相对更复杂的移动范围的身体部位(诸如手掌),也可使用多个吸引点。为手指540的中间和近端手指指节分别提供了吸引点543和545。
对于模型的身体部位中的一个或多个,具有零个吸引点也是可能的。
一般而言,在这个和其他附图中,小正方形指示代表性吸引点。代表性吸引点可以是表示模型的身体部位的点。术语“吸引点”指示在匹配过程中,该吸引点被朝向深度传感器数据移动或被吸引到深度传感器数据。在一种方式中,代表性吸引点是身体部位的中心点或质心。质心可在身体部位内或身体部位的表面处。表面可以沿深度轴或沿深度相机的视线面向深度相机。质心可被认为是身体部位的中心点。
重要性轴507(下文中结合图7A的步骤734来讨论)可用于质心到吸引点的匹配。
模型可指示各种可允许的身体部位的移动范围。每一身体部位可具有可允许的相对于相邻身体部位的移动角范围。例如,每一手指的近端指节可具有可允许的相对于手掌的移动角范围,每一手指的中间指节可具有可允许的相对于手指的近端指节的移动角范围,且以此类推。这些可由角度约束来限定。还可允许身体部位的某一相对平移。可提供指示不同身体部位在相同时间在相同位置中整体或部分地不能冲突(例如存在)的冲突约束。
模型可被定义以使得身体部位一般是独立的且自由浮动的,但利于以下构造的距离约束可被设置:其中假定彼此相邻的身体部位实际是相邻的。相邻可涉及相邻身体部位的关节基本上在相同位置处。在这种方式中,每一身体部位可具有在其肢端处与相邻身体部位肢端处的关节基本上重合的关节。作为一个示例,远端和近端拇指部分之间的关节560可表示近端拇指部分远端处的一个关节,以及远端拇指部分552近端处的一个关节。所违反的距离约束的一个示例在远端和近端拇指部分彼此分开时发生。
在另一种方式中,例如,存在远端和近端拇指部分之间的一个关节,并且距离约束是该关节和父关节之间的距离。在模型的这种方式中,即便未长到足以达到那里,网格也被放置在指向子关节的父关节处。父或子关节可分别与父或子身体部位相关联。子身体部位可以是从较大身体部位延伸的较小身体部位,在一种可能的方式中诸如从手掌延伸的手指。或者,子身体部位可以是在指定方向上(诸如从手臂到指尖的方向上)从另一身体部位延伸的一个身体部位。例如,近端拇指部分554可能是远端拇指部分552的父亲。
身体部位的模型可具有所需的细节水平。例如,代替对作为单一实体的手掌进行建模,诸如通过对掌骨和掌部关节建模,可更详细地对手掌进行建模。模型可包括分立的体块(volume)/形状,诸如矩形、立方体、椭圆、球体等。这些体块可被调整大小并被调整形状,以提供所需的粒度级别。作为替换或补充,模型可由形成被适当地骨架绑定(rig)并且换肤的连续表面的网格来表示。骨架绑定和换肤是指将骨架放置在3D网格内,并且将各骨架节段映射到网格的对应部分以创建在骨架被移动的情况下平滑地变形的身体部位。模型的复杂性应考虑诸如所需的逼真度以及可用的计算资源之类的因素。
此外,尽管人类的手已作为关节连接的身体部位的一个示例来讨论,但概念可扩展到对象的具有已知移动范围的其他关节连接的身体部位。该对象可包括生物/对象(诸如人类或动物),或机器人或其他非生物对象。可并发地跟踪一个或多个这样的对象。此外,当深度传感器被用作应用的一部分时,由深度传感器成像的人类可以是应用的活动用户/参与者、或被动的旁观者。
图6描绘了用于以改进的保真度在成像系统中检测有关节身体部位的姿态的方法。步骤600包括从深度传感器(诸如从先前提到的深度相机系统)获取用户的深度像素。例如,这可以是深度像素帧。步骤700包括执行预匹配处理,诸如结合图7A的步骤702-714进一步描述的。步骤720包括使用质心来执行匹配,诸如结合图7A的步骤721-736进一步描述的。步骤750包括使用质心来细化匹配,诸如结合图7A的步骤752-756进一步描述的。步骤760包括使用光栅化模型来细化匹配,诸如结合图7B进一步描述的。在一种方式中,步骤700、720、750和760不改变模型的身体部位的相对比例。
图7A描绘了图6的步骤700、720和750的进一步细节。在图7A和7B中,短虚线(诸如从702到704)表示数据的输入,长虚线(诸如从704到706)表示数据的输出,而实线(诸如从704到708)表示代码或软件流或执行顺序。步骤702-714对应于图7A中用于执行预匹配处理的步骤700。
背景移除步骤704接收深度帧数据702(诸如图8A中的帧800)。深度帧可包括来自深度传感器的深度像素。输出可以是例如(诸如图8A的帧810)BGR(按蓝-绿-红色序的像素)深度帧706。分割步骤708处理BGR深度帧以提供分割图710,该分割图710将像素标识成属于右手或左手(如果双手都出现的话)。各种试探法可用于此目的。样例步骤712使用机器学习过程来处理BGR深度帧以提供概率图714。该机器学习过程先前已被训练。具体而言,对于每一深度像素,可确定该深度像素是身体部位之一的一部分的概率。例如,Pr1可以是深度像素是远端拇指部分的一部分的概率,Pr2可以是该深度像素是近端拇指部分的一部分的概率,Pr3可以是该深度像素是手掌的一部分的概率等等。对于每一像素,该像素的概率之和是一。因此,概率图可包括每一深度像素的概率集,每一个概率对应于模型的每一身体部位。
步骤721-736对应于图7A中的步骤720。步骤721基于概率图来生成质心(一个质心对应于每一身体部位)以提供质心数据722。对于身体部位中的每一个,质心数据可采用x、y、z坐标中的3D位置的形式。3D位置可以或可以不与深度像素重合。每一身体部位的质心是身体部位的代表性位置,类似于模型中身体部位的代表性吸引点。图9A-9E和图10描绘了示例质心。步骤724创建并合并质心集以提供质心集数据726。质心集是被确定为同一所建模的身体区域的一部分的质心集合。例如,一个集728可包括一只手的质心,而另一集730可包括另一只手的质心。此时,不知道质心集是与右手还是与左手相关联。步骤732使用质心集728和730作为输入并且使用分割图来执行质心集到手臂的匹配。分割图指示深度图的哪一部分是左手而非右手。该步骤指示哪一个质心集与哪一个手臂相关联。可考虑各种因素,诸如质心集相对于另一个而言与一个手臂有多接近。更接近一个手臂的质心集有可能与该手臂相关联。该步骤还可使用先前帧模型738(包括右臂740和左臂742数据)作为输入,即,从一个或多个先前帧(包括最新近的帧)所确定的模型的状态。
步骤732可涉及质心集和所跟踪的关节连接的模型之间的二分匹配,该二分匹配基于使用匹配类型的质心和吸引点之间的距离来计算的分数,以及基于概率对质心的置信度测量。
步骤734执行质心到吸引点的匹配。图11提供进一步细节。质心集728和730以及模型的代表性吸引点744(见图5)可作为输入来提供。对于每一身体部位,代表性吸引点是关节连接的模型中理想地使其与深度传感器数据的匹配质心重合的点。步骤734可涉及使用采用各种因素来计算的匹配分数,找出质心集中所有质心与模型的所有吸引点之间的一个或多个最佳匹配。
一个因素涉及每一所匹配的质心和吸引点之间的距离,这些距离可例如根据连接该质心和该吸引点的向量的大小来确定。可将较高分数(关联于合适匹配的较高可能性)分配给与距吸引点更远的质心相比更接近吸引点的质心。
另一因素涉及质心沿重要性轴的排序。例如,对于手的模型,重要性轴可沿着手掌和手指近端指节之间的关节延伸,以指示预期的手指顺序,例如手指510、520、530和540(从小手指底部到食指底部)。见图5的示例重要性轴507。质心可沿这一轴来投影,例如通过在与该轴正交的方向上移动质心,以确定质心会沿该轴落到何处。可按闭合形式来分析计算点在线上的投影。然后,可以确定质心沿该轴的顺序。除了或许手指相交叉的情况以外,通常手指是按预期顺序的。可将较高分数(关联于合适匹配的较高可能性)分配给沿重要性轴按预期顺序的质心。可将较低分数(关联于合适匹配的较低可能性)分配给沿重要性轴没有按预期顺序的质心。重要性轴可以在另一方向上,并且也可使用不止一个重要性轴。
另一因素涉及与邻近质心或身体部位的连接性。例如,手指远端指节的质心预期与同一手指的中间指节的质心(而不是另一手指的一指节的质心)在连续像素路径上。可将较高分数(关联于合适匹配的较高可能性)分配给与相邻身体部位的质心在连续路径上的质心。可将较低分数(关联于合适匹配的较低可能性)分配给与相邻身体部位的质心不在连续路径上的质心。这一因素可通过象征性地在直线上走查深度图来估计,以确定像素数据中是否存在任何中断。这一因素还可使用更复杂的方法来估计,如使用与路径可偏离直线多少以便相对于噪声和其他边缘情况更为稳健有关的约束,沿质心之间的深度图进行路径查找。例如,如果在尝试从手指的远端指节走到同一手指的中间指节时,在像素数据中检测到间隙,则这指示该匹配有可能不正确。即,要么手指指节中的一个指节要么手指指节中的两个指节没有被正确标识。例如,对于每一个手指,可通过找出远端和中间手指质心之间的连接来估计连接性。
另一因素涉及模型的身体部位之间的冲突检查。可将较高分数(关联于合适匹配的较高可能性)分配给未造成冲突的质心到吸引点的匹配,而可将较低分数(关联于合适匹配的较低可能性)分配给确实造成冲突的质心到吸引点的匹配,其中不同身体部位在相同时间出现在相同位置中。
质心和吸引点之间的最佳匹配可基于这些或其他因素中的一个或多个的某种组合。不同因素可基于(例如从测试结果)所确定的其相对重要性来不同地加权。
步骤736执行吸引点到质心的刚性变换。参见图12A作为一个示例。刚性变换可涉及对模型进行的平移、旋转和缩放中的一项或多项。这一步骤可包括计算对这些吸引点的最优3D点云变换进行的平移、旋转和缩放,并且将该变换应用到所有吸引点。平移可包括相对于帧或坐标系统移动该模型。坐标系可包括任意轴,诸如正交的x、y和z轴(图1)。欧拉角可用于表示该变换。旋转可包括绕这些轴中的一个或多个来旋转该模型。缩放改变了该模型的总体大小,而不改变身体部位的相对定向或比例。在一种方式中,刚性变换作为整体不改变身体部位的相对定向。身体部位的相对定向可作为子身体部位和其父身体部位之间的局部变换来定义。子身体部位可以是从较大身体部位延伸的较小身体部位,在一种可能的方式中诸如从手掌延伸的手指。立方体的刚性变换的一个示例可造成在3D空间中从一个位置移至另一位置的较大或较小的立方体。在刚性变换期间维持身体部位的相对定向的一个示例是在刚性变换之前以及之后都具有长度为第三个手指的四分之三的第一个手指,以及使第一个手指以相对于第三个手指的特定角度延伸。
刚性变换的一个示例实现使用吸引点和质心之间的刚性变换估计来计算模型的全局缩放。两个对应点集之间的刚性身体变换(在所有维度上旋转、平移和统一缩放)的一个示例闭合形式计算在Horn,B.K.P发表在美国光学学会杂志,4(4),629-642(1987)上的“Closed-form solution of absolute orientation usingunit quaternions(使用单元四元组进行绝对定向的闭合形式解)”中描述,其通过引用结合于此。Horn陈述了:“使用多个点的坐标的测量对来在两个坐标系中找出这两个坐标系之间的关系是经典的摄影测量任务。它在立体摄影测量和机器人中找到了应用。我在这里提供针对三个或更多点的最小二乘问题的闭合形式解。当前各种经验、图形和数值迭代方法都在使用中。这些解的推导通过使用单元四元组表示旋转而被简化。我强调这一问题的解应具有的对称性质。最佳平移偏移量是一个坐标系中坐标的质心和另一坐标系中坐标的经旋转和经缩放的质心之间的差异。最佳缩放等于两个坐标系中坐标与其相应质心的均方根偏差(root-mean-square deviation)的比率。优选这些准确结果基于对几个所选点的测量来近似方法。表示最佳旋转的单元四元组是与对称4x4矩阵的最正特征值相关联的特征向量。这一矩阵的元素是这些点的对应坐标的乘积之和的组合。
刚性变换的另一示例实现在2011年6月7日,http://priorartdatabase.com/IPCOM/000207623中记载的,A.Balan的“RestrictedAffine Registration of3D Point Clouds(3D点云的受限仿射配准)”中描述。这一实现计算质心和吸引点之间的刚性变换,其中一个重要特征是估计沿模型的x轴、y轴和z轴的不同缩放参数的能力。在旋转、平移和在不同维度上有独立展宽的拉伸方面,它解决了将对象的几何模型配准到传感器观测的问题。这一应用在针对对象跟踪和大小估计的模型拟合中具有应用。这些形状被表示成模型和传感器观测之间成对匹配的3D表面点的集合。它描述了计算模型点的使到对应传感器所测点的距离最小化的受限仿射变换的迭代解。
步骤752-756对应于图7A中的步骤750。步骤752、754和756可被认为是质心到吸引点的磁性过程的一部分。步骤752涉及,对于吸引点和质心的匹配对,将该吸引点移向更接近质心。参见图12A和12B作为示例,其中吸引点和质心的一个匹配对可包括模型的近端拇指部分554的吸引点562和深度传感器数据的质心916,或者模型的远端拇指部分552的吸引点558和深度传感器数据的质心904。
步骤752可包括确定从步骤736获取的经变换的代表性吸引点中的哪一些距离这些质心中对应的一个质心比相应阈值距离更远,并且调整距离这些质心中对应的一个质心比相应阈值距离更远的那些经变换的代表性吸引点,以使其距离这些质心中对应的一个质心更接近相应阈值距离。在一种方式中,该相应阈值距离可以是专用于每一代表性吸引点的经调谐的距离。或者,该相应阈值距离可以是对不同的相应吸引点而言相同的。
步骤754涉及基于吸引点的移动来移动模型的关节。步骤752和754可在一起执行,因为吸引点的移动与模型中一个或多个关节的移动重合。关节的移动可受到一个或多个吸引点的移动的影响。关节的移动可通过限定该移动在3D空间中的方向以及大小的向量或力来定义。步骤754的输入是关节数据746,该关节数据746可定义模型的每一关节在3D空间中的位置。在判定步骤756,如果有下一对吸引点,例如,下一个身体部位,则重复步骤752和754。如果判定步骤756为假,则该过程在图7B中的连续点“E”处继续。表示该模型的连续表面的网格数据748也可基于关节数据746来提供。
在接下来讨论的图7B中,如连续点“A”所指示地使用概率图,如连续点“B”所指示地使用BGR深度帧,如连续点“C”所指示地使用关节数据746,以及如连续点“D”所指示地使用网格数据748。
图7B示出图6的步骤760的进一步细节。迭代细化了先前在图7A中进行的质心到吸引点的匹配。在一种方式中,迭代不使用深度传感器数据的质心,而是使用从模型的光栅化获取的深度像素。将模型的深度像素与深度传感器的深度像素进行比较,以确定要应用于模型(诸如模型的关节)的调整向量。处于其新状态的模型在下一迭代中被光栅化,并且该过程被重复直到满足停止准则。
步骤762开始迭代。步骤764将概率图、BGR深度帧和关节数据作为输入来接收,并且对模型进行光栅化以提供模型的深度像素。例如,模型的网格表面可按三维(3-D)方式来光栅化。在一种方式中,在提供x-y平面中的数据的2D缓冲区中以及在提供沿z轴的深度数据的z轴缓冲区中提供模型的深度像素。模型的深度像素是3D空间中的点。注意,光栅化可与深度传感器的深度像素在相同或不同的任何方向上,且不必沿x和y轴。此外,与深度传感器的深度像素相比,光栅化可具有相同的分辨率、或更细或更粗的分辨率。参见图12C中的像素1220,作为通过对手的模型进行光栅化所获取的像素的一个示例。
步骤766将模型的深度像素在比较平面中与深度传感器的深度像素进行比较。在图13A和13B中示例化的一种方式中,平面是横穿深度轴或与深度轴正交的x-y平面。在另一种方式中,该平面横穿深度传感器的局部视线,且略微偏移对深度轴的横穿。像素在横穿比较平面的方向上被投影到比较平面,或者已经处于比较平面。在一种方式中,比较平面可以是z>0和模型的最接近深度相机的像素的深度之间的任何位置。三类像素可被定义。这些类别中的两类针对深度传感器的深度像素(步骤768和770),而这些类别中的一类针对模型的深度像素(步骤772)。
具体而言,步骤768标识深度传感器的与模型的深度像素重叠的重叠深度像素。术语“重叠”指示这些像素在比较平面中至少部分地占据相同区域。图12D中的像素1230是一个示例。可定义足以将像素标记为重叠的像素之间的最小重叠程度。这些是深度传感器的近似存在于模型所在的地方的深度像素(换言之,模型存在于这一深度传感器数据所在的地方),从而指示模型是该深度传感器数据的良好拟合。
步骤770标识深度传感器的与模型的深度像素不重叠的非重叠深度像素。图12D中的像素1240是一个示例。这些是深度传感器的近似存在于模型不在的地方的深度像素(换言之,模型不存在于这一深度传感器数据所在的地方),从而指示模型应被调整以更好地拟合该深度传感器数据。
步骤772标识模型的与深度传感器的深度像素不重叠的非重叠深度像素。图12D中的像素1220是一个示例。这些是模型的近似存在于深度传感器数据不在的地方的深度像素(换言之,模型存在于这一深度传感器数据不在的地方),从而指示模型应被调整以更好地拟合该深度传感器数据。
基于比较,步骤774确定作为数据776来存储的基于像素的调整向量。可以计算倾向于朝向这些像素拉取/调整该模型的3D调整向量。各调整向量可基于三种像素类型中的每一类型来生成,随后对这些调整向量求和以获取关节的总体调整向量。可根据基于像素的调整向量是来自步骤758、770还是772来将不同的权重分配给这些向量。例如,取决于深度传感器的特性以及应用的需求,对这些调整中的一个进行更重地加权可能是合乎需要的。例如,如果横向分辨率是关注最高的事项,则步骤770和/或772的调整可被更重地加权。如果深度分辨率是关注最高的事项,则步骤768的调整可被更重地加权。
对于这三种类型的像素中的每一者,调整向量可调整模型中被标识成作为要调整的最优关节的关节。该最优关节不必是最接近该像素的关节。可通过基于关节与像素的距离计算对于模型的不同关节的分数来标识最优关节。较接近该像素的关节具有较高分数且被选择的概率较高。与该像素较远的关节具有较低分数且被选择的概率较低。
在一种方式中,对于深度传感器的非重叠或重叠深度像素,分数还可基于与来自概率图的像素相关联的概率(例如,先前讨论的Pr1、Pr2、Pr3...)。同其像素被关联概率相对高的相同身体部位相关联的关节具有较高分数并且被选择的概率较高。分数可与关联概率成比例地更高。同其像素被关联的概率相对高的不同身体部位相关联的关节具有较低分数并且被选择的概率较低。
图13A中的调整向量1302是针对深度传感器的非重叠深度像素的一个示例调整向量。该向量在从关节j1到深度传感器的非重叠深度像素p3的方向上延伸。对于深度传感器的重叠深度像素,调整向量可按与针对深度传感器的非重叠深度像素相同的方式来确定。
调整向量将具有取决于身体部位的移动方向的分量。例如,如果身体部位主要在z方向上背离深度传感器而移动,则调整向量将在z方向上具有最大分量。如果身体部位主要在x-y平面上移动,则调整向量将在x-y平面上具有一个或多个最大分量。
在一种方式中,调整向量从最佳匹配关节延伸到该像素。图13A中的调整向量1328是一个示例。该向量在从关节j1到深度传感器的重叠深度像素p2的方向上延伸。在这一示例中,同一关节j1被认为是最佳匹配关节,然而不同的最佳匹配关节可与深度传感器的非重叠深度像素以及与深度传感器的重叠深度像素相关联。在另一方式中,调整向量从模型的重叠深度像素延伸到深度传感器的重叠深度像素。例如,图13A的调整向量1326在从模型的重叠深度像素p1到深度传感器的重叠深度像素p2的方向(实质上沿深度轴)上延伸。在这种情况下,向量1326可被平移成作用于关节j1的向量1330。
在一种方式中,存在平移最佳匹配吸引点的中间步骤,该中间步骤对所有受该吸引点影响的关节进行平移。可将像素的向量/增量应用于具有某一调谐/调整能力的关节。将所有增量完全应用于关节可能导致该关节飞走,因为影响该关节的许多像素可造成增量过大——通常增量的平均值起作用。
在一种方式中,向量1326和1330在相同方向上并且具有相同大小。但这种情况非常少见,因为通常存在比像素少得多的关节。所以,两个重叠像素和关节在单条线上对齐不会是常见的。调整向量还可基于例如向量1328和1330之间的插补。
在一种方式中,调整向量不拉取模型。相反,调整向量拉取吸引点,这些吸引点进而拉取受影响的关节。随后,模型被放置在最有意义的地方,即在关节之上。例如,近端手指指节可被放置成使得近端部位在连接手掌和手指的关节处,并且近端手指指节朝向中间手指指节的关节来定向。
对于重叠相机深度像素和模型深度像素之间的调整向量,可以找出使用该向量来移动的合适关节,并且累积对该关节的平移且随后对它求平均。这可能仅涉及z方向调整。在另一种情况下,深度像素和关节之间存在同样能被累积和求平均的调整向量。这可能涉及x、y和z方向调整。这些调整可按需来组合。
因此,对于深度传感器的非重叠深度像素和模型的非重叠深度像素,可以计算该像素要把所选关节移至它应处于的地方需要贡献的力或调整。
类似于深度传感器的非重叠深度像素和模型的非重叠深度像素,对于深度传感器的重叠深度像素,调整向量可通过基于从像素至关节的距离所计算的分数找出要移动的最佳关节来确定。还可以计算这样的调整:该调整倾向于移动位于模型的非重叠深度像素相重叠的位置中的关节,以使得模型的这些非重叠深度像素在下一迭代中变成深度传感器的重叠深度像素。然而,该计算在模型的所有非重叠深度像素上被优化,这可对关节施加冲突调整。例如,模型的手臂可比传感器数据所指示的手臂宽度更宽。在这种情况下,最优解决方案可倾向于围绕作为身体部位中的至少一个的手臂的周边来均衡模型的多个非重叠深度像素。
在一种方式中,调整向量从模型的非重叠深度像素延伸到传感器数据中的最接近深度像素。图13A中的调整向量1322是一个示例,假定像素p2最接近模型的非重叠深度像素p4。该向量在从p4到p2的方向上延伸。在另一种方式中,调整向量诸如朝向传感器数据中的最接近深度像素的平面1312沿深度轴从p4延伸,该向量的大小基于p4和平面1312之间的距离。图13A中的调整向量1324是一个示例。假定j1是要移动的最佳关节,则向量1322或1324可被平移成作用于关节j1的向量(未示出)。
在图7B中,如所讨论的,步骤778将调整向量应用于关节。这一步骤的输入是关节数据746。图12E和12F提供了一个示例。如先前讨论的,随后可施加一个或多个约束,诸如步骤780的冲突约束、步骤782的距离约束以及步骤784的角度约束。步骤786确定基于约束的调整向量,以提供对应的基于约束的调整向量数据788。可根据基于约束的调整向量的类型向这些基于约束的调整向量分配不同的权重。例如,冲突约束可接收较高的权重,距离约束可接收次最高的权重,并且角度约束可接收次最高的权重。
步骤790将基于约束的调整向量应用于模型的关节。这一步骤的输入是关节数据746。判定步骤791确定是否满足停止准则,例如在执行了固定遍数时或在关节移动落在特定阈值之下时。如果判定步骤791为假,则重复步骤780-790。如果判定步骤791为真,则到达步骤792。因此,步骤780-790中所施加的约束可经历多个迭代,以同时最好地满足所有约束。
步骤792基于步骤780-790的调整来更新模型网格。判定步骤794确定是否满足停止准则。例如,停止准则可基于以下各项中的一个或多个:(a)所执行的迭代次数,以使得在最大可允许迭代次数被执行时迭代停止,(b)基于调整向量大小的收敛准则,诸如在调整向量大小足够小、低于阈值时迭代停止,以及(c)基于所执行的计算量的准则,以使得在最大可允许CPU周期数被消耗时迭代停止。如果在判定步骤794未满足停止准则,则在步骤796执行下一迭代,从而继续到步骤762。如在来自先前迭代的经调整状态中存在那样,对模型执行步骤764的光栅化。图12G提供了模型的经调整状态的一个示例。如果判定步骤794为真,则迭代在步骤798结束。此时,模型已被最优地调整并且可被更高级的进程/应用(诸如先前讨论的姿态或姿势估计库)使用。在一种方式中,针对深度数据的每一帧,模型被最优地调整并且作为控制输入被提供给应用。
注意,一次可以处理一个或多个深度帧。批处理模式一次处理多个深度帧,以允许来自这多个帧的信息一起被使用。最初可确定针对每个帧的各调整向量,并且随后可对这些调整向量求平均或以其他方式跨这批帧进行组合,以使经平均的调整向量应用于这批帧。
在一种方式中,图7B改变模型的身体部位的变换(旋转和平移),但不改变相对比例。在另一种方式中,相对比例被改变。
图8A描绘了深度像素800(包括用户的手的深度像素)的帧。该帧可用作图7A的深度帧数据702。该帧可包括一个用户的一只或一双手,或多个用户的一只或多只手。也可包括一个或多个用户的其他身体部位。本质上,该帧包括深度传感器视野中的各对象。
图8B描绘了图8A的用户的手的深度像素810,而背景像素被移除。如所讨论的,图7A的背景移除步骤704接收深度帧数据702(诸如图8A中的帧800),并且移除背景像素。
图9A描绘了来自图7A的样例步骤712、针对图8B的用户的手的深度像素的远端手指指节以及远端拇指指节的概率值。这是概率值的2D简化图形描绘。如所提到的,每一像素相对于模型的每一身体部位具有指示该像素是该身体部位的一部分的可能性的不同概率值(Pr1、Pr2、Pr3...)。该图将五个身体部位的结果描绘在一起。由粗实线勾勒的每一无阴影像素区域表示具有成为局部身体部位的一部分的最高概率的像素。带有虚线图案的像素具有成为局部身体部位的一部分的较低概率,并且带有斜线图案的像素具有成为局部身体部位的一部分的最低概率。此外,每个三角形表示身体部位的深度像素的质心。身体部位包括第一或小手指930,第二手指932,第三手指934,第四或食指936以及拇指938。
例如,对于第三手指934,将区域910中的像素分配给远端手指指节,并且确定关联质心912。对于第四手指936,将区域906中的像素分配给远端手指指节,并且确定关联质心908。对于拇指938,将区域902中的像素分配给远端拇指指节,并且确定关联质心904。
无阴影像素、虚线图案像素和斜线图案像素的使用与图9A-9E中一致。
图9B描绘了在图7A的步骤721中针对图8B的用户的手的深度像素的中间手指指节以及近端拇指指节所生成的质心。例如,对于拇指,将区域914中的像素分配给近端拇指指节,并且确定近端拇指指节的质心916。
图9C描绘了在图7A的步骤721中针对图8B的用户的手的深度像素的近端手指指节所生成的质心。
图9D描绘了在图7A的步骤721中针对图8B的用户的手的深度像素的手掌940所生成的质心。
图9E描绘了在图7A的步骤721中针对图8B的用户的手的深度像素的手臂942所生成的质心。
图10描绘了在图7A的步骤721中从用户的手的测试数据所生成的质心。测试数据通常展示有噪声。在每一图像中,较暗区域对应于较高概率。此外,方块表示质心。例如,图像1000针对远端手指和拇指指节。暗区域部分地被质心的方块图标覆盖。图像1002针对中间手指指节,图像1004针对近端手指指节,图像1006针对近端拇指指节,图像1008针对手掌,图像1010针对前臂的下部,并且图像1012针对前臂的上部。
图11描绘了图7A中质心到吸引点匹配的步骤734的细节。如以上提到的,每个三角形表示以粗实线勾勒的相应身体部位的质心。除了模型500以外,描绘了来自深度传感器的像素数据900。作为一个示例,对于表示远端手指指节910的像素,质心912被匹配到模型500的对应远端手指指节532的吸引点531。类似地,对于表示远端手指指节906的像素,质心908被匹配到模型500的对应远端手指指节542的吸引点541。对于表示远端拇指指节902的像素,质心904被匹配到模型500的对应远端拇指指节552的吸引点558。对于表示近端拇指指节914的像素,质心916被匹配到模型500的对应近端拇指指节554的吸引点562。对于表示手臂918的像素,质心920被匹配到模型500的对应手臂504的吸引点505。
每一质心可被匹配到相应的吸引点。在某些情况下,并非所有质心都能被标识和/或匹配到相应的吸引点,在该情况下基于可用信息来调整模型。可在每帧的基础上作出判定:在可用信息不足的情况下不调整模型。
图12A描绘了图7A中针对吸引点到质心的刚性变换的步骤736的细节。模型1200被变换,以跨所有吸引点提供模型的吸引点到深度像素数据的质心的最佳匹配。在这一示例中,除了拇指以外,模型到像素数据的匹配是相当好的。具体而言,近端拇指指节的吸引点562与关联质心916有点间隔开,并且远端拇指指节的吸引点558与关联质心904间隔开得更远。
图12B描绘了图7A中用于将吸引点移向更接近质心的步骤752的细节。这里,模型1210被细化,以使得吸引点562移向更接近关联质心916,并且使得吸引点558移向更接近关联质心904。
图12C描绘了图7B中用于使模型光栅化以提供该模型的深度像素1220的步骤764的细节。诸如在比较平面中,看到这些像素在深度传感器的像素900之上。模型的像素是无阴影的,而深度传感器的像素900具有斜线图案。近端拇指指节的位置不是最优,因为在近端拇指指节554的模型的像素之下比之上存在更多深度传感器的像素。同样,远端拇指指节的位置不是最优,因为在远端拇指指节552的模型的像素之上比之下存在更多深度传感器的像素。类似地,手臂504和手掌502的位置不是最优,因为围绕手臂和手掌的周边,右侧比左侧存在更多深度传感器的像素。使用光栅化进行的细化可通过允许比较模型和深度传感器的像素数据来标识这些非最优条件。
图12D描绘了图7B中用于针对拇指区域,将模型的深度像素与传感器的深度像素进行比较的步骤766-772的细节。图12C的拇指区域被隔离以显示细节。然而,可对模型的所有身体部位执行该比较。无阴影的像素的区域1230表示步骤768的深度传感器的重叠深度像素。具有斜线图案的像素的区域1240表示步骤770的深度传感器的非重叠深度像素。具有虚线图案的像素的区域1220表示步骤772的模型的非重叠深度像素。
图12E描绘了图7B的步骤778的细节,其与图12D相一致地示出了根据基于像素的调整向量对该模型的关节的调整。将关节位置564、560和556分别调整到位置1262、1258和1254。结果,类似地将吸引点从位置562和558分别调整到1260和1256。
图12F描绘了图12E中使用的基于像素的调整向量。调整向量1278、1274和1270分别用于将关节位置564、560和556分别调整到位置1262、1258和1254。调整向量可以是3D的,但为简明起见在该示例中被描绘成2D。
图12G描绘了图7B中的步骤792的细节,其与图12E相一致地示出了对模型的更新。在图12E中,模型的远端拇指指节552被调整变成指节1250,而模型的近端拇指指节552被调整变成指节1252。在这种情况下,拇指通常相对于手掌被向下移动并且被旋转。这是与深度传感器的深度像素更紧密地匹配的模型的新状态。
图13A描绘了图7B中用于将模型的深度像素与传感器的深度像素进行比较的步骤768、770和772的进一步细节,其中比较平面1310横穿深度传感器1300的深度轴1302或与其正交。轴1304、1306和1308还与深度轴1302平行(如标记“||”所指示的)。比较平面1310包括光栅化模型的两个示例像素:p1和p4,而平面1312包括来自深度传感器的两个示例像素:p2和p3。在一种方式中,比较平面1310和1312平行于x和y轴延伸,并且由此横穿深度轴1302/与其正交。在另一种方式中,比较平面1310和1312略微偏移x和y轴,并且横穿来自深度相机的视线1305,该视线1305与深度轴1302成α角地延伸。
p2是深度传感器的重叠深度像素(图7B、步骤768),因为它例如沿轴1306与p1重叠。p1也可被视为模型的对应重叠深度像素。模型的一个示例关节是j1。在一种方式中,调整向量1328在从最佳匹配关节j1到p2的方向上延伸。在另一种方式中,调整向量1328在从p1到p2的方向上延伸。此外,向量1326可被平移成作用于关节j1的向量1330。
p3是深度传感器的非重叠深度像素(图7B、步骤770),因为它例如沿轴1308不与模型的像素重叠。如先前结合图7B的步骤778讨论的,p3的示例调整向量1320在从关节j1到p3的方向上延伸。
p4是模型的非重叠深度像素(图7B、步骤772),因为它例如沿轴1304不与深度传感器数据的像素重叠。对应的调整向量1322从p4延伸到传感器数据的最接近深度像素,假定在该示例中为p2。在另一种方式中,p4的调整向量1324从p4沿深度轴1302/1304诸如朝向传感器数据的最接近深度像素的平面1312延伸。假定j1是针对p4的要移动的最佳关节,则向量1322或1324可被平移成作用于关节j1的向量(未示出)。
图13B描绘了图13A的比较平面1310的进一步细节。p1和p2是重叠像素,深度传感器的p3与模型的像素不重叠,而模型的p4与深度传感器的像素不重叠。||x和||y是分别与x轴和y轴平行的轴。
图14描绘了用于以改进的保真度在成像系统中使用距离约束、冲突约束以及像素比较来检测关节连接的身体部位的姿态的方法。图14的方法可结合图7A和7B的方法来执行。该方法通常涉及获取初始姿态估计,之后基于距离约束、冲突约束、角度约束以及使用光栅化模型的像素比较中的一个或多个来细化姿态估计。在一种方式中,初始姿态估计可由图7A的方法来提供。在一种方式中,使用光栅化模型进行的像素比较可通过图7B的方法在步骤762-790提供。对姿态估计的细化可全部或部分地按顺序或并行执行。
可以假定具有关节连接的模型的参数几何模型(例如网格),参数几何模型具有其中有多个可分辨特征点的已知拓扑结构。特征检测器从深度传感器数据中找出尽可能多的与模型中的点对应的可分辨特征点(诸如关节和其他基准)。已知关节连接的模型的网格被校准并且被动态地调整。为此,该方法组合并加权与关节连接的模型的维度有关的局部和全局信息的多个源。
步骤1400包括从深度传感器获取用户的深度像素,例如类似于图6的步骤600。步骤1402包括确定模型到深度传感器的深度像素的初始匹配,例如类似于图6的步骤700和720。也可包括图6的步骤750。这可包括如先前讨论的某种类型的代表性吸引点到质心的匹配,或任何其他技术。此外,可以使用诸如结合图7A的步骤736所讨论的变换。这可涉及对3D点云的受限仿射配准,例如,用3D比例对3D点云进行刚性变换。给定模型和深度传感器观测之间的特性点的对应关系,通过用每一维度(长、宽和高)的单个或单独缩放计算最佳刚性变换,可以一次计算出关节连接对象的或是每一身体部位的个别缩放参数、或是所有身体部位的全局缩放参数(可能考虑了所估计的先前帧中的身体比例)。
步骤1404使用距离约束来细化模型的初始匹配。步骤1406包括确定对于每一关节连接的身体部位,距离约束被违反的程度。涉及步骤1404和1406的各示例结合图16A1-16C和FIG.17A来提供。
步骤1408使用冲突约束来细化模型的初始匹配。步骤1410包括决定施加冲突约束。例如,该决定可在确定模型处于有助于施加冲突约束的指定姿态时作出。一个示例是在确定模型的至少两个相邻手指指节处于指定相对位置,例如彼此基本平行时。可通过使两个相邻手指指节的纵轴以相比于阈值角度小几度的角度延伸来检测该条件。步骤1412包括确定对于每一关节连接的身体部位,冲突约束被违反的程度。关于步骤1408-1412的各示例结合图18A和18B来提供。
步骤1414使用光栅化模型来细化匹配。步骤1416对模型进行光栅化以提供模型的深度像素,例如类似于图7B的步骤764。步骤1418将模型的深度像素在比较平面中与深度传感器的深度像素进行比较,例如类似于图7B的步骤766。步骤1420标识深度传感器的与模型的深度像素不重叠的非重叠深度像素,例如类似于图7B的步骤770。步骤1422标识模型的与深度传感器的深度像素不重叠的非重叠深度像素,例如类似于图7B的步骤772。关于步骤1414-1422的各示例结合图16D和16E来提供。
步骤1424调整模型,以试图满足不同的约束。在判定步骤1426,如果满足停止准则,则在步骤1428该过程停止。如果判定步骤1426为假,则执行该过程的另一迭代。该方法的步骤中的任一个可在一次或多次迭代中迭代地执行,直到满足停止准则。一般而言,针对要合理满足的所有约束使用多次迭代。此外,模型的调整可基于对每一约束的所有可用信息。步骤1426的调整可组合并加权每一约束的贡献。或者,例如在步骤1406、1412、1420和1422中的每一步之后,模型可基于每一约束来分开调整。
对模型的用于试图满足距离约束的调整可包括调整这些关节连接的身体部位中的至少一个的维度,例如通过增加或减小手指或拇指指节的或手掌或手腕的长度或宽度。对模型的用于试图满足冲突约束的调整可包括调整这些关节连接的身体部位中的冲突中所涉及的至少一个身体部位的维度,例如通过减小手指或拇指指节的或手掌或手腕的长度或宽度。在某些情况下,由于处理时间或其他限制、或其他约束,并非所有约束都能被完全满足,在该情况下,作出最大努力来满足冲突约束。
基于深度传感器的非重叠深度像素对模型进行的调整可包括减小模型部分在深度传感器的非重叠深度像素的方向上的维度(例如,高、宽)。该维度在给定方向上的增加程度可与重叠程度成比例,例如,基于该给定方向上的重叠像素的数量。基于模型的非重叠深度像素对模型进行的调整可包括减小模型部分在背离深度传感器的非重叠深度像素的方向上的维度。一种最优解决方案可倾向于围绕与模型的非重叠深度像素相邻的身体部位的周边来均衡模型的多个非重叠深度像素。该维度在给定方向上的减小程度可与重叠程度成比例,例如,基于该给定方向上的多个重叠像素。
图15描绘了供与图14的方法一起使用的用户的手的深度像素1500的示例。该示例将用在图16A1-16E和图17A中。
图16A1描绘了将图5的模型匹配到图15的深度像素,其中距离约束不被施加,并且该模型比所期望的小。该匹配可涉及允许模型的每一部分独立地浮动而不附连于相邻部分,以便最优地匹配到深度传感器数据的相应部分。如先前讨论的,例如,可使用概率图(图7A)将深度传感器数据的不同部分与相应身体部位相关联。然后,模型的每一身体部位相对于深度传感器数据的相同部分被最优地定位,而不管距离约束。在一种可能的方式中,模型的一部分的代表性吸引点被匹配到深度传感器数据的相同部分的质心。然而,可使用任何匹配技术。
距离约束同模型的部分之间的距离与模型的部分的相对定位之间的距离有关。例如,距离约束可要求端对端地安排手指指节,其中手指指节的一端从相邻手指指节的近端延伸。此外,距离约束可要求近端手指指节从手掌的指定关节延伸。另一距离约束可要求手掌从手腕延伸。确定是否违反距离约束以及违反程度可基于身体部位的关节的位置。在该图和其他图中,示例关节可由菱形来表示。在一种方式中,距离约束要求模型的一个部分的关节与模型的相邻部分的关节基本重合(例如在阈值距离内)。例如,模型部分516底部的关节应与所关联的、手掌最左面的关节重合,模型部分516顶部的关节应与身体部位514底部的关节重合,并且模型部分514顶部的关节应与身体部位512底部的关节重合。关节之间的间隔表示对距离约束的违反。较大间隔或距离表示较大程度的违反。
同样,在该示例中,与深度像素1500的手的表示相比,模型通常更小。
距离约束可由模型中特征点(诸如关节)之间的线来表示。每条线可被认为处于压缩或拉伸。当模型小于传感器所检测的时,存在倾向于将关节彼此拉开的张力。当模型大于传感器所检测的时,存在倾向于将关节推向彼此的压力。与关节连接的模型的每一部分相关联的个体拉伸和/或压缩信息被用于调整模型。
图16A2是图16A1的替代,其中描绘了父和子关节。在另一种方式中,例如,存在远端和近端拇指部分之间的一个关节560,并且距离约束是该关节560和父关节(诸如关节564)之间的距离。关节564的父关节可以是关节503。例如,关节560可位于远端拇指指节552的近端,且关节564可位于近端拇指指节554的近端。在模型的这种方式中,即便网格未长到足以达到那里,网格也被放置在指向子关节的父关节处。父或子关节可分别与父或子身体部位相关联。子身体部位可以是从较大身体部位延伸的较小身体部位,在一种可能的方式中诸如从手掌延伸的手指。或者,子身体部位可以是在指定方向(诸如从手臂到指尖的方向)上从另一身体部位延伸的一个身体部位。例如,近端拇指部分554可能是远端拇指部分552的父亲。类似地,近端手指指节546近端处的关节553表示近端手指指节和手掌502之间且在与手掌502的关节503相距距离d处的骨架关节。中间手指指节544近端处的关节551表示中间手指指节554和近端手指指节546之间的骨架关节。远端手指指节542近端处的关节549表示远端手指指节542和中间手指指节544之间的骨架关节。
图16B1描绘了图16A1的图像中针对食指的细节。在食指540中,如粗实线所指示的,深度传感器的像素被分组成远端手指指节像素区域1620、中间手指指节像素区域1630以及近端手指指节像素区域1640。手指的远端、中间和近端模型部分分别是542、544和546。模型部分542包括顶部关节(菱形547),底部关节549,代表性吸引点541(与作为像素区域1620的质心的三角形1622对准),宽wdm(宽,远端,模型),高hdm(高,远端,模型),与底层像素区域的左边缘的间隔dl(远端,左),以及与底层像素区域的右边缘的间隔dr(远端,右)。已被分配到远端手指指节的底层像素区域具有宽wd和高HDP(高,远端,像素)。
模型部分544包括顶部关节1632,底部关节551,代表性吸引点543(与作为像素区域1620的质心的三角形1634对准),宽wmm(宽,中间,模型),高hmm(高,中间,模型),与底层像素区域的左边缘的间隔ml(中间,左),以及与底层像素区域的右边缘的间隔mr(中间,右)。已被分配到中间手指指节的底层像素区域具有宽wd和高HMP(高,中间,像素)。
模型部分546包括顶部关节1642,底部关节553,代表性吸引点545(与作为像素区域1640的质心的三角形1644对准),宽wpm(宽,近端,模型),高hpm(高,近端,模型),与底层像素区域的左边缘的间隔pl(近端,左),以及与底层像素区域的右边缘的间隔pr(近端,右)。已被分配到近端手指指节的底层像素区域具有宽wd和高HPP。
手掌502具有关节1650,模型部分546的近端要从该关节1650延伸。
维度可在模型的全局坐标系中定义,或每一身体部位可具有它自己的坐标系。术语高,宽等可表示任何方向上的维度。
关节549和544之间的距离md(中间到近端)表示在约束具有距离零或零的某一容限内的距离时被违反的距离约束。可以说,身体部位542和544都违反了该约束。关节551和1642之间的距离pm(近端到中间)表示被违反的另一距离约束,这次是身体部位544和546违反了该约束。关节553和1650之间的距离pp(近端到近端)表示被违反的另一距离约束,这次是身体部位546和502违反了该约束。注意,各关节之间的距离约束可以是3D距离。为简明起见,本示例为2D。
距离dt(远端到顶部)将关节547与像素区域1620的顶部边缘分开。参见图16D和16E。
在该示例中,如接下来讨论的,模型部分应通过在手指方向上被加长来调整。
图16B2是图16B1的替代,其中描绘了父和子关节。在这种情况下,距离约束可通过以下各项来表示:(a)hdm,(b)hmm+md,(c)hpm+pm以及(d)d。在这种情况下,没有使用关节1632,1642和1650。距离d不与其他距离一起缩放,且因此由断线来示出。诸如角度约束之类的其他约束也可应用于诸如关节503和553之间的线。
图16C描绘了在施加距离约束之后对图16B1的模型的调整。每一手指指节的长度可被加长以施加距离约束,以使得手指指节具有总长HDP+HMP+HPP。该长度可以沿3D中直的或弯曲的轴。施加距离约束的结果是关节549和1632、以及551和1642、以及553和1650变得基本重合(在容限内)。身体部位542的长度从hdm增加到hdm',身体部位544的长度从hmm增加到hmm',并且身体部位546的长度从hpm增加到hpm'。作为模型调整的结果,质心和代表性吸引点的相对位置可移位。在一种方式中,每一身体部位基于其相对于在长度上增加的其他相邻身体部位的长度并且基于身体部位之间的距离而在长度上增加。在其他示例中,比手指的所有指节更少的指节使其维度被调整。在其他示例中,手的其他部分使其维度被调整。在其他示例中,该模型是除手以外另一身体部位的模型,或其行为可被建模的另一关节连接的对象的模型。
在使用父和子关节(例如图16B2)的情况中,将实现类似结果。
图16D描绘了光栅化之后图16C的模型,以及与深度传感器的深度像素的比较。模型部分542、544和546被示为像素区域。可以标识深度传感器的与模型的像素不重叠的深度像素。具体而言,区域1650,1651和1652中的深度像素相对于模型部分542是非重叠的,区域1660和1662中的深度像素相对于模型部分544是非重叠的,并且区域1670和1672中的深度像素相对于模型部分546是非重叠的。非重叠像素被圈在虚线框中,并且用虚线图案示出。该比较指示模型的手指指节过窄。可将模型部分542向左加宽某一量dl,并且向右加宽某一量dr。可将模型部分544向左加宽某一量ml,并且向右加宽某一量mr。可将模型部分546向左加宽某一量pl,并且向右加宽某一量pr。关于模型部分542顶部处的重叠dt,这可通过仅将模型部分542的长度增加dt,或通过增加手指的这些模型部分中每一部分的长度来解决。一般而言,用于调整模型的距离可按长度度量或像素数量来表达。
在该示例中,每一模型部分的右侧和左侧存在恒定重叠。当重叠沿该模型部分的周边变化时,该模型部分可被调整成对该重叠的最佳拟合。在一种方式中,平均重叠被确定且被用于调整该模型部分。
图16E描绘了基于像素比较来对图16D的模型进行的调整。在该示例中,模型部分542顶部的重叠dt通过增加手指的这些模型部分中每一部分的长度来解决。身体部位542的长度从hdm'增加到hdm'',身体部位544的长度从hmm'增加到hmm'',并且身体部位546的长度从hpm'增加到hpm''。类似地,由于与模型部分相邻的横向非重叠像素,身体部位542的宽度从wdm增加到wdm',身体部位544的宽度从wmm增加到wmm',并且身体部位546的宽度从wpm增加到wpm'。
在使用父和子关节(例如图16B2)的情况中,将实现类似结果。
图17A描绘了将图5的模型匹配到图15的深度像素的另一示例,其中距离约束不被施加,并且该模型比所期望的大。为清楚起见,模型的像素未示出。
可以标识模型的与深度传感器的像素不重叠的深度像素。具体而言,区域1750和1752中的深度像素相对于模型部分542是非重叠的,区域1760和1762中的深度像素相对于模型部分544是非重叠的,并且区域1770和1772中的深度像素相对于模型部分546是非重叠的。非重叠像素被圈在虚线框中,并且用虚线图案示出。该比较指示手指指节过宽。可将模型部分542向左缩窄某一量dl,并且向右缩窄某一量dr。可将模型部分544向左加缩窄一量ml,并且向右缩窄某一量mr。可将模型部分546向左缩窄某一量pl,并且向右缩窄某一量pr。
在该示例中,每一模型部分的右侧和左侧存在基本恒定或统一的重叠。当重叠沿该模型部分的周边变化时,该模型部分可被调整成对该重叠的最佳拟合。在一种方式中,平均重叠被确定且被用于调整该模型部分。
注意,给定模型部分在一个或多个帧中可能经受相反调整。类似地,相邻模型部分在一个或多个帧可能经受相反调整。例如,在一个帧中,手指指节可能经受加宽,而在另一帧中经受缩窄。这可能例如由调整的迭代本质、噪声、深度传感器的分辨率、用户的移动、计算限制以及其他因素造成。例如由于相反或冲突的距离约束调整、冲突约束调整和/或像素比较调整,在一个帧中,模型部分还可能经历相反或冲突的调整。
距离约束可由以下各项来标识:(a)md,(b)pm,(c)pp'。
图17B是图17A的替代,其中描绘了父和子关节。在这种情况下,距离约束可通过以下各项来表示:(a)hdm,(b)hmm-md,(c)hpm-pm-pp'和(d)d'。在这种情况下,没有使用关节1632、1642和1650。距离d'不与其他距离一起缩放,且因此由断线来示出。
图18A描绘了图5的模型中的两个相邻手指示出冲突。冲突约束是为了避免模型的不同部分在相同时间出现在相同位置。例如,该示例示出模型的相邻手指534和540,其中手指的阴影部分1820位于同处。在该简化示例中,手指530的模型部分532、534和536具有宽度wdm1,而手指540的模型部分542、544和546具有宽度wdm2。距离pd(穿透深度)表示冲突程度,例如违反冲突约束的程度。中心纵轴在每一模型部分中延伸,例如轴1800、1802和1804分别在模型部分532、534和536中延伸,并且轴1810、1812和1814分别在模型部分542、544和546中延伸。
轴1830可被认为是手指530沿手指540的外围延伸的穿透轴,并且轴1832可被认为是手指540沿手指530的外围延伸的穿透轴。在这种情况下,pd是穿透轴1830和1832之间的距离。
图18B描绘了施加冲突约束之后图18A的这两个相邻手指。为满足冲突约束,手指530和540中的一个或两个被调整。可以想象,一种解决方案是将两个手指移得更远。然而,距离约束可要求手指从手掌中的指定关节延伸,使得该解决方案不受偏爱。另一种解决方案是减小手指中仅一个手指的宽度;然而,这也不太可能是最优的。一种最优解决方案通常是减小冲突手指或其他身体部位两者的宽度。在一种方式中,手指530和540在宽度上可按足以阻止冲突的相同比例(例如,相同百分比)减小。在这种情况下,手指530的宽度从wdm1减小到wdm1',并且手指540的宽度从wdm2减小到wdm2'。
当模型被确定处于特别适于冲突约束施加的姿态时,可作出施加冲突约束的决定。因此,取决于该姿态是否合适,可以对帧施加冲突约束。在一个可能的方式中,如果该姿态不合适,则不对该帧施加冲突约束。
在一种方式中,对初始模型的细化包括调整该模型以试图满足距离约束,并且随后决定施加冲突约束。响应于决定施加冲突约束,可以作出关于至少两个相邻模型部分(诸如模型的各手指指节)在初始匹配中违反冲突约束的程度的估计。可基于模型的至少两个相邻手指指节违反冲突约束的程度,通过减小模型的至少两个相邻手指指节的宽度来调整模型,以试图满足冲突约束。决定施加冲突约束可包括确定模型的至少两个相邻手指指节位于指定的相对位置。在一种方式中,当模型的至少两个相邻手指指节的相应纵轴在指定角度阈值内基本平行时,模型的至少两个相邻手指指节位于指定的相对位置,诸如图18A。例如,该角度阈值可以是轴1830和1832之间的某一角度。模型的至少两个相邻手指指节违反冲突约束的程度可以基于相应纵轴之间的距离。
在该示例中,当两个相邻手指或手指指节基本平行并且显著冲突时,这指示手指宽度太厚并且应被减小。在一种方式中,每一手指指节被建模成圆柱体,在该情况下可以确定圆柱体的长轴是否平行。
前面的对本技术的详细描述只是为了说明和描述。它不是为了详尽的解释或将本技术限制在所公开的准确的形式。鉴于上述教导,许多修改和变型都是可能的。所描述的实施例只是为了最好地说明本技术的原理以及其实际应用,从而使精通本技术的其他人在各种实施例中最佳地利用本技术,适合于特定用途的各种修改也是可以的。本技术的范围由所附的权利要求进行定义。