控制虚拟环境中的对象的制作方法

文档序号:6495488阅读:224来源:国知局
控制虚拟环境中的对象的制作方法
【专利摘要】本发明提供了用于控制虚拟环境中对象的方法、系统和其上包含的计算机可使用指令的计算机存储介质。真实世界对象可以被接收到虚拟环境中。真实世界对象可以是任何非人类对象。对象骨架可以被标识并被映射到对象。真实世界用户的用户骨架也可被标识并被映射到对象骨架。通过把用户骨架映射到对象骨架,用户的运动控制虚拟环境中的对象的运动。
【专利说明】控制虚拟环境中的对象
[0001]背景
[0002]近年来虚拟环境已经取得显著进步。伴随这些进步而来的是来自用户的增加与虚 拟环境交互的日益增加的需求。使用基于网络摄像头的头部跟踪来实时控制预定模型当前 在某些视频聊天应用中是可用的,并且允许用户通过跟踪用户头部的位置以及使用用户语 音来控制化身的嘴部来控制虚拟化身的头部。然而,在此情况下,化身是预定的,跟踪限于 头部,并且用户头部定向和化身头部定向之间的简单一对一映射被使用。目前不存在允许 用户完全控制已从真实世界接收并被数字化成虚拟对象的对象的模型。换言之,不是预定 的对象。此外,利用用户的骨架跟踪信息来控制使用用户身体的整个虚拟对象(例如,肢体、 头部等)是不可用的。
[0003]概述
[0004]提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助 确定所要求保护的主题的范围。
[0005]本发明的实施例涉及用于控制虚拟环境中的对象的系统、方法以及计算机存储介 质等。如以下将详细描述的,真实世界对象可以被数字化并且被例如游戏系统接收。在一 个实施例中,真实世界对象是非人类对象,诸如无生命的对象(例如,椅子、球、喂饱的动物 等)、宠物(例如,猫)等等。一旦经数字化的对象被接收,就可以执行对象和人类用户的各种 骨架映射以使得对象被用户控制。换言之,用户的运动可以控制对象在虚拟环境中的运动。
[0006]附图简述
[0007]下面参考附图详细描述本发明,其中:
[0008]图1是适用于实现本发明的实施例的示例性计算环境的框图;
[0009]图2是示出根据本发明的一个实施例的用于控制虚拟环境中的对象的环境的框 图;
[0010]图3是根据本发明的一个实施例的用户展示供数字化的对象的图示;
[0011]图4是根据本发明的一个实施例的用于数字化对象的工作流程的图示;
[0012]图5A和5B是根据本发明的一个实施例的用户展示供数字化的对象的相机视图视 角的图示;
[0013]图6是根据本发明的一个实施例的可用于数字化对象的经分割深度图像的图示;
[0014]图7是根据本发明的一个实施例的深度与色彩的偏移的图示;
[0015]图8是根据本发明的一个实施例的可用于数字化对象的源色彩图像的图示;
[0016]图9是根据本发明的一个实施例的所捕获的对象的色彩分割的图示;
[0017]图10和11是根据本发明的一个实施例的给出保持要被数字化的对象的指导的用 户界面(UIs)的图示;
[0018]图12是根据本发明的一个实施例的对象的三维(3D)点云构造的图示;
[0019]图13是根据本发明的一个实施例的经对准点的切片(point sheets)的两个视图 的图示;[0020]图14是根据本发明的一个实施例的最终的点云构造的图示;
[0021]图15是根据本发明的一个实施例的显示向用户显示的经数字化对象的确认图像 的n的图示;
[0022]图16是根据本发明的一个实施例的所捕获的图像的网格输出的图示;
[0023]图17是根据本发明的一个实施例的经平滑和处理的对象的图像的图示;
[0024]图18是根据本发明的一实施例的具有UV坐标的图像的图示;
[0025]图19是根据本发明的一个实施例的绘制在最终纹理图的一部分中的面朝前的三 角边缘的图示;
[0026]图20A-20E是示出根据本发明的一个实施例的向所生成的骨架结构的不同骨骼 添加的权重的图示;
[0027]图21A和21B是根据本发明的一个实施例的在亮度/色度处理之前和之后的图像 的图示;
[0028]图22A和22B是根据本发明的一个实施例的边缘被滤波之后的源图像和输出图像 的图示;
[0029]图23A和23B是根据本发明的一个实施例的在其中边缘修复滤波器找到背景颜色 和目标颜色的图像的图不;
[0030]图24A和24B是示出根据本发明的一个实施例的从边缘到争议区域的距离以及计 算的背景似然值的图像的图示;
[0031]图25是根据一个实施例的最终合成纹理图的图示;
[0032]图26A和26B是根据本发明的一个实施例的掩码值和重度模糊的顶点色彩的图 示;
[0033]图27A和27B是根据本发明的一个实施例的仅具有纹理和具有混合了掩码值的顶 点色彩的纹理的不同网格的图示;
[0034]图28是根据本发明的一个实施例的经数字化对象的最终渲染的图示;
[0035]图29是示出根据本发明的一个实施例的用于控制虚拟环境中的对象的方法的流 程图;以及
[0036]图30是示出根据本发明的一个实施例的用于控制虚拟环境中的对象的方法的流 程图。
[0037]详细描述
[0038]此处用细节来描述本发明的主题以满足法定要求。然而,该描述本身并非旨在限 制本专利的范围。相反,发明人已设想所要求保护的主题还可结合其它当前或未来技术以 其它方式来实施,以包括不同的步骤或类似于本文中所描述的步骤的步骤组合。此外,尽管 术语“步骤”和/或“框”可在此处用于指示所采用的方法的不同元素,但除非而且仅当明 确描述了各个步骤的顺序时,该术语不应被解释为意味着此处公开的各个步骤之中或之间 的任何特定顺序。
[0039]本发明的实施例针对用于控制虚拟环境中的对象的系统、方法以及计算机存储介 质等。如以下将详细描述的,真实世界对象可以被数字化并且被例如游戏系统接收。在一 个实施例中,真实世界对象是非人类对象,诸如无生命的对象(例如,椅子、球、喂饱的动物 等)、宠物(例如,猫)等等。一旦经数字化对象被接收,就可以执行对象和用户的各种骨架映射以使得对象被用户控制。换言之,用户的运动可以控制对象在虚拟环境中的运动。
[0040]因此,本发明的一个实施例针对存储计算机可使用指令的一个或多个计算机存储 介质,当这些指令被一个或多个计算设备使用时使该计算设备执行用于控制虚拟环境中的 对象的方法。该方法包括标识虚拟环境中的对象。该对象可以是任何非人类对象。对象骨 架被映射到对象。对象骨架可以是预先定义的模板,并且对象和/或对象骨架可以被调整 以相互适合。用户骨架被接收并且被映射到对象骨架。用户骨架是用户的骨架的图像。一 旦用户骨架被映射到对象骨架,对象就被用户控制。具体而言,用户的运动控制虚拟环境中 的对象的运动。
[0041]本发明的另一实施例针对包括处理器和存储器的、用于控制虚拟环境中的对象的 系统。该系统包括与一个或多个处理器及一个或多个计算机可读存储介质相关联的计算设 备、与该计算设备耦合的数据存储、以及控制引擎,该控制引擎标识包括用户骨架和对象骨 架的一个或多个骨架,把用户骨架映射到对象骨架,以及管理对象骨架从而使对象被操作 以镜像用户骨架的运动。
[0042]而本发明的又一个实施例针对存储计算机可使用指令的一个或多个计算机存储 介质,当这些指令被一个或多个计算设备使用时使该计算设备执行用于控制虚拟环境中的 对象的方法。该方法包括标识虚拟环境中的对象。该对象是已经被数字化成虚拟环境中的 虚拟形式的真实世界对象。通过标识对象的质心并且把对象骨架的中心施加在对象的质心 上,对象骨架被映射到对象。对象被重调尺寸以与对象骨架的尺寸对应,从而使对象骨架的 底部与对象的底部对准。用户骨架随后被接收并被映射到对象骨架,从而使对象骨架的一 个或多个关节角度镜像用户骨架的一个或多个关节角度。用户的运动被标识,并且响应于 标识出用户的运动而运动对象,从而使对象的运动镜像用户的运动。
[0043]在简要描述了本发明各实施方式的概览之后,以下描述其中可实现本发明的各实 施方式的示例性操作环境,以便为本发明各方面提供通用上下文。首先具体参考图1,示出 了用于实现本发明的各实施方式的示例性操作环境,并将其概括地指定为计算设备100。计 算设备100只是合适的计算环境的一个示例,并且不旨在对本发明的使用范围或功能提出 任何限制。也不应该将计算设备100解释为对所示出的任一组件或其组合有任何依赖性或 要求。
[0044]本发明可以在由计算机或诸如个人数据助理或其他手持式设备之类的其他机器 执行的计算机代码或机器可使用指令(包括诸如程序模块之类的计算机可执行指令)的一 般上下文中描述。一般而言,包括例程、程序、对象、组件、数据结构等的程序模块指的是执 行特定任务或实现特定抽象数据类型的代码。本发明可以在各种系统配置中实施,这些系 统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。本发明也可以在 其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。
[0045]参考图1,计算设备100包括直接或间接耦合以下设备的总线110:存储器112、一 个或多个处理器114、一个或多个展示组件116、输入/输出(I/O)端口 118、输入/输出组 件120、和说明性电源122。总线110表示一条或多条总线可以为何物(诸如地址总线、数据 总线、或其组合)。虽然为了清楚起见利用线条示出了图1的各框,但是实际上,各组件的轮 廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,可以将 诸如显示设备等展示组件认为是I/O组件。而且,处理器具有存储器。发明人认识到这是本领域的特性,并重申,图1的图示只是例示可以结合本发明的一个或多个实施方式来使 用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之 间没有区别,它们全部都被认为是在图1的范围之内的并且被称为“计算设备”。
[0046]计算设备100通常包括各种计算机可读介质。计算机可读介质可以是可由计算设 备100访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作 为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包 括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法和 技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于, RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储、磁 带盒、磁带、磁盘存储或其他磁存储设备、或能用于存储所需信息且可以由计算设备100访 问的任何其他介质。通信介质通常以诸如载波或其他传输机制之类的已调制数据信号来体 现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传送介质。术语“已 调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信 号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸 如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读 介质的范围内。
[0047]存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可 以是可移动的,不可移动的,或两者的组合。示例性硬件设备包括固态存储器、硬盘驱动器、 光盘驱动器等。计算设备100包括从诸如存储器112或I/O组件120等各种实体读取数据 的一个或多个处理器。展示组件116向用户或其他设备展示数据指示。示例性展示组件包 括显示设备、扬声器、打印组件、振动组件等等。
[0048]I/O端口 118允许计算设备100逻辑上耦合至包括I/O组件120的其他设备,其 中某些设备可以是内置的。说明性组件包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描 仪、打印机、无线设备等等。
[0049]如先前指出的,本发明的实施例针对控制虚拟环境中的对象。现在转到图2,提供 了示出可以采用本发明的实施例的示例性计算系统200的框图。应当理解,此处所描述的 这一和其他安排仅作为示例来阐明。附加于或替代于所示的安排和元素,可使用其他安排 和元素(例如机器、接口、功能、次序、以及功能聚集等),并且可完全省略某些元素。此外,本 文所描述的许多元素是可以实现为分立或分布式组件或结合其他组件的,以及以任何合适 的组合和在任何合适的位置的功能实体。此处被描述为由一个或多个实体执行的各种功能 可由硬件、固件和/或软件来执行。例如,各种功能可由执行存储在存储器中的指令的处理 器来执行。
[0050]计算系统200 —般包括网络210、数据存储220和控制引擎230,以及其他未示出 组件。控制引擎230可以采取用于执行下述功能的专用设备的形式,可以被集成到例如网 络访问设备、游戏系统等或其任意组合中。计算系统200的组件可以经由网络210彼此通 信,网络210可包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。此类联网环境 在办公室、企业范围的计算机网络、内联网和因特网中是常见的。应理解,可在本发明的各 实施例的范围内的计算系统200内采用任意数量的计算设备和控制引擎。其每个都可以包 括单个设备/接口或在分布式环境中协作的多个设备/接口。例如,控制引擎230可以包括安排在分布式环境中的多个设备和/或模块,所述多个设备和/或模块共同提供在此所 述的控制引擎230的功能。另外,在计算系统200内还可以包括未示出的其他组件/模块。
[0051]在某些实施例中,所示组件/模块中的一个或多个可以被实现为独立的应用。在 其他实施例中,所示组件/模块中的一个或多个可以通过控制引擎230被实现为基于因特 网的服务或者游戏系统内的模块。本领域的普通技术人员可以理解,图2所示的组件/模 块在本质和数量上是示例性的,并且不应被解释为限制。可采用任何数量的组件/模块来 实现此处的实施例的范围内的期望功能。此外,组件/模块可位于任何数量的服务器或客 户计算设备上。仅仅作为示例,控制引擎230可驻留在远离其余组件中的一个或多个的游 戏系统、服务器、服务器群集或计算设备上。
[0052]应当理解,此处所描述的这一和其他安排仅作为示例来阐明。附加于或替代于所 示的安排和元素,可使用其他安排和元素(例如机器、接口、功能、次序、以及功能聚集等), 并且可完全省略某些元素。此外,此处所描述的许多元素是可被实现为分立或分布式组件 或可结合其他组件/模块并且以任何合适的组合和位置来实现的功能实体。此处被描述为 由一个或多个实体执行的各种功能可由硬件、固件和/或软件来执行。例如,各种功能可由 执行存储在存储器中的指令的处理器来执行。
[0053]一般而言,系统200示出其中虚拟环境中的对象被真实世界用户控制的环境。如 下文将更加详述的,本发明的实施例提供接收经数字化的对象并将骨架映射到对象。本发 明的附加实施例提供将用户骨架映射到对象,从而使用户控制虚拟环境中的对象。
[0054]控制引擎230被配置成管理虚拟环境中的对象从而使这些对象可以被用户控制。 虚拟环境中的对象可以是任何非人类的对象,诸如宠物、吃饱了的动物、椅子等。控制引擎 230包括接收组件231、标识组件232、映射组件233以及显示组件234。
[0055]每个组件被配置成使控制引擎230能促成用户控制虚拟环境中的对象。
[0056]接收组件231可以被配置成接收已经被数字化的对象等。在一个实施例中,对象 是真实世界对象。在实施例中,对象是任何非人类的真实世界对象。数字化,如在此所使 用的,一般指标识提供到系统200的真实世界对象并把真实世界对象处理成虚拟对象的过 程。
[0057]图3是根据一个实施例的供用户304创建对象306的数字表示的环境300的图 示。具体而言,环境300示出用户304将对象306 (示为章鱼塑像)展示给计算设备302,计 算设备302装备有两个相机:彩色相机308和深度相机310。在环境300中,计算设备302 是游戏控制台,诸如由软公ri] 创建的微软Kinect?。计算设备302上的相机捕捉包括 对象306的一个或多个图像。彩色相机308捕捉图像的色彩数据,而深度相机310捕捉深 度数据。在替换实施例中,计算设备302可以仅具有一个相机,该相机同时捕捉色彩和深度 数据。
[0058]尽管未示出,用户304可以向计算设备展示对象306的背面以捕捉该背面的图像, 该背面的图像可以与正面图像组合并被用来产生对象306的3D呈现。为了生成更加完整 的3D数字化,还可以捕捉目标的其他视图的附加图像。
[0059]图4是根据一个实施例的用于数字化对象的工作流程400的图示。最初,用户将 对象展示给计算设备上的相机以拍摄图像,如在402所示。在一些实施例中,计算设备可 以指令用户将对象运动到特定区域中以便捕捉图像的最优图像一例如,在显示屏上提供轮廓、示出用户和对象的实时图像,并随后指令用户将对象运动到该轮廓中。一旦拍摄了初始 图像,计算设备可以指令该用户展示对象的背面以进行捕捉,如在404所示。可以由计算设 备同样提供捕获背侧的指导。对于捕捉到的每张图像,存储色彩数据和深度数据并使用其 来数字化正被展示的对象。而且,可以捕捉针对对象的正面和背面视角的多张图像。例如, 计算设备可以被配置成拍摄10张正面图像和10张背面图像,并且可将正面的10张图像合 并在一起并将背面的10张图像合并在一起一或使用所有20张图像来数字化图像。虽然10 张图像已经被示出是数字化对象的理想数量的图像,但其它实施例可以使用不同数量的捕 捉到图像。
[0060]一旦由相机捕捉到了对象的正面图像和背面图像,一个实施例开始通过一使用这 些图像的深度数据一搜索以查找图像中与相机最接近点来数字化所述对象,如在406中所 示。用户可能正保持着该用户前面的要数字化的对象,于是该对象应该比任何其它事物更 接近相机。转回到图3,可以注意到用户304正保持着他前面的对象306,因此该对象更靠 近计算设备302。可以使用与该图像相关联的深度数据来实现定位图像中的最接近对象,并 且一些实施例对正面图像和背面图像两者都执行该过程以标识这两者中的最接近对象。
[0061]如在408处所示,随后搜索在图像中标识出的最接近对象以查找标识这些对象的 结束之处的边缘。深度数据再次被用来定位图像中的各对象的边缘。边缘搜索可以从最接 近的点向外开始,查找点深度的剧烈差异。例如,图3中的章鱼的边缘可以具有比表示用户 304的肩膀的邻近点近差不多半米的一个点。这种剧烈差异表示该邻近点并不是对象的一 部分并因此不应该被包括在进一步的数字化步骤中的可读信号。通过这种方式定位对象的 所有边缘允许计算设备标识出图像中的该对象。
[0062]一旦确定了对象,一个实施例关闭与图像的剩余部分(即图像的没有被标识为对 象的部分)相关联的色彩数据。在一些实施例中,可能必需捕捉多张图像(例如对象正面的 10张图像和对象背面的10张图像),所以可能需要平滑技术来混合各帧之间的所找到的边 缘,如在410所示。例如,对象在帧I和帧4之间可能已经运动了,所以平滑各帧之间的边 缘是取得对象的准确表示所必需的。另外,在深度到色彩的配准(registration)中的噪声、 低分辨率和瑕疵也可能使对边缘的附加平滑和/或滤波成为必要。
[0063]在一个实施例中,所得的经平滑和/或滤波的对象被展示给用户进行确认,如在 412所示。用户随后可以接受或拒绝所得的对象。如果接受,附加处理可接着行进到数字化 所述对象。如果拒绝,实施例可以要求用户通过拍摄对象的新图片来重新开始该过程或仅 仅重新平滑或重新滤波该对象。
[0064]最终,正面图像和背面图像被用来以3D生成对象的点云构造。图12中详细示出 的“点云构造”是对象的正面图像和/或背面图像到3D空间的映射,其中标识出了该对象 的每一点或像素的深度。点云构造被用在对象的进一步数字化中。
[0065]图5-图27示出数字化过程中的各步骤的图像,并且将在下面被更加详细地讨论 以说明被不同实施例使用的处理。具体而言,图5A和图5B是根据一个实施例的用户展示 供数字化的对象的相机视图视角的图示。在所示的实施例中,对象的两个视图被捕捉。令 彩色相机放大该帧的中央以获得围绕目标对象的640x480的彩色窗口,并且随后将该彩色 窗口的四角转换成深度帧坐标(假设这四个角位于目标对象的前面)。随后从该深度帧中抓 取匹配的160x120的窗口。如果没有这种按帧的窗口调整(取决于目标对象到相机的距离),深度和彩色窗口可能不会尽可能的完全重叠。而且,原始色彩和深度被捕捉,而无需不执行 深度到色彩或色彩到深度的配准。分辨率数字和窗口仅出于说明的目的被提供,因为可以 替换地使用各种其它的分辨率。
[0066]在一个实施例中,深度图像被分割成目标对象。为了这么做,搜索并找到与相机的 最接近的深度像素,假设这样的点在目标对象上。随后,该实施例从所找到的最接近点开始 向外泛色填充,直到达到深度边缘(即深度离对象的正面太远或我们不具有深度数据)。另 夕卜,可以移除围绕高斜率区域并具有太少的邻居的点。结果是在目标对象上的深度像素蒙 板(在此被称为“经分割的深度图像”),如图6所示。经分割的深度图像被存储在环形深度 帧缓冲区(装有为10的环形缓冲区大小的BAB/G0E)内,从而盖写最早期的深度帧并将所有 帧一起取平均以获得最终的深度图像。在一个实施例中,仅经分割的深度像素对最终平均 做出贡献。结果,噪声被平滑,导致更加稳定的对象边缘,并改善了在其中由于噪声或弱IR 反射材料引起的对象的部分在分割内外闪烁的场景。
[0067]图7是根据一个实施例的深度与色彩的偏移的图示。如图所示,一个实施例构建 了深度与色彩的偏移表,具有表示绿点的绿色(在右上角中示出)、红色(在左下角中示出) 以及这两种色彩之间的混合。每个像素的深度和色彩空间坐标之间的偏移被存储在表格中 以供在彩色分割和网格处理期间快速查找,并且有助于仅使用这两张捕捉到的色彩图像完 美地再现输出网格,而不管特定相机的校准设置。通过向外复制分割的边缘处的偏移,可以 填充该表格的在对象分割外面的那些区域。所复制的边缘处偏移可以随后被用来处理当输 出网格中被投射到深度图像中的各顶点落在深度分割的边界之外时的情况。
[0068]图8是源色彩图像的图示,而图9是根据一个实施例的捕捉到的对象的色彩分割 的图示。从深度空间中的分割开始,一个实施例使用星形的派斑图案(star-like splat pattern)将每个经分割的深度像素溅射到320x240的色彩分割缓冲区中。随后所得的图 案可被“上采样”到640x480,并且,随后为每个经分割的彩色像素计算“离理想的距离”值, 该值描述了源深度像素离“理想”距离有多远。理想距离表示用户应该将目标对象保持得 离相机有多近,以便获得尽可能多的色彩/深度数据一而无需与深度相机的前剪辑平面相 交。这些值在捕获过程期间可以被作为反馈展示给用户。与离理想较近的像素相比,距离 理想较远的像素可以被更加重度地模糊化和着色。离理想的距离的值最终被复制到色彩图 像的被用于进行实时预览的阿尔法通道中。
[0069]图10和11是根据一个实施例的给出保持要被数字化的对象的指导的用户界面 (UIs)图示。图10示出了所示的实施例分析经分割的像素的数目、到相机的距离、离开相机 视图中心的距离、像素稳定性以及对象尺寸,并向用户给出如何最佳地安置对象的视觉和 文本反馈。该反馈可以是屏幕上的轮廓的形式。图11示出使用如上述相同的过程的目标 对象的背面的图像的色彩和深度数据。一个实施例使用经分割的正面捕捉物的轮廓来指导 用户正确地定向对象。用户不需要精确匹配轮廓,因为正面捕捉物和背面捕捉物稍后可以 被自动对准。
[0070]图12示出根据一个实施例的点云构造。此时,两张色彩和深度数据图像已经针对 目标对象被分割。使用这些图像,目标对象的表面上的各点的点云构造可被构建,并且稍后 被用于重新构建三角网格。正面深度图像中的各经分割像素被转换成3D点的“切片”。在 一个实施例中,未使用深度数据和作为该切片的背面中心的原点将各位置从深度图像空间投射到模型空间。通过添加附加的点以形成对象的各侧来将该切片的边缘向后挤压。为了猜测对象在BAB/GOE中有多“深”,使用固定的挤压距离值。
[0071]类似地,来自背面深度图像的3D点的切片被创建,从而将正面捕获图的背面中心用作原点。图13示出了根据一个实施例的经对准点的切片的两个视图。为了对准这些切片,计算初始转换以围绕向上的轴将该切片旋转180度,以便其形成点云的背面。在一个实施例中,计算另一个转换,该另一个转换使正面切片和背面切片的边缘尽可能靠近地对准。该对准过程可以转换背面切片以使背面切片的质心与正面切片的质心匹配。随后在转换和旋转范围上使用强力迭代以最小化“对准误差”值,该值被计算成从每个正面边缘点到其最接近的背面边缘点的距离的和。该迭代可以在多个通道(multiple passes)中进行(其中,每个通道尝试一次一个地计算每个转变和旋转轴的最佳值),并且为了效率使用两层分层方式来完成跨每个轴的搜索。使用3D单元格空间分隔来加速最接近点查找。一个实施例也实现了一种用于快速细粒度(fine-grained)对准的迭代最接近点(“ICP”)算法,或者替换地,对于更好控制的需求可以指示仅使用强力方法迭代。
[0072]来自正面切片的、在背面切片中不具有对应点的点可以被挑选出以从每个正面点向后搜索,以查找最接近的背面点。类似地,可以挑选出来自背面切片的、在正面切片中不具有对应点的点。这移除了正面和背面捕捉物中不一致的切片部分,如在用户的手处于捕捉物中但在各捕捉物之间改变了位置的情况下,或者在对象在正面和背面捕捉物之间改变了形状的情况下会发生的。
[0073]在一个实施例中,将剩余的点合并在一起而成为最终点云,并且使用由每个点和其右下的邻居形成的平面来计算这些点的法线(normal)。图14示出根据一个实施例的最终点云构造。
[0074]确认图像随后可被展示给用户,如图15所示。确认图像合并了切片对准和点挑选的结果,从而允许用户检测出捕获、对准或挑选严重失败的情况,并进行重新捕捉而无须经历构造过程的剩余部分。所述图像通过以下方式来创建:将最终点云中的各点投射并溅射在正面和背面色彩图像的阿尔法通道中、基于对准转换来旋转背面图像、以及进行某个附加图像清除。
[0075]表面重新构造步骤采用最终点云并生成三角网格。图16示出有表面重新构造的网格输出的图示。这在存储器和时间两方面都可能是数字化的计算最密集的部分,在某些实施例中,对于大约20,000个点的典型点云数据来说花费10-20秒。在重新构造期间可以限制空洞填充的数量以保持存储器使用受到控制,但是如果在点云中存在大量的空洞,这样的限制可以导致非水密的网格。
[0076]图17是根据一个实施例的对象的经平滑和处理的图像的图示。构建顶点邻接列表,并且计算面和顶点法线。随后,一个实施例使用拉普拉斯算法来平滑某些约束。结果,对象的各侧被圆整,噪声被移除,并且在其中各点的切片没有完美对齐的区域被清理。
[0077]取决于点云的质量,表面重新构造可以创建小的几何“岛”,而不是单个大网格。一个实施例使用连通区域标记来查找岛、计算它们的体积并移除明显小于最大岛的那些岛。
[0078]对于每个顶点,一个实施例评判在该顶点的法线和正面及背面捕捉视图方向之间的点积。正面视图方向可以沿着模型空间的负Z轴,而背面视图方向可以取决于切片对准处理的结果并且不沿着正Z轴。结果,一些顶点对于正面和背面捕捉视图两者都是可见的,而一些顶点对于这两个视图都不可见。如果一些顶点的法线面向正面而非背面,则它们可以被归类为“正面”,反之亦然。这也允许定位“接缝”顶点(即横跨对象的正面和背面视图的顶点)。
[0079]为了创建纹理图并应用到最终网格,一个实施例将来自所述正面捕捉物的色彩图像放置在纹理的顶部,而将来自所述背面捕捉物的色彩图像放置在正面捕捉物正下方。来自纹理的顶部部分的纹理像素(Texel)随后被映射到基本上面向正面的三角形上,并且对于基本上面向背面的三角形来说反之亦然。各顶点最初可以在正好沿着正面-背面接缝的正面和背面三角形之间共享,并且随后复制这些共享顶点以便将纹理的不同部分映射到正面相对背面的三角形。
[0080]图18示出了具有UV坐标的图像的图示,而图19示出根据一个实施例的绘制在最终纹理图的一部分中的面向正面的三角形边缘的图示。为了计算UV坐标,面向正面的三角形被映射到纹理的顶部部分,在该部分中放置有正面捕捉色彩图像,并且对于底部来说也是一样的。顶点位置在深度相机的空间中,而色彩图像位于彩色相机的空间中,所以在将各顶点投射到正面/背面深度图像上之后,一个实施例使用深度与色彩的偏移表来将坐标转换到彩色相机空间。
[0081]在一个实施例中,网格被重新居中、被围绕向上的轴镜像映射,并且被缩放以增强最大宽/高比。与实际的物理对象相比,所捕捉的色彩和深度图像被镜像映射,因此另一个镜像映射被用于反转这个。对于较高而不是较宽的对象,可以优化骨架并且加入动画,这样宽/高比限制对因动画化与某个骨架不匹配的宽对象而引起的伪像设置了一个限制范围。
[0082]在一个实施例中,单个骨架被用于对象的所有动画。该骨架可以具有给出良好运动范围(走路、跳跃、爬行、跳舞、向左和向右看等)的骨豁,而无需目标对象具有更多形状。
[0083]为了将皮肤应用到经数字化图像,该网格被重新缩放并被定位成使骨架适合于其内部,其中顶部骨骼被定位在距对象的顶部(将其粗略地放置在对象的”头”内)某个百分比(例如大约90%),而底部骨头被定位在对象的底部范围。通过查找沿着向上轴的与每个顶点最接近的骨骼并使用衰减曲线来对它们进行加权,可以计算骨骼索引以及向骨架添加的权重。图20A-图20E是示出根据一个实施例的向所生成的骨架结构的不同骨骼添加的权重的图示。下文将详细讨论应用骨架到对象。
[0084]处理色彩和/或深度图像以减少噪声并改善质量。在一个实施例中,独自地对正面和背面图像进行处理,并且将结果合并到最终纹理图中,这可能需要附加处理。依照来自艺术家的某些实验和反馈,下述步骤被发现是最优的:将sRGB色彩转换到线性空间,应用“灰度世界”自动白平衡,修复边缘伪像,计算亮度和色度值,应用双向滤波、直方图均衡以及对亮度锐化,对色度应用中值滤波,转换回sRGB,以及最后将各色彩的边缘向外延伸到图像的去分割区域中。在不同的实施例中,可以加入其它步骤,或者删除上述某些步骤。
[0085]图21A和21B是根据一个实施例的示出在亮度/色度处理之前和之后的图像。独立地处理亮度/色度允许更加强力地滤波色度同时保留亮度图像中的细节,这对去除图像噪声是有利的。可以轻度应用直方图均衡以补偿曝光欠佳的图像。
[0086]图22k和22B是根据一个实施例的示出边缘被滤波掉之后的源图像和输出图像。在一个实施例中,“边缘修复滤波器”试图替换掉目标对象边缘处的、实际来自背景而非对象自身的那些色彩。坏彩色可能由于深度图像的相对低的分辨率和高噪声以及有缺陷的深度到彩色配准而混入。边缘修复滤波器对直接围绕对象边缘的各像素的“争议区域”操作。假设争议区域内部的像素肯定是目标对象的部分,而更外面的像素是背景部分,则计算每个争议区域像素的“背景似然”值,并将其用于混合接近内部色彩的高似然度背景像素。
[0087]图23A和图23B是根据一个实施例的示出在其中边缘修复滤波器找到背景颜色和目标颜色的图像。从外面将目标色彩外插进争议区域中。
[0088]图24A和图24B是示出根据一个实施例的从边缘到争议区域的距离以及计算的背景似然值的图像。而且,图25示出根据一个实施例的具有在非最终图像的塔(tope)上面的纹理的图像的最终合成纹理图。
[0089]把正面和背面图像放置在一起而引起的接缝可能需要被修复。最后一点网格处理被用来改善在正面-背面接缝附近的以及在捕获期间对彩色相机不可见的区域中的对象的外观。首先,计算每个顶点的掩码值,该值表示了纹理色彩在该顶点处将有多“坏”。该值是到接缝(其中正面和背面图像接触但通常没有很好的对齐)的距离以及对于捕捉到的图像中的任何一个而言某顶点有多么面向背面(其中纹理色彩由于表面不再面对相机视野并且还不再面对不足的纹理像素密度而分解了)的乘积。这些值可以被存储在顶点色彩阿尔法通道中。接着,表面色彩的经模糊版本被计算并被存储到顶点色彩RGB通道。这些色彩在质量上是相当好的(虽然是低细节)。需要修复的负面伪像被相对地定位,且具有较高的频率,然而所述模糊给出了更加全局、低频率的色彩。图26A和图26B是根据一个实施例的掩码值和重度模糊的顶点色彩。在一个实施例中,在运行时掩码值被用于在源纹理和被模糊的顶点色彩之间混合。图27A和图27B是根据一个实施例的仅具有纹理(27A)和具有依据掩码值混合的顶点色彩的纹理(27B)的不同网格。
[0090]图28是根据一个实施例的经数字化对象的最终渲染。在一个实施例中,一旦最终网格和纹理完成,虚幻引擎3被创建,并用环境以及边缘照明、自阴影和动画来渲染。GOE应用还允许用户通过将Nui骨架映射到骨架上来具体化(avateer)对象。
[0091]回到图2,接收组件231可以被进一步配置成接收用户骨架信息。如在此所使用的,用户骨架信息一般指标识用户的骨架的数据。具体而言,关节角度、关节位置等被包括在用户骨架信息中。在一个实施例中,接收组件231可以采用相机的形式,该相机被配置成接收对象和用户骨架信息。在一附加实施例中,相机是游戏系统的相机。
[0092]标识组件232可以被配置成标识虚拟环境中的对象(例如,已被接收组件231接收到的经数字化对象)、用户骨架、对象骨架等。如在此所使用的,对象骨架一般指要施加在虚拟环境中的对象上的骨架。在一个实施例中,单个系统定义的模板对象骨架被用来控制虚拟环境中的对象。在替换实施例中,多个系统定义的模板对象可用于施加在虚拟环境中的对象上。在附加的实施例中,可以基于用户的运动演示实时地创建对象骨架,如下文中更加详细描述的。
[0093]最初,一旦对象被系统200接收,标识组件232就可以标识对象骨架以与对象关联。假设单个系统定义的模板对象骨架可用来与对象关联,标识组件232可以标识单个系统定义的模板对象骨架以与对象关联。
[0094]或者,如果多个对象骨架可用,则标识组件232可以标识对象的一个或多个特性。对象的一个或多个特性包括但不限于对象的肢体数目、对象的形状、对象的尺寸(例如,长度、宽度等)等等。一个或多个特性可随后被标识组件232用来标识多个对象骨架中与对象的一个或多个特性对应的一个或多个对象骨架。例如,如果对象被标识为具有两个肢体,则与具有四个肢体的对象骨架相比,具有两个肢体的对象骨架是对象的更好的匹配。
[0095]在附加的实施例中,可以基于用户的自由度实时地创建对象骨架。例如,用户可以通过使用其肢体向标识组件232演示运动。通过演示运动中的自由度(即,关节),可以基于用户的关节信息实时地创建对象骨架。
[0096]标识组件232还可以被配置成标识用户的用户骨架。在实施例中,用户是人类用户。例如可以使用骨架跟踪技术来标识用户骨架,该骨架跟踪技术被集成到例如游戏系统,诸如微软公司?创建的微软Kinect?系统。标识组件232可以标识系统200的图像中的用户。通过标识图像的每个像素以及每个像素距标识组件232的距离,该图像中的用户可以被标识出。例如,用户的每个像素距该标识组件232大致相等的距离,但是与用户相比,用户后面的灯距该标识组件232将是不同的距离。此外,用户的形状可以被用来标识图像中的用户。通过使用这些技术,用户可以随后从背景被分离出。
[0097]—旦图像中的用户被标识出(B卩,从背景分离出),就可以标识用户的用户骨架。用户骨架可以通过标识用户的姿势来标识出。如在此所使用的,用户的姿势一般指捕捉用户的图像时用户的位置。在用户的姿势中,包括但不限于姿势的关节角度、姿势的关节位置等的用户骨架信息被标识。用户的姿势以及在其中的用户骨架信息可以同可从例如数据存储220获取的一个或多个模板姿势比较。该比较可以把用户姿势的关节角度和关机位置同模板姿势的关节角度和关节姿势比较。通过比较此信息,来自模板姿势的最接近匹配可以被标识。该最接近匹配可以与用户骨架相关联。
[0098]映射组件233可以被配置成将对象骨架映射到对象以及将用户骨架映射到对象等。最初,对象骨架可以被映射到虚拟环境中的对象。如前所述,对象骨架可以从一个或多个模板对象骨架中选择。映射组件233可通过标识对象骨架的中心来把对象骨架映射到对象。映射组件233还可以标识虚拟环境中的对象的质心。映射组件233随后可以把对象骨架的中心映射到对象的质心。
[0099]如可以想象到的,对象骨架由于其可能是系统定义的模板骨架而可能不适合对象(即,对象可能比对象骨架大或者小)。在一个实施例中,对象被重调尺寸以适合对象骨架。重调对象尺寸以适合对象骨架可以包括但不限于使对象的底部与用户骨架的底部对准。在实施例中,对象的底部和用户骨架的底部可以彼此精确地对准。接下来,对象的顶部可以与对象骨架的顶部对准。对象的顶部可以与对象骨架对准从而使对象骨架的顶部在对象顶部下方的预定距离处。对象骨架的顶部可以被对准达对象顶部以下的预定距离,以说明对象的被假设为对象头部的一部分。在一个实施例中,预定距离是对象顶部以下百分之十(10%)。预定距离可以是由授权用户指定的任何距离。
[0100]在替换实施例中,不重调对象尺寸而是重调对象骨架尺寸以适合于对象。由此,对象骨架可以与对象对准,从而使对象骨架的底部与对象的底部对准。对象骨架的顶部也可以与对象的顶部对准,从而使对象骨架的顶部在对象顶部以下的预定距离处。在实施例中,预定距离是对象顶部以下百分之十(10%)。预定距离可以是由授权用户指定的任何距离。
[0101]一旦映射组件233已经把对象骨架映射到对象,用户骨架就可以被映射到对象骨架。把用户骨架映射到对象骨架可以是一对一的映射(1:1)或不是1:1的映射。1:1映射指示在用户骨架和对象骨架中有相同数目的关节。在此情况下,用户骨架的关节角度被映射到对象骨架的对应关节角度,从而使对象骨架镜像用户骨架的关节角度。
[0102]然而,有时映射不是1:1映射,这意味着对象骨架和关节骨架具有不同数目的关节。在此情况下,可能期望放大某些关节的运动,而抑制某些关节的运动。另外,一个关节的运动可以被映射到对象骨架中的不同关节。例如,假设对象是大象。显然,用户没有象鼻而大象没有如用户的手臂一样工作的手臂。用户骨架的手臂的运动可以被映射到例如大象的象鼻。由此,大象的象鼻将根据用户手臂的运动作出响应。
[0103]同样,映射不需要是角对角的。例如,关节位置(例如,用户把其手举到多高)可以被映射到对象骨架中的关节缩放,使得对象响应于用户举手而向上伸展。此外,用户关节角度可以被用来控制更加复杂的多关节动画,因此一个用户关节位置可以以非线性方式控制多个对象关节。
[0104]一旦用户骨架被映射到对象骨架,虚拟环境中的对象就镜像真实世界用户。例如,如果用户举起其右臂,对象将根据映射在性质上作出响应(例如,映射可以是1:1的,从而使对象也举起其右臂,或者映射可以还不是1:1的,从而使对象用已被映射到用户右臂运动的另一运动作出响应)。
[0105]控制引擎230可以实时操作,从而每当用户运动时数据就被更新。具体而言,每次用户运动时都可以更新用户骨架。这也导致用户骨架到对象骨架的重新映射。由于这是实时发生的,对象保持被用户控制并且将继续根据映射对用户的运动作出响应。
[0106]显示组件234被配置成显示对象。被显示的对象将根据映射对用户的运动作出响应。
[0107]现在参考图29,提供了示出根据本发明的一个实施例的用于控制虚拟环境中的对象的总的方法2900的流程图。最初,如在框2910所示,标识在虚拟环境中的对象。如前所述,对象可以是从真实世界接收到虚拟环境中的任何非人类对象。在框2920处,对象骨架被映射到对象。对象骨架可以是被重调尺寸以适合对象的、系统定义的对象骨架模板。或者,对象可以被重调尺寸以适合对象骨架。在框2930处,用户的用户骨架被接收。真实世界用户的用户骨架被接收并且包括关节数目、关节角度、关节位置等的骨架信息被标识。在框2940处,用户骨架被映射到对象骨架从而使对象被用户控制。具体而言,用户的运动控制对象的运动。
[0108]现在参考图30,提供了示出根据本发明的一个实施例的用于控制虚拟环境中对象的总的方法3000的流程图。最初,如在框3010所示,标识虚拟环境中的对象。在实施例中,对象可以是已经在虚拟环境中被数字化并被接收的真实世界对象。在框3020处,通过标识对象的质心并且把对象骨架的中心施加在对象的质心上来将对象骨架映射到对象。在框3030处,对象和/或对象骨架随后可被重调尺寸到适合,从而使对象骨架的底部与对象的底部对准。在框3040处,用户的用户骨架被接收。在框3050处,用户骨架被映射到对象骨架,从而使对象骨架的一个或多个关节角度镜像用户骨架的一个或多个关节角度。在框3060处,用户的运动被标识,并且在框3070处,对象被运动从而使对象的运动镜像用户的运动。
[0109]参考各具体实施例描述了本发明,各具体实施例在所有方面都旨在是说明性的而非限制性的。不偏离本发明范围的情况下,各替换实施例对于本发明所属领域的技术人员将变得显而易见。[0110]尽管本发明易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出并在上面被详细地描述。然而应当了解,这不旨在将本发明限于所公开的具体形式,而是相反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。
[0111]从前面的描述可以看出,本发明很好地适用于实现上文所阐述的所有目的和目标,并且具有对于该系统和方法是显而易见且固有的其他优点。可理解的是,某些特征和子组合是有用的,并且可以加以利用而无需参考其它特征和子组合。这由权利要求所构想的,并在权利要求的范围内。
【权利要求】
1.一个或多个存储计算机可使用指令的计算机存储介质,所述计算机可使用指令在被一个或多个计算设备使用时,使得所述一个或多个计算设备执行一种方法,所述方法包括:标识虚拟环境中的对象;把对象骨架映射到对象,其中所述对象骨架是预定义模板;接收用户骨架,其中所述用户骨架是用户的骨架的图像;以及把所述用户骨架映射到所述对象骨架,从而使所述对象被用户控制。
2.如权利要求1所述的一个或多个计算机存储介质,其特征在于,把所述对象骨架映射到所述对象包括:标识所述对象骨架的中心;标识所述对象的质心;以及把所述对象骨架的所述中心施加到所述对象的所述质心上。
3.如权利要求2所述的一个或多个计算机存储介质,其特征在于,还包括:重调所对象的尺寸以适合所述对象骨架。
4.如权利要求3所述的一个或多个计算机存储介质,其特征在于,重调所述对象的尺寸以适合所述对象骨架包括:使所述对象的底部和所述对象骨架的底部对准;以及使所述对象的顶部和所述对象骨架的顶部对准,从而使所述对象骨架的顶部在所述对象骨架的顶部以下的预定距离处。
5.如权利要求4所述 的一个或多个计算机存储介质,其特征在于,在所述对象骨架的顶部以下的预定距离处是在所述对象骨架的顶部以下百分之十(10%)处。
6.如权利要求1所述的一个或多个计算机存储介质,其特征在于,所述对象被用户控制从而使对象的运动镜像用户的运动。
7.一种用于控制虚拟环境中对象的系统,包括:计算设备,所述计算设备与一个或多个处理器和一个或多个计算机可读存储介质相关联;数据存储,所述数据存储与所述计算设备耦合;以及控制引擎,所述控制引擎:标识包括用户骨架和对象骨架的一个或多个骨架,把所述用户骨架映射到所述对象骨架,以及管理所述对象骨架从而使对象被操作以镜像所述用户骨架的运动。
8.如权利要求7所述的系统,其特征在于,所述控制引擎通过把所述用户的姿势与多个模板姿势进行比较以及标识所述多个模板姿势中与所述用户的姿势对应的一个模板姿势,从所述多个模板姿势中标识出所述用户骨架。
9.一个或多个存储计算机可使用指令的计算机存储介质,所述计算机可使用指令在被一个或多个计算设备使用时,使得所述一个或多个计算设备执行一种方法,所述方法包括:标识虚拟环境中的对象,其中所述对象是已经被数字化成虚拟形式的真实世界对象; 通过标识所述对象的质心并且把对象骨架的中心施加在所述对象的质心上,把所述对象骨架映射到所述对象,其中所述对象骨架是预定义模板;重调所述对象的尺寸以与所述对象骨架的尺寸对应,从而使所述对象骨架的底部与所述对象的底部对准;接收用户骨架,其中所述用户骨架是用户的骨架;把所述用户骨架映射到所述对象骨架从而使所述对象骨架的一个或多个关节角度镜像所述用户骨架的一个或多个关节角度,其中关节角度表示一个或多个关节之间的角度的度数;标识所述用户的运动;以及响应于标识所述用户的运动,运动所述对象从而使所述对象的运动镜像所述用户的运动。
10.如权利要求9所述的一个或多个计算机存储介质,其特征在于,把所述用户骨架映射到所述对象骨架包括把所述模板姿势的一个或多个关节角度与所述对象骨 架相关联,从而使所述对象骨架的一个或多个关节角度镜像表示所述用户的模板姿势的一个或多个关节角度。
【文档编号】G06T7/20GK103597516SQ201280027665
【公开日】2014年2月19日 申请日期:2012年6月4日 优先权日:2011年6月6日
【发明者】C·H·维罗毕, J·J·埃弗特, J·A·克拉克, B·J·辛德利, P·G·萨雷特, J·蒂亚奎罗 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1