减小用户头戴式耳机的球形视频带宽的方法和设备与流程

文档序号:13043330阅读:263来源:国知局
减小用户头戴式耳机的球形视频带宽的方法和设备与流程

相关申请的交叉引用

本申请要求2015年5月27日提交的标题为“减小用户头戴式耳机的球形视频带宽的方法和设备”的美国专利申请序列号62/167,121的权益,该美国专利申请以引用的方式全部并入本文。

实施例涉及流式球形视频。



背景技术:

流式球形视频(或者其它三维视频)可以消耗大量的系统资源。例如,编码后的球形视频可以包括大量要传输的位,该大量的位可以消耗大量的带宽以及与编码器和解码器相关联的处理和存储器。



技术实现要素:

示例实施例描述了优化流视频、流式3d视频和/或流式球形视频的系统和方法。

在普遍方面中,一种方法,其包括:确定与三维(3d)视频相关联的至少一个优选观看视角;以第一质量对3d视频的与至少一个优选观看视角对应的第一部分进行编码;以及以第二质量对3d视频的第二部分进行编码,与第二质量相比,第一质量是较高的质量。

在另一普遍方面中,一种服务器和/或串流服务器,其包括:控制器,该控制器配置为确定与三维(3d)视频相关联的至少一个优选观看视角;以及编码器,该编码器配置为以第一质量对3d视频的与至少一个优选观看视角对应的第一部分进行编码,以及以第二质量对3d视频的第二部分进行编码,与第二质量相比,第一质量是较高的质量。

在又一普遍方面中,一种方法,其包括:接收对流视频的请求,该请求包括对与三维(3d)视频相关联的用户观看视角的指示;确定用户观看视角是否存储在观看视角数据存储中;在确定出用户观看视角被存储在观看视角数据存储中时,对与用户观看视角相关联的排名值进行增量;以及在确定出用户观看视角未被存储在观看视角数据存储中时,将用户观看视角添加至观看视角数据存储,并且将与用户观看视角相关联的排名值设定为一(1)。

实施方式可以包括以下特征中的一个或者多个:例如,该方法(或者服务器上的实施方式)可以进一步包括:将3d视频的第一部分存储在数据存储中;将3d视频的第二部分存储在数据存储中;接收对流视频的请求;以及从数据存储将3d视频的第一部分和3d视频的第二部分串流作为流视频。该方法(或者服务器上的实施方式)可以进一步包括:接收对流视频的请求,该请求包括对用户观看视角的指示;选择与用户观看视角对应的3d视频作为3d视频的编码后的第一部分;以及将3d视频的所选择的第一部分和3d视频的第二部分串流作为流视频。

该方法(或者服务器上的实施方式)可以进一步包括:接收对流视频的请求,该请求包括对与3d视频相关联的用户观看视角的指示;确定用户观看视角是否存储在观看视角数据存储中;在确定出用户观看视角被存储在观看视角数据存储中时,对与用户观看视角相关联的计数器进行增量;以及在确定出用户观看视角未被存储在观看视角数据存储中时,将用户观看视角添加至观看视角数据存储,并且将与用户观看视角相关联的计数器设定为一(1)。该方法(或者服务器上的实施方式)可以进一步包括:对3d视频的第二部分进行编码包括:在第一通路编码操作中使用至少一个第一服务质量qos参数,以及对3d视频的第一部分进行编码包括:在第二通路编码操作中使用至少一个第二服务质量qos参数。

例如,该确定与3d视频相关联的至少一个优选观看视角基于历史上观看的参考点和历史上观看的观看视角中的至少一个。与3d视频相关联的至少一个优选观看视角基于3d视频的观看者的方位、3d视频的观看者的位置、3d视频的观看者的点以及3d视频的观看者的焦点中的至少一个。该确定与3d视频相关联的至少一个优选观看视角基于默认观看视角,并且该默认观看视角基于显示装置的用户的特性、与显示装置的用户相关联的分组的特性、导演剪辑以及3d视频的特性中的至少一个。例如,该方法(或者服务器上的实施方式)可以进一步包括:以第一质量对3d视频的第二部分的至少一个部分进行迭代地编码;以及串流3d视频的第二部分的至少一个部分。

附图说明

将通过下面提供的详细说明和附图更充分地理解示例实施例,其中,用相似的附图标记表示相似的元件,该相似的元件仅仅作为说明而提供,因此不旨在限制示例实施例,并且其中:

图1a图示了根据至少一个示例实施例的球的二维(2d)表示。

图1b图示了作为2d矩形表示的球的2d表示的展开圆柱形表示。

图2至图5图示了根据至少一个示例实施例的用于对流式球形视频进行编码的方法。

图6a图示了根据至少一个示例实施例的视频编码器系统。

图6b图示了根据至少一个示例实施例的视频解码器系统。

图7a图示了根据至少一个示例实施例的视频编码器系统的流程图。

图7b图示了根据至少一个示例实施例的视频解码器系统的流程图。

图8图示了根据至少一个示例实施例的系统。

图9是可以用于实施本文所描述的技术的计算机装置和移动计算机装置的示意性框图。

应该注意,这些示意图旨在图示某些示例实施例中利用的方法、结构和/或材料的一般特性并且补充下文提供的书面描述。然而,这些附图并非按比例绘制而成,并且可能不能精确地反映任何给定实施例的精确结构或者性能特征,并且不应解释成限定或者限制由示例实施例包含的特性。例如,为了清楚起见,可以减小或者夸大结构元件的定位。在各种附图中使用的相似或者相同的附图标记旨在表示存在相似或者相同的元件或者特征。

具体实施方式

虽然示例实施例可以包括各种修改和可替代形式,但是经由附图中的示例示出了其实施例并且将在本文中进行更详细地描述。然而,应该理解,不旨在将示例实施例限于所公开的特定形式,而是相反,示例实施例应涵盖落入权利要求书的范围内的所有修改、等同物和可替代物。贯穿示意图的描述,相似的附图标记指的是相似的元件。

示例实施例描述了配置为基于球形视频的(由视频的观看者)优先(例如,导演剪辑、历史观看等)观看的部分来优化视频流、3d视频流、球形视频(和/或其它三维视频)流的系统和方法。例如,导演剪辑可以是由视频的导演或者制作者所选择的观看视角。导演剪辑可以基于导演或者制作者所选择的或者在导演或者制作者录制视频时查看的摄像机(多个摄像机)的视野。

球形视频、球形视频和/或球形图像的帧可以具有视角。例如,球形图像可以是地球的图像。内部视角可以是从地球的中心向外看的视野。或者内部视角可以处于望向太空的地球上。外部视角可以是从太空往下看地球的视野。作为另一示例,视角可以基于可视的图像的一部分。换言之,可视视角可以是观看者可以看见的视角。可视视角可以是在观看者前面的球形图像的一部分。例如,当从内部视角观看时,观看者可以躺在地面(例如,地球)上并且望向太空。观看者可以在图像中看到月亮、太阳、或者特定恒星。然而,虽然地面(观看者正躺在其上)包括在球形图像中,但地面在当前可视视角之外。在该示例中,观看者可以转过头,并且地面将包括在外围可视视角内。观看者突然转过头,并且地面将处于可视视角内,而月亮、太阳、或者恒星不在可视视角内。

外部视角的可视视角可以是球形图像的未(例如,被图像的另一部分)阻挡的一部分和/或球形图像的尚未在视野之外弯曲的一部分。球形图像的另一部分可以通过使球形图像移动(例如,旋转)和/或通过球形图像的运动而进入外部视角的可视视角。因此,可视视角是球形图像的在球形图像的观看者的可视范围内的一部分。

球形图像是不会相对于时间而发生变化的图像。例如,与地球相关的内部视角的球形图像可以在一个位置中示出月亮和恒星。而球形视频(或者图像序列)可以相对于时间而发生变化。例如,与地球相关的内部视角的球形视频可以示出(例如,由于地球的旋转)移动的月亮和恒星和/或跨越图像(例如,天空)的飞机轨迹。

图1a是球的二维(2d)表示。如图1a所示,球100(例如,作为球形视频的球形图像或者帧)图示了内部视角105、110、外部视角115和可视视角120、125、130的方向。可视视角120可以是球形图像的从内部视角110观看的一部分。可视视角125可以是球100的从内部视角105观看的一部分。可视视角130可以是球100的从外部视角115观看的一部分。

图1b图示了作为2d矩形表示的球100的2d表示的展开圆柱形表示150。在图像远离点a与b之间的中线垂直地(如图1b所示,上下)前进时,作为展开圆柱形表示150示出的图像的等距柱状投影可以呈现为拉伸图像。2d矩形表示可以分解成n×n个块的c×r矩阵。例如,如图1b所示,所图示的展开圆柱形表示150是n×n个块的30×16矩阵。然而,其它c×r个尺寸在本公开的范围内。块可以是2x2、2×4、4×4、4×8、8×8、8×16、16×16等个块(或者像素块)。

球形图像是在所有方向上相连的图像。因此,如果要将球形图像分解成多个块,则该多个块将在球形图像上是相连的。换言之,如2d图像中所示,不存在边缘或者边界。在示例实施方式中,相邻端块可以与2d表示的边界相邻。另外,相邻端块可以是与2d表示的边界上的块相连的块。例如,相邻端块与二维表示的两个或更多个边界相关联。换言之,因为球形图像是在所有方向上相连的图像,所以相邻端可以与图像或者帧中的(例如,一列块的)顶部边界或者底部边界相关联和/或与图像或者帧中的(例如,一行块的)左边界和右边界相关联。

例如,如果使用了等距柱状投影,则相邻端块可以是列或者行的另一端上的块。例如,如图1b所示,块160和170可以是彼此相应的相邻端块(按照列)。进一步地,块180和185可以是彼此相应的相邻端块(按照列)。更进一步地,块165和175可以是彼此相应的相邻端块(按照行)。观看视角192可以包括(和/或重叠)至少一个块。可以将块编码为图像的区域、帧的区域、图像或者帧的一部分或者子集、一组块等。在下文中,这组块可以称为拼接块或者一组拼接块。例如,在图1b中将拼接块190和195图示为四个块的组。将拼接块195图示为处于观看视角192内。

在示例实施例中,除了串流编码后的球形视频的帧之外,例如,还可以按照较高的质量(例如,较高的分辨率和/或较小的失真)对基于由观看者频繁观看的至少一个参考点(例如,至少一个历史上观看的参考点或者观看视角)选择的作为拼接块(或者一组拼接块)的观看视角进行编码,并且可以将该观看视角与球形视频的编码后的帧串流在一起(或者作为球形视频的编码后的帧的一部分)。因此,在播放期间,观看者可以在正在播放整个球形视频的同时查看解码后的拼接块(按照较高的质量),并且如果观看者的观看视角更改为由观看者频繁观看的观看视角,则整个球形视频也是可用的。观看者还可以改变观看位置或者切换至另一观看视角。如果另一观看视角包括在由观看者频繁观看的至少一个参考点中,则所播放的视频可以具有比一些其它观看视角(例如,处于不是由观看者频繁观看的至少一个参考点中的一个参考点上)更高的质量(例如,更高的分辨率)。按照较高的质量仅对图像或者帧的所选择的部分或者子集进行编码和串流的一个优点是具有如下优点:可以按照较高的质量对球形视频的所选择的图像或者帧进行解码和播放,而不需要按照较高的质量对整个球形视频进行编码、串流和解码,从而提高带宽使用和与编码器和解码器相关联的处理和存储器资源的效率。

在头戴式显示器(hmd)中,观看者通过使用左(例如,左眼)显示器和右(例如,右眼)显示器来体验对感知到的三维(3d)视频或者图像进行投影的视觉虚拟现实。根据示例实施例,将球形(例如,3d)视频或者图像存储在服务器上。可以从服务器对视频或者图像进行编码并且将视频或者图像串流至hmd。可以将球形视频或者图像编码成左图像和右图像,将该左图像和右图像与关于左图像和右图像的元数据一起封装(例如,在数据包中)。然后对左图像和右图像进行解码,并且左图像和右图像由左(例如,左眼)显示器和右(例如,右眼)显示器显示。

本文所描述的系统和方法可应用于左图像和右图像,并且贯穿本公开,根据用例称为图像、帧、图像的一部分、帧的一部分、拼接块等。换言之,从服务器(例如,串流服务器)传送至用户装置(例如,hmd),然后进行解码以供显示的编码数据可以是与3d视频或者图像相关联的左图像和/或右图像。

图2至图5是根据示例实施例的方法的流程图。由于执行存储在与设备(例如,如图6a、图6b、图7a、图7b和图8(如下所述)所示)相关联的存储器中并且由与设备相关联的至少一个处理器(例如,至少一个处理器605)执行的软件代码,可以执行针对图2至图5描述的步骤。然而,可以考虑可替代实施例,例如,体现为专用处理器的系统。虽然将下文描述的步骤描述为由处理器执行,但是这些步骤不需要由同一处理器执行。换言之,至少一个处理器可以执行下文针对图2至图5描述的步骤。

图2图示了用于存储历史观看视角的方法,其中,“历史”指的是先前由用户请求的观看视角。例如,图2可以图示在球形视频流中构建通常观看的观看视角的数据库。如图2所示,在步骤s205中,接收到对观看视角的指示。例如,拼接块可以由包括解码器的装置请求。拼接块请求可以包括基于与球形视频上的观看者的方位、位置、点、或者焦点相关的视角或者观看视角的信息。视角或者观看视角可以是用户观看视角或者hmd的用户的观看视角。例如,观看视角(例如,用户观看视角)可以是球形视频上的纬度和经度位置(例如,作为内部视角或者外部视角)。可以基于球形视频将视野、视角、或者观看视角确定为立方体的侧面。对观看视角的指示还可以包括球形视频信息。在示例实施方式中,对观看视角的指示可以包括关于与观看视角相关联的帧(例如,帧序列)的信息。例如,可以通过使用,例如,超文本传输协议(http)将视野(例如,纬度和经度位置或者侧面)从包括hmd的用户装置(与其相关联的控制器)传送至串流服务器。

在步骤s210中,确定观看视角(例如,用户观看视角)是否存储在观看视角数据存储中。例如,可以基于与观看视角或者用户观看视角相关联的信息来查询或者过滤数据存储(例如,观看视角数据存储815)。例如,可以基于观看视角的球形视频上的纬度和经度位置以及观看到观看视角的球形视频中的时间戳来查询或者过滤数据存储。时间戳可以是与球形视频的播放相关联的时间和/或时间范围。查询或者过滤可以基于空间上的接近度(例如,当前观看视角与给定的存储观看视角的接近程度)和/或时间上的接近度(例如,当前时间戳与给定的存储时间戳的接近程度)。如果查询或者过滤返回结果,则观看视角存储在数据存储中。否则,观看视角未存储中数据存储中。在步骤s215中,如果观看视角存储在观看视角数据存储中,则处理继续进行步骤s220。否则,处理在步骤s225中继续进行。

在步骤s220中,对与接收到的观看视角相关联的计算器或者排名(或者排名值)进行增量。例如,数据存储可以包括数据表(例如,数据存储可以是包括多个数据表的数据库),该数据表包括历史观看视角。数据表可以是键控(例如,每一个均是唯一的)观看视角。数据表可以包括观看视角的标识、与观看视角相关联的信息以及指示已经请求了观看视角多少次的计数器。每次请求观看视角时,可以对计数器进行增量。可以对存储在数据表中的数据进行匿名化。换言之,可以将数据存储为使得不存在对用户、装置、会话等的任何引用(或者标识)。同样,基于视频的用户或者观看者,存储在数据表中的数据是不可区分的。在示例实施方式中,在不识别用户的情况下,可以基于用户对存储在数据表中的数据进行分类。例如,数据可以包括用户的年龄、年龄范围、性别、类型或者角色(例如,音乐节或者人群)等。

在步骤s225中,将观看视角添加至观看视角数据存储。例如,观看视角的标识、与观看视角相关联的信息和设定为一(1)的计数器(或者排名值)可以存储在包括历史观看视角的数据表中。

在示例实施例中,可以利用较高的qos对与至少一个优选观看视角相关联的拼接块进行编码。qos可以是上面讨论的质量的实施方式(例如,定义质量的编码器可见输入)。例如,编码器(例如,视频编码器625)可以单独地对与3d视频相关联的拼接块进行解码。可以利用比与3d视频的剩余部分相关联的拼接块更高的qos对与至少一个优选观看视角相关联的拼接块进行编码。在示例实施方式中,可以通过使用第一qos参数(例如,在第一遍中)或者在第一编码通路中使用的至少一个第一qos参数对3d视频进行编码。另外,使用第二qos参数(例如,在第二遍中)或者在第二编码通路中使用的至少一个第二qos参数,与所述至少一个优选观看视角相关联的拼接块能够被编码能够被编码。在该示例实施方式中,第二qos是比第一qos更高的qos。在另一示例实施方式中,可以将3d视频编码成表示3d视频的多个拼接块。可以通过使用第二qos参数对与至少一个优选观看视角相关联的拼接块进行编码。可以通过使用第一qos参数对剩余的拼接块进行编码。

在可替代实施方式(和/或附加实施方式)中,编码器可以通过使用与用于生成3d视频帧的剩余部分的2d表示不同的投影技术或者算法对与至少一个优选观看视角相关联的拼接块进行投影。这些投影在帧的特定区域中可能会失真。因此,按照与球形帧不同的方式对拼接块进行投影可以提高最终图像的质量和/或更高效地使用像素(例如,较少的计算机计算或者用户眼睛的较小应变)。在一个示例实施方式中,可以在对拼接块进行投影之前使球形图像旋转,以便基于投影算法将拼接块定向在最小失真的位置中。在另一示例实施方式中,拼接块可以使用(和/或修改)基于拼接块的位置的投影算法。例如,将球形视频帧投影至球形的2d表示可以使用等距柱状投影,而将球形视频帧投影至包括要选择为拼接块的一部分的表示可以使用立方投影。

图3图示了用于串流3d视频的方法。图3描述了在实时流式事件等期间按照需要对流式3d视频进行编码的场景。如图3所示,在步骤s305中,接收到对串流3d视频的请求。例如,可用于串流的3d视频、3d视频的一部分、或者拼接块可以由包括解码器的装置请求(例如,经由用户与媒体应用的交互)。请求可以包括基于与球形视频上的观看者的方位、位置、点、或者焦点相关的视角或者观看视角的信息。基于视角或者观看视角的信息可以基于当前方位或者默认(例如,初始化)方位。例如,默认方位可以是3d视频的导演剪辑。

在步骤s310中,确定至少一个优选观看视角。例如,可以基于与观看视角相关联的信息来查询或者过滤数据存储(例如,观看视角数据存储815)。可以基于观看视角的球形视频上的纬度和经度位置来查询或者过滤数据存储。在示例实施方式中,至少一个优选观看视角可以基于历史观看视角。同样,数据存储可以包括数据表,该数据表包括历史观看视角。可以用已经请求了观看视角多少次来表示偏好。因此,查询或者过滤可以包括滤除低于阈值计数器值的结果。换言之,针对包括历史观看视角的数据表的查询设置的参数可以包括计数器或者排名的值,其中,查询的结果应该高于计数器的阈值。可以将包括历史观看视角的数据表的查询的结果设定为至少一个优选观看视角。

另外,默认优选观看视角(或者观看视角)可以与3d视频相关联。默认的优选观看视角可以是导演剪辑、感兴趣的点(例如,地平线、移动对象、优先对象)等。例如,游戏的对象可能要拆毁对象(例如,建筑物或者车辆)。可以将该对象标记为优先对象。可以将包括优先对象的观看视角表示成优选观看视角。除了历史观看视角或者历史观看视角的可替代物之外,还可以包括默认的优选观看视角。例如,默认方位可以是基于,例如,自动计算机视觉算法的一组初始的优选观看视角。视觉算法可以确定视频的具有运动或者复杂细节的优选观看视角部分、或者立体系统中的邻近对象来推断可能有趣的事物和/或存在于其它历史视频的优选视野中的特征。

其它因素可以用于确定至少一个优选观看视角。例如,至少一个优选观看视角可以是在当前观看视角(例如,最接近当前观看视角)的范围内的历史观看视角。例如,至少一个优选观看视角可以是在当前用户或者当前用户所属的分组(类型或者类别)的历史观看视角(例如,最接近历史观看视角)的范围内的历史观看视角。换言之,至少一个优选观看视角可以包括距离上接近于和/或时间上接近于所存储的历史观看视角的观看视角(或者拼接块)。可以将默认的优选观看视角存储在包括历史观看视角的数据存储815中或者存储在单独的(例如,附加的)数据存储(未示出)中。

在步骤s315中,基于至少一个优选观看视角,利用至少一个编码参数对3d视频进行编码。例如,可以将3d视频(或者其部分)编码为使得按照与3d视频的剩余部分不同的方式对包括至少一个优选观看视角的部分进行编码。同样,可以利用比3d视频的剩余部分更高的qos对包括至少一个优选观看视角的部分进行编码。因此,包括至少一个优选观看视角的部分在呈现在hmd上时可以具有比3d视频的剩余部分更高的分辨率。

在步骤s320中,串流编码后的3d视频。例如,拼接块可以包括在分组中以供传输。分组可以包括压缩视频比特10a。分组可以包括球面视频帧和编码后的拼接块(或者多个拼接块)的编码后的2d表示。分组可以包括报头以供传输。除了其它事物之外,报头可以包括指示由编码器在帧内编码中使用的模式或者方案的信息。报头可以包括指示用于将球形视频帧的帧转换为2d矩形表示的参数的信息。报头可以包括指示用于实现编码后的2d矩形表示的qos和编码后的拼接块的qos的参数的信息。如上文讨论的,与至少一个优选观看角度相关联的拼接块的qos可以与不与至少一个优选观看视角相关联的拼接块的qos不同(或者比不与至少一个优选观看视角相关联的拼接块的qos更高)。

可以通过使用优先级来实现串流3d视频。例如,在第一优先级中,可以串流低(或者最低标准)qos编码视频数据。这可以允许hmd的用户开始虚拟现实体验。因此,可以将较高qos视频串流至hmd并且替换(例如,存储在缓冲器830中的数据)先前串流的低(或者最低标准)qos编码视频数据。作为示例,在第一优先级中,可以基于当前观看视角来串流较高质量视频或者图像数据。在随后的优先级中,可以基于一个或者多个优选观看视角来串流较高qos视频或者图像数据。这可以继续,直到hmd缓冲器大体上仅包括高qos视频或者图像数据为止。另外,该分级流可以利用逐渐更高的qos视频或者图像数据进行循环。换言之,在第一次迭代之后,hmd包括以第一qos编码的视频或者图像数据,在第二次迭代之后,hmd包括以第二qos编码的视频或者图像数据,在第三次迭代之后,hmd包括以第三qos编码的视频或者图像数据,以此类推。在示例实施方式中,第二qos比第一qos更高,第三qos比第二qos更高,以此类推。

编码器625可以作为用于使球形视频可用于串流的设置过程的一部分而运行。可以将多个拼接块中的每一个存储在视图帧存储装置795中。可以将多个拼接块中的每一个索引为使得可以利用对帧(例如,时间依赖性)和视图(例如,视图依赖性)的引用来存储多个拼接块中的每一个。因此,所述多个拼接块中的每一个拼接块使得它们是时间和视图依赖性的、视角或者观看视角依赖性的,并且可以基于时间或者视图依赖性来调用多个拼接块中的每一个。

同样,在示例实施方式中,编码器625可以配置为执行循环,在循环中,选择帧并且基于观看视角将帧的一部分选择为拼接块。然后对该拼接块进行编码并且存储该拼接块。循环继续通过多个观看视角循环。当期望数目的观看视角(例如,围绕球形图像的垂直方向每隔5度和围绕球形图像的水平方向每隔5度)保存为拼接块时,选择新帧并且重复进程,直到球形视频的所有帧都具有针对其保存的期望数目的拼接块为止。在示例实施例中,可以利用比不是与至少一个优选观看视角相关联的拼接块的那些拼接块更高的qos对与至少一个优选观看视角相关联的拼接块进行编码。这仅仅是用于对拼接块进行编码并且保存拼接块的一个示例实施方式。

图4图示了用于存储编码后的3d视频的方法。图4描述了先前对流式3d视频进行编码并且存储流式3d视频以供未来串流的场景。如图4所示,在步骤s405中,确定3d视频的至少一个优选观看视角。例如,可以基于与观看视角相关联的信息来查询或者过滤数据存储(例如,观看视角数据存储815)。可以基于观看视角的球形视频上的纬度和经度位置来查询或者过滤数据存储。在示例实施方式中,至少一个优选观看视角可以基于历史观看视角。同样,数据表包括历史观看视角。可以用已经请求了观看视角多少次来表示偏好。因此,查询或者过滤可以包括滤除低于阈值计数器值的结果。换言之,针对包括历史观看视角的数据表的查询设置的参数可以包括计数器的值,其中,查询的结果应该高于计数器的阈值。可以将包括历史观看视角的数据表的查询的结果设定为至少一个优选观看视角。

另外,默认优选观看视角(或者观看视角)可以与3d视频相关联。默认的优选观看视角可以是导演剪辑、感兴趣的点(例如,地平线、移动对象、优先对象)等。例如,游戏的对象可能要拆毁对象(例如,建筑物或者车辆)。可以将该对象标记为优先对象。可以将包括优先对象的观看视角表示成优选观看视角。除了历史观看视角或者历史观看视角的可替代物之外,还可以包括默认的优选观看视角。其它因素可以用于确定至少一个优选观看视角。例如,至少一个优选观看视角可以是在当前观看视角(例如,最接近当前观看视角)的范围内的历史观看视角。例如,至少一个优选观看视角可以是在当前用户或者当前用户所属的分组(类型或者类别)的历史观看视角(例如,最接近历史观看视角)的范围内的历史观看视角。可以将默认的优选观看视角存储在包括历史观看视角的数据表中或者存储在单独的(例如,附加的)数据表中。

在步骤s410中,基于至少一个优选观看视角,利用至少一个编码参数对3d视频进行编码。例如,可以选择3d视频的帧,并且可以基于观看视角将帧的一部分选择为拼接块。然后对拼接块进行编码。在示例实施例中,可以利用较高的qos对与至少一个优选观看视角相关联的拼接块进行编码。可以利用比与3d视频的其余部分相关联的拼接块更高的qos对与至少一个优选观看视角相关联的拼接块进行编码。

在可替代实施方式(和/或附加实施方式)中,编码器可以通过使用与用于生成3d视频帧的剩余部分的2d表示不同的投影技术或者算法对与至少一个优选观看视角相关联的拼接块进行投影。这些投影在帧的特定区域中可能会失真。因此,按照与球形帧不同的方式对拼接块进行投影可以提高最终图像的质量和/或更高效地使用像素。在一个示例实施方式中,可以在对拼接块进行投影之前使球形图像旋转,以便基于投影算法将拼接块定向在最小失真的位置中。在另一示例实施方式中,拼接块可以使用(和/或修改)基于拼接块的位置的投影算法。例如,将球形视频帧投影至球形的2d表示可以使用等距柱状投影,而将球形视频帧投影至包括要选择为拼接块的一部分的表示可以使用立方投影。

在步骤s415中,存储编码后的3d视频。例如,可以将多个拼接块中的每一个存储在视图帧存储装置795中。可以将与3d视频相关联的多个拼接块中的每一个索引为使得利用对帧(例如,时间依赖性)和视图(例如,视图依赖性)的引用来存储多个拼接块中的每一个。因此,使得多个拼接块中的每一个均是时间和视图依赖性的、视角或者观看视角依赖性的,并且可以基于时间或者视图依赖性来调用多个拼接块中的每一个。

在示例实施方式中,可以利用不同的编码参数对3d视频(例如,与3d视频相关联的拼接块)进行编码并且存储3d视频。因此,3d视频可以以不同的编码状态存储。状态可以基于qos而不同。例如,可以存储3d视频作为多个拼接块,利用相同的qos对各个拼接块进行编码。例如,可以存储3d视频作为多个拼接块,利用不同的qos对各个拼接块进行编码。例如,可以存储3d视频作为多个拼接块,基于编码后的至少一个优选观看视角,利用qos对其中一些拼接块进行编码。

图5图示了用于确定3d视频的优选观看视角的方法。除了优选观看视角之外,3d视频的优选观看视角也可以基于3d视频的历史观看。如图6所示,在步骤s505中,确定至少一个默认的观看视角。例如,包括在数据存储(例如,观看视角数据存储815)中的数据表可以存储默认的优选观看视角。可以基于3d视频的默认指示来查询或者过滤数据存储。如果查询或者过滤返回结果,则3d视频具有相关联的默认观看视角。否则,3d视频不具有相关联的默认观看视角。默认的优选观看视角可以是导演剪辑、感兴趣的点(例如,地平线、移动对象、优先对象)等。例如,游戏的对象可能要拆毁对象(例如,建筑物或者车辆)。可以将该对象标记为优先对象。可以将包括优先对象的观看视角表示成优选观看视角。

在步骤s510中,确定基于用户特性/偏好/类别的至少一个观看视角。例如,hmd的用户可以基于先前使用了hmd而具有特性。特性可以基于统计观看偏好(例如,与在远处的对象相比,查看近旁的对象的偏好)。例如,hmd的用户可能已经存储了与hmd相关联的用户偏好。偏好可以由用户选择作为设置过程的一部分。偏好可以是通用的(例如,受运动的吸引)或者视频专用的(例如,更喜欢关注音乐表演的吉他手)。例如,hmd的用户可以属于分组或者类别(例如,年龄在15至22岁之间的男性)。例如,包括在数据存储(例如,观看视角数据存储815)中的数据表可以存储用户特性/偏好/类别。可以基于3d视频的默认指示来查询或者过滤数据存储。如果查询或者过滤返回结果,则3d视频具有基于用户的相关联的特性/偏好/类别的至少一个相关联的优选观看视角。否则,3d视频不具有基于用户的相关联的观看视角。

在步骤s515中,确定基于感兴趣的区域的至少一个观看视角。例如,感兴趣的区域可以是当前观看视角。例如,至少一个优选观看视角可以是在当前观看视角(例如,最接近当前观看视角)的范围内的历史观看视角。例如,至少一个优选观看视角可以是在当前用户或者当前用户所属的分组(类型或者类别)的历史观看视角(例如,最接近历史观看视角)的范围内的历史观看视角。

在步骤s520中,确定基于至少一个系统特性的至少一个观看视角。例如,hmd可以具有特征,该特征可以增强用户体验。一个特征可以是增强的音频。因此,在虚拟现实环境中,用户可能会被特定声音所吸引(例如,游戏用户可能会被爆炸声所吸引)。优选观看视角可以基于包括这些听觉线索的观看视角。在步骤525中,3d视频的至少一个优选观看视角基于前述观看视角确定和/或组合/它的子组合中的每一个。例如,可以通过合并或者结合前述查询的结果来生成至少一个优选观看视角。

在图6a的示例中,视频编码器系统600可以是或者包括至少一个计算装置,并且可以虚拟地表示配置为执行本文所描述的方法的任何计算装置。同样,视频编码器系统600可以包括各种部件,可以利用该各种部件来实施本文所描述的技术或者其不同或者未来版本。作为示例,将视频编码器系统600图示为包括至少一个处理器605以及至少一个存储器610(例如,非瞬时计算机可读存储介质)。

图6a图示了根据至少一个示例实施例的视频编码器系统。如图6a所示,视频编码器系统600包括至少一个处理器605、至少一个存储器610、控制器620和视频编码器625。至少一个处理器605、至少一个存储器610、控制器620和视频编码器625经由总线615通信地耦合。

可以利用至少一个处理器605来执行存储在至少一个存储器610上的指令,以便实施本文所描述的各种特征和功能,或者附加或者可替代的特征和功能。可以出于各种其它目的来利用至少一个处理器605和至少一个存储器610。具体地,至少一个存储器610可以表示可能会用于实施本文所描述的模块中的任何一个模块的各种类型的存储器和相关硬件和软件的示例。

至少一个存储器610可以配置为存储与视频编码器系统600相关联的数据和/或信息。例如,至少一个存储器610可以配置为存储与编码球形视频相关联的编解码器。例如,至少一个存储器可以配置为存储与选择球形视频的帧的一部分相关联的代码作为要与球形视频的编码分开进行编码的拼接块。至少一个存储器610可以是共享资源。如下文更详细地讨论的拼接块可以是在球形观看者(例如,hmd)的播放期间基于观看者的观看视角而选择的多个像素。多个像素可以是块、多个块或者宏块,该多个像素可以包括可以由用户看到的球形图像的一部分。例如,视频编码器系统600可以是较大系统(例如,服务器、个人计算机、移动装置等)的元件。因此,至少一个存储器610可以配置为将与其它元件相关联的数据和/或信息(例如,图像/视频服务、web浏览、或者有线/无线通信)存储在较大系统内。

控制器620可以配置为生成各种控制信号并且将控制信号传送至视频编码器系统600中的各种块。控制器620可以配置为生成控制信号以实施下文描述的技术。控制器620可以配置为根据示例实施例来控制视频编码器625以对图像、图像序列、视频帧、视频序列等进行编码。例如,控制器620可以生成与用于对球形视频进行编码的参数对应的控制信号。下文将结合图7a、图4a、图5a、图5b和图6至图9对与视频编码器625和控制器620的功能和操作相关的更多细节进行描述。

视频编码器625可以配置为接收视频流输入5并且输出压缩(例如,编码后的)视频比特10。视频编码器625可以将视频流输入5转换成离散视频帧。视频流输入5也可以是图像,因此,压缩(例如,编码后的)视频比特10也可以是压缩图像比特。视频编码器625可以进一步将各个离散视频帧(或者图像)转换成块矩阵(在下文中,称为块)。例如,可以将视频帧(或者图像)转换成块的16×16、16×8、8×8、8×4、4×4、4×2、2×2等矩阵,各个矩阵具有若干像素。虽然列出了这些示例矩阵,但是示例实施例不限于这些示例矩阵。

压缩视频比特10可以表示视频编码器系统600的输出。例如,压缩视频比特10可以表示编码后的视频帧(或者编码后的图像)。例如,压缩视频比特10可以已经准备好传输至接收装置(未示出)。例如,可以将视频比特传输至系统收发器(未示出)以便传输至接收装置。

至少一个处理器605可以配置为执行与控制器620和/或视频编码器625相关联的计算机指令。至少一个处理器605可以是共享资源。例如,视频编码器系统600可以是较大系统(例如,移动装置)的元件。因此,至少一个处理器605可以配置为在较大系统内执行与其它元件相关联的计算机指令(例如,图像/视频服务、web浏览、或者有线/无线通信)。

在图6b的示例中,视频解码器系统650可以是至少一个计算装置,并且可以虚拟地表示配置为执行本文所描述的方法的任何计算装置。同样,视频解码器系统650可以包括各种部件,可以利用该各种部件来实施本文所描述的技术或者其不同或者未来版本。作为示例,将视频解码器系统650图示为包括至少一个处理器655以及至少一个存储器660(例如,计算机可读存储介质)。

因此,可以利用至少一个处理器655来执行存储在至少一个存储器660上的指令,以便实施本文所描述的各种特征和功能,或者附加或者可替代的特征和功能。可以出于各种其它目的来利用至少一个处理器655和至少一个存储器660。具体地,至少一个存储器660可以表示可能会用于实施本文所描述的模块中的任何一个模块的各种类型的存储器和相关硬件和软件的示例。根据示例实施例,视频编码器系统600和视频解码器系统650可以包括在同一较大系统(例如,个人计算机、移动装置等)中。根据示例实施例,视频解码器系统650可以配置为实施针对视频编码器系统600描述的反向或者相反的技术。

至少一个存储器660可以配置为存储与视频解码器系统650相关联的数据和/或信息。例如,至少一个存储器610可以配置为存储与对编码后的球形视频数据进行解码的编解码器。例如,至少一个存储器可以配置为存储与对编码后的拼接块和单独编码的球形视频帧进行解码相关联的代码以及用于利用解码的拼接块替换解码的球形视频帧中的像素的代码。至少一个存储器660可以是共享资源。例如,视频解码器系统650可以是较大系统(例如,个人计算机、移动装置等)的元件。因此,至少一个存储器660可以配置为将与其它元件相关联的数据和/或信息(例如,web浏览或者无线通信)存储在较大系统内。

控制器670可以配置为生成各种控制信号并且将控制信号传送至视频解码器系统650中的各种块。控制器670可以配置为生成控制信号以便实施下文描述的视频解码技术。控制器670可以配置为根据示例实施例来控制视频解码器675以对视频帧进行解码。控制器670可以配置为生成与解码视频对应的控制信号。下文将对与视频解码器675和控制器670的功能和操作相关的更多细节进行描述。

视频解码器675可以配置为接收压缩(例如,编码后的)视频比特10输入并且输出视频流5。视频解码器675可以将压缩视频比特10的离散视频帧转换成视频流5。压缩(例如,编码后的)视频比特10也可以是压缩图像比特,因此,视频流5也可以是图像。

至少一个处理器655可以配置为执行与控制器670和/或视频解码器675相关联的计算机指令。至少一个处理器655可以是共享资源。例如,视频解码器系统650可以是较大系统(例如,个人计算机、移动装置等)的元件。因此,至少一个处理器655可以配置为在较大系统内执行与其它元件相关联的计算机指令(例如,web浏览或者无线通信)。

图7a和图7b分别图示了根据至少一个示例实施例的图6a中示出的视频编码器625和图6b中示出的视频解码器675的流程图。(上述)视频编码器625包括球形表示到2d表示块705、预测块710、转换块715、量化块720、熵编码块725、逆量化块730、逆转换块735、重构块740、环路滤波块745、拼接块表示块790和视图帧存储装置795。可以使用视频编码器625的其它结构变型对输入视频流5进行编码。如图7a所示,虚线表示几个块之间的重构路径,实线表示几个块之间的正向路径。

前述块中的每一个可以作为存储在与视频编码器系统(例如,如图6a所示)相关联的存储器中并且由与视频编码器系统相关联的至少一个处理器(例如,至少一个处理器605)执行的软件代码而执行。然而,可以考虑可替代实施例,例如,体现为专用处理器的视频编码器。例如,上述块中的每一个(单独和/或组合)可以是专用集成电路或者asic。例如,asic可以配置为转换块715和/或量化块720。

球形表示到2d表示块705可以配置为将球形帧或者图像映射至球形帧或者图像的2d表示。例如,能够将球投影到另一形状(例如,正方形、矩形、圆柱形和/或立方体)的表面上。例如,投影可以是等距柱状投影或者半等距柱状投影。

预测块710可以配置为利用视频帧一致性(例如,与先前编码的像素相比,尚未发生变化的像素)。预测可以包括两种类型。例如,预测可以包括帧内预测和帧间预测。帧内预测涉及相对于同一图片的相邻的先前编码的块中的参考样本来预测图片的块中的像素值。在帧内预测中,为了减少由预测转换编解码器的转换(例如,熵编码块725)和熵编码(例如,熵编码块725)部分编码的残差,从相同帧内的重构像素预测样本。帧间预测涉及相对于先前编码的图片的数据来预测图片的块中的像素值。

转换块715可以配置为将来自空间域的像素的值转换为转换域中的转换系数。转换系数可以与系数的通常与原始块大小相同的二维矩阵对应。换言之,可能存在与原始块中的像素一样多的转换系数。然而,由于转换,转换系数的一部分的值可以为0。

例如,转换块715可以配置为将残差(来自预测块710)转换成频域中的转换系数。通常,转换包括karhunen-loève转换(klt)、离散余弦转换(dct)、奇异值分解转换(svd)和非对称离散正弦转换(adst)。

量化块720可以配置为减少各个转换系数中的数据。量化可以涉及将相对较大的范围内的值映射至相对较小的范围中的值,从而减少表示量化转换系数所需的数据量。量化块720可以将转换系数转换成离散量子值,该离散量子值称为量化转换系数或者量化级别。例如,量化块720可以配置为将0添加至与转换系数相关联的数据。例如,编码标准可以在标量量化进程中定义128个量化级别。

然后由熵编码块725对量化转换系数进行熵编码。然后将熵编码系数连同对块进行解码所需的信息(诸如,所使用的预测类型、运动矢量和量化值)作为压缩视频比特10输出。可以通过使用各种技术(诸如,运行长度编码(rle)和零运行长度编码)对压缩视频比特10进行格式化。

提出了图7a中的重构路径以确保视频编码器625和视频解码器675(下文针对图7b描述的)使用相同的参考帧对压缩视频比特10(或者压缩图像比特)进行解码。重构路径执行与在解码进程期间发生的功能相似的功能,这些功能将在下文进行更详细地讨论,包括在逆量化块730处对量化转换系数进行逆量化并且在逆转换块735处对逆量化转换系数进行逆转换,以便产生导数残差块(导数残差)。在重构块740处,可以将在预测块710处预测的预测块添加至导数残差以创建重构块。然后可以向重构块应用环路滤波745以减少失真,诸如,块状伪影。

拼接块表示块790可以配置为将图像和/或帧转换成多个拼接块。拼接块可以是一组像素。拼接块可以是基于视图或者观看视角的多个像素。多个像素可以是块、多个块或者宏块,该多个像素可以包括可以由用户看到的(或者预计将被看到的)球形图像的一部分。球形图像的作为拼接块的部分可以具有长度和宽度。球形图像的这一部分可以是二维的或者大体上二维的。拼接块可以具有可变大小(例如,拼接块所覆盖的球的多少)。例如,可以基于,例如,观看者的观看视野的广阔性、与另一拼接块的接近度和/或用户转动其头部的速度对拼接块的大小进行编码和串流。例如,如果观看者不断地环顾四周,则可以选择较大的较低质量的拼接块。然而,如果观看者将重点放在一个视角上,则可以选择较小的更详细的拼接块。

在一个实施方式中,拼接块表示块790向球形表示到2d表示块705发起指令,从而使球形表示到2d表示块705生成拼接块。在另一实施方式中,拼接块表示块790生成拼接块。在任一实施方式中,然后单独地对各个拼接块进行编码。在又一实施方式中,拼接块表示块790向视图帧存储装置795发起指令,从而使视图帧存储装置795存储编码图像和/或视频帧作为拼接块。拼接块表示块790可以向视图帧存储装置795发起指令,从而使视图帧存储装置795存储拼接块与关于拼接块的信息或者元数据。例如,关于拼接块的信息或者元数据可以包括对图像或者帧内的拼接块位置的指示。与对拼接块进行编码相关联的信息(例如,分辨率、带宽和/或3d至2d投影算法)、与一个或者多个感兴趣的区域的关联性等。

根据示例实施方式,编码器625可以按照不同质量(或者服务质量(qos))对帧、帧的一部分和/或拼接块进行编码。根据示例实施例,编码器625可以分别按照不同的qos多次对帧、帧的一部分和/或拼接块进行编码。因此,视图帧存储装置795可以按照不同的qos存储表示图像或者帧内的相同位置的帧、帧的一部分和/或拼接块。同样,关于拼接块的前述信息或者元数据可以包括对qos的指示,按照该qos对帧、帧的一部分和/或拼接块进行编码。

qos可以基于压缩算法、分辨率、转换速率和/或编码方案。因此,编码器625可以对各个帧、帧的一部分和/或拼接块使用不同的压缩算法和/或编码方案。例如,编码后的拼接块可以处于比由编码器625进行编码的(与拼接块相关联的)帧更高的qos。如上文所讨论的,编码器625可以配置为对球形视频帧的2d表示进行编码。因此,可以利用比球形视频帧的2d表示更高的qos对拼接块(作为包括球形视频帧的一部分的可视视角)进行编码。qos可以在解码时影响帧的分辨率。因此,可以将拼接块(作为包括球形视频帧的一部分的可视视角)编码为使得与球形视频帧的解码的2d表示相比,拼接块在解码时具有更高的帧分辨率。拼接块表示块790可以指示qos,应该按照该qos对拼接块进行编码。拼接块表示块790可以基于帧、帧的一部分和/或拼接块是否是感兴趣的区域、是否在感兴趣的区域内、是否与种子区域相关联等来选择qos。下文更详细地描述了感兴趣的区域和种子区域。

上文针对图7a描述的视频编码器625包括所示的块。然而,示例实施例不限于所示的块。可以基于所使用的不同视频编码配置和/或技术来添加附加的块。进一步地,基于所使用的不同视频编码配置和/或技术,在上文针对图7a描述的视频编码器625中示出的各个块可以是可选的块。

图7b是配置为对压缩视频比特10(或者压缩图像比特)进行解码的解码器675的示意性框图。与先前讨论的编码器625的重构路径相似的解码器675包括熵解码块750、逆量化块755、逆转换块760、重构块765、环路滤波块770、预测块775、去块滤波块780和2d表示至球形表示块785。

可以通过熵解码块750(例如,通过使用上下文自适应二进制算术解码)对在压缩视频比特10内的数据元素进行解码以产生一组量化转换系数。逆量化块755对量化转换系数进行去量化,并且逆转换块760对去量化转换系数进行逆转换(通过使用adst)以产生可以与由编码器625中的重构级产生的导数残差相同的导数残差。

通过使用从压缩视频比特10解码的信息,解码器675可以使用预测块755来创建与在编码器675中创建的相同的预测块。可以将预测块添加至导数残差以由重构块765创建重构块。可以向重构块应用环路滤波块770以减少块状伪影。可以向重构块应用去块滤波块780以减少阻塞失真,并且将结果作为视频流5输出。

2d表示至球形表示块785可以配置为将球形帧或者图像的2d表示映射至球形帧或者图像。例如,将球形帧或者图像的2d表示映射至球形帧或者图像可以是由编码器625执行的3d-2d映射的求逆。

上文针对图7b描述的视频解码器675包括所示的块。然而,示例实施例不限于所示的块。可以基于所使用的不同视频编码配置和/或技术来添加附加的块。进一步地,基于所使用的不同视频编码配置和/或技术,在上文针对图7b描述的视频解码器675中示出的各个块可以是可选的块。

编码器625和解码器675可以配置为分别对球形视频和/或图像进行编码和解码。球形图像是包括球形组织的多个像素的图像。换言之,球形图像是在所有方向上相连的图像。因此,球形图像的观看者可以在任何方向(例如,上、下、左、右、或者它们的任何组合)上重新定位或者重新定向(例如,移动其头部或者眼睛)并且不断地看到图像的一部分。

在示例实施方式中,在编码器625中使用和/或由编码器625确定的参数可以由编码器405的其它元件使用。例如,用于对2d表示进行编码的运动矢量(例如,如预测中所使用的)可以用于对拼接块进行编码。进一步地,可以在编码器625与解码器405之间共享在预测块710、转换块715、量化块720、熵编码块725、逆量化块730、逆转换块735、重构块740和环路滤波块745中使用和/或由预测块710、转换块715、量化块720、熵编码块725、逆量化块730、逆转换块735、重构块740和环路滤波块745确定的参数。

可以将球形视频帧或者图像的一部分处理为图像。因此,可以将球形视频帧的一部分转换成(或者分解成)块(在下文中,称为块)的c×r矩阵。例如,可以将视频帧的一部分转换成块的16×16、16×8、8×8、8×4、4×4、4×2、2×2等c×r矩阵,各个矩阵具有若干像素。

图8图示了根据至少一个示例实施例的系统800。如图8所示,系统700包括控制器620、控制器670、视频编码器625、视频帧存储装置795和方位传感器835。控制器620进一步包括观看位置控制模块805、拼接块控制模块810和观看视角数据存储815。控制器670进一步包括观看位置确定模块820、拼接块请求模块825和缓冲器830。

根据示例实施方式,方位传感器835检测观看者眼睛(或者头部)的方位(或者方位的变化),观看位置基于检测到的方位来确定模块820确定视图、视角、或者观看视角,并且拼接块请求模块825传送视图、视角、或者观看视角作为对拼接块或者多个拼接块(除了球形视频之外)的请求的一部分。根据另一示例实施方式,方位传感器835基于如hmd或者显示器上呈现的图像平移方位来检测方位(或者方位的变化)。例如,hmd的用户可以改变焦点的深度。换言之,hmd的用户可以在方位发生改变或者未发生改变的情况下将焦点更改为距离在更远处的对象附近的对象(或者反之亦然)。例如,用户可以使用鼠标、轨迹板、或者手势(例如,在触摸敏感显示器上)来选择、移动、拖动、展开等如在显示器上呈现的球形视频或者图像的一部分。

可以将对拼接块的请求与对球形视频的帧的请求一起传送。可以将对拼接块的请求与对球形视频的帧的请求分开传送。例如,对拼接块的请求可以响应于导致需要替换先前请求的和/或排队的拼接块的改变的视图、视角、或者观看视角。

观看位置控制模块805接收对拼接块的请求并且对拼接块的请求进行处理。例如,观看位置控制模块805可以基于视图来确定帧中的拼接块或者多个拼接块的帧和位置。然后,观看位置控制模块805可以指示拼接块控制模块810来选择拼接块或者多个拼接块。选择拼接块或者多个拼接块可以包括将参数传递至视频编码器625。视频编码器625可以在球形视频和/或拼接块的编码期间使用该参数。可替代地,选择拼接块或者多个拼接块可以包括从视图帧存储装置795选择拼接块或者多个拼接块。

因此,拼接块控制模块810可以配置为选择基于观看球形视频的用户的视图或者视角或者观看视角的拼接块(或者多个拼接块)。拼接块可以是基于视图选择的多个像素。多个像素可以是块、多个块或者宏块,该多个像素可以包括可以由用户看到的球形图像的一部分。球形图像的这一部分可以具有长度和宽度。球形图像的这一部分可以是二维的或者大体上二维的。拼接块可以具有可变大小(例如,拼接块覆盖的球的多少)。例如,可以基于,例如,观看者的观看视野的广阔性和/或用户转动其头部的速度对拼接块的大小进行编码和串流。例如,如果观看者不断地环顾四周,则可以选择较大的较低质量的拼接块。然而,如果观看者将重点放在一个视角上,则可以选择较小的更详细的拼接块。

因此,方位传感器835可以配置为检测观看者眼睛(或者头部)的方位(或者方位的变化)。例如,方位传感器835可以包括加速度计(以检测运动)以及陀螺仪(以检测方位)。可替代地或者另外,方位传感器835可以包括在观看者的眼睛或者头部上聚焦的摄像机或者红外传感器,以确定观看者的眼睛或者头部的方位。可替代地或者另外,方位传感器835可以确定如在显示器上呈现的球形视频或者图像的一部分,以便检测球形视频或者图像的方位。方位传感器835可以配置为将方位和方位信息的变化传送至观看位置确定模块820。

观看位置确定模块820可以配置为相对于球形视频确定视图或者观看视角(例如,观看者当前正在查看的球形视频的一部分)。可以将视图、视角、或者观看视角确定为球形视频上的位置、点、或者焦点。例如,视图可能是球形视频上的纬度和经度位置。可以基于球形视频将视野、视角、或者观看视角确定为立方体的侧面。例如,可以通过使用超文本传输协议(http)将视图(例如,纬度和经度位置或者侧面)传送至观看位置控制模块805。

观看位置控制模块805可以配置为确定球形视频内的拼接块或者多个拼接块的观看位置(例如,帧。和帧内的位置)。例如,观看位置控制模块805可以选择以观看位置、点、或者焦点(例如,纬度和经度位置或者侧面)为中心的矩形。拼接块控制模块810可以配置为选择矩形作为拼接块或者多个拼接块。拼接块控制模块810可以配置为指示(例如,经由参数或者配置设置)视频编码器625对所选择的拼接块或者多个拼接块进行编码和/或拼接块控制模块810可以配置为从视图帧存储装置795选择拼接块或者多个拼接块。

要了解,可以将图6a和图6b中图示的系统600和650和/或图8中图示的系统800实施为下文针对图9描述的通用计算机装置900和/或通用移动计算机装置950的元件和/或扩展。可替代地或者另外,图6a和图6b中图示的系统600和650和/或图8中图示的系统800可以实施在与通用计算机装置900和/或通用移动计算机装置950分开的系统中,该系统具有下文针对通用计算机装置900和/或通用移动计算机装置950描述的一些或者全部特征。

图9是可以用于实施本文描述的技术的计算机装置和移动计算机装置的示意性框图。图9是可以与此处描述的技术一起使用的通用计算机装置900和通用移动计算机装置950的示例。计算装置900旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片式服务器、大型主机以及其它合适的计算机。计算装置950旨在表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话以及其它相似的计算装置。此处所示的部件、它们的连接和关系以及它们的功能仅仅旨在作为示例,并且不旨在限制本文档中描述的和/或要求的本发明的实施方式。

计算装置900包括:处理器902、存储器904、存储装置906、连接至存储器904和高速扩展端口910的高速接口908,和连接至低速总线914和存储装置906的低速接口912。各个部件902、904、906、908、910和912通过使用不同的总线互相连接,并且可以安装在公共主板上或者根据需要以其它的方式安装。处理器902可以对在计算装置900内执行的指令进行处理,包括存储在存储器904中或者存储装置906上以在外部输入/输出装置(诸如,耦合至高速接口908的显示器916)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多种存储器一起使用。同样,可以连接多个计算装置900,各个装置提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。

存储器904存储在计算装置900内的信息。在一种实施方式中,存储器904是一个或者多个易失性存储器单元。在另一实施方式中,存储器904是一个或者多个非易失性存储器单元。存储器904还可以是另一种形式的计算机可读介质,诸如,磁盘或者光盘。

存储装置906能够为计算装置900提供海量存储装置。在一种实施方式中,存储装置906可以是或者可以包含计算机可读介质,诸如,软盘装置、硬盘装置、光盘装置、或者磁带装置、闪速存储器或者其它类似的固态存储器装置,或者装置的阵列(包括存储区域网络或者其它配置中的装置)。计算机程序产品可以有形地体现为信息载体。计算机程序产品还可以包含指令,该指令在被执行时执行一种或者多种方法,诸如,上文描述的那些方法。信息载体是计算机可读介质或者机器可读介质,诸如,存储器904、存储装置906、或者在处理器902上的存储器。

高速控制器908管理计算装置900的带宽密集型操作,而低速控制器912管理较低的带宽密集型操作。这种功能分配仅仅是示例性的。在一种实施方式中,高速控制器908耦合至存储器904、显示器916(例如,通过图形处理器或者加速器)和高速扩展端口910,该高速扩展端口910可以接受各种扩展卡(未示出)。在实施方式中,低速控制器912耦合至存储装置906和低速扩展端口914。低速扩展端口914可以包括各种通信端口(例如,usb、蓝牙、以太网和无线以太网),可以通过网络适配器耦合至一个或者多个输入/输出装置,诸如,键盘、指向装置、扫描器、或者组网装置(诸如,交换机或者路由器)。

如图所示,可以利用多种不同的形式来实施计算装置900。例如,可以将计算装置900实施为标准服务器920,或者多次实施在一组这种服务器中。还可以将计算装置900实施为机架式服务器924的一部分。另外,计算装置900可以实施在个人计算机(诸如,膝上型计算机922)中。可替代地,来自计算装置900的部件可以与移动装置(未示出)(诸如,装置950)中的其它部件结合。各个这种装置可以包含计算装置900、950中的一个或者多个,并且整个系统可以由彼此通信的多个计算装置900、950组成。

除了其它部件之外,计算装置950还包括处理器952、存储器964、输入/输出装置(诸如,显示器954)、通信接口966以及收发器968。装置950还可以设置有用于提供额外的存储的存储装置,诸如,微型硬盘或者其它装置。各个部件950、952、964、954、966和968通过使用各种总线互相连接,并且一些部件可以安装在公共主板上或者根据需要以其它方式安装。

处理器952可以执行在计算装置950内的指令,包括存储在存储器964中的指令。可以将处理器实施为包括单独的和多个模拟和数字处理器的芯片的芯片集。处理器可以提供,例如,对装置950的其它部件的协调,诸如,用户界面的控制、由装置950运行的应用和通过装置950进行的无线通信。

处理器952可以通过耦合至显示器954的控制接口958和显示器接口956来与用户通信。例如,显示器954可以是tftlcd(薄膜晶体管液晶显示屏)或者oled(有机发光二极管)显示器,或者其它合适的显示技术。显示接口956可以包括用于驱动显示器954向用户呈现图形和其它信息的合适的电路系统。控制接口958可以接收来自用户的命令并且对命令进行转换以提交至处理器952。另外,外部接口962可以提供与处理器952的通信,以便使装置950能够与其它装置进行邻近区域通信。在一些实施方式中,例如,外部接口962可以提供有线通信,或者在其它实施方式中,可以提供无线通信,并且还可以使用多个接口。

存储器964存储在计算装置950内的信息。可以将存储器964实施为一个或者多个计算机可读介质、一个或者多个易失性存储器单元、或者一个或者多个非易失性存储器单元。还可以提供扩展存储器974并且通过扩展接口972将扩展存储器974连接至装置950,例如,该扩展接口972可以包括simm(单线存储器模块)卡接口。这种扩展存储器974可以为装置950提供附加存储空间,或者还可以存储装置950的应用或者其它信息。具体地,扩展存储器974可以包括用于执行或者补充上文描述的过程的指令,并且还可以包括安全信息。因此,例如,可以将扩展存储器974提供为装置950的安全模块,并且可以用允许安全使用装置950的指令来对其进行编程。另外,可以经由simm卡与附加信息(诸如,按照不可侵入的方式将识别信息放在simm卡上)一起来提供安全应用。

如下所述,例如,存储器可以包括闪速存储器和/或nvram存储器。在一种实施方式中,计算机程序产品有形地体现为信息载体。计算机程序产品包含指令,该指令在被执行时执行一种或者多种方法,诸如,上文描述的那些方法。信息载体是计算机或者机器可读介质,诸如,存储器964、扩展存储器974、或者在处理器952上的存储器。例如,可以通过收发器968或者外部接口962来接收该信息载体。

装置950可以通过通信接口966无线地通信,若需要,该通信接口966可以包括数字信号处理电路系统。通信接口966可以提供在各种模式或者协议下的通信,诸如,gsm语音通话、sms、ems、或者mms消息传送、cdma、tdma、pdc、wcdma、cdma2000、或者gprs等。例如,这种通信可以通过无线电频率收发器968发生。另外,短程通信可以通过使用,诸如,蓝牙、wifi、或者其它这种收发器(未示出)而发生。另外,全球定位系统(gps)接收器模块970可以将附加的与导航或者位置有关的无线数据提供给装置950,若合适,该无线数据可以供在装置950上运行的应用使用。

装置950还可以通过使用音频编解码器960进行可听地通信,该音频编解码器960可以接收来自用户的口头信息并且将口头信息转换为可用的数字信息。音频编解码器960还可以为用户生成可听见的声音,诸如,通过扬声器,例如,在装置950的听筒中的扬声器。这种声音可以包括来自语音电话的声音,可以包括录制的声音(例如,语音消息、音乐文件等),并且还可以包括通过在装置950上操作的应用生成的声音。

如图所示,可以利用多种不同的形式来实施计算装置950。例如,可以将计算装置950实施为蜂窝电话980,还可以将计算装置950实施为智能电话982、个人数字助理、或者其它类似的移动装置的一部分。

将一些上述示例实施例描述为作为流程图描绘的进程或者方法。虽然流程图将操作描述为顺序进程,但许多操作可以并行、并发、或者同时执行。另外,可以重新整理操作顺序。当进程的操作完成时,可以终止进程,但是也可以具有图中未包括的附加步骤。进程可以与方法、功能、过程、子例程、子程序等对应。

上面讨论的方法(其中一些方法由流程图说明)可以由硬件、软件、固件、中间件、微代码、硬件描述语言、或者它们的任何组合来实现。当以软件、固件、中间件、或者微代码实现时,可以将用于执行必要任务的程序代码或者代码段存储在机器或者计算机可读介质(诸如,存储介质)中。处理器可以执行必要任务。

为了描述示例实施例,本文所公开的特定结构细节和功能细节仅仅是代表性的。然而,示例实施例可以体现为许多替代形式,并且不应该解释为仅限于本文陈述的实施例。

要理解,虽然本文可以使用术语第一、第二等来描述各种元件,但这些元件不应受到这些术语的限制。这些术语仅仅用于区分各个元件。例如,在不脱离示例实施例的范围的情况下,第一元件可以被称为第二元件,并且类似地,第二元件可以被称为第一元件。如本文所使用的,术语“和/或”包括相关联的列出项中的一个或者多个列出项的任何和所有组合。

要理解,当将元件称为连接或者耦合至另一元件的元件时,可以直接将该元件连接或者耦合至其它元件,或者可以存在中间元件。相反,当将元件称为直接连接至或者直接耦合至另一元件的元件时,不存在任何中间元件。应该按照类似方式(例如,介于与直接介于的关系、相邻与直接相邻的关系等)来解释用于描述元件之间的关系的其它词汇。

本文使用的术语仅用于描述特定的实施例并且不旨在对示例实施例构成限制。如本文所使用的,除非明确表明,否则单数形式“一”、“一个”、“该”还旨在包括复数形式。要进一步理解,术语包括(comprises)、包括(comprising)、包括(includes)和/或包括(including),当用在本文中时,是指规定特征、整数、步骤、操作、元件和/或部件的存在,但是不排除一个或者多个其它特征、整体、步骤、操作、元件、部件和/或它们的分组的存在或者添加。

应该注意,在一些可替代实施方式中,所提到的功能/动作可以不按照图中提到的顺序发生。例如,根据所涉及的功能/动作,连续示出的两个图实际上可以并发执行或者有时可以按照相反顺序执行。

除非另有定义,否则本文使用的所有术语(包括技术和科学术语)具有与示例实施例所属领域的普通技术人员通常理解成的含义相同的含义。要进一步理解,术语(例如,在常用的字典中定义的术语)应该理解为具有与术语在相关领域背景下的含义一致的含义,并且除非明确如此定义,否则这些术语不会按照理想化或者过度正式的方式进行解释。

上述示例实施例的部分和对应的详细说明从软件或者对计算机存储器内的数据位的运算的算法和符号表示的视角来呈现。这些描述和表示是供本领域的普通技术人员用来有效地将他们的工作的实质传达给本领域的其它普通技术人员的描述和表示。如此处所使用的术语,且如通常使用的方式也,将算法设想为产生预期结果的步骤的自相容序列。该步骤是要求物理量的物理操纵的步骤。通常,尽管不是必须的,但是这些量采用能够被存储、传输、组合、比较和操纵的光学信号、电子信号或者磁信号的形式。已经证明,主要是为了共同使用的原因,将这些信号称之为比特、值、元素、符号、字符、项、数字等。

在上述说明性实施例中,对可以实施为程序模块或者功能进程的操作(例如,按照流程图的形式)的动作和符号表示的引用包括执行特定任务或者实施特定抽象数据类型并且可以通过使用现有结构元件处的现有硬件来描述和/或实施的例程、程序、对象、部件、数据结构等。这种现有硬件可以包括一个或者多个中央处理单元(cpu)、数字信号处理器(dsp)、专用集成电路、现场可编程门阵列(fpga)计算机等。

然而,应该牢记,所有这些和类似的术语都将与适当的物理量相关联并且仅仅是应用于这些量的方便的标签。除非特别指出,否则从讨论中显而易见的是,诸如显示的处理、或者计算、或者计算、或者确定等的术语,指的是计算机系统(或者相似的电子计算装置)的动作和进程,该计算机系统操纵表示为计算机系统的寄存器和存储器内的物理(例如,电子)量的数据并且将其转换为同样表示为计算机系统存储器或者寄存器或者其它这种信息存储、传输或者显示装置内的物理量的其它数据。

还要注意,实施示例实施例的各个方面的软件通常编码在某种形式的非瞬时程序存储介质上,或者通过某种类型的传输介质实施。程序存储介质可以是磁性存储介质(例如,软盘或者硬盘驱动器)或者光学存储介质(例如,光盘只读存储器或者cdrom),并且可以是只读或者随机存取存储介质。类似地,传输介质可以是双绞线对、同轴电缆、光纤、或者本领域已知的一些其它合适的传输介质。示例实施例不受任何给定实施方式的这些方面的限制。

最后,还应该注意,虽然随附权利要求书陈述了本文所描述的特征的特定组合,但是本公开的范围不限于在下文中所要求的特定组合,而是扩展为不论该特定组合是否已经明确地列举在此时的随附权利要求书中,都囊括本文所公开的特征或者实施例的所有组合。

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