用于处理场景的深度信息的方法和设备转让专利

申请号 : CN201080024661.8

文献号 : CN102448563B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·J·菲诺齐奥R·M·盖斯

申请人 : 微软公司

摘要 :

可由设备接收、观察或捕捉场景的深度图像。然后可以分析该深度图像以确定该深度图像是否包括噪声。例如,深度图像可包括具有一个或多个空像素或没有深度值的像素的一个或多个孔洞。可以计算该一个或多个空像素的深度值并且可以渲染包括一个或多个空像素的计算出的深度值的深度图像。

权利要求 :

1.一种用于处理场景的深度信息的设备,所述设备包括:相机组件(20),所述相机组件(20)接收所述场景的第一深度图像;以及处理器(32),所述处理器(32)执行计算机可执行指令,并且所述计算机可执行指令包括用于以下操作的指令:从所述相机组件(20)接收(305)所述场景的第一深度图像;

基于与同所述第一深度图像中的噪声相关联的一个或多个像素相邻的像素的有效深度值来估算(325)所述一个或多个像素的深度值;以及用与所述场景中的噪声相关联的一个或多个像素的所估算的深度值来渲染(330)第二深度图像。

2.如权利要求1所述的设备,其特征在于,与所述第一深度图像中的噪声相关联的所述一个或多个像素包括具有零深度值的一个或多个像素。

3.如权利要求1所述的设备,其特征在于,所述用于估算与所述第一深度图像中的噪声相关联的一个或多个像素的深度值的指令包括用于以下操作的指令:从与所述第一深度图像中的噪声相关联的一个或多个像素中标识第一像素;

确定与所述第一像素相邻的像素是否具有有效深度值;以及基于所述有效深度值来生成所述像素的深度值。

4.如权利要求3所述的设备,其特征在于,所述用于基于所述有效深度值来生成所述像素的深度值的指令包括用于以下操作的指令:标识与所述第一像素相邻的、具有最小有效深度值的第二像素以及与所述第一像素相邻的、具有最大有效深度值的第二像素;

确定所述最小有效深度值与所述最大有效深度值之间的差;以及基于所述确定,如果所述差大于阈值,则将所述最小有效深度值赋予所述第一像素的深度值。

5.如权利要求4所述的设备,其特征在于,所述用于基于所述有效深度值来生成所述像素的深度值的指令还包括用于以下操作的指令:基于所述确定,如果所述差小于阈值,则基于所述相邻像素的有效深度值来计算平均深度值;以及将所述平均深度值赋予所述第一像素的深度值。

6.如权利要求1所述的设备,其特征在于,所述用于估算与所述第一深度图像中的噪声相关联的一个或多个像素的深度值的指令包括用于以下操作的指令:生成噪声严重性值;

基于成长值来调整所述噪声严重性值;以及

基于经调整的成长值来确定是否估算与所述噪声相关联的一个或多个像素的深度值。

7.如权利要求1所述的设备,其特征在于,还包括用于处理所述第二深度图像的指令。

8.如权利要求7所述的设备,其特征在于,所述用于处理所述第二深度图像的指令包括用于以下操作的指令:确定所述第二深度图像是否包括人类目标;以及

基于所述确定,如果所述第二深度图像包括所述人类目标,则生成所述人类目标的模型。

9.一种用于处理捕捉到的场景的深度信息的方法,所述方法包括:接收(305)所述场景的第一深度图像,所述第一深度图像包括空像素;

确定(315)与所述空像素相邻的第一像素是否具有第一有效深度值;

基于所述确定,如果所述第一像素具有第一有效深度值,则基于所述第一有效深度值来生成(325)所述空像素的深度值;以及用所述空像素的所生成的深度值来渲染(330)第二深度图像。

10.一种用于处理场景的深度信息的系统,所述系统包括:捕捉设备,所述捕捉设备包括接收场景的第一深度图像的相机组件(20);以及与所述捕捉设备在操作上进行通信的计算设备,所述计算设备包括处理器(32),所述处理器从所述捕捉设备接收所述场景的第一深度图像;确定所述第一深度图像是否包括具有没有深度值的像素的孔洞;以及基于所述确定,如果所述第一深度图像包括所述孔洞,则基于与所述没有深度值的像素相邻的像素的有效深度值来估算所述没有深度值的像素的深度值。

11.如权利要求10所述的系统,其特征在于,所述处理器(32)通过以下操作来估算所述像素的深度值:从与所述第一深度图像中的孔洞相关联的像素中标识第一像素;确定与所述第一像素相邻的像素是否具有有效深度值;以及基于所述相邻像素的有效深度值来生成所述第一像素的深度值。

12.如权利要求10所述的系统,其特征在于,所述处理器(32)还生成噪声严重性值;

基于成长值来调整所述噪声严重性值;以及基于经调整的成长值来估算所述孔洞中的一个像素的深度值。

13.如权利要求10所述的系统,其特征在于,所述处理器(32)还渲染包括所估算的深度值的第二深度图像,确定所述第二深度图像是否包括人类目标,以及在所述第二深度图像包括所述人类目标的情况下生成所述人类目标的模型。

14.如权利要求13所述的系统,其特征在于,所述处理器(32)还跟踪所述模型的一个或多个移动。

15.如权利要求14所述的系统,其特征在于,所述计算设备还包括其上存储的姿势库(190),并且所述处理器(32)将所跟踪的一个或多个移动与所述姿势库进行比较以确定是否执行基于所述一个或多个移动来执行的控制。

说明书 :

用于处理场景的深度信息的方法和设备

技术领域

[0001] 本发明涉及深度图像降噪。

背景技术

[0002] 诸如计算机游戏、多媒体应用程序等之类的许多计算应用程序使用控制来允许用户操纵游戏角色或应用程序的其他方面。通常使用例如控制器、遥控器、键盘、鼠标等等来输入这样的控制。不幸的是,这些控制可能是难以学习的,由此造成了用户和这些游戏及应用程序之间的障碍。此外,这些控制可能与这些控制所用于的实际游戏动作或其他应用程序动作不同。例如,使得游戏角色挥动棒球拍的游戏控制可能不与挥动棒球拍的实际运动相对应。

发明内容

[0003] 此处公开了用于处理场景的可用于解释人类输入的深度信息的系统和方法。例如,可接收、捕捉或观察场景的第一深度图像。然后可以分析该第一深度图像以确定该第一深度图像是否包括噪声。例如,第一深度图像可包括具有一个或多个空像素或没有深度值的像素的一个或多个孔洞。根据一示例实施例,可以计算一个或多个空像素的深度值。然后可以渲染第二深度图像,该第二深度图像可包括来自第一深度图像的有效深度值以及一个或多个空像素的计算出的深度值。在一个实施例中,可以处理第二深度图像,以便例如确定该第二深度图像是否包括人类目标并且生成该人类目标的模型,该人类目标的模型可以被跟踪以便例如动画化化身和/或控制各种计算应用程序。
[0004] 提供本概述以便以简化形式介绍在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。此外,所要求保护的主题不限于解决在本发明的任一部分中提及的任何或所有缺点的实现。

附图说明

[0005] 图1A和1B示出了伴随用户玩游戏的目标识别、分析和跟踪系统的示例实施例。
[0006] 图2示出了可在目标识别、分析和跟踪系统中使用的捕捉设备的示例实施例。
[0007] 图3示出了可用于解释目标识别、分析和跟踪系统中的一个或多个姿势的计算环境的示例实施例。
[0008] 图4示出了可用于解释目标识别、分析和跟踪系统中的一个或多个姿势的计算环境的另一示例实施例。
[0009] 图5描绘了用于处理包括深度图像的深度信息的示例方法的流程图。
[0010] 图6示出了可被捕捉的深度图像的示例实施例。
[0011] 图7A和7B示出了深度图像的一部分的示例实施例。
[0012] 图8A-8D示出了为深度图像的一部分中的空像素计算深度值的示例实施例。
[0013] 图9A-9C示出了可具有对可以计算其深度值的空像素的数量的限制的深度图像的示例实施例。
[0014] 图10示出了可以渲染的具有为噪声计算的深度值的深度图像的示例实施例。

具体实施方式

[0015] 如本文中将描述的,用户可通过执行一个或多个姿势来控制在诸如游戏控制台、计算机等计算环境上执行的应用程序。根据一个实施例,姿势可由例如捕捉设备来接收。例如,捕捉设备可捕捉场景的深度图像。在一个实施例中,深度图像可包括噪声。噪声可包括具有一个或多个空像素或没有深度值的像素的孔洞。根据示例实施例,可以为这些空像素计算深度值并且可以渲染包括为噪声计算的深度值的深度图像。然后可以处理所渲染的深度图像以便例如确定所渲染的深度图像是否包括人类目标并且生成可以跟踪的该人类目标的模型。根据一示例实施例,可以跟踪该模型、可以呈现与该模型相关联的化身、和/或可以控制在计算机环境上执行的一个或多个应用程序。
[0016] 图1A和1B示出伴随用户18玩拳击游戏的目标识别、分析和跟踪系统10的配置的示例实施例。在一示例实施例中,目标识别、分析和跟踪系统10可用于识别、分析和/或跟踪诸如用户18等的人类目标。
[0017] 如图1A所示,目标识别、分析及跟踪系统10可包括计算环境12。计算环境12可以是计算机、游戏系统或控制台等等。根据一示例实施例,计算环境12可包括硬件组件和/或软件组件,使得计算环境12可用于执行诸如游戏应用程序、非游戏应用程序等应用程序。在一个实施例中,计算环境12可包括诸如标准化处理器、专用处理器、微处理器之类的可执行指令的处理器,这些指令包括例如用于以下操作的指令:接收深度图像、确定深度图像是否包括噪声、计算与噪声相关联的像素的深度值、渲染包括为与噪声相关联的像素计算的深度值的深度图像,或者任何其他合适的指令,这将在下文中更详细地描述。
[0018] 如图1A所示,目标识别、分析及跟踪系统10还可包括捕捉设备20。捕捉设备20可以是例如相机,该相机可用于在视觉上监视诸如用户18等一个或多个用户,以使得可以捕捉、分析并跟踪一个或多个用户所执行的姿势以执行应用程序中的一个或多个控制或动作,如将在下面更详细地描述的。
[0019] 根据一个实施例,目标识别、分析及跟踪系统10可连接到可向诸如用户18等用户提供游戏或应用程序视觉和/或音频的视听设备16,如电视机、监视器、高清电视机(HDTV)等。例如,计算环境12可包括诸如图形卡等视频适配器和/或诸如声卡等音频适配器,这些适配器可提供与游戏应用程序、非游戏应用程序等相关联的视听信号。视听设备16可从计算环境12接收视听信号,然后可向用户18输出与该视听信号相关联的游戏或应用程序视觉和/或音频。根据一个实施例,视听设备16可经由例如,S-视频电缆、同轴电缆、HDMI电缆、DVI电缆、VGA电缆等连接到计算环境12。
[0020] 如图1A和1B所示,目标识别、分析和跟踪系统10可用于识别、分析和/或跟踪诸如用户18等的人类目标。例如,可使用捕捉设备20来跟踪用户18,以使得可将用户18的移动解释为可用于影响由计算机环境12执行的应用程序的控制。因而,根据一个实施例,用户18可移动他或她的身体来控制应用程序。
[0021] 如图1A和1B所示,在一示例实施例中,在计算环境12上执行的应用程序可以是用户18可能正在玩的拳击游戏。例如,计算环境12可使用视听设备16来向用户18提供拳击对手38的视觉表示。计算环境12还可使用视听设备16来提供用户18可通过他的或她的移动来控制的玩家化身40的视觉表示。例如,如图1B所示,用户18可在物理空间中挥拳来使得玩家化身40在游戏空间中挥拳。因此,根据一示例实施例,目标识别、分析及跟踪系统10的计算环境12和捕捉设备20可用于识别和分析用户18在物理空间中的出拳,从而使得该出拳可被解释为对游戏空间中的玩家化身40的游戏控制。
[0022] 用户18的其他移动也可被解释为其他控制或动作,诸如上下快速摆动、闪避、滑步、格挡、直拳或挥动各种不同力度的拳等控制。此外,某些移动可被解释为可对应于除控制玩家化身40之外的动作的控制。例如,玩家可以使用移动来结束、暂停或保存游戏、选择级别、查看高分、与朋友交流等。另外,用户18的全范围运动可以用任何合适的方式来获得、使用并分析以与应用程序进行交互。
[0023] 在各示例实施例中,诸如用户18等人类目标可持有一物体。在这些实施例中,电子游戏的用户可手持物体从而可以使用玩家和物体的运动来调整和/或控制游戏的参数。例如,可以跟踪并利用玩家手持球拍的运动来控制电子运动游戏中的屏幕上球拍。在另一示例实施例中,可以跟踪并利用玩家手持物体的运动来控制电子格斗游戏中的屏幕上武器。
[0024] 根据其他示例实施例,目标识别、分析及跟踪系统10还可用于将目标移动解释为游戏领域之外的操作系统和/或应用程序控制。例如,事实上操作系统和/或应用程序的任何可控方面可由诸如用户18等目标的移动来控制。
[0025] 图2示出可在目标识别、分析及跟踪系统10中使用的捕捉设备20的示例实施例。根据一示例实施例,捕捉设备20可被配置成经由任何合适的技术,包括例如飞行时间、结构化光、立体图像等来捕捉包括深度图像的带有深度信息的视频,该深度信息可包括深度值。根据一实施例,捕捉设备20可将深度信息组织为“Z层”或者可与从深度相机沿其视线延伸的Z轴垂直的层。
[0026] 如图2所示,捕捉设备20可包括图像相机组件22。根据一个示例实施例,图像相机组件22可以是可捕捉场景的深度图像的深度相机。深度图像可包括所捕捉的场景的二维(2-D)像素区域,其中2-D像素区域中的每一像素可表示深度值,诸如例如以厘米、毫米等为单位的、所捕捉的场景中的对象距相机的长度或距离。
[0027] 如图2所示,根据一示例实施例,图像相机组件22可包括可用于捕捉场景的深度图像的IR光组件24、三维(3-D)相机26、和RGB相机28。例如,在飞行时间分析中,捕捉设备20的IR光组件24可以将红外光发射到场景上,然后,可以使用传感器(未示出),用例如3-D相机26和/或RGB相机28,来检测从场景中的一个或多个目标和对象的表面反向散射的光。在某些实施例中,可以使用脉冲红外光,使得可以测量出射光脉冲和相应的入射光脉冲之间的时间并将其用于确定从捕捉设备20到场景中的目标或对象上的特定位置的物理距离。另外,在其他示例性实施例中,可将出射光波的相位与入射光波的相位进行比较来确定相移。然后可以使用该相移来确定从捕捉设备到目标或对象上的特定位置的物理距离。
[0028] 根据另一示例实施例,可使用飞行时间分析,通过经由包括例如快门式光脉冲成像在内的各种技术来随时间分析反射光束的强度以间接地确定从捕捉设备20到目标或对象上的特定位置的物理距离。
[0029] 在另一示例实施例中,捕捉设备20可使用结构化光来捕捉深度信息。在这一分析中,图案化光(即,被显示为诸如网格图案或条纹图案等已知图案的光)可经由例如IR光组件24被投影到场景上。在落到场景中的一个或多个目标或对象的表面上时,作为响应,图案可变形。图案的这种变形可由例如3-D相机26和/或RGB相机28来捕捉,然后可被分析来确定从捕捉设备到目标或对象上的特定位置的物理距离。
[0030] 根据另一实施例,捕捉设备20可包括两个或更多物理上分开的相机,这些相机可从不同角度查看场景以获得视觉立体数据,该视觉立体数据可被解析以生成深度信息。
[0031] 捕捉设备20还可包括话筒30。话筒30可包括可接收声音并将其转换成电信号的换能器或传感器。根据一个实施例,话筒30可以被用来减少目标识别、分析及跟踪系统10中的捕捉设备20和计算环境12之间的反馈。另外,话筒30可用于接收也可由用户提供的音频信号,以控制可由计算环境12执行的诸如游戏应用程序、非游戏应用程序等应用程序。
[0032] 在示例实施例中,捕捉设备20还可以包括可与图像相机组件22进行可操作的通信的处理器32。处理器32可包括可执行指令的标准化处理器、专用处理器、微处理器等,这些指令包括例如用于以下操作的指令:接收深度图像、确定深度图像是否包括噪声、计算与噪声相关联的像素的深度值、渲染包括为与噪声相关联的像素计算的深度值的深度图像,或者任何其他合适的指令,这将在下文中更详细地描述。
[0033] 捕捉设备20还可以包括存储器组件34,该存储器组件34可以存储可以由处理器32执行的指令、由3-D相机或RGB相机捕捉到的图像或图像的帧、或任何其他合适的信息、图像等等。根据一个示例实施例,存储器组件34可包括随机存取存储器(RAM)、只读存储器(ROM)、高速缓存、闪存、硬盘或任何其他合适的存储组件。如图2所示,在一个实施例中,存储器组件34可以是与图像捕捉组件22和处理器32进行通信的单独的组件。根据另一实施例,存储器组件34可被集成到处理器32和/或图像捕捉组件22中。
[0034] 如图2所示,捕捉设备20可经由通信链路36与计算环境12进行通信。通信链路36可以是包括例如USB连接、火线连接、以太网电缆连接等的有线连接和/或诸如无线802.11b、802.11g、802.11a或802.11n连接等的无线连接。根据一个实施例,计算环境12可以经由通信链路36向捕捉设备20提供时钟,可以使用该时钟来确定何时捕捉例如场景。
[0035] 另外,捕捉设备20可经由通信链路36向计算环境12提供深度信息和由例如3-D照相机26和/或RGB照相机28捕捉的图像,和/或可由捕捉设备20生成的骨架模型。计算环境12然后可使用该骨架模型、深度信息和捕捉的图像来例如控制例如游戏或文字处理程序之类的应用程序。例如,如图2所示,计算环境12可包括姿势库190。姿势库190可包括姿势过滤器集合,每一姿势过滤器包括关于骨架模型可执行(在用户移动时)的姿势的信息。可将由相机26、28和捕捉设备20捕捉的骨架模型形式的数据以及与其相关联的移动与姿势库190中的姿势过滤器进行比较来标识用户(如骨架模型所表示的)何时执行了一个或多个姿势。那些姿势可与应用程序的各种控制相关联。因此,计算环境12可使用姿势库190来解释骨架模型的移动并基于该移动来控制应用程序。
[0036] 图3示出可用于解释目标识别、分析和跟踪系统中的一个或多个姿势的计算环境的示例实施例。上面参考图1A-2所描述的诸如计算环境12等计算环境可以是诸如游戏控制台等多媒体控制台100。如图3所示,多媒体控制台100具有含有一级高速缓存102、二级高速缓存104和闪存ROM(只读存储器)106的中央处理单元(CPU)101。一级高速缓存102和二级高速缓存104临时存储数据并因此减少存储器访问周期数,由此改进处理速度和吞吐量。CPU101可以设置成具有一个以上的内核,以及由此的附加的一级和二级高速缓存102和104。闪存ROM106可存储在多媒体控制台100通电时的引导过程的初始阶段期间加载的可执行代码。
[0037] 图形处理单元(GPU)108和视频编码器/视频编解码器(编码器/解码器)114形成用于高速和高分辨率图形处理的视频处理流水线。数据经由总线从图形处理单元108输送到视频编码器/视频编解码器114。视频处理流水线向A/V(音频/视频)端口140输出数据,以便传输到电视机或其他显示器。存储器控制器110连接到GPU108以方便处理器访问各种类型的存储器112,诸如但不局限于RAM(随机存取存储器)。
[0038] 多媒体控制台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驱动器、可移动介质等)的主机。网络接口124和/或无线适配器148提供对网络(例如,因特网、家庭网络等)的访问,并且可以是包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等的各种不同的有线或无线适配器组件中任何一种。
[0039] 提供系统存储器143来存储在引导过程期间加载的应用数据。提供媒体驱动器144,且其可包括DVD/CD驱动器、硬盘驱动器、或其他可移动媒体驱动器等。媒体驱动器144可以是对多媒体控制器100内置的或外置的。应用数据可经由媒体驱动器144访问,以由多媒体控制台100执行、回放等。介质驱动器144经由诸如串行ATA总线或其他高速连接(例如IEEE1394)等总线连接到I/O控制器120。
[0040] 系统管理控制器122提供涉及确保多媒体控制台100的可用性的各种服务功能。音频处理单元123和音频编解码器132形成具有高保真度和立体声处理的对应的音频处理流水线。音频数据经由通信链路在音频处理单元123与音频编解码器132之间传输。音频处理流水线将数据输出到A/V端口140以供外置音频播放器或具有音频能力的设备再现。
[0041] 前面板I/O子部件130支持暴露在多媒体控制台100的外表面上的电源按钮150和弹出按钮152以及任何LED(发光二极管)或其他指示器的功能。系统供电模块136向多媒体控制台100的组件供电。风扇138冷却多媒体控制台100内的电路。
[0042] CPU101、GPU108、存储器控制器110、和多媒体控制台100内的各个其他组件经由一条或多条总线互连,包括串行和并行总线、存储器总线、外围总线、和使用各种总线架构中任一种的处理器或局部总线。作为示例,这些架构可以包括外围部件互连(PCI)总线、PCI-Express总线等。
[0043] 当多媒体控制台100通电时,应用数据可从系统存储器143加载到存储器112和/或高速缓存102、104中并在CPU101上执行。应用程序可呈现在导航到多媒体控制台100上可用的不同媒体类型时提供一致的用户体验的图形用户界面。在操作中,媒体驱动器144中包含的应用程序和/或其他媒体可从媒体驱动器144启动或播放,以向多媒体控制台100提供附加功能。
[0044] 多媒体控制台100可通过将该系统简单地连接到电视机或其他显示器而作为独立系统来操作。在该独立模式中,多媒体控制台100允许一个或多个用户与该系统交互、看电影、或听音乐。然而,随着通过网络接口124或无线适配器148可用的宽带连接的集成,多媒体控制台100还可作为较大网络社区中的参与者来操作。
[0045] 当多媒体控制台100通电时,可以保留设定量的硬件资源以供多媒体控制台操作系统作系统使用。这些资源可包括存储器的保留量(诸如,16MB)、CPU和GPU周期的保留量(诸如,5%)、网络带宽的保留量(诸如,8kbs),等等。因为这些资源是在系统引导时间保留的,所保留的资源对于应用程序视角而言是不存在的。
[0046] 具体而言,存储器保留优选地足够大,以包含启动内核、并发系统应用程序和驱动程序。CPU保留优选地为恒定,使得若所保留的CPU用量不被系统应用程序使用,则空闲线程将消耗任何未使用的周期。
[0047] 对于GPU保留,通过使用GPU中断来调度代码来将弹出窗口呈现为覆盖图以显示由系统应用程序生成的轻量消息(例如,弹出窗口)。覆盖图所需的存储器量取决于覆盖区域大小,并且覆盖图优选地与屏幕分辨率成比例缩放。在并发系统应用程序使用完整用户界面的情况下,优选使用独立于应用程序分辨率的分辨率。定标器可用于设置该分辨率,从而无需改变频率并引起TV重新同步。
[0048] 在多媒体控制台100引导且系统资源被保留之后,就执行并发系统应用程序来提供系统功能。系统功能被封装在上述所保留的系统资源中执行的一组系统应用程序中。操作系统内核标识是系统应用程序线程而非游戏应用程序线程的线程。系统应用程序优选地被调度为在预定时间并以预定时间间隔在CPU101上运行,以便为应用程序提供一致的系统资源视图。进行调度是为了将用于在控制台上运行的游戏应用程序的高速缓存中断最小化。
[0049] 当并发系统应用程序需要音频时,则由于时间敏感性而将音频处理异步地调度给游戏应用程序。多媒体控制台应用程序管理器(如下所述)在系统应用程序活动时控制游戏应用程序的音频水平(例如,静音、衰减)。
[0050] 输入设备(例如,控制器142(1)和142(2))由游戏应用程序和系统应用程序共享。输入设备不是保留资源,而是在系统应用程序和游戏应用程序之间切换以使其各自具有设备的焦点。应用程序管理器较佳地控制输入流的切换,而无需知晓游戏应用程序的知识,并且驱动程序维护有关焦点切换的状态信息。相机26、28和捕捉设备20可为控制台100定义额外的输入设备。
[0051] 图4示出了可用于在目标识别、分析和跟踪系统中解释一个或多个姿势的计算环境220的另一示例实施例,该计算环境可以是图1A-2所示的计算环境12。计算系统环境220只是合适的计算环境的一个示例,并且不旨在对所公开的主题的使用范围或功能提出任何限制。也不应该将计算环境220解释为对示例性操作环境220中示出的任一组件或其组合有任何依赖性或要求。在某些实施例中,所描绘的各种计算元素可包括被配置成实例化本发明的各具体方面的电路。例如,本公开中使用的术语电路可包括被配置成通过固件或开关来执行功能的专用硬件组件。在其他示例中,术语电路可包括由实施可用于执行功能的逻辑的软件指令配置的通用处理单元、存储器等。在电路包括硬件和软件的组合的示例实施例中,实施者可以编写体现逻辑的源代码,且源代码可以被编译为可以由通用处理单元处理的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件组合之间几乎没有差别的地步,因而选择硬件或是软件来实现具体功能是留给实现者的设计选择。更具体地,本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身可被变换成等价的软件进程。因此,对于硬件实现还是软件实现的选择是设计选择并留给实现者。
[0052] 在图4中,计算环境220包括计算机241,计算机241通常包括各种计算机可读介质。计算机可读介质可以是能由计算机241访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。系统存储器222包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)223和随机存取存储器(RAM)260。基本输入/输出系统224(BIOS)包含诸如在启动期间帮助在计算机241内的元件之间传输信息的基本例程,基本输入/输出系统224(BIOS)通常储存储在ROM223中。RAM260通常包含处理单元259可立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图4示出了操作系统225、应用程序226、其他程序模块227和程序数据228。
[0053] 计算机241也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图4示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器238,从可移动、非易失性磁盘254中读取或向其写入的磁盘驱动器239,以及从诸如CD ROM或其他光学介质等可移动、非易失性光盘253中读取或向其写入的光盘驱动器240。可在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器
238通常由例如接口234等不可移动存储器接口连接至系统总线221,而磁盘驱动器239和光盘驱动器240通常由例如接口235等可移动存储器接口连接至系统总线221。
[0054] 以上讨论并在图4中示出的驱动器及其相关联的计算机存储介质为计算机241提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图4中,例如,硬盘驱动器238被示为存储操作系统258、应用程序257、其他程序模块256和程序数据255。注意,这些组件可以与操作系统225、应用程序226、其他程序模块227和程序数据228相同,也可以与它们不同。在此操作系统258、应用程序257、其他程序模块256以及程序数据255被给予了不同的编号,以说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘251和定点设备252(通常指的是鼠标、跟踪球或触摸垫)向计算机241输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过耦合至系统总线的用户输入接口236连接至处理单元259,但也可以由其他接口和总线结构,例如并行端口、游戏端口或通用串行总线(USB)来连接。相机26、28和捕捉设备20可为控制台100定义额外的输入设备。监视器242或其他类型的显示设备也通过诸如视频接口232之类的接口连接至系统总线221。除监视器之外,计算机还可以包括可以通过输出外围接口233连接的诸如扬声器244和打印机243之类的其他外围输出设备。
[0055] 计算机241可以使用到一个或多个远程计算机(如远程计算机246)的逻辑连接,以在联网环境中操作。远程计算机246可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上关于计算机241所描述的元件,但在图4中仅示出了存储器存储设备247。图2中所描绘的逻辑连接包括局域网(LAN)245和广域网(WAN)249,但还可包括其他网络。这些联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
[0056] 当用于LAN网络环境中时,计算机241通过网络接口或适配器237连接到LAN245。当在WAN联网环境中使用时,计算机241通常包括调制解调器250或用于通过诸如因特网等WAN249建立通信的其他手段。调制解调器250,可以是内置的或外置的,可以经由用户输入接口236或其他适当的机制,连接到系统总线221。在联网环境中,相对于计算机241所描述的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图4示出了远程应用程序248驻留在存储器设备247上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。
[0057] 图5描绘了用于处理包括深度图像的深度信息的示例方法300的流程图。示例方法300可使用例如,参考图1A-4所描述的目标识别、分析和跟踪系统10的捕捉设备20和/或计算环境12来实现。在一示例实施例中,示例方法300可采取可由例如参考图1A-4所描述的目标识别、分析和跟踪系统10的捕捉设备20和/或计算环境12执行的程序代码(即指令)的形式。
[0058] 根据一示例实施例,在305,目标识别、分析和跟踪系统可接收第一深度图像。例如,目标识别、分析和跟踪系统可包括诸如参考图1A-2描述的捕捉设备20等捕捉设备。捕捉设备可捕捉或观察可包括一个或多个目标或对象的场景。在一示例实施例中,捕捉设备可以是深度相机,该深度相机被配置成使用诸如飞行时间分析、结构化光分析、立体视觉分析等任何合适的技术来获得场景的深度图像。
[0059] 根据一示例实施例,第一深度图像可以是多个观测到的像素,其中每个观测到的像素具有观测到的深度值。例如,第一深度图像可包括所捕捉的场景的二维(2-D)像素区域,其中2-D像素区域中的每一像素可表示深度值,诸如例如以厘米、毫米等为单位的、所捕捉的场景中的对象或目标距捕捉设备的长度或距离。
[0060] 图6示出了可在305处接收的第一深度图像400的示例实施例。根据一示例实施例,第一深度图像400可以是由例如以上参考图2所描述的捕捉设备20的3-D相机26和/或RGB相机28所捕捉的场景的图像或帧。如图6中所示的,第一深度图像400可包括所捕捉的场景中的一个或多个目标402,诸如人类目标、椅子、桌子、墙壁等。如上所述,第一深度图像400可包括多个观测到的像素,其中每一观测到的像素具有与其相关联的观测到的深度值。例如,第一深度图像400可包括所捕捉的场景的二维(2-D)像素区域,其中2-D像素区域中的每一像素可表示深度值,诸如例如以厘米、毫米等为单位的、所捕捉的场景中的对象或目标距捕捉设备的长度或距离。在一示例实施例中,第一深度图像400可被着色,以使得深度图像的像素的不同色彩对应于和/或从视觉上描绘了目标402相距捕捉设备的不同距离。例如,根据一个实施例,深度图像中与最接近捕捉设备的目标相关联的像素可用红色和/或橙色阴影来着色,而深度图像中与较远的目标相关联的像素可用绿色和/或蓝色阴影来着色。
[0061] 参考图5,在310,目标识别、分析和跟踪系统可确定第一深度图像是否可能包括噪声。例如,可以捕捉或观察的第一深度图像可能是有噪声的,以使得该第一深度图像可包括一个或多个孔洞。这些孔洞可包括深度图像中的其中例如相机可能无法确定深度值或到该目标或对象的距离的区域。例如,根据一个实施例,孔洞可包括例如第一深度图像的2-D像素区域中的可以为空或可具有零深度值的一个或多个像素。在一示例实施例中,可能由于例如以下原因导致噪声:来自光源的阴影、来自物体或目标的反射、目标或对象的边缘、物体或目标的背景、颜色或图案,等等。
[0062] 如图6所示,第一深度图像400可包括噪声406。噪声406可包括包括具有一个或多个空像素或没有深度值的像素的一个或多个孔洞。如上所述,在一个实施例中,第一深度图像400可被着色,以使得深度图像的像素的不同色彩对应于和/或从视觉上描绘了目标402相距捕捉设备的不同距离。如图6所示,噪声406可被着色为黑色以在视觉上指示一个或多个空像素或没有深度值的像素。
[0063] 图7A和7B示出了图6所示的第一深度图像400的一部分408的示例实施例。在一个实施例中,部分408可以是第一深度图像400的2-D像素区域中的像素的一部分。例如,如图7B所示,部分408可包括可以是2-D像素区域的一部分的像素420。根据一个实施例,像素420中的每一个都可包括与其相关联的深度值。例如,第一像素420a可具有深度值20,该深度值表示与第一像素420a相关联的目标或对象离捕捉设备的以例如厘米、毫米等为单位的长度或距离。
[0064] 如图7A所示,第一深度图像400的部分408可包括噪声406。在一示例实施例中,噪声406可包括像素420中的具有深度值0的一部分,如图7B所示。例如,第二像素420b可具有深度值0,该深度值指示捕捉设备可能无法确定与第二像素420b相关联的深度值或离与第二像素420b相关联的目标或对象的距离。
[0065] 回头参考图5,在315,如果第一深度图像不包括噪声,则目标识别、分析和跟踪系统可以在320处理第一深度图像。在一个实施例中,目标识别、分析和跟踪系统可以在320处理第一深度图像以使得可以生成捕捉到的场景中的人类目标的模型。根据一示例实施例,可以跟踪该模型、可以呈现与该模型相关联的化身、和/或可以控制在计算机环境上执行的一个或多个应用程序这将在下文中更详细地描述。
[0066] 在315,如果第一深度图像包括噪声,则目标识别、分析和跟踪系统可以在325计算该噪声的一个或多个深度值。例如,可以在325计算可能为空或可具有与其相关联的深度值0的像素中的一个或多个的深度值。
[0067] 根据一个实施例,可使用具有有效深度值的相邻像素来计算空像素的深度值。例如,目标识别、分析和跟踪系统可标识空像素。到标识到空像素时,目标识别、分析和跟踪系统可确定与该空像素相邻的一个或多个像素是否可能是有效的以使得该一个或多个相邻像素可具有有效的、非零深度值。如果与空像素相邻的一个或多个像素可以是有效的,则可基于相邻像素的有效的、非零深度值来生成空像素的深度值。
[0068] 在一示例实施例中,目标识别、分析和跟踪系统还可跟踪具有最接近捕捉设备的深度值或最小的有效深度值以及离捕捉设备最远的深度值或最大的有效深度值的相邻像素,以生成空像素的深度值。例如,目标识别、分析和跟踪系统可标识具有最小的有效非零深度值和最大的有效非零深度值的相邻像素。目标识别、分析和跟踪系统然后可通过例如将相邻像素的最大的有效非零深度值减去最小的有效非零深度值来确定这些值之间的差。
[0069] 根据一个实施例,如果最接近捕捉设备的深度值与离捕捉设备最远的深度值之间的差可以大于阈值,则空像素可以分配到最接近捕捉设备的相邻像素的深度值或最小的有效深度值。如果最接近捕捉设备的深度值与离捕捉设备最远的深度值之间的差可以小于阈值,则可使用相邻的有效像素中的每一个的深度值来计算平均深度值。空像素然后可以分配到平均深度值。
[0070] 根据一个实施例,目标识别、分析和跟踪系统可标识其他空像素,并且如上所述地计算这些空像素的深度值直到每一个孔洞中的每一个空像素都可具有与其相关联的深度值。由此,在一示例实施例中,目标识别、分析和跟踪系统可基于具有与其相关联的有效深度值的相邻或邻近像素来内插每一个空像素的值。
[0071] 另外,在另一示例实施例中,目标识别、分析和跟踪系统可基于捕捉到的场景的前一帧的深度图像来计算第一深度图像中的一个或多个空像素的深度值。例如,目标识别、分析和跟踪系统可以在前一帧的深度图像中的对应像素具有有效深度值的情况下将这些深度值分配给该第一深度图像中的空像素。
[0072] 图8A-8D示出了为图7A和7B所示的第一深度图像400的一部分410中的空像素计算深度值的示例实施例。如图8A-8D所示,可使用具有有效深度值的相邻或邻近像素来计算像素420c、420d和420e的深度值DV1、DV2和DV3。例如,目标识别、分析和跟踪系统可将像素420c标识为空像素。当将像素420c标识为空像素时,目标识别、分析和跟踪系统可确定与像素420c相邻的像素420f和420g可以是有效的。目标识别、分析和跟踪系统然后可将与像素420f相关联的深度值15与同像素420g相关联的深度值4进行比较。如果这些深度值之间的差可以大于阈值,则可将最接近捕捉设备或具有最小深度值的相邻像素的深度值分配给像素420c。如果这些深度值之间的差可以小于阈值,则可使用像素420f和420g的深度值来计算平均深度值并将该平均深度值分配给像素420c。例如,如果阈值可以是小于11的值,则可将与像素420g相关联的深度值4分配给像素420c,如图8B所示。
[0073] 目标识别、分析和跟踪系统然后可将像素420d标识为下一空像素。当将像素420d标识为空像素时,目标识别、分析和跟踪系统可确定与像素420f相邻的像素420c和420h可以是有效的。目标识别、分析和跟踪系统然后可将与像素420c相关联的深度值4与同像素420h相关联的深度值5进行比较。如果这些深度值之间的差可以大于阈值,则可将最接近捕捉设备或具有最小深度值的相邻像素的深度值分配给像素420d。如果这些深度值之间的差可以小于阈值,则可使用像素420c和420h的深度值来计算平均深度值并将该平均深度值分配给像素420d。例如,如果阈值可包括大于1的值,则可以对分别与像素420c和420h相关联的值4和5求均值以生成深度值4.5。然后可将平均深度值4.5分配给像素
420d,如图8C所示。
[0074] 根据一示例实施例,目标识别、分析和跟踪系统可使用例如如图8C所示的像素420d、420i和420j来为像素420e重复该过程,以使得像素420e可以分配到计算出的深度值3.8(或420d、420i和420j的深度值的平均值),如图8D所示。由此,在一个实施例中,目标识别、分析和跟踪系统可重复该过程直到孔洞中的每一个像素都包括计算出的深度值。
[0075] 在一个实施例中,目标识别、分析和跟踪系统可确定是否在325计算空像素的深度值。例如,目标识别、分析和跟踪系统可以在确定第一深度图像包括噪声时生成噪声严重性值。该噪声严重性值可包括空像素或没有深度值的像素的数量除以第一深度图像中的像素总数的比值。例如,如果深度图像包括50个空像素或没有深度值的像素以及总共100个像素,则噪声严重性值可以是0.5或50%。
[0076] 在一示例实施例中,可使用噪声严重性值来限制孔洞中的对其计算深度值的空像素的数量,以使得可以为深度图像中的目标或对象减少渗色。例如,目标识别、分析和跟踪系统可包括成长值。该成长值可以指示可以为使用相邻或邻近像素来计算深度图像的孔洞中的空像素的深度值而执行的迭代的数量。根据一个实施例,成长值可以是存储在目标识别、分析和跟踪系统中的预定义值。例如,成长值可以具有预定义值32以使得来自孔洞的每一侧的可以与深度图像中的有效像素相邻的32个像素可具有为其计算的深度值。因此,如果深度图像包括可以是64×64像素方块的孔洞,则可以用计算出的深度值来填充来自该方块孔洞的顶部、底部和两侧的32个像素,以使得该64×64方块中的每一个空像素都可具有计算出的深度值。
[0077] 另外,在一示例实施例中,成长值可基于例如与捕捉到的深度图像相关联的像素区域的大小。例如,如果目标识别、分析和跟踪系统可捕捉到可具有100×100像素的2-D像素区域的深度图像,则目标识别、分析和跟踪系统可包括例如预定义成长值50,该成长值基于该深度图像具有从深度图像的顶部到中心的50个像素、从深度图像的底部到中心的50个像素,以及从深度图像的两侧到中心的50个像素。
[0078] 根据一个实施例,目标识别、分析和跟踪系统可使用噪声严重性值来调整成长值以限制孔洞中的对其计算深度值的空像素的数量,以使得可以为深度图像中的对象或目标减少渗色。例如,如果噪声严重性值可以是50%,则成长值可以减半。类似地,如果噪声严重性值可以是75%,则成长值可以减少四分之三。因此,根据一示例实施例,如果成长值可以是32,孔洞可以是64×64像素方块且噪声严重性值可以是50%,则可以将成长值调整为16以使得来自方块孔洞的顶部、底部和两侧的16个像素可具有为其计算的深度值。类似地,如果成长值可以是32,孔洞可以是64×64像素方块且噪声严重性值可以是75%,则可以将成长值调整为8以使得与方块孔洞的顶部、底部和两侧相邻的8个像素可具有为其计算的深度值。
[0079] 取决于孔洞大小和成长值,在一个实施例中,目标识别、分析和跟踪系统可以为孔洞中的一部分像素分配与深度图像的背景相关联的深度值。例如,如果成长值是8,则来自64×64像素方块的顶部、底部和两侧的8个像素可具有为其计算的深度值,如上所述。该
64×64方块孔洞中的其余像素然后可以分配到背景深度值。
[0080] 图9A-9C示出了可具有对可以计算其深度值的空像素的数量的限制的深度图像500的示例实施例。根据一示例实施例,深度图像500可以是由例如以上参考图2所描述的捕捉设备20的3-D相机26和/或RGB相机28所捕捉的场景的图像或帧。如图9A所示,深度图像500可包括围绕一个或多个目标或对象502的噪声506。如上所述,深度图像500可包括多个观测到的像素,其中每一观测到的像素具有与其相关联的观测到的深度值。例如,深度图像500可包括所捕捉的场景的二维(2-D)像素区域,其中2-D像素区域中的每一像素可表示深度值,诸如例如以厘米、毫米等为单位的、所捕捉的场景中的对象或目标距捕捉设备的长度或距离。如图9B所示,根据一示例实施例,深度图像500可具有总共400个像素,其中336个像素可以是空像素或没有深度值的像素。
[0081] 在一个实施例中,目标识别、分析和跟踪系统可生成深度图像500的噪声严重性值。例如,目标识别、分析和跟踪系统可基于总共400个像素和336个空像素来将336个空像素除以总共400个像素以生成噪声严重性值0.84或84%。
[0082] 根据一示例实施例,目标识别、分析和跟踪系统可使用所生成的深度图像500的噪声严重性值来调整成长值。例如,在一个实施例中,目标识别、分析和跟踪系统可包括深度图像的初始成长值10。当确定深度图像500包括噪声严重性值0.84或84%时,初始成长值可以减少0.84以产生经调整的成长值1.6。经调整的成长值1.6然后可以被舍入成最近的整数2。
[0083] 如上所述,然后可使用经调整的成长值2来限制使用相邻或邻近像素来计算其深度值的像素的数量。例如,如图9B所示,深度图像500可包括被空像素包围的有效像素的方块。目标识别、分析和跟踪系统可限制与该方块的每一侧相邻的可基于经调整的成长值2来计算其深度值的空像素的数量。例如,如上所述,成长值可以指示可以为计算孔洞中的可以与深度图像的有效像素相邻的空像素的深度值而执行的迭代的数量。如图8C所示,目标识别、分析和跟踪系统可基于经调整的成长值2来执行对空像素的深度值的计算的两次迭代,以使得可以计算该部分512中的空像素的深度值。部分512中的每一个都可包括在深度图像500中的有效深度值的每一侧的2个像素。根据一示例实施例,围绕部分512的其余空像素可以分配到背景深度值。
[0084] 回头参考图5,可以在330渲染第二深度图像。例如,在一个实施例中,目标识别、分析和跟踪系统可渲染第二深度图像。该第二深度图像可以是在305接收到的、用在325计算的深度值来填充噪声的第一深度图像。
[0085] 图10示出了可在330处渲染的第二深度图像430的示例实施例。如图10所示,第二深度图像430可以是图6所示的、用例如在325处计算的深度值来填充图6所示的噪声406的第一深度图像400。
[0086] 回头参考图5,可以在330处理第二深度图像。在一个实施例中,目标识别、分析和跟踪系统可以在330处理第二深度图像以使得可以生成捕捉到的场景中的人类目标的模型。根据一示例实施例,可以跟踪该模型、可以呈现与该模型相关联的化身、和/或可以控制在计算机环境上执行的一个或多个应用程序。
[0087] 例如,根据一示例实施例,可通过在330处理第二深度图像来生成诸如参考图1A和1B描述的用户18的诸如骨架模型、网格人类模型等模型。
[0088] 在一个实施例中,模型可由捕捉设备生成并提供给计算环境,例如以上参考图1A-4描述的计算环境12。该计算环境可包括可用于基于骨架模型中的各个身体部位的位置来确定要在应用程序内执行的控制的姿势库。
[0089] 然后可响应于对所跟踪的模型的改变来改变屏幕上人物的视觉外观。例如,可由此处描述的游戏控制台来跟踪诸如以上参考图1A和1B描述的在游戏控制台上玩电子游戏的用户18等用户。具体地,可使用诸如骨架模型等身体模型来对目标游戏玩家建模,并且可使用该身体模型来呈现屏幕上的玩家化身。当游戏玩家伸直一条手臂时,游戏控制台可跟踪该运动,然后响应于所跟踪的运动来相应地调整身体模型。游戏控制台还可将一个或多个约束施加到身体模型的移动。在作出此类调整并施加此类约束之后,游戏控制台可显示经调整的玩家化身。
[0090] 在一个实施例中,目标识别、分析和跟踪系统可能无法在330处理第二深度图像。例如,深度图像可能噪声过多或包括太多空像素以使得无法处理该深度图像。根据一个实施例,如果深度值可能噪声过多,则目标识别、分析和跟踪系统可生成错误消息,该错误消息可被提供给诸如以上参考图1A和1B描述的用户18等用户以指示可能需要捕捉另一场景。
[0091] 应该理解,此处所述的配置和/或方法在本质上是示例性的,且这些具体实施例或示例不被认为是限制性的。此处所述的具体例程或方法可表示任何数量的处理策略中的一个或更多个。由此,所示出的各个动作可以按所示顺序执行、按其他顺序执行、并行地执行等等。同样,可以改变上述过程的次序。
[0092] 另外,本发明的主题包括各种过程、系统和配置的组合和子组合、和此处所公开的其他特征、功能、动作、和/或特性、以及其任何和全部等效物。