基于感兴趣区域处理球面视频数据的制作方法

文档序号:17733372发布日期:2019-05-22 03:00阅读:199来源:国知局
基于感兴趣区域处理球面视频数据的制作方法

本发明涉及基于感兴趣区域处理球面视频数据,并且具体地但非排他地,涉及用于基于感兴趣区域处理球面视频数据的方法和系统、用于使得能够实现基于感兴趣区域来处理球面视频数据的数据结构,以及用于执行这样的方法的计算机程序产品。



背景技术:

相机和图像处理技术两者的进步不仅使得能够以越来越高的分辨率进行录制,而且能够将多个相机的输出拼接在一起。这样,一组相机可以一起在高于8kx4k的分辨率下以全360度进行录制。在诸如全向视频或360度视频之类的球面上投影的视频数据的表示可以被称为球面视频。球面视频提供了新的用户体验,诸如虚拟现实(vr)和增强现实(ar),其当前在该行业中增加势头。然而,流式传输高质量vr内容仍然带来了挑战,所述挑战包括流式传输高质量球面视频和在比特流中表示球面内容所需的高带宽要求。

在实践中,可用带宽将是效率与用户体验之间的权衡。一方面,需要以高质量并且同时以最小的等待时间向用户提供他们感兴趣的视点。这是一个极其难以满足的目标,因为尽管观看者观看球面视频的视点在空间上受到限制,但是用户可以连续地改变他们在球面流内的视点,并且从一个视点到另一个视点的过渡应当是平滑的。

例如,在一些场景中,或者在vr体验期间的某些时刻,用户可能想要以不同的沉浸和控制级别体验视频内容(或被提供以不同的沉浸和控制级别体验视频内容的可能性)。一个级别可能是“完全沉浸”或“活动”模式,其中用户佩戴vr头戴式视图器(或头戴式显示设备)并且沉浸在vr世界中,其中她具有与她正在经历的特定vr视频内容一起提供的所有自由度。其他沉浸和控制级别可能包括“影院”模式,其中用户佩戴vr头戴式视图器,通过该vr头戴式视图器,她沉浸在包含其中显示实际vr视频内容的屏幕或墙壁的“虚拟影院”中;“增强现实(ar)tv”模式,其中用户佩戴ar头戴式视图器并且看到vr视频内容好像其被投影到她的物理环境上(而其实际上被投影到她佩戴的眼镜上);“tv”模式,其中用户通过她的电视观看vr视频内容,并且不佩戴任何vr或ar头戴式视图器。

对于更“被动”的模式,诸如“影院”和“tv”模式,要显示给用户的球面视频流内的roi可以由内容提供商(“导演”)自动选择,因此为用户提供悠闲、愉快的vr体验。这样的被动模式可以被称为“定向模式”。相反,在完全沉浸模式中,例如通过使用头戴式显示设备在不同的方向上看,用户可以独自选择球面内容的部分。在下文中,该模式可以被称为“自由模式”。用户可以决定从主动自由模式切换到被动定向模式,并且反之亦然。可以在任何时刻允许这些过渡,或者可能仅在某些预定义场景当中(例如,在战斗场景与对话场景之间)改变时准许这些过渡。在任何一种情况下,切换都需要尽可能(在时间和空间上)无缝地发生,以便保证可接受的用户体验。

ep3028472a1描述了一种用于从自由导航模式无缝切换的方法,其中用户可以在分块的2d视频全景中自由地导航到该全景内部的预先确定的感兴趣区域(roi)的定向观看模式。定向roi的位置由定义了全景中的矩形的2d坐标来描述,使得渲染设备可以在自由模式与定向模式之间无缝切换。

然而,试图为球面视频数据实现相同的功能不是琐碎的练习,因为在编码视频数据之前,诸如全向且360度的视频之类的球面视频(其实际上是球形的)被使用2d投影而映射到一个或多个平面上。使用2d投影使得球面视频数据可以与现代视频编码标准一起使用。目前,没有标准方法来表示比特流中的球面视频,并且不同的2d投影(例如,“等距柱状(equirectangular)”、“圆柱形”、“立方体”等)是可能的,因此互操作性成为一个问题。此外,指示的roi将是失真的并且可能成碎片,这取决于被用来表示比特流中的球面内容的2d投影。

在2016年5月的具有题目“mpdsignallingof360contentpropertiesforvrapplications”的mpeg文献iso/iecjtcc1/sc29wg11mpeg2016/m38605中,提出了用于vr内容的所谓的空间关系描述(srd)。在该文献中,建议基于球面表示来描述视频图块(tile)的静态位置和大小。然而,使用该球面表示用于描述球形表面上的移动roi将导致具有取决于roi在球形表面上的位置的形状的roi,这使得图块选择过程困难且低效。

此外,首先将球面视频数据投影到传统的矩形2d视频帧格式上,以便可以使用已知的视频编解码器处理它们。可以使用不同的投影,并且仅在投影之后,将内容处理成可以被编码成球面内容的2d表示的图块。这使得可以基于不同投影来表示的球面内容的选择成为复杂的任务。

因此,根据上述内容,本领域需要用于基于感兴趣区域处理球面视频数据的改进方法和系统。



技术实现要素:

如本领域技术人员将领会的是,本发明的各方面可以被体现为系统、方法或计算机程序产品。因此,本发明的各方面可以采用下述形式:完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例,这些实施例在本文中通常可以被称为“电路”“模块”或“系统”。本公开中描述的功能可以被实现为由计算机的微处理器执行的算法。此外,本发明的各方面可以采用被体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有在其上体现(例如,存储)的计算机可读程序代码。

可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质可以是但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或者前述的任何合适的组合。计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一条或多条电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪速存储器)、光纤、便携式光盘只读存储器(cd-rom)、光学存储设备、磁存储设备或上述的任何适当的组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储程序以供指令执行系统、装置或设备使用或与其结合使用。

计算机可读信号介质可以包括:传播的数据信号,其具有体现在其中的计算机可读程序代码,例如,在基带中或作为载波的一部分。这样的传播信号可以采用各种各样的形式中的任何一种,包括但不限于电磁、光学或其任何合适的组合。计算机可读信号介质可以是任何计算机可读介质,其不是计算机可读存储介质并且可以通信、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用。

计算机可读介质上体现的程序代码可以使用任何适当的介质传输,该介质包括但不限于无线、线缆、光纤、电缆、rf等,或者前述的任何合适的组合。用于执行本发明的各方面的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,该语言包括诸如java(tm)、smalltalk、c++等的面向对象的编程语言和常规过程编程语言,诸如“c”编程语言或类似的编程语言。程序代码可以作为独立的软件包完全在用户的计算机上、部分地在用户的计算机上执行,部分地在用户的计算机上并且部分地在远程计算机上,或完全地在远程计算机或服务器上执行。在后一种情境中,远程计算机可以通过任何类型的网络连接到用户的计算机,该网络包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。

下面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。将理解的是,流程图图示和/或框图的每个块以及流程图图示和/或框图中的块的组合可以通过计算机程序指令实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器、特别是微处理器或中央处理单元(cpu)以产生机器,使得经由计算机的处理器、其他可编程数据处理设备或其他设备执行的指令创建用于实现流程图和/或一个或多个框图块中指定的功能/动作的装置。

这些计算机程序指令还可以存储在计算机可读介质中,该计算机程序指令可以指示计算机、其他可编程数据处理装置或其他设备以特定的方式起作用,使得存储在计算机可读介质中的指令产生制品,其包括实现流程图和/或一个或多个框图块中指定的功能/动作的指令。

计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上实行一系列操作步骤,以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或一个或多个框图块中指定的功能/动作的过程。

附图中的流程图和框图图示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能的实现方式的架构、功能和操作。在这方面,流程图或框图中的每个块可以表示代码的模块、区段或部分,其包括用于实现(一个或多个)指定的逻辑功能的一个或多个可执行指令。还应当注意的是,在一些替代实现方式中,块中提到的功能可以不按图中指出的次序发生。例如,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的次序执行,这取决于所涉及的功能。还将注意的是,框图和/或流程图图示的每个块以及框图和/或流程图图示中的块的组合可以由实行特定功能或动作的基于专用硬件的系统、或专用硬件和计算机指令的组合来实现。

本发明的目的是减少或消除现有技术中已知的至少一个缺点。在第一方面,本发明可以涉及由客户端设备处理球面视频的方法。

在实施例中,该方法可以包括:接收或生成感兴趣区域(roi)信息,所述信息与视频数据的球面表示中的roi相关联,该roi具有球形表面上的边界,该球面表示基于球面坐标系定义了球形表面上的球面视频数据的图像视图,该roi信息包括与roi的位置相关联的球面roi坐标;接收清单文件,该清单文件包括用于标识一个或多个图块流的一个或多个图块流标识符,每个图块流包括在球形表面上的图块的经变换的球面视频数据,经变换的球面视频数据由对球面视频数据进行变换产生,该变换至少包括将球面视频数据投影到平坦表面上,优选地为矩形平坦表面;每个图块定义球形表面上的子部分,该清单文件进一步包括空间描述信息,以用于发信号通知客户端装置关于在球形表面上的图块的位置的信息;接收投影信息,以用于发信号通知客户端装置关于将球面视频数据投影到平坦表面上的投影类型;接收和/或生成用于基于球面roi坐标来定义roi的边界的边界信息,该边界具有对于球形表面上的每个位置恒定的形状并且定义roi区;并且,使用roi区以基于空间描述信息和投影信息来选择一个或多个图块流,其中每个所选图块流定义了球上与roi区重叠的图块。

因此,通过使用基于一个或多个球面roi坐标描述的球面roi并且定义roi区和对于球形表面上的每个位置恒定的形状,可以选择与roi相关联的球面视频而不管用于表示比特流中的球面视频数据的投影类型。此外,roi区和roi的形状不改变的事实极大地简化了渲染与roi相关联的球面数据所需的图块流的选择。此外,它允许设计与视频处理设备(例如头戴式设备等等)的视场(fov)基本上一致的roi。

roi信息可以涉及“定向”视频的预先确定的roi坐标,其中导演已经选择了球面视频数据的预先确定的roi。这样,roi信息可以被用来在“定向”roi选择模式和“自由”roi选择模式之间无缝切换。

在实施例中,投影类型可以包括等距柱状投影、立方体投影、圆柱投影或其衍生物和/或其组合。

在实施例中,边界信息可以包括一个或多个另外的roi坐标,roi坐标和一个或多个另外的roi坐标定义了球面多边形的顶点,球面多边形的边界由在两个顶点之间的在球面上的线段定义,该线段是所述球的大圆或小圆的一部分。

在实施例中,边界信息可以包括一个或多个另外的roi坐标,其中roi坐标定义roi区的中心,并且其中一个或多个另外的roi坐标定义roi的边界上的一个或多个点,优选地,该边界具有预先确定的形状,包括以下各项中的至少一个:圆形、正方形、椭圆形、矩形、三角形。

在实施例中,边界信息可以包括:用于定义矩形形状的roi的宽度和高度参数,优选地,与roi的宽度平行的一侧是球的小圆的线段,并且与roi的高度平行的一侧是球的大圈的线段;或者,与其宽度平行的一侧和与其高度平行的一侧是球的大圆的线段。

在实施例中,投影信息被包括在清单文件中。在实施例中,投影信息可以包括投影描述符值,以用于标识被用于将球面视频数据投影到平坦表面上的投影类型。

在实施例中,清单文件可以进一步包括至少一个roi流标识符,优选地是url或uri,roi流标识符标识了包括时间上有序的球面roi坐标序列的数据流,该时间上有序的球面roi坐标将roi的位置定义为时间的函数。

在实施例中,清单文件可以进一步包括定义roi的边界和/或形状的roi区信息。

在实施例中,清单文件可以进一步包括roi数据格式信息,以用于发信号通知客户端装置roi流中的roi坐标的数据格式,优选地,所述信息涉及3d球面坐标样本条目。

在实施例中,接收roi信息可以包括:接收数据流,所述数据流包括球面roi坐标,优选地是时间上有序的球面roi坐标,roi坐标将roi的位置定义为时间的函数;并且,可选地,数据流包括定义了roi的边界和/或形状的roi区信息。

在实施例中,球面roi坐标可以至少包括偏转角和俯仰角。在另一实施例中,roi区信息可包括定义了球形表面上的roi的宽度和高度的宽度和高度参数。

在实施例中,客户端装置可以使用投影信息来选择图块选择算法,该图块选择算法被配置成选择与roi重叠的一个或多个图块。

在实施例中,选择一个或多个图块流可以进一步包括:使用投影信息将roi区变换成平面上的经2d投影的roi区;在选择定义了与roi区重叠的一个或多个图块的一个或多个图块流时使用经2d投影的roi区。

在实施例中,生成感兴趣区域(roi)信息可以包括:接收指示用户的头部、眼睛和/或身体运动的传感器信息;将该传感器信息变换成球面roi坐标。

在实施例中,自适应流式传输协议,优选地是mpeg-dash协议,被用于处理和流式传输所述球面视频数据,并且可选地处理和流式传输所述roi信息。

在一方面,本发明可以涉及一种用于处理球面视频数据的客户端设备,其包括:

计算机可读存储介质,其具有随其体现的程序的至少一部分,该计算机可读存储介质包括清单文件;以及,计算机可读存储介质,其具有随其体现的计算机可读程序代码,以及耦合到计算机可读存储介质的处理器,优选地是微处理器,其中响应于执行计算机可读程序代码,该处理器被配置成实行包括以下各项的可执行操作:接收包括用于标识一个或多个图块流的一个或多个图块流标识符的清单文件,每个图块流包括球形表面上的图块的经变换的球面视频数据,经变换的球面视频数据由对球面视频数据进行变换产生,该变换至少包括将球面视频数据投影到平坦表面上;每个图块定义球形表面上的子部分,该清单文件进一步包括空间描述信息,以用于发信号通知客户端装置关于在球形表面上的图块的位置的信息;接收投影信息,以用于发信号通知客户端装置关于将球面视频数据进行变换的投影类型;接收和/或生成用于基于球面roi坐标来定义roi的边界的边界信息,该边界具有对于球形表面上的每个位置恒定的形状并且定义roi区;并且,使用roi区来基于空间描述信息和投影信息来选择一个或多个图块流,其中每个所选图块流定义了球上与roi区重叠的图块。

在另外的方面,本发明可以涉及包括用于客户端设备的清单文件的非暂时性计算机可读存储介质,所述客户端设备被配置成基于清单文件中的信息来处理球面视频数据,所述清单文件包括计算机可读数据,该计算机可读数据包括:用于标识一个或多个移动视图视频流的一个或多个流标识符,移动视频流包括与预先确定的roi相关联的球面视频数据;一个或多个roi流标识符,优选地一个或多个url或uri,roi流标识符定义包括球面roi坐标、优选地在时间上有序的球面roi坐标的数据流,球面roi坐标定义移动视图视频流的预先确定的roi的位置。

在实施例中,计算机可读数据可以进一步包括:roi数据格式信息,以用于发信号通知客户端装置数据流中的roi坐标的数据格式,优选地,所述信息涉及3d球面坐标样本条目。

在实施例中,计算机可读数据可以进一步包括:用于标识一个或多个图块流的一个或多个图块流标识符,每个图块流包括球形表面上的图块的经变换的球面视频数据,经变换的球面视频数据是将球面视频数据进行变换产生,该变换至少包括将球面视频数据投影到平坦表面上;每个图块定义球形表面上的子部分,该清单文件进一步包括空间描述信息,以用于发信号通知客户端装置关于球形表面上的图块的位置的信息。

本发明还涉及一种程序产品,其包括软件代码部分,被配置用于当在计算机的存储器中运行时,执行如上所述的任何方法步骤。

将参考附图进一步说明本发明,附图示意性地示出了根据本发明的实施例。将理解的是,本发明决不限于这些具体实施例。

附图说明

图1描绘了根据本发明的实施例的被配置成渲染球面内容的视频处理设备。

图2描绘了根据本发明的实施例的用于球面视频的视频流式传输系统的示意图。

图3a-3d图示了根据本发明的各种实施例的用于处理球面视频数据的球形表面上的各种roi。

图4图示了根据本发明的又一实施例的用于处理球面视频数据的球形表面上的roi。

图5图示了根据本发明的实施例的球形表面上的roi及其在表面上的相关联的2d映射。

图6图示了根据本发明的实施例的球形表面上的roi及其在表面上的相关联的2d映射。

图7描绘了根据本发明的实施例的用于基于roi来渲染球面视频数据的系统。

图8a-8c图示了根据本发明的实施例的清单文件的结构。

图9图示了根据本发明的实施例的表面上的roi及其在表面上的相关联的2d映射。

图10a-10b图示了围绕球形表面上的roi的2d映射的限界框的构造。

图11a-11b图示了围绕球形表面上的roi的2d映射的限界框的边的确定。

图12a-12b图示了球形表面上的roi的不同2d映射。

图13图示了2d立方体映射方案。

图14描绘了在定向模式中操作的设备到在自由模式中操作的设备的过渡。

图15描绘了图示了可以与本公开中描述的实施例一起使用的示例性数据处理系统的框图。

具体实施方式

图1描绘了根据本发明的实施例的被配置成渲染球面内容的视频处理设备。特别地,图1描绘了佩戴视频处理设备的用户,例如,头戴式设备102,其被配置成从网络请求和接收球面内容,并且向用户104渲染球面内容。此处,球面内容涉及将视频内容球面表示到球形表面106上,其中视频数据在球形表面上的位置可以基于3d球面坐标系108来定义。视频处理设备被配置成处理球面视频数据并且渲染球面视频数据以用于显示。

这样的视频处理设备的非限制性示例是被用于虚拟现实和增强现实应用的头戴式显示器(hmd)。hmd可以包括一个或多个传感器,以用于跟踪用户的头部、眼睛和/或身体运动。传感器信息可以被用来确定视点110,即,视频处理设备的用户看向球形表面的3d空间中的方向。可以基于球面坐标系来表达视点。hmd的进一步特征在于视场(fov)112,即,定义了hmd能够针对特定视点和给定时刻显示的球面视频的部分的区。fov在下文中可以被称为球形表面上的感兴趣区域(roi)。

视频处理设备可以被配置成渲染内容的不同球面表示。例如,在第一模式中,它可以渲染视频内容的第一球面表示,其中用户可以通过在球形表面上移动roi来自由地选择球面视频。可以通过跟踪用户的头部、眼睛和/或身体移动来移动视频处理设备从而移动roi。为了避免需要将全部球面数据流式传输到视频处理设备,视频处理设备仅选择和检索与球上的roi的位置一致的球面视频数据以供渲染。为此,内容的第一球面表示可以包括:包括球的表面的不同空间部分(子区域)的视频数据的不同的流。可以通过确定与球上的roi一致的子区域的内容来选择内容。这样,用户能够在不需要高带宽的情况下自由地观看球面视频数据。

在第二模式中,视频处理设备可以被配置成渲染视频内容的第二球面表示。在该模式中,球面视频数据的预先确定的roi由导演预先选择并且呈现给用户。在此模式中,roi已预先选定,并且用户无法更改。视频处理设备可以基于roi坐标在第一模式与第二模式之间无缝切换,该roi坐标可以与第二球面表示(导演剪辑)的视频数据一起传输到视频处理设备。本发明使得能够以无缝方式在第一模式与第二模式之间切换。

图2描绘了根据本发明的实施例的用于球面视频的视频流式传输系统的示意图。特别地,图2描绘了视频流式传输系统200,其包括一个或多个媒体源204,例如一个或多个视频服务器,其被配置成基于预先确定的数据格式存储分块的球面视频数据202。

分块的球面内容可以被存储为单独的图块流文件2031-4,其中图块流的视频帧表示视频帧的子区域(图块),该视频帧表示球面视频内容到矩形平面上的二维投影(2d映射)。与分块的球面内容相关联的元数据(例如,图块流标识符(例如,url或uri)和不同图块流的不同子区域(图块)之间的空间关系可以存储在所谓的清单文件206中。下面更详细地描述分块内容的概念和分块的球面内容。

一个或多个媒体源被适配用于基于流式传输协议将视频数据流式传输到视频处理设备2181-3,其能够处理球面视频(在下文中被简称为视频处理设备)。媒体源可以是内容传递网络(cdn)的部分,其被配置用于将媒体数据有效地传递到大量视频处理设备。

每个视频处理设备可以包括:客户端设备2201-3,其被配置用于从网络请求球面内容,特别是诸如视频服务器204和/或视频高速缓存216之类的网络节点。视频处理设备进一步被配置用于接收所请求的视频数据,并且被用于缓冲媒体数据以输入给媒体引擎2221-3。媒体视频可以包括一个或多个处理器,例如图形处理单元(gpu),其可以执行一个或多个解码的实例以用于将媒体数据解码成视频帧。

在内容生成期间,可以基于预先确定的2d映射(例如,等距柱状投影)生成球面视频数据。因此,映射的球面视频的视频帧包括:矩形帧中的像素,其可以表示球面视频数据的等距柱状投影。可以对这些视频帧进行分块处理,其中视频帧在所谓的视频图块(或简称图块)中被在空间上划分。分块处理可以包括裁剪对应于视频帧中的图块的区的视频数据(像素),对裁剪的视频数据进行编码并且将编码的视频数据存储为视频文件。针对不同的图块重复该过程产生了一组视频文件,这些视频文件可以被单独访问并且流式传输到客户端设备。内容处理设备可以包括用于请求一个或多个图块流的客户端、用于解码不同图块流的视频数据的一个或多个解码器;以及用于将视频帧拼接成单个视频帧的渲染引擎。

替换地,在一些实施例中,可以基于支持空间分块的编解码器对球面视频数据的2d投影的视频帧进行编码。例如,hevc标准支持hevc图块,其中视频帧在空间上划分为图块网格。对这些hevc图块进行编码,使得每个图块可以由多核微处理器的不同核心处理。可以对与hevc图块相关联的媒体数据进行编码,使得它们对相同视频帧的其他图块的媒体数据不具有任何空间解码依赖性。另外,对与图块相关联的媒体数据进行编码,使得它们对早期或未来视频帧的其他图块的媒体数据不具有任何时间解码依赖性。在那种情况下,每个hevc图块的视频数据可以被存储为媒体源104上的图块轨道。这些图块轨道可以具有基于iso/iec14496-12iso基础媒体文件格式(isobmff)的数据容器格式,或者以iso基础媒体文件格式的nal单元结构化视频的iso/iec14496-15承载。在那种情况下,内容处理设备应当包括:支持图块的hevc客户端,其可以将所请求的图块流解码成单个视频帧。

可以使用不同的传输协议来将包括2d投影球面视频数据的编码比特流式传输到客户端设备。例如,在实施例中,http自适应流式传输(has)协议可以被用于将图块流传递到客户端设备。在那种情况下,图块流中的视频帧序列可以在时间区段中进行时间性划分,通常包括2-10秒的媒体数据。可以将这样的时间区段作为媒体文件存储在存储介质上。在实施例中,时间区段可以从对时间区段中的其他帧或其他时间区段(例如,i帧或其等效物)没有时间编码依赖性的媒体数据开始,使得解码器可以直接开始解码has区段中的媒体数据。可选地,初始化区段可以与媒体区段一起提供,具有的目的是利用关于媒体流的参数来初始化解码器,该参数例如空间分辨率、帧速率、编解码器配置文件和级别等……。

客户端设备可以被配置成选择与视频处理设备的视点相关联的一组图块。在实施例中,客户端设备可以基于所谓的清单文件206中的信息来实行该选择,即,包括用于客户端设备的元数据的一个或多个数据结构,以便从网络中选择和请求图块流。

清单文件可以包括流标识符(例如url),或用于确定这样的流标识符的信息。流标识符可以包括一个或多个图块流标识符。清单文件还可以包括空间关系信息,以用于在图块之间存在的空间关系上用信号通知客户端设备。在实施例中,图块流标识符可以与图块位置信息相关联,该信息即,用于向客户端设备用信号通知关于图块流的分块视频帧中的图块的位置。为了允许快速选择图块,图块位置信息可以以球坐标表示。

清单文件可以进一步包括关于一个或多个网络节点的位置信息,例如网络节点的一个或多个url和/或网络地址。这些网络节点可以涉及媒体源204和/或媒体高速缓存216,其被配置成将所请求的媒体数据传输到客户端设备。客户端设备可以使用清单文件来基于由视频处理设备提供给客户端设备的视点来选择一个或多个图块流。

媒体设备2181-3中的客户端设备2201-3可以接收并且缓冲图块的媒体数据,并且将媒体数据准备为一个或多个比特流以供输入到媒体引擎2221-3。媒体引擎可以包括一个或多个解码器,以用于将图块的媒体数据解码为视频帧。然后,将生成的视频帧转发到耦合于媒体引擎的渲染引擎2241-3。渲染引擎可以包括用于缓冲视频帧的帧缓冲器和用于将不同图块流的视频帧融合到单个视频帧226中的融合处理器(未示出),该单个视频帧226表示需要被变换成球面表示以供渲染的等距柱状版本的视场(fov)。

图3a-3d图示了根据本发明的各种实施例的用于处理球面视频数据的球形表面上的各种roi。特别地,图3a-3d图示了基于3d球面坐标系而定义的各种roi。

在实施例中,偏航-俯仰-滚转角度坐标系统(也被称为球面坐标系统)可以被用来表示球上的区域。此处,偏航的范围在0到360度之间,俯仰和滚转的范围在-90到+90之间。偏航轴的起始(0度)位置可以由内容提供者任意挑选,或者与基本方向一致,其中0和360度表示北、90度表示东、180度表示南并且270度表示西。对于俯仰轴,正值可以表示地平线以上的方向,并且负值表示地平线以下的方向。对于滚转轴,可以假设正值指示用户的左眼高于右眼,并且相反地,负值指示用户的头部以相反的方式倾斜(其中左眼低于右眼)。

在实施例中,三个角度参数(球面roi坐标)可以被用来指示roi在球上的位置。在实施例中,三个偏转俯仰滚转角(θ,,ψ)可以被用来指示roi的中心和取向。在该实施例中,roi的边界可以在客户端设备中预先配置,或者可以由客户端设备基于roi的中心和取向来确定。附加地,roi的边界可以基于关于roi需要被投影的位置的信息。

为了提供在视频处理设备的不同渲染模式之间提供平滑且无缝切换的能力,将3d球面坐标系内的完整roi用信号通知客户端设备可能是有利的。

在实施例中,球上的roi可以具有球面多边形的形状。对于这些多边形,它认为每一侧都被定义为大圆的线段。例如,图3a描绘了球面多边形,其在球上具有矩形的形状。在实施例中,可以使用多个角坐标来定义这样的矩形球面多边形。在实施例中,可以使用五个角坐标来定义球上的矩形roi,该角坐标包括:θ、、ψ,三个偏转-俯仰-滚转角度来指示roi的中心和取向;以及参数w、h:其中w表示roi的弧度宽度,并且h表示roi的弧度高度。

此处高度h可以被定义为穿过roi的中心并且位置等于ψ的大圆上的区段。类似地,宽度w可以被定义为位于穿过roi的中心并且与高度h相关联的大圆基本正交的大圆上的区段。

在另外的实施例中,roi可以被定义为球上的圆形roi,如图3b中描绘的。在这种情况下,四个角坐标(θ,,ψ,r)可以被用来描述球上的圆形roi,其中前3个坐标指示roi的中心和取向,并且半径r表示以弧度为单位的半径长度。

在实施例中,roi可以被定义为球上的椭圆形roi,如图3c中描绘的。椭圆形可以基于5个角坐标来定义,该角坐标包括:θ、、ψ,三个偏航-俯仰-滚转角度来指示roi的中心和取向,以及参数w、h,其中w和h表示球上的椭圆roi轴的弧度长度(以与矩形roi的w和h参数类似的方式)。

在又一实施例中,roi可以被定义为球上的通用多边形roi,如图3d中描绘的。

通用多边形可以具有n个边(n>=3)。球上的这样的roi可以由1+2n个角度坐标的列表来表征,其中一个坐标(例如,第一个坐标)表示roi的取向,并且另外2n个坐标对表示边的偏航角和俯仰角:(ψ,θ1、1、θ2,…θn,n,n>=3)。

图4图示了根据本发明的又一实施例的用于处理球面视频数据的球形表面上的roi。特别地,如图4中描绘的球上的roi具有矩形形状,其中与其宽度平行的侧是球的小圆的线段,并且与其高度平行的侧是球的大圆的线段。因此,在该实施例中,球上的roi的形状可以具有在大圆上不是弧(线段)的侧,而是在球上的其他类型的圆上:诸如小圆或rhumb线或它们的组合。

定义图3和4中图示的roi,使得roi的形状不根据球上的roi的位置而变化。这样,可以在球上定义一致形状的roi。这与球面视频数据的子区域(图块)的形状形成对比,如在mpeg文献iso/iecjtcc1/sc29wg11mpeg2016/m38605中所描述的,在用于vr应用的所谓的空间关系描述符(srd)中用信号通知客户端设备的球面视频数据,其中球上的图块被定义为所谓的经度-纬度矩形,其中,只有经度线(定义矩形的高度)是大圆弧,并且纬度线(定义正方形的宽度)不是(这些是小圆的线)。因此,基于vr的srd来定义roi将导致roi具有作为球上的roi的位置的函数的形状和面积不恒定的roi。球上的这样的区域不适合或至少不那么适合选择球面视频数据以用于渲染。

为了允许基于常规编码方案对球面视频进行编码,首先将球面视频处理成可以被输入到常规编码器的格式。由于常规编解码器只能处理平坦矩形视频帧,因此视频数据通常被映射到常规矩形视频帧格式的形状上。可以使用不同的映射。

例如,图5和图6图示了球形表面上的roi的示例,该roi用于选择球面视频及其在表面上的相关联的2d映射。这些图描绘了将球面内容所谓地等距柱状投影到矩形平面上。这样的映射产生包括球的前、左、右和后侧的视频图片,其中朝向北极和南极物体(像素)由于投影而得以在图片中畸变。在解码器大小上,需要将等距柱状投影往回变换成被投影到弯曲的(例如,球面)表面上的内容。

取决于球面视频生成的方式并且取决于vr应用的类型,可以使用其他不同类型的投影(2d映射)。映射的类型和映射所需的参数被称为映射信息。对于球面内容,仅需要播放与roi相对应的视频数据部分。roi表示球形表面上的区,因此为了使用roi以基于2d映射的视频数据来选择球面视频数据,首先需要将roi映射到2d平面。在图5的示例中,roi沿着球的赤道定位。对应的2d映射roi位于与沿赤道的位置相对应的位置。图6描绘了相同的roi,其现在以朝向球的北极的方向移动。在那种情况下,对应的2d映射roi也将移动到靠近北极的位置。由于2d映射,2d映射roi的形状根据roi在球上的位置而变化。在基于roi选择球面视频时,需要实现该效果。

此外,当使用其他更复杂的2d映射时,2d映射roi的形状将以不同的方式改变。因此,当基于roi的球面描述(即,球上的roi)来选择球面内容时,客户端设备将针对不同的2d映射使用不同的视频数据选择算法。因此,客户端设备需要知道被用于在比特流中表示球面视频数据的2d映射,以便选择适当的内容选择算法。如下面将更详细地描述的,基于清单文件中的元数据将被用于表示比特流中的球面视频数据的2d映射用信号通知给客户端设备。

图7描绘了根据本发明的实施例的用于基于roi来渲染球面视频数据的系统。如图7所示,该系统可以包括服务器702和客户端718。该服务器可以被配置成从客户端接收请求714,以用于将存储在存储介质710上的球面视频数据传输给客户端。为此,服务器可以包括:传输器708,该传输器708被配置成在响应消息716中将球面视频数据传输给客户端。如早前已经描述的,球面视频数据可以存储为一组图块流,其中每个图块表示球形表面上的预先确定的位置处的图块的球面视频数据。

服务器可以进一步包括:服务器roi模块704,其被配置成基于球面坐标系来确定在球形表面(roi区)上定义特定形状的区的时间特定roi。roi可以以这样的方式定义:roi的形状和面积不根据球上的roi的位置而变化(是恒定的)。服务器roi模块可以进一步被配置成将包括球面roi坐标的roi信息传送到客户端设备,该客户端设备可以是能够呈现球面视频数据的视频处理设备的部分。

此外,可以将与球面内容相关联的元数据发送到客户端设备。在实施例中,元数据可以在清单文件中发送到客户端设备,客户端设备可以将清单文件(例如,mpd)存储在存储器626中。清单文件可以包括用于标识一个或多个图块流的一个或多个图块流标识符。每个图块流包括球的表面的子部分(图块)的球面视频数据。这样,每个子部分可以在球上的预先确定的位置处定义球面图块。清单文件可以进一步包括空间描述信息,以用于发信号通知客户端装置关于球上的图块的(静态)位置的信息,以及用于发信号通知客户端装置关于2d投影的类型(例如,等距柱状、立方体等)的投影信息,其被用于在比特流中表示球面视频数据。

客户端设备可以进一步包括:处理器725,该处理器725被配置成从与客户端设备相关联的用户控制模块730接收roi信息和用户输入。用户控制模块可以从用户接收信号,其通知客户端设备用户想要以自由模式还是定向模式接收球面视频数据。基于该信息,处理器可以将客户端设置在期望的流式传输模式中,这可能需要从自由模式切换到定向模式,反之亦然。

球面内容的标识可以包括标识清单文件中的一个或多个图块流,其中标识的图块流的球面视频数据涵盖由roi标识的球面视频数据。为此,处理器可以使用图块选择算法,其可以取决于被用来表示比特流中的球面视频数据的投影类型。然后,客户端设备可以使用清单文件中的元数据,以便请求服务器将标识的球面视频数据(例如,一个或多个图块流)传输到客户端设备。

如果流式传输模式被设置成“自由模式”,则客户端接收用户控制信息(例如,与头部运动、身体运动等相关联的传感器信息)并且基于该信息来确定球的位置上的roi。然后,基于映射信息,客户端设备可以基于roi来选择用于选择球面视频数据的选择算法。

然后,客户端设备可以使用适当的选择算法来选择与roi相关联的球面视频数据。该选择可以包括确定2d映射的roi区并且将其与2d映射的球面视频数据一起使用,以便选择roi的球面视频数据。

如果流式传输模式被设置成“定向模式”,则客户端向服务器请求预先确定的roi的细节。一旦接收到预先确定的roi的坐标,客户端就可以继续标识在比特流中提供的视频中的roi的位置。

在实施例中,可以根据isobmff文件格式来格式化roi信息。特别地,该球面roi坐标可以基于isobmff文件格式来存储。在实施例中,可以定义样本条目,其包括隐式上限和下限:

aligned(8)class3dsphericalcoordinatessampleentry

  extendsmetadatasampleentry('3dsc'){

}

在该示例中,任意选择在于俯仰角被限制在-90度与90度之间,而偏航角被限制在0度与360度之间。在实施例中,样本条目可以提供已经针对其计算出角度的下限和上限:

aligned(8)class3dsphericalcoordinatessampleentry

  extendsmetadatasampleentry('3dsc'){

  unsignedint(16)reference_width;

  unsignedint(16)reference_height;

  unsignedint(4)shape_type;

}

在该实施例中,reference_widthreference_height参数分别给出可以定义roi坐标的球形表面的偏航角和俯仰角的宽度和高度。

参数shape_type定义表面球面上的区的形状。作为示例,我们可以考虑roi的以下形状类型:

在实施例中,为了有效存储,可以使用二进制角度方法(也被称为二进制角度测量或bam)来存储偏航角和俯仰角。即,二进制变量的整个范围被用来对值进行编码。这样,通过包装二进制整数的行为,可以精确地表示角度值,其始终保持在0和360的范围内。偏航角度的16位字段可以被选择使得允许360/2^16=0,0054931640625度的增量。对于俯仰角,一个16位的字段产180/2^16=0,00274662394140535591668574044404度的精度。替换地,可以使用较小的字段来更有效地编码角度以降低精度损失的成本。

3d球面坐标系中矩形roi的数据字段可遵循以下语法:

aligned(8)class3dshpericalcoordinatessample(){

  unsignedint(16)yaw_center;

  unsignedint(16)pitch_center;

  unsignedint(16)roll_center;

  unsignedint(16)width;

  unsignedint(16)height;

  unsignedint(1)interpolate;

  unsignedint(7)reserved;

}

此处,yaw_centerpitch_center参数分别表示球形表面上的roi的中心的水平和垂直坐标。roll_center参数将与基准轨道的媒体样本相关联的球形表面上的roi的取向发送信号。宽度和高度参数分别将与参考轨道的媒体样本相关联的球形表面上的区域的宽度和高度发送信号。此外,插值参数指示连续样本的时间连续性。当为真时,客户端应用程序可以线性插值先前样本与当前样本之间的roi坐标值。如果为假,则不使用插值。

在实施例中,客户端设备可以基于自适应流式传输协议、优选地mpeg-dash流式传输协议来处理roi信息。例如,当客户端设备已经接收到用于向用户显示某些球面内容的roi信息时,客户端设备需要能够检索被存储在网络中的球面内容中的roi的位置。

通常,当使用mpeg-dash时,客户端设备可以使用清单文件(mpd)以用于检索内容,包括该内容的球面表示。该清单文件可以定义用于标识图块流的一个或多个图块流标识符,每个图块流包括球形表面上的图块的经变换的球面视频数据,其中每个图块在球形表面上定义子部分。经变换的球面视频数据可以通过使球面视频数据进行变换而得到,其可以至少包括将球面视频数据投影到2d平面上。清单文件可以进一步包括空间描述信息,以用于发信号通知客户端装置关于球形表面上的图块的位置的信息。

此处可以假设的是,与基于vr的服务相关的所有内容可以被描述为mpd中的自适应集合。这些自适应集合可以包括:srd描述符,其遵循用于inmpeg文献iso/iecjtcc1/sc29/wg11mpeg2016/m38605的vr提议的扩展srd的语法,其公开了对srd的以下修改。

这个用于vr服务的srd包括supplementalproperty元素或essentialproperty元素内的参数space,其值指示球面视频表示的类型。该参数还可以暗示存在用以表征球面视频表示的细节的新参数(例如,圆柱形空间可以被表示为空间=圆柱形表示,并且可选地,表征圆柱体的一个或多个附加参数,例如,height=50)。

替换地,在实施例中,代替包括space参数的srd,可以在清单文件中使用单独的投影描述符,以用于向客户端设备发信号通知所使用的投影类型。

在坐标(object_x,object_y)表示空间子部分(图块)的中心位置的意义上,相对于常规srd,改变了用于vr的srd中的参数object_xobject_y的语义。

此外,参数object_xobject_y可以分别标识偏航角和俯仰角。偏航范围定义为从0到360,其中0=北,90=东,180=南,270=西,俯仰范围从-90°(最低点)到+90°(最高点)。此语义更好地反映了vr渲染系统表示用户视点的方式。这样,基于srd中的信息的流选择方法将允许更快地选择图块流,这对于提供高质量的体验是必不可少的。

参数object_widthobject_height可以表示物体在球形表面上的角度长度方面的宽度和高度。具体地说,物体的宽度由在穿过物体中心的平行线上测量的宽度的弧度表示,并且高度由在经过物体中心的子午线上测得的高度的弧度表示。

object_xobject_y参数和object_widthobject_height参数将每个图块流的视频数据与球形表面上的区域相关联,这是与其中根据本发明定义在球上的roi的方式相一致。

可以在清单文件中标识相同球面视频数据的不同分辨率层。在那种情况下,可以基于参数spatial_set_id来标识属于相同分辨率层的所有图块流。因此,该参数标识属于相同分辨率层的所有子部分,并且可以被用来从最低分辨率到最高分辨率对分辨率层进行排序,最低从值0开始。这样,客户端可以容易地标识属于相同分辨率层的所有图块流。

下面将参考图8a-8c描述基于自适应流式传输协议(诸如mpeg-dash流式传输协议)的roi信息处理的高级描述,图8a-8c图示了根据本发明的实施例的媒体呈现描述mpd的结构。

在第一步骤中,客户端设备可以选择其中提供球面内容的2d投影之一,如图8a中所示。在这种情况下,客户端设备可以例如基于srd中的信息(使用空间参数)或基于mpd中的单独的投影描述符来选择2d投影a。

在下文中,在第二步骤中,客户端设备可以选择定义了组合的球面内容的一个或多个自适应集合,其可以表示球形表面上包括roi的表面。例如,如果分块球面内容,roi与多于一个图块重叠,使得需要一组图块来形成与roi相关联的球面内容(例如,图8b中的自适应集合1、4和10)。

为此,客户端设备可以将roi的球面位置和大小与每个空间子部分的球面位置和大小进行比较,以便评估哪些空间子部分覆盖roi。

然后,在第三步骤中,如果找到多于一组(替换的)表示(例如,在如图8c所示的不同分辨率表示中),则客户端设备可以选择根据其自适应逻辑更适当的组。例如,它可以挑选产生最高视觉质量的组,或者相对于质量而言最接近先前示出组的组。选择也可能由编解码器或用户首选项驱动。在任何情况下,所选择的表示应当具有相同的属性(例如,相同的编解码器、分辨率、2d投影等)。例如,通过选择由相同的spatial_set_idsrd参数表征的所有自适应集合。

如果客户端支持多个2d投影并且想要推迟挑选哪个2d投影来下载,则上述第一步也可以作为第三步的子步骤来实行,基于其自适应逻辑(例如,圆柱形2d投影可以在具有相同视觉质量的情况下允许比等距柱状2d投影节省更多带宽)。

下面更详细地描述选择定义了组合的球面内容的一个或多个自适应集合的步骤,该自适应集合可以表示包括roi的球形表面上的表面。

图9图示了根据本发明的实施例的表面上的roi及其在表面上的相关联的2d映射。特别地,该图描绘了类似于参考图4描述的矩形roi。可以与等距柱状格式的球面视频相关联,该球面视频可以在不同的分辨率层中可用,在该示例中是两个分辨率层,其中最高分辨率层也在9个图块中进行空间分块。可以生成相同内容的不同呈现。低分辨率版本的球面视频数据和分块的高分辨率版本的球面视频数据两者都使用等距柱状投影产生。另外,用于流式传输球面视频数据的“导演剪辑”的“移动视图”视频流也可对客户端设备使用。

在一个实施例中,可以基于mpegdash标准来处理内容表示(球面和移动视图)并且将其流式传输到客户端设备。在那种情况下,视频内容可以在时间上被分段,并且时间区段可以被存储为时间分段的流并且在http服务器上可用。附加地,高分辨率层的视频内容还可以在空间上被分段并且存储为(时间上分段的)图块流。可以在清单文件中提供流的url,该清单文件在dash中被称为媒体呈现描述(mpd)。

在下面的表1中提供了根据本发明的实施例的mpd的示例。该示例中的mpd可以定义多个——在该示例中为12个自适应集合:一个自适应集合定义整个球的低分辨率表示,九个自适应集合定义形成高分辨率表示的九个图块流,一个自适应集合定义移动视图视频流,并且一个自适应集合定义与移动视图视频流相关联的roi坐标的一个自适应集合。这里,包含低分辨率表示的自适应集合将spatial_set_id设置为0,并且包含与高分辨率图块相对应的表示的九个自适应集合全部使得spatial_set_id设置为1。

在实施例中,可以在其@id属性是“view_coord”的表示中提供与移动视图视频流相关联的roi的坐标。该表示的@codecs属性指示“3dsc”指代如本公开中先前所定义的3d球面坐标样本条目。

在实施例中,坐标表示可以被标记有值为“cdsc”的@associationtype属性,并且经由@associationld属性与@id的表示“director_cut”相关联。表示“director_cut”包含动态srd。即,由于坐标是动态的,所以它们在坐标表示的区段中提供,并且srd包含该特定表示的@id以供客户端下载它们。

附加地,在实施例中,专用投影描述符可以被用于向客户端设备发信号通知投影类型。例如,在下面的表1中的mpd中,投影描述符“urn:mpeg:omaf:projection:2016”被用来用信号通知流中的球面视频数据是经变换的球面视频数据,其中变换至少包括使用等矩形投影类型将球面视频数据投影到2d平面上。

表1:根据本发明的实施例的mpd。

对于相同分辨率层的每个自适应集合,客户端设备可以实行以下步骤:

1)标识roi的限界框的边;

2)标识位于roi的水平和垂直边界内的图块。

图10a描绘了roi在2d等距柱状投影上的位置。为此,使用等距矩形投影将球面roi投影在2d平面上。

在下文中,客户端设备可以在2d投影中确定“限界框”,其包含如在球面坐标系中定义的roi。限界框可以被定义为最小的矩形,其侧与2d映射表示一致,其可以包含在3d球面空间中定义的roi。例如,在图10b中的等距柱状2d映射中,限界框是矩形,其侧平行于2d投影表示的侧。

在下文中,客户端设备可以标识roi的水平和垂直边界。

如上所述,矩形roi可以由以下角度参数表征:(θ,,ψ,w,h)。在图10a的roi的情况下,这些参数可以是(120,0,0,120,90),这意味着roi以(120,0)为中心,其滚转度为0,并且尺寸为(120,90)。

为了确定roi的限界框,首先计算roi的四个顶点的坐标和roi的边的中心的坐标。

为此,可以使用球面三角法规则,其包括以下步骤:

1.计算roi的顶点之一(例如顶点b)的坐标,作为顶点周围roi侧位于其上的两个大圆的交点(即,穿过区段ab的大圆和穿过区段bc的大圆)。

2.一旦已知顶点的坐标,则计算d,在roi的中心与顶点之间的球体上的距离,并且计算bearingofd,其是d区段与偏航轴形成的角度,如图11a所示(图示了具有顶点的roi,标识roi的侧的区段的中点,d、w和h突出显示)。

3.使用d和bearing来计算剩余顶点的坐标。

根据步骤1,需要计算两个相交的大圆。一个大圆圈由其上的两个点定义。作为穿过区段ab的大圆的第一点,选择e,并且作为穿过区段bc的大圆的第一点,选择f。

在下文中,基于roi的中心坐标、e和f与roi的中心的距离(分别为h/2和w/2)以及这些距离区段(分别为0和π/2)的位置(由roi的取向校正)的知识而使用haversine公式的反转来计算点e和f(分别是roi的侧ab和bc的中点)的坐标,由ψ给出:

这里r是球的半径。为简单起见,在该实施例中,选择具有圆周360的球,因为弧度被用作球上的距离的测量单位(例如,d以弧度计算)。如果坐标超出比例,则对这些坐标进行校正,以便适应偏航和俯仰比例。

然后,需要计算穿过区段ab的大圆上的第二点,以及穿过区段bc的大圆上的第二点。作为区段ab上的第二点,选择e2,被定义为穿过ab的大圆与穿过w区段的大圆之间的交点。作为区段bc上的第二点,选择f2,被定义为穿过bc的大圆与穿过h区段的大圆之间的交点(参见图11b)。由于它们已被定义的方式,区段oe2和of2的长度总是180,并且区段oe2和区段of2的位置分别是π/2和0,由roi的取向进行校正,由ψ给出。利用这些信息,再次使用haversine公式的反转来计算e2和f2的坐标。一旦已知e、e2、f、f2,就计算穿过ee2的大圆与穿过ff2的大圆之间的交点。这将给予我们顶点b的坐标。

为了确定步骤2,可以使用haversine公式来计算区段ob的长度d。haversine公式将区段(o和b)的边的坐标作为输入。区段oc、od和oa具有与ob相同的长度,例如,d。然后,余弦的球面定律可以计算ob的位置。对于该公式,需要三角形oeb的所有区段的长度。已知ob和oe(分别等于d和h/2),并且进而使用haversine公式根据e和b来计算eb。然后计算位置如下(术语—ψ再次考虑roi的取向。

为了确定步骤3,使用长度dbearing以及反转haversine公式来计算剩余顶点(c,d,a)的坐标:

本实施例中使用的公式可以作为公共编程语言(例如,javascript)的标准库的部分来提供。观察到的是,如果roi的形状没有及时改变,则长度d和位置在开始时只能计算一次(如果roi取向ψ改变,则可能需要校正位置的角度),从而使得计算移动的roi的顶点bcd和a的速度更快(因为它们都可以使用反转haversine公式计算,因此只有步骤3——如果roi的取向发生变化则还有步骤2——需要对该roi的所有后续位置实行)。

基于上述步骤来计算e和f的坐标。利用类似的方法,也可以计算h和g的坐标。

roi的水平和垂直边界(分别为hl,hh和vl,vh)为roi的“极端”值,即,最大和最小水平坐标以及最大和最小垂直坐标。最大垂直坐标是roi的顶点(abcd)以及roi的边的中心(efgh)的垂直坐标当中的最大坐标。最小垂直坐标是roi的顶点(abc)以及roi的边的中心(efgh)的垂直坐标当中的最小坐标。最小和最大水平边界以类似的方式计算。

在下文中,可以确定roi的水平和垂直边界内的图块。为了标识这些瓷砖,检查所有图块的中心的坐标,然后我们选择持有下述内容的那些图块i

-hl<=θi<=ηh,这意味着该中心具有大于或等于hl但小于或等于ηh的偏航坐标

-vl<=i<=vh,这意味着该中心具有小于或等于vl但大于或等于vh的节距坐标

这样,客户端设备可以选择图块1、2、4、5、7和8以进行检索。

图12a描绘了边界外roi的示例。在那种情况下,roi穿过2d映射的垂直边界。在计算roi的顶点时可以很容易地处理这种情境,因为a和d的水平坐标将大于b和c。可以通过创建两组水平边界来解决这种情况:

-水平边界1=(hl1,hl1)=(0,bc和f的水平坐标当中的最大水平坐标)

-水平边界2=(hl2,hl2)=(ah和f的水平坐标当中的最小水平坐标,360)。

图12b描绘了一个示例,其中roi的中心定位于极点中的一个,在这种情况下是北极。在这种情况下,在等距柱状映射上的roi的表示将如图12b中所示。

通过查看roi的中心的坐标或查看roi的顶点abc和d的坐标,可以轻松标识这种情境,这些坐标将全部具有相同的垂直坐标。在这种情况下,水平和垂直边界定义如下:

-(hl,hh)=(0,360)

-(v/,vh)=(顶点b的垂直坐标,90)。

对于以南极为中心的roi的情况,水平和垂直边界定义如下:

-(hl,hh)=(0,360)

-(v/,vh)=(-90,顶点b的垂直坐标)。

基于该信息,可以用与参考图11a和11b所描述的类似方式来选择图块。

在另外的示例中,可以基于非矩形roi来选择图块。为了标识非矩形roi的位置,首先需要确定限界框的位置。对于如参考图4a-4d定义的roi,可以确定限界框如下:

-圆形:框矩形具有与圆相同的中心,并且宽度和高度二者都等于2r

-椭圆:矩形具有与椭圆相同的中心,并且宽度和高度分别等于wh

-通用多边形:根据各个边的坐标标识

o最左侧的偏航坐标(θl),

o最右侧的偏航坐标(θr

o顶部俯仰坐标(t

o底部俯仰坐标(b

其中θl和θr对应于roi的水平边界,并且tb对应于垂直边界。

一旦已获得了限界框,客户端设备可以用与参照图11a和11b描述的相同的方式进行。另外注意到的是,对于通用多边形的情况,第一步在计算限界框时已经计算了第一步(标识了定点的坐标和水平/垂直边界)。此外,对于通用多边形的情况,限界框是近似的,不考虑多边形的边的中心的位置。

代替等距柱状投影,也可以使用其他类型的投影,例如,图13中描绘的立方体投影。图13描绘了在2d平面上通过立方体表示的球。在该实施例中,立方体映射被分块在12个图块中,其中仅6个图块持有内容。有可能重新布置立方体的侧以占据较小的表面,例如,2乘3个图块的网格,从而避免比特流中的“空”内容。

为了在立方体映射上找到roi的位置,可以执行以下步骤。遵循与上面参照图11a和11b所述相同的步骤来确定顶点abc和d以及roi边e、f、g和h的中心。接下来,需要找到点在立方表示内的位置。最后,(一个或多个)限界框——在立方表示上——其包括该roi需要来确定。

第一步包括:在立方体映射上标识顶点的位置和roi的边的中心。可以使用一种方法,其中首先通过偏航角将球面空间划分为四个区域:

•区域1:[0,45],[315,360]

•区域2:[45,135]

•区域3:[135,225]

•区域4:[225,315]。

这些区域中的每一个可以投影到立方体的四个侧面中的任一个(即,每个区域的中间部分)或立方体的顶侧(即,每个区域的顶部部分)或立方体的底侧(即,每个区域的底部部分)。如果其垂直坐标>55度,则点p将始终投影在立方体的顶侧上,并且如果<-55度,则其将总是投影到立方体的底侧。这导致以下规则:

-如果>55:则将点p分配给立方体的顶侧

-如果<-55:则将点p分配给立方体的底侧

-如果-55≤≤55:则根据上面定义的区域将点p分配给立方体的4个侧面之一:

o如果θ属于区域1,则将点p分配给立方体的左侧

o如果θ属于区域2,则将点p分配给立方体的前侧

o如果θ属于区域3,则将点p分配给立方体的右侧

o如果θ属于区域4,则将点p分配给立方体的后侧。

注意的是,对于被分配给立方体的侧面的点,它们实际上仍然有机会属于顶侧或底侧。可以在下一步中验证这种情况。

接下来,计算相对于点p的cubicvector(x,y,z)。立方矢量的计算取决于被分配给点p的立方体侧:

当计算相对于点p的立方矢量时,对于被分配给立方体的一个侧面的点p,值z>1指示点p已被错误分配,并且实际上属于顶部。同样地,如果z<-1,则p实际上属于底部。在这两种情况下,p被重新分配到正确的立方体侧,并且重新计算相对于p的立方矢量。

在立方体侧本身不被划分为图块的情况下,可以省略立方矢量的x和y分量的计算,因为我们只需要知道点p落在哪个立方体侧,并且对于这一点该计算立方矢量的z分量就足够了。

在下文中,可以计算(一个或多个)限界框的水平和垂直边界。

对于全部关注点,即,roi的顶点和roi的侧面的中心(a,b,c,d,e,f,g,h),重复前一段中的步骤。然后选择这些点所在的所有立方体侧。这些将是客户端设备向服务器请求的图块。

在立方体的侧面被依次划分成图块的情况下,我们可以根据以下公式计算关注点的像素坐标:

这里,edge是立方体的侧面的边的长度(以像素为单位)。

基于关注点的像素坐标,可以推断它们在哪些图块中(以与等距柱状实施例中所做的类似的方式)。利用类似的推理,还可以推断出位于这些关注点之间中的图块。

下面将更详细地描述从自由模式到定向模式的切换,反之亦然。

为了保证对用户的良好服务质量,重要的是使得能够实现从自由模式到定向模式的无缝切换,反之亦然。

可以区分两种类型的切换:“自由切换”和“定向切换”。自由切换意味着用户可以在任何时间在自由模式与定向模式之间切换,而定向切换意味着用户仅可以在vr体验期间的预定义时间(例如,当vr内容改变场景时)处在模式之间进行切换。

在“定向切换”情况下的一个重要方面是:内容提供商知道在媒体时间线中用户将被切换的时刻,因此它可以为其准备内容。

图14描绘了在定向模式中操作的设备到在自由模式中操作的设备的过渡。当vr媒体接近定向模式场景的结尾时,将执行过渡阶段。

在该过渡阶段期间,内容提供者可以准备内容(步骤1402),以便在虚拟或真实显示器上以偏航和滚转角度(例如0和0)的预定义值显示内容。同时,可以要求用户在虚拟世界中采用特定位置和头部取向(步骤1404),以便与内容的位置和取向一致(例如,其中头部位于显示器的前面,其中假想的投影仪将站立,并且其中头部的偏转和滚转角度等于内容的偏航和滚转角度,例如yaw=0和roll=0)。

在用户的位置和取向与内容在球上的位置和取向一致的情况下,可以发生到自由模式的实际过渡(步骤1406和1408)。用户可以经由用户界面来触发该过渡,例如按下按钮,或者一旦用户处于正确的位置和取向,就可以自动开始过渡。该过渡的特征可能在于在虚拟的沉浸式内容取而代之的情况下,虚拟影院(或真实世界的视图)缓慢淡出。过渡阶段的长度可以由内容提供商或客户端应用程序决定,或者甚至由用户设置。在该过渡之后,用户的身体和头部动作将决定所投影的vr内容。

以同样的方式,用户可以从自由模式切换到定向模式。当vr媒体接近可以在定向模式中体验到的场景的开始时,将执行过渡阶段。

在该过渡阶段期间,内容提供商将使定向内容在偏航和滚转角度的预定义值(例如,0和0)处可用。同时,可以要求用户在虚拟世界中采用特定的位置和头部取向,以便与要在虚拟或真实显示器上显示的定向内容的位置和取向一致(例如,其中头部位于虚拟世界的中心,其中拍摄定向视频的相机站立,并且其中头部的偏航和滚转角度等于内容的偏航和滚转角度,例如,yaw=0和roll=0)。

在用户的位置和取向与内容在球上的位置和取向一致的情况下,可以发生到定向模式的实际过渡。用户可以通过按下按钮来触发过渡,或者一旦用户处于正确的位置和取向,就可以自动开始过渡。该过渡的特征可能在于在虚拟影院(或真实世界的视图)取而代之的情况下,沉浸式虚拟内容缓慢淡出。过渡阶段的长度可以由内容提供商或客户端应用程序决定,或者甚至由用户设置。在该过渡之后,用户的身体和头部动作将不再对正在投影的vr内容产生影响。

在自由切换情况下,用户可以在媒体时间线中的任何时刻在定向模式与自由模式之间切换,因此在过渡阶段期间需要一些额外的步骤,以使得能够尽可能平滑地进行过渡。

当用户当前正在以定向模式体验视频流,并且指示切换到自由模式的意图时,将执行过渡阶段。

在过渡阶段期间,可以要求用户在虚拟世界中采用特定的位置和头部取向,使得真实或虚拟显示器正好在她的前面(例如,其中头部位于虚拟世界的中心,其中拍摄定向视频的相机站立,并且静止的头部的偏航和滚转角度,例如,yaw=0和roll=0)。

一旦调整了用户的位置和取向,就可以发生向自由模式的实际过渡。用户可以通过按下按钮来触发过渡,或者一旦用户处于正确的位置和取向,就可以自动开始过渡。该过渡的特征可能在于在偏航和滚转静止(或者无论当前用户头部的偏航和滚转坐标是什么)的情况下,内容到视点坐标的平移运动,以及在虚拟的沉浸式内容取而代之的情况下,虚拟影院(或者真实世界的视图)的缓慢淡出。过渡阶段的长度可以由内容提供商或客户端应用程序决定,或者甚至由用户设置。

在不可能使用户准备进行过渡的情况下,在过渡阶段期间,客户端应用程序可能还需要实行放大或缩小、在内容旁边平移和淡出非沉浸式元素。在该过渡之后,用户的身体和头部移动将决定所投影的vr内容。

当用户当前在自由模式中体验视频流并且指示切换到定向模式的意图时,将执行过渡阶段。

在过渡阶段期间,可以要求用户在虚拟世界中采用特定的位置和头部取向,以便与要在虚拟或真实显示器上显示的定向内容的位置和取向一致(例如,其中头部位于显示器的前面,其中假想的投影仪将站立,并且其中静止的头部的偏航和滚转角度为,例如,yaw=0和roll=0)。

一旦调整了用户的位置和取向,就可以发生到定向模式的实际过渡。用户可以通过按下按钮来触发过渡,或者一旦用户处于正确的位置和取向,就可以自动开始过渡。该过渡的特征可能在于在偏航和滚转等于要显示的那些定向内容的情况下,内容到视点坐标的平移移动,以及在虚拟影院(或真实世界的视图)取而代之的情况下,沉浸式虚拟内容的缓慢淡出。过渡阶段的长度可以由内容提供商或客户端应用程序决定,或者甚至由用户设置。

在不可能使用户准备进行过渡的情况下,在过渡阶段期间,客户端应用程序可能还需要实行放大或缩小、在内容旁边平移和淡出非沉浸式元素。

在过渡之后,用户的身体和头部移动将不再对正在投影的vr内容产生影响。

在提供实况内容时,用户可以在任何时间点加入该计划。然而,如由内容创建者决定的,整个场景中最有趣的视图很有可能随时间的推移而变化。因此,内容可能想要向客户端设备指示其应当开始渲染的球中的位置并且在任意位置开始。为此,应用程序还可以使用3d球面roi坐标来在调谐实况内容时定义初始视口。类似地,当一个用户仔细检查点播内容,应用程序也可以利用该信息,以便呈现给用户如由内容创建者所定义的最关注的视图。

图15是图示了可以如本公开中描述的那样使用的示例性数据处理系统的框图。数据处理系统1500可以包括通过系统总线1506耦合到存储器元件1504的至少一个处理器1502。这样,数据处理系统可以将程序代码存储在存储器元件1504中。另外,处理器1502可以执行经由系统总线1506从存储器元件1504访问的程序代码。在一个方面,数据处理系统可以被实现为适合于存储和/或执行程序代码的计算机。然而,应当领会的是,数据处理系统1500可以用包括处理器和存储器的任何系统的形式来实现,该处理器和存储器能够实行本说明书中描述的功能。

存储器元件1504可以包括一个或多个物理存储器设备,诸如本地存储器1508和一个或多个大容量存储设备1510。本地存储器可以指代随机访问存储器或通常在实际执行程序代码期间使用的(一个或多个)其他非持久性存储器设备。大容量存储设备可以被实现为硬盘驱动器或其他持久数据存储设备。处理系统1500还可以包括:一个或多个高速缓存存储器(未示出),其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储设备1510检索程序代码的次数。

被描绘为输入设备1512和输出设备1514的输入/输出(i/o)设备可选地可以耦合到数据处理系统。输入设备的示例可以包括但不限于例如位置跟踪器、键盘、诸如鼠标之类的指示设备、触摸屏等等。输出设备的示例可以包括但不限于例如监视器或(头戴式)显示器、扬声器等等。输入设备和/或输出设备可以直接或通过中间i/o控制器耦合到数据处理系统。网络适配器1516还可以耦合到数据处理系统,以使其能够通过中间私有或公共网络耦合到其他系统、计算机系统、远程网络设备和/或远程存储设备。网络适配器可以包括:数据接收器,以用于接收由所述系统、设备和/或网络传输到所述数据的数据;以及数据传输器,以用于将数据传输到所述系统、设备和/或网络。调制解调器、电缆调制解调器和以太网卡是可以与数据处理系统1550一起使用的不同类型的网络适配器的示例。

如图15所示,存储器元件1504可以存储应用程序1518。应当领会的是,数据处理系统1500可以进一步执行可以便于应用程序的执行的操作系统(未示出)。以可执行程序代码的形式实现的应用程序可以由数据处理系统1500执行,例如由处理器1502执行。响应于执行应用程序,数据处理系统可以被配置成实行要在本文中进一步详细描述的一个或多个操作。

在一个方面,例如,数据处理系统1500可以表示客户端数据处理系统。在那种情况下,应用程序1518可以表示客户端应用程序,该客户端应用程序在被执行时将数据处理系统1500配置成实行本文中参考“客户端”描述的各种功能。客户端的示例可以包括但不限于个人计算机、便携式计算机、移动电话等等。

在另一方面,数据处理系统可以表示服务器。例如,数据处理系统可以表示(http)服务器,在这种情况下,应用程序1518在被执行时可以将数据处理系统配置成实行(http)服务器操作。在另一方面,数据处理系统可以表示如本说明书中提到的模块、单元或功能。

本文中使用的术语仅出于描述特定实施例的目的,而不意图限制本发明。如本文中使用的,单数形式“一”、“一个”和“该”也意图包括复数形式,除非上下文另有明确说明。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整体(interger)、步骤、操作、元件和/或组件的存在,但不排除存在或者添加一个或多个其他特征、整体、步骤、操作、元素、组件和/或其组。

以下权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物意图包括用于结合如具体要求保护的其他要求保护的元件来实行功能的任何结构、材料或动作。已经出于说明和描述的目的呈现了对本发明的描述,但是并不意图穷举或将本发明限于所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变化将对于本领域普通技术人员是显而易见的。挑选和描述实施例,以便最好地解释本发明的原理和实际应用,并且使本领域其他普通技术人员能够在如具有适合于预期的特定用途的各种修改的情况下理解用于各种实施例的本发明。

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