用于三维重建在网络上的大量分发的系统和方法与流程

文档序号:11161179阅读:236来源:国知局
用于三维重建在网络上的大量分发的系统和方法与制造工艺

本申请要求在2014年3月12日提交的美国临时申请No.61/952,055和在2015年2月10日提交的美国专利申请No.14/618,731的优先权,其中每个申请通过引用将其整体并入本文。本申请涉及在2014年11月10日提交的标题为SYSTEMS AND METHODS FOR SCALABLE ASYNCHRONOUS COMPUTING FRAMEWORK的美国专利申请No.14/537,768和在2014年12月1日提交的标题为SYSTEMS AND METHODS FOR RECONSTRUCTING 3-DIMENSIONAL MODEL BASED ON VERTICES的美国专利申请No.14/557,238,其中每个申请通过引用将其整体并入本文。

发明背景

1.发明领域

本实施例大体上涉及将图形显示信息分发给用户设备,并且更具体地涉及分发与三维空间相关联的图形显示信息。

2.背景

用于由许多用户设备显示的基础数据的实时呈现(包括视频/图像或其它合适的数据类型的呈现)可以以多种方式来实现。例如,服务器和用户设备处理的组合可以被提供以至少在服务器端呈现基础数据的一部分和在用户端呈现基础数据的一部分。在其它实例中,基础数据可以被完全呈现在服务器端。在任一实例中,基于云的呈现可允许呈现视频、图像、游戏以及来自云的其它类型应用数据的基础数据以减少或以其它方式最小化用户端呈现。因此,延迟可变得有问题,其中延迟基于通过接收用户输入(例如,从某一角度/视角查看目标空间)到输出用户输出(例如,输出对应于用户输入的视频/帧)所定义的时间间隔来确定。这是因为用户输入可以被编码以被传送至呈现服务器,其中用户输入可以解码。所呈现的结果(例如,用户输入)可然后在服务器端被编码,传送至用户设备并被解码以用于消耗。由于通过编码和解码过程添加至用户输出的伪像可以降低用户输出的质量(特别是当涉及大量运动时,假如其中几何结构可变得复杂)。

如所描述的,基于云/服务器的呈现具有缺点,诸如延迟、降低的用户输出质量等。此外,使用云/服务器实现基础数据呈现可以是过于昂贵的。例如,对于低于2000用户而言,呈现实况视频流的服务器每月可花费高达5百万美元。

因此,期望实现用于呈现多用户设备的基础数据的成本有效的系统和方法。

公开内容的概述

本文中描述了用于将图形显示信息分发给多个用户设备的系统和方法。在各种实施例中,图形显示信息可涉及在实况场景中的呈现的对象(当其发生在目标空间中时)。图形显示信息可与分割的二维子画面、三维对象和/或其它背景/静态对象(共同称为“元素”)相关联。用户设备中的每个可显示实况场景(例如,包括呈现的元素)的给定角度/视角的二维视频/图像(例如,用户输出)。二维视频/图像的角度/视角可基于用户输入而改变(例如,用户可选择实况场景的角度/视角)。用户设备中的每个可以是具有至少一个处理器(例如,GPU)的合适的移动或非移动的计算设备以用于本地呈现。

分发服务器可以被提供以将基础数据分发给将在用户设备处呈现(部分到全部)的用户设备。在一些实施例中,分发服务器可至少包括用于有效分发的内容分发网络(CDN)。在其它实施例中,数据通过对等网络在用户间被分发,而不需要路由到服务器。基础数据可包括用于呈现每个图像或视频帧的元数据。基础数据可以被编码且被流式传送到用户设备。每个用户设备然后可译码基础数据(例如,以着色器语言借助用户设备的GPU)以将视频/图像在本地呈现在用户设备上,使用用户输入以在本地呈现摄像机位置。因此,由于从接收关于角度/视角的用户输入到基于用户输入在用户设备上输出视频/图像所花费的时间降低,延迟可被最小化。这是因为输入和呈现的循环保持在用户设备内,并且实况呈现的代理被传输到所有用户设备,用于摄影机角度投影。此外,也可以最小化视频流的初始处理的延迟。因此,如本文所述的此类分发框架可以通过CDN在大量(例如,数百万)用户上自动缩放。

本文所述的实施例涉及系统和方法,包括但不限于:确定对象在目标空间内的位置;将对象的位置编码为与基础帧的至少一个像素相关联的RGB值;并且向用户设备传送基础帧用于解码对象的位置。

在一些实施例中,目标空间为三维体积;并且目标空间由多个顶点界定。

在各种实施例中,对象的位置由与在三维坐标系上的坐标相关联的顶点界定。

在一些实施例中,将对象的位置编码为RGB值包括:将顶点的第一坐标值设定为对应的R值;将顶点的第二坐标值设定为对应的G值;并且将顶点的第三坐标值设定为对应的B值。

在各种实施例中,系统和方法还包括从数据源接收源帧。源帧为源视频流的二维帧。

根据一些实施例,确定对象在目标空间内的位置包括识别在源帧上的对象。

在一些实施例中,确定对象在目标空间内的位置还包括识别与对象的位置相关联的参考顶点。

在各种实施例中,基础帧从源帧中编码。

在一些实施例中,系统和方法还包括向用户设备传送初步信息。初步信息包含以下中的一个或多个:三维对象文本数据和对象位置解码方案。三维对象文本数据包括与对象的纹理相关联的数据。对象位置解码方案包括对应于其中对象位置被编码成RGB值的方式的元数据。

在各种实施例中,本文描述了一种包括模型构建器和分发服务器的系统,该模型构建器被配置为:确定对象在目标空间内的位置;并且将对象的位置编码为与基础帧的至少一个像素相关联的RGB值;该分发服务器被配置为向用户设备传送基础帧用于解码对象的位置。

在一些实施例中,目标空间为三维体积。目标空间由多个顶点界定。

在各种实施例中,对象的位置由与在三维坐标系上的坐标相关联的顶点界定。

在各种实施例中,模型构建器通过以下方式将对象的位置编码为RGB值:将顶点的第一坐标值设定为对应的R值;将顶点的第二坐标值设定为对应的G值;并且将顶点的第三坐标值设定为对应的B值。

在各种实施例中,模型构建器还被配置为从数据源接收源帧。源帧为源视频流的二维帧。

在一些实施例中,模型构建器通过识别在源帧上的对象确定对象在目标空间内的位置。

根据各种实施例,模型构建器通过进一步识别与对象的位置相关联的参考顶点确定对象在目标空间内的位置。

在各种实施例中,基础帧从源帧中编码。

在一些实施例中,分发服务器还被配置为向用户设备传送初步信息。初步信息包含以下中的一个或多个:三维对象文本数据和对象位置解码方案。三维对象文本数据包含与对象的纹理相关联的数据。对象位置解码方案包括对应于其中对象位置被编码成RGB值的方式的元数据。

根据各种实施例,描述了一种存储程序指令的非暂时性计算机可存储介质,当执行程序指令时,使处理器:确定对象在目标空间内的位置;将对象的位置编码为与基础帧的至少一个像素相关联的RGB值;并且向用户设备传送基础帧用于解码对象的位置。

在各种实施例中,对象的位置由与在三维坐标系上的坐标相关联的顶点界定。将对象的位置编码为RGB值包括:将顶点的第一坐标值设定为对应的R值;将顶点的第二坐标值设定为对应的G值;以及将顶点的第三坐标值设定为对应的B值。

附图简述

图1A为示出根据各种实施例的分发系统的实例的示意性方框图。

图1B为示出根据各种实施例的后端设备的实例的方框图。

图1C为示出根据各种实施例的用户设备的实例的方框图。

图2为示出与分发系统有关的输入/输出数据和部件的实例的系统方框图。

图3为示出根据各种实施例的与后端设备有关的一般分发方法的实例的过程流程图。

图4为示出根据各种实施例的一般模型显示方法的实例的过程流程图。

图5A为示出根据各种实施例的目标空间(包括元素)的实例的示意图。

图5B为示出根据各种实施例的目标空间的顶点平面的实例的示意图。

图6A为在由数据源中的一个输出的源数据中的源帧。

图6B为在由后端设备输出并传送到用户设备的基础数据中的基础帧。

图7为示出根据各种实施例的与后端设备有关的编码方法的实例的过程流程图。

图8为示出根据各种实施例的与用户设备有关的解码方法的实例的过程流程图。

图9为示出根据各种实施例的与后端设备有关的深度编码方法的实例的过程流程图。

图10为示出根据各种实施例的深度解码的实例的过程流程图。

图11为示出根据一些实施例的二维子画面重建方法的实例的过程流程图。

具体描述

在各种实施例的以下描述中,参考形成其一部分的附图,并且在附图中借助说明示出了本发明可以被实践的具体实施例。应理解的是,在不背离本公开中公开的各种实施例的范围的情况下,可以利用其它实施例并且可以做出结构改变。

如本文所用,“呈现”可以指的是处理作为输入的基础数据以获得用户输出,其可以经由用户设备的显示设备(例如,任何合适的显示屏)显示给用户。在一些实施例中,呈现可以涉及将三维顶点(以及与每个顶点相关联的显示特性)投影到由用户设备的显示设备界定的二维平面,以待显示给用户。投影可以基于用户输入(例如,由用户通过用户输入设备)。例如,用户输入可界定在用户设备处从其查看目标空间(三维空间)的期望角度、视角、距离、角、位置等。

本文所述的实施例涉及用于分发且呈现在其中发生实况事件的目标空间中的对象的图形信息的系统和方法。时间还可使用相同的系统被记录并被分发给客户。呈现也可以是完全合成的,类似于实时的视频游戏或电影呈现。在一般术语中,数据源(例如,摄影机)的至少一个(有时是多个)被提供以捕获目标空间的视频/图像。来自数据源的二维输出(例如,源输出)可以被映射到限定目标空间的体积的三维顶点的集合上。显示特性(例如,颜色、纹理、频率变换、小波变换、平均值、标准偏差、其组合等)可以基于对于目标空间内的每个顶点的源输出来确定。因此,可以构造目标空间的模型。模型构造的此类方式可以是诸如但不限于在标题为SYSTEMS AND METHODS FOR RECONSTRUCTING 3-DIMENSIONAL MODEL BASED ON VERTICES的申请序列no.14/557,238中所描述的一种。

涉及将目标空间的给定顶点映射到帧的区域(例如,像素的一部分、至少一个像素、至少一个宏块)上或反之亦然的映射过程可以通过集中式后端服务器执行。可选地,处理的至少一部分可以外包(例如,分发)给用户设备用于处理。此外,涉及确定给定显示特性(例如,颜色)的显示属性(例如,具体颜色)的确定过程也可以由集中式后端服务器执行或者分发给用户设备。本领域的普通技术人员将认识到,执行映射且显示如所述的特性处理的用户设备也可以是如本文中详细描述的向其发送基础数据以待在本地呈现的用户设备。分发处理可以是诸如但不限于关于标题为SYSTEMS AND METHODS FOR SCALABLE ASYNCHRONOUS COMPUTING FRAMEWORK的申请序列no.14/537,768中所描述的一种。

映射过程也可包括以高分辨率映射像素到像素的呈现过程(而不是顶点到像素)。此类实施例可允许在多个服务器上呈现单个高分辨率场景。虽然输出可以仅仅是呈现的结果,但是样本摄影机的数目可以增加以与服务器的密度相关联。可以使用流对等视频聚合顶点的每个切片或平面。

在各种实施例中,基础数据可以被分发到用户设备用于本地呈现在用户设备上。假设当使用数据中心时呈现用于大量用户(例如,以数百万的量级)的基础数据(特别是用于实况广播)可以是非常昂贵的,在用户设备处呈现是更昂贵的。由于现代用户设备(例如,智能手机、笔记本电脑、台式电脑、平板电脑等)被配备有强大的处理能力(特别是关于在GPU处的图形处理),因此每个用户设备可以适于执行顶点映射、显示特性/属性确定以及呈现。具体地,网络浏览器或移动应用程序(本地IOS应用)可配置用户设备以执行如所述的顶点映射、显示特性/属性确定以及呈现。

内容分发网络(CDN)可以用于在全球网络上缩放分发处理。具体地,CDN流可实现缩放基础数据(以及与顶点映射和显示特性/属性确定有关的数据)的分发以包括数百万用户设备的低成本方法。这避免了在数据中心中提供呈现服务器用于云呈现的需要,其可能花费数十亿美元用于同时支撑数百万用户。在一些情况下,本文所述的分发系统/方法与云呈现相比可花费少四个数量级,例如用于三维目标空间的实况流。此外,假设所需要的尽可能少的数据从任何远端服务器被传送到用户设备,通过在本地呈现可最小化延迟,反之亦然。由于伪像(其可以通过编码和解码过程被添加到用户输出)的减少,也可以实现所显示的用户输出的提高的质量。在其它实施例中,数据通过对等网络在用户上被分发,而不需要通过服务器。

因此,分发的数据被压缩至较小的标准化大小,使得所有设备可具有对呈现三维空间模型所必需的总带宽的期望。这允许将大量的各种类型的设备定向为终端用户。

需要呈现的任何几何结构(包括实时移动的几何结构)可以被简化以待呈现在如本文所述的低端设备上。实时移动的几何结构包括但不限于:实时3D重建、实时3D视频游戏以及实施电影呈现。高端视频游戏可以以这种方式简化并重新呈现在移动设备上而不会有云呈现的延迟问题。高分辨率电影可以以碎片形式被呈现以允许实时的计算密集特效的实时呈现。

电影也可以以切片形式直接呈现至屏幕。此类实施例可在低端设备中需要更多的用于更高分辨率要求的节点。在直接呈现的情况下,所必需节点的数目等于(用户数目)×(呈现中切片的数目)。在呈现3D几何结构的情况下,所必需节点的数目为4-5+(呈现几何结构所必需的节点数)。呈现几何结构所必需的节点数可根据分辨率而变化。一般来说,在实时3D重建中一个节点等同于一立方英尺的体积。

这允许在固定的4-5个流上发送复杂的3D重建,这意味着在移动设备和笔记本电脑上流式传送和呈现这些3D重建是可能的。这也可允许与虚拟现实(virtual regards)(VR)设备进行交互,如Oculus Rift和三星VR。

这种方法可以用于由如微软Kinect 2.0的深度传感器生成的所分发的现有呈现几何结构,允许对于大量终端用户实时呈现固定分辨率的室内场景。假设深度传感器具有有限的分辨率和范围,多个传感器可以以这种方式配对在一起以呈现更大的室内空间。

图1A为示出根据各种实施例的分发系统100的实例的示意性框图。参考图1A,分发系统100可至少包括后端设备110、多个数据源120a-120h(例如,第一数据源120a、第二数据源120b……第八数据源120h)、目标空间105、网络130以及多个用户设备140a-140n(例如,第一用户设备140a、第二用户设备1400b……第n用户设备140n)。

在一些实施例中,网络130可允许在后端设备110和用户设备140a-140n之间的数据传输。在另外的实施例中,网络130也可允许在数据源120a-120h和后端设备110/用户设备140a-140n之间的数据传输。在一些实施例中,用户设备140a-140n同样可供应源数据。在非限制实例中,Project Tango谷歌设备(例如,作为用户设备140a-140n)可以是实时的数据源120a-120h(如果Project Tango谷歌设备被注册为相同坐标体系)。用户设备140a-140n可以通过网络130彼此连接。网络130可以是广域通信网络,诸如但不限于:互联网、或一个或多个内联网、局域网(LAN)、以太网、城域网(MAN)、广域网(WAN)、其组合等。在特定实施例中,网络130可代表一个或多个安全网络,其被配置有合适的安全特征,诸如但不限于:防火墙、加密或禁止未授权人员或实体访问网络通信的其它软件或硬件配置。在网络130上可传送的数据可以由用户设备140a-140n使用每帧密钥来加密和解密,进一步确保数据安全。

在一些实施例中,数据源120a-120h和后端设备110可以经由第一网络连接,后端设备110和数据库170可以经由第二网络连接,并且后端设备110和用户设备140a-140n可以经由第三网络连接。第一网络、第二网络以及第三网络中的每个可以是诸如但不限于网络130的网络。第一网络、第二网络以及第三网络中的每个可以是来自一些实施例中的其它网络的不同网络。在其它实施例中,第一网络、第二网络以及第三网络中的两个可以是相同的网络。

目标空间105可以是将由数据源120a-120h捕获的任意的三维空间。目标空间105的实例包括但不限于体育场、圆形露天剧场、球场、建筑物、公园、工厂、农场、房间、其组合等。目标空间105可以是实况场景发生的地方。实况场景的实例包括但不限于:比赛、音乐会、事件、游戏、戏剧等。具体地,如图1A中所示,目标空间105可以是作为非限制实例的网球场。换句话说,实际上任何地点、位置、房间等可以表示为三维体积,诸如目标空间105。目标空间105可以被采样并且被划分成多个离散体积,每个离散体积可以与顶点相关联。目标空间105的模型可包括与顶点中的每个相关联的显示特性/属性。目标空间105也可包括合成空间,如呈现的游戏、模拟或电影。

每个顶点可以通过唯一标识符来识别。在特定实施例中,标识符可以基于顶点在目标空间105中的位置。例如,坐标系(具有3个轴)可以被实施用于目标空间105,使得每个顶点可以根据坐标系通过坐标的特定集合而识别。

数据源120a-120h中的每个可以被连接到后端设备110(例如,经由网络130或以其它方式)。数据源120a-120h可包括任何合适的设备,用于捕获视频和/或图像并且将原始视频和/或图像数据输出到后端设备110。数据源120a-120h也可以是可捕获深度数据的设备。在特定实施例中,数据源120a-120h中的每个可包括至少一个摄影机(例如,数码摄影机、高分辨率数码摄影机、IP-摄影机或具有网络能力的其它摄影机)、至少一个传感器(例如,例如,飞行时间传感器)等。

数据源120a-120h可以定位在目标空间105周围或在目标空间105内以捕获目标空间105的视频、图像和/或深度数据。例如,数据源(诸如但不限于数据源120a-120h)可以定位在目标空间(诸如但不限于目标空间105)的顶部、底部和/或侧表面的周围并且面向目标空间内部。在另外实施例中,数据源可以定位在目标空间内用于对顶点进行更好的覆盖,如果所有数据源定位在目标空间内部体积的外部则可能难以捕获顶点。在图1A中示出的非限制实例中,第一数据源120a、第二数据源120b以及第三数据源120c可以沿着目标空间105的第一侧表面定位;第四数据源120d、第五数据源120e以及第六数据源120f可以沿着目标空间105的第二侧表面定位;以及第七数据源120g和第八数据源120h可以沿着目标空间105的第三侧表面定位。

数据源中的每个可具有不同或独特的摄影机姿态(即,摄影机相对于目标空间的位置和取向)。例如,数据源可以以栅格方式(均匀间隔)定位并且在垂直于目标空间的表面的视线上直接指向前方。可以提供数据源的多个行和列用于目标空间的给定表面。在其它实施例中,数据源可以以随机或半随机模式定位。数据源的摄影机姿态可以由在目标空间周围的空间限制,并且被放置在基于在目标空间周围的空间中对象和障碍的可用几何结构的位置和取向中。

距离可以被提供在目标空间105的表面或边缘和数据源120a-120h之间。距离越长,越多的顶点可以由给定的数据源捕获。另一方面,更长距离可导致被捕获的视频/图像数据的更低的分辨率,从而在处理时产生错误。数据源和目标空间之间的距离可以基于摄影机分辨率、目标空间的体积、可用的其它数据源的数目、其组合等来确定。

虽然8个数据源120a-120h在图1A中被示出,但是本领域中的技术人员应该认识到,可以提供更多或更少数目的数据源(诸如但不限于数据源120a-120h)。分散在目标空间周围或在目标空间中的更大数目的数据源可提供用于处理的更大的样品尺寸(例如,更多的视频帧),从而提供大量的加权用于与给定帧时间中的给定顶点相关联的给定显示属性。因此利用更大量的加权值来提高精确性和忠实性。另一方面,由于未处理数据的增加,更大量的数据源可导致拖延处理。

假设对于用户设备140a-140n的极低地带宽,数据源120a-120h可“绕行”3D呈现的轨道以给出模型或场景的表面的轨道呈现。这样,替代4-5个数据源,可以仅有一个以特定旋转/秒扫描场景(例如,目标空间105)的数据源。

用户设备140a-140n中的每个可以是具有如所述的合适处理和存储能力的任何有线或无线计算系统或设备。在一些实施例中,用户设备140a-140n中的至少一些可以是台式电脑、大型电脑、笔记本电脑、平板设备等,其被配置有硬件和软件以执行本文所述的操作。例如,用户设备140a-140n中的每个可包括典型的台式PC或AppleTM电脑设备,具有合适的处理能力、存储器、用户界面(例如,显示和输入)能力以及通信能力,当其配置有合适的应用软件(或其它软件)时执行本文所述的操作。在一些实施例中,用户设备140a-140n中的至少一些可包括移动智能电话(诸如但不限于iPhoneTM、AndroidTM电话等)或具有合适处理能力的其它移动电话。典型的现代移动电话设备包括电话通信电子器件以及一些处理器电子器件、一个或多个显示设备和小键盘和/或其它用户输入设备,诸如但不限于以上所述的。特定实施例采用移动电话(通常是指智能电话),其除了电话通信能力之外还具有相对先进的处理、输入和显示能力。然而,在另外实施例中,用户设备140a-140n可包括任何合适类型的移动电话和/或其它类型的便携式电子通信设备,诸如但不限于电子智能平板设备(诸如但不限于iPadTM)、便携式笔记本电脑等。

在一般术语中,用户设备140a-140n中的每个可以是能够消耗实况视频流的设备且包括能够访问着色器语言以解释视频流中的数据从而足以允许信息的实况流解码的GPU。

后端设备110可以是至少一个服务器(例如,计算系统),用于构建目标空间105的模型并将模型(例如,经由网络130)分发给用户设备140a-140n。

图1B为示出根据各种实施例的后端设备110的实例的框图。参考图1A-1B,后端设备110可包括处理器111、可操作地耦合到处理器111的存储器112、网络设备113、用户界面114等。在一些实施例中,后端设备110可包括至少一个台式电脑、大型电脑、服务器单元、笔记本电脑、平板设备、智能电话设备等,其被配置有硬件和软件以执行本文所述的操作。

例如,后端设备110可包括典型的台式PC或AppleTM电脑设备,其具有合适的处理能力、存储器、用户界面(例如,显示和输入)能力以及通信能力,当其被配置有合适的应用软件(或其它软件)时执行本文所述的操作。适于实现的平台包括Amazon/Debian Linux、没有插件(诸如java或flash)的HTML(例如,HTML5)浏览器等。因此,特定实施例可以通过使通常已经存在于许多商业和组织环境中的处理器设备配置有本文所述的合适软件过程使用此类设备来实现。因此,此类实施例可以用最小额外硬件成本来实现。然而,后端设备110的其它实施例可涉及利用专门配置用于执行本文所述的操作的专用设备硬件来实现的系统和方法。

处理器111可包括任何合适的数据处理设备,诸如通用处理器(例如,微处理器)。在可选实施方案中,处理器111可以是任何常规的处理器、控制器、微控制器或状态机。处理器111也可以被实施为计算设备的组合,例如,DSP和微处理器、多个微处理器、GPU、至少一个微处理器结合DSP核或任何其它此类配置的组合。

存储器112可以操作性地耦合到处理器111并且可包括用于存储用于由处理器111控制和使用以执行本文中所述的操作和功能的软件和数据的任何合适的设备,包括但不限于随机访问存储器(RAM)、只读存储器(ROM)、软盘、硬盘、电子狗或连接其它重新排版传感器板(recomp sensor board)(RSB)的存储器设备等。

网络设备113可以被配置用于通过网络130通信。网络设备113可包括界面软件、硬件或其组合,用于通过网络130通信。网络设备113可包括诸如网络调制解调器、无线接收器或收发器电子器件的硬件和/或提供与网络130(或与网络连接设备)的有线或无线通信链路的软件。在特定实施例中,网络设备113可以被耦合到处理器111用于提供通信功能。网络设备113可根据典型行业标准提供电话和其它通信,诸如但不限于码分多址访问(CDMA)、时分多址(TDMA)、频分多址(FDMA)、长期演进(LTE)、无线保真(WiFi)、频率调制(FM)、蓝牙(BT)、近场通信(NFC)等。

在特定实施例中,后端设备110的用户界面114可包括至少一个显示设备。显示设备可包括提供人可感知的可视信号、可听信号、触觉信号或其任何组合的任何合适设备,包括但不限于触摸屏、LCD、LED、CRT、等离子体或其它合适的显示屏、音频扩音器或其它音频生成设备、其组合等。

在一些实施例中,后端设备110的用户界面114可包括至少一个用户输入设备,其为使用后端设备110的指定人员提供界面。用户输入设备可包括接收来自用户的输入的任何合适的设备,包括但不限于一个或多个手动操作器(诸如但不限于开关、按钮、触摸屏、把手、滑块、键盘、鼠标等)、麦克风、摄影机、图像传感器、任何类型的远程连接控制等。

在一些实施例中,后端设备110可另外包括至少在标题为SYSTEMS AND METHODS FOR RECONSTRUCTING 3-DIMENSIONAL MODEL BASED ON VERTICES的申请序列no.14/557,238中所描述的顶点确定模块(参考标号115)、加权模块(参考标号116)以及作业结果确定模块(参考标号117)。

仍参考图1A-1B,后端设备110可另外包括模型构建器115。在一些实施例中,模型构建器115可以是用于构建目标空间105的模型的硬件/软件模块/设备。模型构建器115可以是后端设备110的具有其自身的处理器/存储器(诸如但不限于处理器111和存储器112)的单独硬件/软件实体(例如,单独的服务器)。在模型构建器115为单独实体的情况下,其可以经由网络130或其它合适的连接被链接到后端设备110的其余部分(例如,处理器111、存储器112、网络设备113以及分发服务器116)。可选地,模型构建器115可使用后端设备110的处理器111和存储器112。模型构建器115可将目标空间105的建造模型封装为将被分发给用户设备140a-140n的可消耗数据流。

后端设备110也可包括分发服务器116。在一些实施例中,分发服务器116可以是用于将由模型构建器115生成的可消耗数据流分发给用户设备140a-140n的硬件/软件模块/设备。分发服务器116可以是具有其自身的处理器/存储器(诸如但不限于处理器111和存储器112)的后端设备110的单独硬件/软件实体(例如,单独服务器)。在分发服务器116为单独实体的情况下,其可以经由网络130或其它合适的连接被链接到后端设备110的其余部分(例如,处理器111、存储器112、网络设备113以及模型构建器115)。可选地,分发服务器116可使用后端设备110的处理器111和存储器112。分发服务器116包括CDN。CDN的实例可包括但不限于CloudFont、Limelight等。媒体服务器实例包括但不限于Ffserver、Wowza媒体服务器等。

除了存储器112(或作为存储器112的替代选择)之外,后端设备110可以经由网络130或其它合适的连接操作性地耦合到至少一个数据库(未示出)。数据库可以能够存储更大量的信息并且提供比后端设备110中的存储器112更大级别的安全性,以防止未经授权访问存储信息。数据库可包括任何合适的电子存储设备或系统,包括但不限于随机访问存储器RAM、只读存储器ROM、软盘、硬盘、电子狗或其它RSB连接的存储器设备等。在特定实施例中,数据库可以是由redis服务器维护的NOSQL数据库。诸如所描述的数据库(除了任何相关联的存储器设备之外或作为其的替代选择)可以被提供给模型构建器115和分发服务器116中的每个以存储数据。

图1C为示出根据各种实施例的用户设备140a-140n的一个(例如,用户设备140n)的实例的框图。参考图1A-1C,用户设备140a-140n中的每个可包括处理器141、存储器142、网络设备143、用户界面144以及呈现模块115。

处理器141可被配置为执行用户设备140a-140n的一般功能,诸如任何合适的数据处理。处理器141可以是诸如但不限于后端设备110的处理器111的处理器。具体地,处理器141可至少包括至少图形处理单元(GPU)。用户设备140a-140n中的每个的存储器142可操作性地耦合到处理器141并且可包括任何合适的设备用于存储软件和数据以用于由处理器141控制和使用以执行本文中所述的操作和功能。存储器142可以是存储器设备,诸如但不限于后端设备110的存储器112。用户设备140a-140n中的每个的网络设备143可包括用于通过网络130进行通信的界面软件、硬件或其组合。网络设备143可以是诸如但不限于后端设备110的网络设备113的网络设备。

用户设备140a-140n可各自包括用户界面144,其包括至少用于将信息(例如,文本和图形)显示给用户的显示设备。显示设备可包括提供人可感知的可视信号、可听信号、触觉信号或其任何组合的任何合适的设备,包括但不限于触摸屏、LCD、LED、CRT、等离子体或其它合适的显示屏、音频扩音器或其它音频生成设备、其组合等。界面可被配置为向用户设备140a-140n显示在呈现之后的三维模型的投影视频或图像。

在一些实施例中,用户设备140-140n的每个的用户界面144可包括至少一个用户输入设备,其为使用用户设备140a-140n的用户提供界面。用户输入设备可包括接收来自用户的输入的任何合适的设备,包括但不限于一个或多个手动操作器(诸如但不限于开关、按钮、触摸屏、把手、滑块、键盘、鼠标等)、麦克风、摄影机、图像传感器、任何类型的远程连接控制等。

仍参考图1A-1C,用户设备140a-140n中的每个可包括呈现模块145。在一些实施例中,呈现模块145可包括用于呈现从后端设备110(例如,从分发服务器116)接收的基础数据以生成用户输出的硬件/软件模块/设备,该用户输出可以通过用户设备140a-140n的用户界面144的显示设备来显示。呈现模块145可以是具有其自身的处理器/存储器(诸如但不限于处理器141和存储器142)的单独硬件/软件实体(例如,单独设备)。在呈现模块145为单独实体的情况下,其可以经由网络130或其它合适的连接被链接到用户设备140n的其余部分(例如,处理器141、存储器142、网络设备143以及用户界面144)。可选地,呈现模块145可使用后端设备110的处理器141和存储器142。在特定实施例中,呈现模块145可包括GPU或以其它方式耦合到GPU,其可以是处理器141或除了处理器141之外的处理器。

本领域的技术人员将认识到,在一些实施例中,分发系统100可以是与标题为SYSTEMS AND METHODS FOR RECONSTRUCTING 3-DIMENSIONAL MODEL BASED ON VERTICES的申请序列no.14/557,238的三维模型重建系统(参考标号100)相同的系统。例如,本申请的目标空间105可以是(但不限于)申请序列no.14/557,238中的目标空间(参考标号105)。本申请的数据源120a-120h可以是(但不限于)申请序列no.14/557,238中的数据源(参考标号120a-120h)。网络130可以是(但不限于)申请序列no.14/557,238中的网络(参考标号130)。本申请的后端设备110可以是(但不限于)申请序列no.14/557,238中后端设备(参考标号110)。具体地,本申请的后端设备110的处理器111、存储器112、网络设备113以及用户界面114可分别对应于申请序列no.14/557,238中的处理器(参考标号111)、存储器(参考标号112)、网络设备(参考标号113)以及用户界面(参考标号114)。本申请的用户设备140a-140n可以是申请序列no.14/557,238中的用户设备(参考标号140a-140n)。

此外,在一些实施例中,分发系统100可以是与标题为SYSTEMS AND METHODS FOR SCALABLE ASYNCHRONOUS COMPUTING FRAMEWORK的申请序列no.14/537,768的分发计算框架(参考标号100)相同的系统。例如,本申请的目标空间105可以是(但不限于)申请序列no.14/537,768中的目标空间。本申请的数据源120a-120h可以是(但不限于)申请序列no.14/537,768中的数据源(例如,数据源120)。网络130可以是(但不限于)申请序列no.14/537,768中的网络(参考标号130)。本申请的后端设备110可以是(但不限于)申请序列no.14/537,768中的后端设备(参考标号110)。具体地,本申请的后端设备110的处理器111、存储器112、网络设备113以及用户界面114可分别对应于申请序列no.14/537,768中的处理器(参考标号111)、存储器(参考标号112)、网络设备(参考标号113)以及用户界面(参考标号114)。本申请的用户设备140a-140n可以是申请序列no.14/537,768中的用户设备(参考标号140a-140n)。具体地,本申请的用户设备140n的存储器142、网络设备143以及用户界面144可分别对应于申请序列no.14/537,768中的用户设备(参考标号140n)的用户设备存储器(参考标号161)、用户网络设备(参考标号163)以及用户设备界面(参考标号164)。此外本申请的用户设备140n的处理器141可对应于申请序列no.14/537,768中的用户设备(参考标号140n)的处理单元(参考标号160)和/或用户核心(参考标号150)。

图2为示出与分发系统100有关的输入/输出数据和部件的实例的系统框图200。参考图1A-2,数据源120a-120h可输出源数据215。数据源215可以被传送(例如,经由网络130)到后端设备110。源数据215可包括由数据源215捕获的视频、音频和/或图像。在特定实施例中,数据源120a-120h中的每个可输出目标空间105的视频流(例如,以预定的摄影机姿态)。每个视频流可包括多个视频帧(称为源帧)。

后端设备110在接收到源数据215后可被配置为处理(利用模型构建器115)源数据215和输出基础数据225。基础数据225可以从后端设备110的分发服务器116传送(例如,经由网络130)到用户设备140n。在一些实施例中,后端设备110的模型构建器115可使界定目标空间105的顶点与源数据215的帧的区域(例如,像素的部分、至少一个像素、至少一个宏块等)相关联,确定与每个顶点相关联的显示特性/属性,通过聚合(如由顶点提供的)几何结构来构造目标空间130的模型并且显示与每个顶点相关联的特性/属性等。此外,后端设备110的模型构建器115可以以所述的方式从源数据215识别(和分割)移动或静止对象。后端设备110可例如在当前帧处将移动对象的至少每个对象的位置编码成基础数据225。在一些实施例中,基础数据225可包括如本文详细描述的具有其中所编码的至少一个移动对象的位置数据的至少一个视频流。在其它实施例中,基础数据可包括指示移动对象的位置的信号。可选地,基础数据225可同时包括深度视频流以及源数据215。用户设备140n可以以所述的方式基于顶点映射信息从深度视频流中确定对象并且从源数据215中确定与该对象相关联的显示特性/属性。

在一些实施例中,后端设备110可利用处理器111或与用于集中处理的后端设备110(例如,在数据处理中心处)相关联的任何另外处理器自身执行所述的处理。在其它实施例中,本文所述的至少一些处理可以外包以待由用户设备140a-140n中的至少一个处理。在一些实施例中,后端设备110可不存在。由如所述的后端设备110管理、存储或路由的所有数据可以维持在公众分发对等atlas文档上。文档中的改变可以沿着用于传输数据的相同对等连接在网络中实时地传播到所有对等端。

在特定实施例中,基础数据225可以由用户设备140n的呈现模块145首先处理。呈现模块145可将编码的基本数据225转换为用户输出235,其可以通过用户界面144显示。例如,呈现模块145可以以着色器语言解码基础数据225,其中基础数据225可以以着色器可读格式(例如,以纹理)呈现。然后,呈现模块145可基于解码的信息来更新在存储器142中存储的目标空间105的模型。

参考图1A-3,图3为示出根据各种实施例的与后端设备110有关的一般分发方法300的实例的过程流程图。根据各种实施例,一般分发方法300可以是由后端设备110执行以将目标空间105的模型重建信息分发给用户设备140a-140n以用于消耗的方法。在特定实施例中,模型可包括与在目标空间105内捕获的二维子画面或三维对象有关的信息数据。

在方框B310处,后端设备110可接收由至少一个数据源(例如,数据源120a-120h中的至少一个)输出的源数据215。接着在方框B320处,后端设备110可基于源数据215生成模型,该模型包括至少一个元素。生成模型可包括例如关于将界定目标空间105的顶点映射到源数据215的帧内的区域上的顶点映射。换句话说,后端设备110(通过自身或利用使用用户设备140a至140n的分发处理框架)可执行顶点映射。生成模型还可包括一旦后端设备110接收源数据215就确定与每个顶点相关联的显示特性/属性。

此外,生成模型可另外包括识别并分割模型中的至少一个元素。在各种实施例中,元素可以指的是如在目标空间105内进行的实况场景中由数据源120a-120h捕获的在目标空间105的模型中的至少一个移动实体。在另外或其它实施例中,元素也可包括在目标空间105中的至少一个静止实体。元素可以是三维对象或二维子画面。后端设备110可通过确定与显示特性/属性相关联的感知的主体深度来识别元素。后端设备110(和/或用户设备140a-140n)可利用本文所述的深度感知传感器或顶点确定方法来确定元素在目标空间105内的位置。

在可选实施例中,基于源数据生成模型可包括识别并分割来自源数据215的元素并且将深度视频流式传输到用户设备140n。用户设备140n基于深度视频可自身确定元素的位置。

移动实体可以通过比较在给定时刻处(例如,在给定帧时间处)的顶点的显示特性/属性与先前(例如,在先前帧时间处)所确定的顶点的显示特性/属性来确定。在相比于第二时刻的第一时刻处具有不同位置的具有相同显示特性/属性的对象可以被确定为移动实体。在其它或另外实施例中,移动实体可以基于合适的运动传感器来确定。

接着在方框B330处,后端设备110可将至少一个元素编码成基础数据225。一旦识别元素,后端设备110可分割或以其它方式切断所识别元素并编码每个元素。在各种实施例中,只有移动元素可以被分割且编码。在其它实施例中,在目标空间105中的所有元素均可以被分割且编码。关于移动元素,这些元素的位置和显示特性/属性(或仅与其相关的更新)可以以所述方式编码。在其它实施例中,编码至少一个元素可以指的是基于源数据215生成深度视频流。

接着在方框B340处,后端设备110可将基础数据225传送到用于呈现(在呈现模块145处)并显示(在用户界面144处)的用户设备140a-140n中的至少一个。基础数据225可以在至少一个数据流中被传送,其中每个数据流可包括与至少一个元素有关的信息(例如,位置、显示特性/属性、深度视频流等)。

参考图1A-4,图4为示出根据各种实施例的一般模型显示方法400的实例的过程流程图。一般模型显示方法400可以是由用户设备140a-140n执行以将模型显示给用户设备140a-140n的用户的过程。

首先在方框B410处,用户设备140a-140n中的至少一个(例如,用户设备140n)可接收(经由用户设备140n的网络设备143)来自后端设备110的基础数据225,其中基础数据225可包括至少一个编码元素。基础数据225可以是元素的编码位置或深度视频流,基于与数据源(其与深度视频相关联)相关联的已知摄影机姿态从深度视频流中可以容易地确定元素的位置。基础数据225也可包括源数据215,其包括元素的显示特性/属性。

接着在方框B420处,用户设备140n(经由呈现模块145)可解码基础数据225并呈现所解码的数据以生成用户输出235。在各种实施例中,基础数据225可以以任何方式被编码。对基础数据225的解码可以与用于编码基础数据225的任何编码方案相一致。用户设备140可基于用户输入呈现基础数据以生成用户输出235。用户输入可包括从其查看目标空间(三维空间)的所期望几何视场(例如,角度、视角、距离、角、位置等)。例如,在涉及三维对象的情况下,呈现模块145可将三维顶点(一些三维顶点可对应于至少一个三维对象)和相关联的显示特性/属性投影到二维平面上作为用户输出235。接着在方框B430处,用户设备140n可显示(经由用户界面144,或特别是用户界面144的显示设备)用户输出235。

图5A为示出根据各种实施例的目标空间105(包括元素)的实例的示意图。参考图1A-5,至少两个元素(例如,第一对象520和第二对象515)可以存在于目标空间105中。具体地,第一对象520可以从其初始位置510a(如在当前帧中描绘的)移动到新位置510b。换句话说,如在第一时刻处所捕获的,第一对象520可以在初始位置510a处;如在相比于第一时刻的随后时刻的第二时刻处捕获的,第一对象520可以在新位置510b处。第二对象515可以是静止的。如所述,数据源120a-120h可以被定位在目标空间105周围或在目标空间105内以捕获目标空间105的至少一部分的视频/图像。数据源120a-120h中的至少一些可捕获第一对象520和/或第二对象515。本领域的普通技术人员应认识到,虽然额外的移动和/或静止对象可以以类似方式实施,但是在关于图5A阐述的非限制实例中为了简化目的描述了两个对象(一个是移动的,一个是静止的)。

第一对象520和第二对象515可以由后端设备110识别。在各种实施例中,对象识别过程可以以所述的方法基于与关联于显示特性/属性将被捕获的顶点相关联的感知深度来进行。运动属性(例如,对象是否移动)也可以由后端设备110相对于所识别对象中的每个来确定。此后,可以从由数据源120a-120h中的至少一个所捕获的视频流/图像中分割至少一个移动对象(例如,第一对象520)、至少一个静止对象(例如,第二对象515)或两者。

图5B为示出根据各种实施例的目标空间105的顶点平面500的实例的示意图。顶点平面500可以是界定目标空间105的顶点的切片(在x-y平面中)。在一些实施例中顶点平面500可说明用于确定关于至少一个对象(例如,测试对象550)的深度的深度确定过程。相对于至少一个对象(例如,测试对象550)的所确定深度可以用于确定至少一个对象的位置。在各种实施例中,测试对象550可以是在目标空间105中与顶点555a、555b相关联的三维对象。

可以提供两个数据源(例如,摄影机X 520和摄影机Z 530)以捕获至少顶点平面500的显示特性/属性。具体地,摄影机X 520可捕获在场X 525内的顶点平面500的一些顶点的特性/属性。摄影机Z 530可捕获在场Z 535内顶点平面500的一些顶点的显示特性/属性。测试对象550可占据第一顶点555a和第二顶点555b。

摄影机X 520和摄影机Z 530两者可捕获测试对象550的显示特性/属性。具体地,摄影机X 520可在x方向上捕获测试对象550。摄影机Y 530可在y方向上捕获测试对象550。摄影机X 520可以和与测试对象550有关的深度感知(如深度X 527所定义的)相关联。摄影机Z 530可以和与测试对象550有关的深度感知(如深度Z 537所定义的)相关联。在已知用于与对象(例如,测试对象550)有关的数据源120a-120h(例如,摄影机Y 520和摄影机Z 530)中的一个数据源的深度感知的情况下,对象的位置(特别是顶点的集合)可以通过考虑到在由数据源120a-120h输出的帧/图像上的区域上的深度感知和区域而被知晓。

在一些情况下,给定与摄影机X 520(例如,在x方向上)相关联的摄影机姿态(即,摄影机相对于目标空间105的位置和取向),摄影机X 520可缺乏沿着x方向的深度感知(例如,深度X 527)。然而,摄影机X 520由于其摄影机姿态可输出与沿着垂直于x方向的轴的深度感知有关的信息(例如,深度Z 537)。具体地,来自摄影机X 520的输出(例如,源数据215,其可以是视频或图像的帧)可以用于近似于测试对象550的深度Z 537。类似地,给定与摄影机Z 530相关联的摄影机姿态(例如,在y方向上),摄影机Z 530可缺乏沿着y方向的深度感知(例如,深度Z 537)。然而,摄影机Z 530由于其摄影机姿态可输出与沿着垂直于z方向的轴的深度感知有关的信息(例如,深度X 527)。具体地,来自摄影机Z 530的输出(例如,源数据215,其可以是视频或图像的帧)可以用于近似于测试对象550的深度X 527。来自任一摄影机520、530的数据源215(和其它额外数据源,诸如数据源120a-120h)可以用于确定与测试对象550相关联的对应顶点。假设顶点和顶点位置之间的空间已知,一旦确定对应顶点,就可以确定深度感知(例如,深度X 527和深度Z 537)。

在可选实施例中,与对象相关的给定数据源相关联的深度感知可以通过使用合适的深度传感器(例如,飞行时间传感器)来确定。

换句话说,确定与测试对象550相关联的深度感知可涉及对测试对象550的顶点映射。可以确定界定测试对象550的顶点。假设顶点与目标空间105内的离散体积有关,可因此确定测试对象550的位置。例如,如在标题为SYSTEMS AND METHODS FOR RECONSTRUCTING 3-DIMENSIONAL MODEL BASED ON VERTICES的申请序列no.14/557,238中所描述的,可以确定对应于任何三维对象的顶点以及与对应顶点中的每个顶点相关联的显示特性/属性。

现在参考图1A-6A,图6A为在由数据源120a-120h中的一个(例如,数据源120h)输出的源数据215中的源帧600a。源帧600a可包括与当前位置620a相关联的当前对象605。当前对象605可从初始位置610a(在先前帧处)移动到在当前帧处的当前位置620a。源帧600a也可包括静止对象630a,其在至少许多(例如,100、200、1000等)的先前帧中(或从会话的第一帧开始)未移动。

在一些实施例中,当前位置620a可包括与当前对象605相关联的至少一个参考顶点。当前位置620a可以是处于界定当前对象605(如在图6A的非限制性实例中所示)的顶点的中心中的参考顶点。在其它实施例中,界定用于对象的当前位置的参考顶点可以在底部、侧边、顶部、对象内部、对象外部等。参考顶点对于对象方案的位置(位置方案)之间的合适关系可以写入程序指令中(例如,元数据)。位置方案可以在后端设备110和用户设备140a-140n之间共享(并存储于其上),使得位置方案在用于编码并解码对象(诸如但不限于当前对象605)的位置的设备上保持一致。

给定与数据源102h相关联的相对于当前对象605所确定的深度感知,后端设备110(在接收源帧600a后)可基于与源帧600a中的当前对象605相关联的深度感知和区域来确定当前对象605的当前位置620a。

在可选实施例中,在确定当前对象605的当前位置620a中,后端设备110可利用其它合适的算法。例如,对于与源帧600a相关联的当前帧时间,后端设备110可确定与在目标空间105中的顶点的每一个(或充分涵盖在其中当前对象605可移动的潜在体积的顶点的子集)相关联的显示特性/属性。后端设备110可考虑源帧600a以及在相同帧时间处捕获的其它帧。接着,后端设备110可比较在当前帧时间处与顶点的每一个(或本文所述的顶点的子集)相关联的显示特性/属性和几何结构与在先前帧时间处的那些显示特性/属性和几何结构,以确定具有相同几何结构以及相同或大体上类似的特性/属性的顶点的群组是否自身已重新定位。

参考图1A-6B,图6B为在由后端设备110输出且从后端设备110传送到用户设备140n的基础数据225中的基础帧600b。在各种实施例中,基础帧600b可以是从后端设备110(具体地,分发服务器116)传送到用户设备140的视频流中的帧。在各种实施例中,视频流中的每个帧可包括与至少部分地示出在基础帧600b中的至少一个对象(例如,当前对象605)有关的位置信息(例如,其在当前编码位置620b处,其可对应于当前位置620a)。在各种实施例中,对象在基础帧600b中的位置(例如,当前编码位置620b和当前静止对象630b的位置)可以与对应的对象在源帧600a中的位置(例如,当前位置620a和静止对象630a的位置)相同。

通过用非限制性实例举例说明,编码当前位置620b(以及当前位置620a,其可以相同,假设基础帧600b和源帧600a是在相同帧时间处来自相同源数据的帧)可以通过基础帧600b的颜色方案表达。在一些实施例中,模型构建器115可按照顶点确定在当前帧时间处的当前对象605的位置,并且基于后端设备110和用户设备140n之间共享的位置方案分配对应的当前位置620a。当前位置620a(以及编码的当前位置620b)可以编码成基础帧600b(或视频流)的合适方面,包括颜色方案。

与基础帧600b的像素相关联的颜色可以以RGB颜色模型表示。用于每个像素的所得颜色可以基于对应的R(红)、G(绿)以及B(蓝)值来确定。对于R、G和B中的每个,可以赋值0-255的值。也可以对顶点赋值以确定其位置。例如,顶点在三维背景中可以由其x、y和z坐标表示。因此,RGB模型可以用于编码当前位置620a(和编码的当前位置620b)的位置数据。例如,在目标空间105中具有坐标(X,Y,Z)的顶点(对应于当前位置620a和编码的当前位置620b)可以被编码成R=X、G=Y以及B=Z。为了用非限制性实例说明,具有坐标(20,134,244)的顶点可以被编码成R=20、G=134、B=244。因此,在从后端设备110(例如,分发服务器116)到用户设备140n的视频流的基础帧600b中的像素中的至少一些可具有对应于蓝色调(R=20、G=134、B=244)的颜色。这些像素的识别可以定义在后端设备110和用户设备140n之间共享的编码颜色方案中。

在其中基础帧600b中的每个编码单个对象的位置数据的一些实施例中,每个像素可以用在对应于该对象的位置的RGB模型中的所得颜色来编码。在其中基础帧600b的每个编码单个对象的位置数据的其它实施例中,至少一个但不是所有像素可以用在对应于该对象的位置的RGB模型中的所得颜色来编码。其余像素可以用填充RGB值(例如,R=0、G=0、B=0)来编码。

假设256个RGB值被用于表示颜色同时可以使用在每个轴上以1000、10,000、100,000的量级的顶点坐标,缩放方案可以被实施以对应带有单个RGB值的两个或更多个连续的顶点坐标值。通过用非限制性实例举例说明,由2560X 2560X 2560个顶点界定的目标空间105可以被映射到RGB值,使得每10个坐标值可对应于1个RGB值。具有坐标值(18,539,2007)的顶点可对应于R=2、G=53以及G=200)。然而,此类缩放可不利地影响参考顶点(位置)的合成分辨率和准确性。

在一些情况下,偏移可以被用于使256个RGB值的范围移位,使得缩放可以不是必须的。在一些实施例中,组合方法可以用于最大化效率和灵活性。

在各种实施例中,两个或更多个对象的位置可以被编码在相同的基础帧(例如,基础帧600b)中。在基础帧中所有像素的至少一部分(例如,像素,在基础帧的区域内的所有像素等)可以被编码以对应于第一对象的位置,同时在基础帧中的所有像素的分离部分可以被编码以对应于第二对象的位置。基础帧上的特定区域和其代表的对象的身份之间的对应关系可以被共享为后端设备110和用户设备140n之间的元数据。

在一些实施例中,假设静止对象保持在相同位置中并且不需要对于新位置进行更新,具有为其编码的位置的对象可以仅是移动的对象。在其它实施例中,至少一个静止对象的位置(诸如但不限于当前位置620a和静止对象630a的位置)可以以类似方式编码。

在其它实施例中,基础帧可编码与在基础帧中未示出的对象有关的位置信息。只要指令(元数据)可以在后端设备110和用户设备140n之间共享,关于识别对应于基础帧中编码的编码位置的对象是可能的。

图7为示出根据各种实施例的与后端设备110有关的编码方法700的实例的过程流程图。参考图1A-7,首先在方框B710处,后端设备110可将初步信息传送给用户设备140n,其包括如下中的至少一种:顶点映射信息、三维对象文本数据、初始对象位置、静止对象信息、对象位置解码方案、其组合等。只要初步信息是准确的,用户设备140n可使用初步信息以用于多个帧。

顶点映射信息可包括顶点在目标空间105中的位置。用户设备140n可利用顶点映射信息以确定与每个顶点相关联的显示特性/属性到用户界面144的二维平面显示设备上的投影。顶点映射信息也可包括与特定帧(例如,源帧600a、基础帧600b等)的区域相关联的顶点。基于与帧相关联的摄影机姿态,可以利用用户设备140n(作为分布式计算框架的一部分)来执行顶点确定过程的至少一部分或区域-顶点映射确定过程。在此类情况下,用户设备140n可在本地存储(在存储器142处)来自其自身过程的结果同时接收来自后端设备110(例如,来自分发服务器116)或其它用户设备140a-140m的其余结果。

三维对象文本数据可包括在目标空间105内的静止或移动的已知对象的文本数据。在一些实施例中,当重建三维模型开始操作时,显示特性/属性可以被监控例如预定时段(例如,预定的帧数)。具有相同或大体上类似的几何结构和显示特性/属性的在一起移动的顶点的集合(作为整体)可以被确定是相同对象。假设对象可包括两个或更多个顶点,使得许多顶点可以在对象的外部文本内,文本封装可以由后端设备110(例如,模型构建器115)界定。对应的参考(位置)顶点可以被界定以所述方式表示整个对象。可以利用用户设备140n(作为分布式计算框架的一部分)以实施对象确定过程的至少一部分,其中模型构建器115将处理的至少一部分外包给用户设备140n。在此类情况下,用户设备140n可在本地存储(在存储器142处)来自其自身过程的结果同时接收来自后端设备110(例如,来自分发服务器116)或其它用户设备140a-140m的其余结果。

初始对象位置可对应于如与在当前帧之前的任何帧中的代表性参考顶点相关联的对象的位置。静止对象信息可包括由至少一个顶点界定的静止对象的文本数据和位置数据。静止对象信息可以以类似方式被确定为移动对象的对象信息(例如,文本数据和位置数据)。此外,以元数据形式的对象位置(编码和)解码方案也可以在后端设备110和用户设备140之间共享。位置解码方案可以存储在存储器142中并且由呈现模块145使用以解码对象的位置。在各种实施例中,对象可以从源帧(诸如源帧600a)中分割以允许从多个数据源(例如,数据源120a-120h)在不同的摄影机姿态处捕获独立对象。在一些实施例中,相同对象可以由两个或更多个数据源在预定摄影机姿态处(例如,在代表性角度处)捕获以允许关于对象的位置的额外的精确信息。可选地,整个帧可以被分割并被流式传输。

接着在方框B720处,后端设备110(例如,模型构建器115)可以以所述方式确定对象在目标空间105内的位置。如所述,对象的位置可以由至少一个参考顶点来表示。

接着在方框B730处,后端设备110(例如,模型构建器115)可将对象的确定位置(参考顶点坐标)编码为视频流的基础帧(例如,基础帧600b)中的RGB值,使得基础帧中的每个帧的至少一个像素的RGB值可对应于对象的位置。视频流可包括诸如但不限于基础数据225的数据。具体地,与表示位置的至少一个顶点相关联的三维坐标值可以以RGB格式编码。模型构建器115可采用(作为输入)对象的参考顶点和源数据215(例如,源帧600a)。模型构建器115可将源帧600a的颜色方案(在RGB模型中)重新编码成基础帧600b,其中基础帧600b的像素的至少一部分可具有对应于参考顶点的坐标的RGB值。

基础帧600b可以作为基础数据225从模型构建器115传送到分发服务器116。分发服务器116可继而将基础帧600b(和/或源帧600a)中继到用户设备140n。

假设多个对象可以存在(并随着时间推移移动)于目标空间105内,包括基础帧(诸如基础帧600b)的多个视频流可以在模型构建器115处从源帧(例如,源帧600a)重新编码且从后端设备110(例如,分发服务器116)流式传输到用户设备140a-140n。多个视频流中的每个可包括对于目标空间105中的至少一个对象的编码位置。

图8为示出根据各种实施例的与用户设备140n有关的解码方法800的实例的过程流程图。参考图1A-8,在方框B810处,用户设备140n可确定初步信息,包括以下中的至少一个:顶点映射信息、三维对象文本数据、初始对象位置、静止对象信息、对象位置解码方案、其组合等。在一些实施例中,用户设备140n可通过从后端设备110接收(经由用户设备140n的网络设备143)初步信息来确定此初步信息。在其它实施例中,初步信息中的至少一部分可以通过用户设备140n的处理器141在本地确定并且在本地存储在用户设备140n的存储器142处。

接着在方框B820处,用户设备140n可接收至少一个视频流(例如,基础数据225),每个视频流包括在RGB值中的至少一个对象的编码位置数据。

接着在方框B830处,用户设备140可解码在RGB值中的至少一个对象的编码位置数据。在一些实施例中,呈现模块145可基于初步信息(例如,对象位置解码方案)解码在RGB值中的至少一个对象的编码位置数据。

一旦已知至少一个对象的位置,呈现模块145可基于对象的位置(由参考顶点表示)和初步信息更新目标空间105的模型。存储在存储器142中的目标空间105的模型可以基于初步信息来更新,所述初步信息诸如顶点映射信息、三维对象文本数据、初始对象位置、静止对象信息等。

最后在方框B840处,用户设备140可至少部分地基于初步信息、解码位置数据和用户输入显示更新的模型。例如,用户可输入所期望的角度、视角、距离、角、位置等以从其查看目标空间105。用户可借助用户界面144的输入设备(例如,借助鼠标或触摸屏)指定用户输入。基于用户输入,呈现模块145可将对象纹理(例如,与顶点相关联的几何结构和显示特性/属性)从三维背景投影到二维平面显示。因此,投影的二维平面显示可通过用户界面114的用户设备显示。

在一些实施例中,基础数据225的视频流可以以诸如但不限于HTML5视频格式的合适形式分发。具体地,MP4或WebM可以被实施用于实时地流式传输到HTML5客户。由此,可以达到用户设备140a-140n的最宽范围,而不需要使用浏览器上的插件(例如,附加码)。当数据可以从CDN(分发服务器116)传输到用户设备140a-140n时,诸如CloudFront和Limelight的CDN可以用于允许使用用户设备140a-140n中一个向订阅者收费。因此,本文中所述的特定实施允许有效地将基础数据225全局地流式传输到用户设备140a-140n。

在一些实施例中,着色器处理可允许每个顶点在呈现管线中被访问且处理。对象的纹理可以被包装,其中纹理可对应一个位置(如通过顶点以所述方式表示)。当呈现时,呈现模块145可将来自更新的三维模型的纹理映射到在某一位置处的二维显示平面。由此,平网以着色器语言被封装在位置(参考顶点,其现在为二维背景中的区域)周围(或上方、下方、侧边)。

图9为示出根据各种实施例的与后端设备110相关的深度编码方法900的实例的过程流程图。参考图1A-9,首先在方框B910处,后端设备110可经由分发服务器116将初步信息传送到用户设备140n,初步信息包括至少顶点映射信息。

接着,在方框B920处,后端设备110可接收(经由后端设备110的网络设备113)来自数据源120a-120h中的一个的源数据215的源帧(例如,源帧600a),该源帧为颜色帧。接着在方框B930处,后端设备110可借助模型构建器115基于源帧以所述方式确定深度帧。接着在方框B940处,后端设备110(经由分发服务器116)可将源帧和深度帧传送到用户设备140n,作为对于目标空间105的三维重建的基础数据225。

图10为示出根据各种实施例的深度解码方法1000的实例的过程流程图。参考图1A-10,首先在方框B1010处,用户设备可经由网络设备143接收来自后端设备110的初步信息,初步信息包括至少顶点映射信息。

接着在方框B1020处,用户设备140n可接收(经由用户设备140n的网络设备143)来自后端设备110的源帧和深度帧,作为对于目标空间105的三维重建的基础数据225。

接着在方框B1030处,用户设备140n可基于深度帧确定至少一个对象的位置。在一些实施例中,假设深度视频可以以所述方式映射到顶点上,可以基于深度视频来确定与所识别对象相关联的顶点。例如,在着色器语言中,考虑到数据源的摄影机姿态输出源视频(深度视频可以由其获得)以及顶点映射信息,深度视频可被索引,如果需要的话。在其它实施例中,与深度视频内的所有对象相关联的位置和/顶点可以基于深度视频确定。

接着在方框B1040处,用户设备140n可基于源帧和初步信息确定与至少一个对象相关联的显示特性/属性。源帧中的区域可以基于(初步信息的)顶点映射信息被映射到特定顶点。与区域相关联的显示特性/属性可以被指定为相关联顶点的显示特性/属性。此类显示特性/属性可以偏移预定量(例如,视频的宽度的一半)。方框B1030和方框B1040可以同时或以任何次序顺序地执行。

接着在方框B1050处,呈现模块145可基于至少一个对象的位置、至少一个对象的显示特性/属性以及初步信息来更新目标空间105的模型。用于在帧中的至少一个对象的几何结构(如由如以着色器语言呈现的深度帧所确定的)和显示特性/属性(如由颜色的源帧确定的)可以例如在方框B1030和方框B1040处确定。在用户设备140n的存储器142中存储的模型可相应地被更新。可以根据更新的模型显示模型。基于将矩阵(例如,对象-摄影机矩阵)合适地投影到由用户设备140n的显示设备144输出的二维平面显示器上,呈现模块145可投影更新的模型(三维)。

用户设备140a-140n可实施浏览器(例如,Chrome)以执行本文中所述的过程。在特定实施例中,当可以使用HTML5标准时不需要插件。在一些实施例中,本地IOS应用可以被实施以执行本文所述的过程。浏览器实施和本地IOS实施两者均可消耗相同类型的实况流并经由实况流(例如,基础数据225)的着色译码在本地向用户设备140a-140n呈现。用户设备140a-140n可以连接到网页链接到分发服务器116或以其他方式由分发服务器116托管用于访问实况流。假设使用HTML5,具有充分计算能力的任何现代网络浏览器可访问CDN流以用于呈现。当与通过其可以提供适当顶点的重建算法耦合时,可以实现将在典型CDN上在目标空间105中的实况场景对数百万用户的呈现进行缩放。

本文所述的方法可以适用于二维子画面以及三维对象。图11为示出根据一些实施例的二维子画面重建方法1100的实例的过程流程图。例如,在方框B1110处,后端设备110(模型构建器115)可确定二维子画面在源数据(例如,源数据215)的源帧(例如,源帧600a)中的位置。假设已经确定顶点映射信息,在源帧600a上的区域可以被映射到至少一个顶点。因此,可以基于在源帧600a上的对应区域确定参考顶点(例如,在子画面的底部或中心)。因此,可以确定对于参考顶点的三维坐标。

接着在方框B1120处,后端设备110(例如,模型构建器115)可将所确定的子画面位置编码为视频流的基础帧(例如,基础帧600b)中的RGB值,使得基础帧的至少一个像素的RGB值可对应于子画面的位置。视频流可以是诸如但不限于基础数据225的数据。具体地,与表示子画面的位置的至少一个参考顶点相关联的三维坐标值可以以所述方式编码为RGB格式。

接着在方框B1130处,后端设备110的分发服务器116可将源帧和基础帧传送到用户设备140n用于呈现。在各种实施例中,二维子画面可以从源帧中被分割出,该源帧包括与子画面相关联的显示特性/属性。因此,用户设备140n可借助于本地存储的颜色方案和顶点映射信息,解码与来自源帧的子画面相关联的来自编码基础帧和显示特性/属性的子画面来更新位置。

在一些实施例中,呈现可以被聚合到对于用户设备140a-140n太多的输出视频中。在此类情况下,使用对等连接的层次结构可以将两个或更多个视频流组合成更大的视频流。最终的对等连接将生成所有用户设备140a-140n可消耗的4-5个输出视频。假设基于在US中的当前平均带宽,所有视频均具有2-5Mbps的比特率。可以基于上下文使用其它比特率。

参考图1A-11的上述各种实施例包括各种过程或任务的实现。在各种实施例中,此类过程或任务可以通过执行由计算机可读存储介质读取的计算机编码而实施。例如,在各种实施例中,一个或多个计算机可读存储介质存储一个或多个计算机程序,其当由处理器执行时使处理器执行如关于上述实施例中的处理器所述的过程或任务。另外,在各种实施例中,一个或多个计算机可读存储介质存储一个或多个计算机程序,其当由设备执行时使计算机执行如关于上述实施例中提及的设备所述的过程或任务。在各种实施例中,一个或多个计算机可读存储介质存储一个或多个计算机程序,其当由数据库执行时使数据库执行如关于上述实施例中的数据库所述的过程或任务。

因此,实施例包括程序产品,包括用于承载或具有存储于其上的计算机或机器可执行指令或数据结构的计算机可读或机器可读介质。此类计算机可读存储介质可以是可以由例如具有处理器的通用或专用计算机或其它机器访问的任何可用介质。通过举例的方式,此类计算机可读存储介质可包括半导体存储器、闪存储器、硬盘、光学盘(诸如光盘(CD)或数码通用盘(DVD))、磁存储器、随机访问存储器(RAM)、只读存储器(ROM)等。这些类型存储器的组合也可以被包括在计算机可读存储介质的范围内。计算机可执行程序代码可包括例如使计算机或处理机器执行某些功能、计算、行为等的指令和数据。

本文公开的实施例在所有方面应被视为说明性而非限制性。本公开并不局限于以上所述的实施例。在不背离本公开的精神和范围的情况下,可以对实施例作出各种修改和改变。落入权利要求书的等效含义和范围内的所有修改和改变都旨在处于本公开的范围内。

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