掌桥专利:专业的专利平台
掌桥专利
首页

连续预测域

文献发布时间:2023-06-19 09:30:39


连续预测域

本申请是分案申请,原案的申请号是201580035476.1,申请日是2015年10月20日,发明名称是“连续预测域”。

相关申请的交叉引用

本申请要求2014年10月20日提交的,名为“CONTINUOUS PREDICTION DOMAIN(连续预测域)”的U.S.非临时专利申请No.14/518,956、2014年10月20日提交的,名为“COMPRESSING ANDREPRESENTING MULTI-VIEW VIDEO(压缩并表示多视图视频)”的U.S.非临时专利申请No.14/519,006、2014年10月20日提交的,名为“STREAMING THE VISIBLEPARTS OF A SPHERICAL VIDEO(流传送球形视频的可见部分)”的U.S.非临时专利申请No.14/518,710、2014年10月20日提交的,名为“MAPPING SPHERICAL IMAGE TO 2DREPRESENTATIONS(将球形图像映射至2D表示)”的U.S.非临时专利申请No.14/518,779的优先权,其全部内容作为引用并入于此。

技术领域

实施例涉及编码和解码球形图像和球形视频。实施例涉及流传送球形视频。

背景技术

通常,常规二维(2D)帧内预测方案选择待编码的块的左边和上方的1,2,3,…,n像素边界,以用于根据上或左重构块来确定残差。此外,在帧间预测方案中,使用评价函数,在至少一个参考图片的搜索范围内搜索与待编码的块类似的参考块。然而,沿2D帧或图像的边界,在帧内预测期间,可能不存在上或左重构块中的至少一个。此外,在帧间预测期间,沿边界的搜索范围有限。因此,需要能利用对应于球形视频或图像的2D帧或图像的特性的帧内/帧间预测方案。

流传送球形视频(或其他三维视频)会消耗大量系统资源。例如,编码的球形视频能包括用于传输的大量比特,这会消耗大量带宽以及与编码器和解码器相关联的处理和存储器。

通常,当编码图像和/或视频帧时,编码器和解码器在二维(2D)调色板上操作。球形图像和视频是三维的,因此,常见的编码器和解码器不能够编码/解码球形图像和视频。

发明内容

示例性实施例描述用于将球形图像和视频转换成2D表示并且在编码/解码图像和/或视频帧期间,利用2D表示的特定特性的技术。

在一般方面,一种用于编码球形视频的方法能包括基于投影,将所述球形视频的帧映射到二维表示。此外,在预测过程中,该方法能包括确定与预测方案相关联的至少一个块是否处于二维表示的边界上;以及在确定与预测方案相关联的至少一个块处于边界上时,选择相邻端块作为包括在预测过程期间使用的至少一个像素的块,相邻端块与二维表示的两个或更多个边界相关联。

实施方式能包括下述特征中的一个或多个。例如,预测过程能是帧内预测过程,与预测方案相关联的至少一个块是待编码的块,以及相邻端块被选择作为以下中的一个:待编码的块的左重构块或上重构块。预测过程能是帧间预测过程,以及与预测方案相关联的至少一个块能是包括在待搜索匹配块的参考帧中的多个块中的块。预测过程能是帧间预测过程,以及与预测方案相关联的至少一个块被选择作为来自待搜索的参考帧中的多个块中的预测块,所述多个块横跨参考帧的边界。

例如,将球形视频的帧映射到二维表示能包括使用基于等距长方投影的等式。将球形视频的帧映射到二维表示能包括基于使用半等距长方投影的等式。例如,该方法能进一步包括在确定待编码的块远离边界时,在帧内预测过程中,选择相邻块作为模板,相邻端块是以下中的至少一个:待编码的块的左重构块或待编码的块的上重构块。选择相邻端块包括从与预测方案相关联的块相同的行的相对端或与待编码的块相同的列的相对端的至少一个中选择重构块。选择相邻端块包括从查找表选择重构块。

例如,该方法能进一步包括基于待编码的块的未编码像素,生成至少一个残差;通过将变换应用于包括至少一个残差的残差块来编码至少一个残差;量化与所编码的至少一个残差相关联的变换系数;将所量化的变换系数熵编码为压缩视频比特流;以及传送包括指示帧内代码化模式的头部的压缩视频比特流,帧内代码化模式指示在将球形视频的帧映射到二维表示期间使用的技术。

在一般方面,一种用于解码球形视频的方法包括接收包括指示帧内代码化模式的头部的编码比特流,帧内代码化模式表示在将球形视频的帧转换成二维表示期间使用的技术。此外,在预测过程中,该方法能包括确定与预测方案相关联的至少一个块是否处于二维表示的边界上;在确定与预测方案相关联的至少一个块处于边界上时,选择相邻端块作为包括在预测过程期间使用的至少一个像素的块,相邻端块与二维表示的两个或更多个边界相关联。该方法进一步包括基于圆柱投影,将二维表示转换成球形视频的帧。

实施方式能包括下述特征中的一个或多个。例如,转换二维表示能包括基于投影的逆变换,使用等式,将二维表示映射到球形图像。预测过程能是帧内预测过程,与预测方案相关联的至少一个块能是待编码的块,以及相邻端块能被选择作为以下中的一个:左重构块或上重构块。例如,预测过程能是帧间预测过程,以及与预测方案相关联的至少一个块能是包括在为搜索匹配块的参考帧中的多个块中的块。预测过程能是帧间预测过程;以及与预测方案相关联的至少一个块能被选择作为来自待搜索的参考帧中的多个块中的预测块,多个块横跨参考帧的边界。

在一般方面,一种具有其上所存储的计算机可执行程序代码的非暂时性计算机可读存储介质,所述计算机可执行程序代码当在计算机系统上执行时,使计算机系统执行包括基于投影,将球形视频的帧映射到二维表示的步骤。此外,在预测过程中,步骤能包括确定与预测方案相关联的至少一个块是否处于二维表示的边界上;以及在确定与预测方案相关联的至少一个块处于边界上时,选择相邻端块作为包括在预测过程期间使用的至少一个像素的块,相邻端块与二维表示的两个或更多个边界相关联。

实施方式能包括下述特征的一个或多个。例如,预测过程能是帧内预测过程,与预测方案相关联的至少一个块能是待编码的块,以及相邻端块能被选择作为以下中的一个:待编码的块的左重构块或待编码的块的上重构块。例如,预测过程能是帧间预测过程,以及与预测方案相关联的至少一个块能是包括在为搜索匹配块的参考帧中的多个块中的块。预测过程能是帧间预测过程;以及与预测方案相关联的至少一个块能被选择作为来自待搜索的参考帧中的多个块中的预测块,多个块横跨参考帧的边界。选择相邻端块能包括从以下中的至少一个中选择重构块:与预测方案相关联的块相同的行的相对端或与待编码的块相同的列的相对端。

附图说明

从本文给出的具体实施方式和附图将更全面地理解示例性实施例,其中,由相同的附图标记表示相同的元件,仅以示例方式给出且不限制示例实施例,其中:

图1A图示出根据至少一个示例性实施例的视频编码器系统。

图1B图示出根据至少一个示例性实施例的视频解码器系统。

图2A图示出用于根据至少一个示例性实施例的视频编码器系统的流程图。

图2B图示出用于根据至少一个示例性实施例的视频解码器系统的流程图。

图3图示出根据至少一个示例性实施例的球体的二维(2D)表示。

图4A图示出根据至少一个示例性实施例的圆柱体内的球形图像。

图4B图示出根据至少一个示例性实施例的展开的视频帧/块或图像/块的框图。

图4C和4D图示出根据至少一个示例性实施例的查找表(LUT)

图5是根据至少一个示例性实施例,将球形帧/图像映射到球形帧/图像的2D表示的方法的流程图。

图6和7是用于根据至少一个示例性实施例的编码/解码视频帧的方法的流程图。

图8是根据至少一个示例性实施例的用于将球形图像的2D表示转换成球形帧/图像的方法的流程图。

图9A和9B图示根据至少一个示例性实施例的包括瓦片的球形视频帧或图像的2D表示。

图10图示出根据至少一个示例性实施例的系统。

图11A图示出用于根据至少一个示例性实施例的视频编码器系统的流程图。

图11B和11C图示出用于根据至少一个示例性实施例的视频解码器系统的流程图。

图12和13图示出用于根据至少一个示例性实施例的编码/解码流传送球形视频的方法。

图14A图示出用于根据至少一个示例性实施例的视频编码器系统的另一流程图。

图14B图示出用于根据至少一个示例性实施例的视频解码器系统的另一流程图。

图15A和15B图示出用于根据至少一个示例性实施例的视频编码器系统的流程图。

图16图示出根据至少一个示例性实施例的系统。

图17-19图示出用于根据至少一个示例性实施例的编码流传送球形视频的方法。

图20图示出用于根据至少一个示例性实施例的解码流传送球形视频的方法。

图21A图示出根据至少一个示例性实施例的球形图像。

图21B和21C图示出根据至少一个示例性实施例的球形视频帧/块或图像/块的2D方形表示的框图。

图21D图示出根据至少一个示例性实施例的球形视频帧/块或图像/块的2D矩形表示的框图。

图21E图示出根据至少一个示例性实施例的查找表(LUT)。

图21F图示出根据至少一个示例性实施例的查找表。

图22是根据至少一个示例性实施例的用于将球形帧/图像映射到球形帧/图像的2D表示的方法的流程图。

图23和24是根据至少一个示例性实施例的用于编码/解码视频帧的方法的流程图。

图25是根据至少一个示例性实施例的用于将球形图像的2D表示转换成球形帧/图像的方法的流程图。

图26A和26B是根据至少一个示例性实施例的用于操作解块滤波器的方法的流程图。

图27是能用来实现本文所述的技术的计算机设备和移动计算机设备的示意框图。

应注意到,这些附图旨在图示出在某些示例性实施例中所利用的方法、结构和/或材料的一般特性以及补充下文提供的书面描述。然而,这些附图并非按比例绘制,不能精确地反映任何给定实施例的精确结构或性能特性,并且不应当解释为限定或限制由示例性实施例涵盖的值的范围或性质。例如,为了清楚,可以减小或扩大结构元件的相对厚度和定位。在各个图中使用类似或相同的附图标记旨在指示存在类似或相同的元件或特征。

具体实施方式

尽管示例性实施例可以包括各种修改和替选形式,但其实施例是在图中以示例的方式示出,并且在本文中将不进行详细描述。然而,应理解到不旨在将示例性实施例限定到公开的具体形式,而相反地,示例性实施例将涵盖落在权利要求范围内的所有修改、等价形式以及替选方案。在附图的整个描述中,相同的附图标记表示相同的元件。

在图1A的示例中,视频编码器系统100可以是或包括至少一个计算设备并且能直观地代表配置成执行本文所述的方法的任何计算设备。同样地,视频编码器系统100能包括可以被利用来实现本文所述的技术的各种组件,或其不同或未来的变形。举例来说,视频编码器系统100被图示为包括至少一个处理器105,以及至少一个存储器110(例如非暂时性计算机可读存储介质)。

图1A图示出根据至少一个示例性实施例的视频编码器系统。如图1A所示,视频编码器系统100包括至少一个处理器105、至少一个存储器110、控制器120、和视频编码器125。至少一个处理器105、至少一个存储器110、控制器120、和视频编码器125经由总线115通信耦合。

至少一个处理器105可以被利用来执行在至少一个存储器110上存储的指令,使得实现本文所述的各种特征和功能,或附加或可替选的特征和功能。至少一个处理器105和至少一个存储器110可以被用于各种其他目的。特别地,至少一个存储器110能代表各种存储器和可以被用来实现本文所述的模块的任何一个的相关硬件和软件的示例。

至少一个存储器110可以被配置成存储与视频编码器系统100相关联的数据和/或信息。例如,至少一个存储器110可以被配置为存储与帧内预测相关联和/或将球形视频或图像映射到该球形视频或图像的2D表示的编解码器。至少一个存储器110可以是共享资源。例如,视频编码器系统100可以是更大型系统(例如服务器、个人计算机、移动设备等)的元件。因此,至少一个存储器110可以被配置为存储与更大型系统内的其他元件(例如图像/视频服务、Web浏览或有线/无线通信)相关联的数据和/或信息。

控制器120可以被配置为生成各种控制信号并且将控制信号通信到视频编码器系统100中的各个块。控制器120可以被配置为生成实现下文所述的技术的控制信号。控制器120可以被配置为根据示例性实施例,控制视频编码器125来编码图像、图像序列、视频帧、视频序列等。例如,控制器120可以生成对应于帧间预测、帧内预测和/或将球形视频或图像映射到该球形视频或图像的2D表示的控制信号。在下文中,至少结合图5和6,描述有关视频编码器125和控制器120的功能和操作的更多细节。

视频编码器125可以被配置为接收视频流输入5并且输出压缩(例如编码的)视频比特10。视频编码器125可以将视频流输入5转换成离散视频帧。视频流输入5还可以是图像,相应地,压缩(例如编码的)视频比特10也可以是压缩图像比特。视频编码器125还可以将每一离散视频帧(或图像)转换成C×R矩阵块(在下文中,称为块或宏块)。例如,可以将视频帧(或图像)转换成16×16、8×8、4×4或2×2块的矩阵,每一块具有多个像素。尽管列出了5种示例性矩阵,但示例性实施例不限于此。

压缩视频比特10可以表示视频编码器系统100的输出。例如,压缩视频比特10可以表示编码视频帧(或编码图像)。例如,压缩视频比特10可以已准备好传送到接收设备(未示出)。例如,视频比特可以被传送到系统收发器(未示出)以用于传送到接收设备。

至少一个处理器105可以被配置为执行与控制器120和/或视频编码器125相关联的计算机指令。至少一个处理器105可以是共享资源。例如,视频编码器系统100可以是更大型系统(例如移动设备)的元件。因此,至少一个处理器105可以被配置为执行与更大型系统内的其他元件(例如图像/视频服务、Web浏览或有线/无线通信)相关联的计算机指令。

在图1B的示例中,视频解码器系统150可以是至少一个计算设备并且能直观地代表被配置为执行本文所述的方法的任何计算设备。同样地,视频解码器系统150能包括可以被用来实现本文所述的技术的各种组件,或不同或未来变形。举例来说,视频解码器系统150被示为包括至少一个处理器155以及至少一个存储器160(例如计算机可读存储介质)。

由此,至少一个处理器155可以被用来执行在至少一个存储器160上存储的指令,使得实现本文所述的各种特征和功能,或附加或可替选的特征和功能。至少一个处理器155和至少一个存储器160可以被用于各种其它目的。特别地,至少一个存储器160可以代表各种类型的存储器以及可以被用来实现本文所述的任何一个模块的相关硬件和软件的示例。根据示例性实施例,视频编码器系统100和视频解码器系统150可以被包括在相同更大型系统(例如个人计算机、移动设备等)中。视频解码器系统150能被配置为执行编码器100的相反或逆操作。

至少一个存储器160可以被配置为存储与视频解码器系统150相关联的数据和/或信息。至少一个存储器110可以被配置为存储帧间预测、帧内预测和/或将球形视频或图像映射到该球形视频或图像的2D表示。至少一个存储器160可以是共享资源。例如,视频解码器系统150可以是更大型系统(例如个人计算机、移动设备等)的元件。因此,至少一个存储器160可以被配置为存储与更大型系统内的其他元件(例如Web浏览或无线通信)相关联的数据和/或信息。

控制器170可以被配置为生成各种控制信号并且将控制信号通信到视频解码器系统150中的各个块。控制器170可以被配置为生成控制信号以便实现下文所述的视频解码技术。控制器170可以被配置为根据示例性实施例,控制视频解码器175来解码视频帧。控制器170可以被配置为生成对应于帧内预测和/或将球形视频或图像映射到该球形视频或图像的2D表示的控制信号。在下文中,至少结合图7和8,描述有关视频解码器175和控制器170的功能和操作的更多细节。

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

至少一个处理器155可以被配置为执行与控制器170和/或视频解码器175相关联的指令。至少一个处理器155可以是共享资源。例如,视频解码器系统150可以是更大型系统(例如个人计算机、移动设备等)的元件。因此,至少一个处理器155可以被配置为执行与更大型系统内的其他元件(例如Web浏览或无线通信)相关联的计算机指令。

图2A和2B图示出根据至少一个示例性实施例的分别用于图1A所示的视频编码器125和图1B中所示的视频解码器175的流程图。视频编码器125(上文所述)包括球形到2D表示块205、预测块210、变换块215、量化块220、熵编码块225、逆量化块230、逆变换块235、重构块240、和环路滤波器块245。能使用视频编码器125的其他结构变形来编码输入视频流5。如图2A所示,虚线表示若干块之间的重构路径以及实线表示若干块之间的前向路径。

上述块的每一个可以执行为在与视频编码器系统(例如,如图1A所示)相关联的存储器(例如至少一个存储器110)中存储的软件代码并且由与视频编码器系统相关联的至少一个处理器(例如至少一个处理器105)执行。然而,能设想替选实施例,诸如具体化为专用处理器的视频编码器。例如,上述块的每一个(单独和/或结合)可以是专用集成电路或ASIC。例如,ASIC可以被配置为变换块215和/或量化块220。

球形到2D表示块205可以被配置为将球形帧或图像映射到该球形帧或图像的2D表示。例如,图4A图示出在圆柱体400内部的球体300(例如帧或图像)。球体300能被投影在圆柱体400的表面上。投影能是例如等距长方投影(equirectangular)或半等距长方投影。在下文中,参考图5,更详细地描述将球形帧或图像映射到该球形帧或图像的2D表示。

预测块210可以被配置为利用视频帧相干性(例如与先前编码的像素相比不会改变的像素)。预测可以包括两种类型。例如,预测可以包括帧内预测和帧间预测。帧内预测是指相对于图片的相邻、先前代码化的块中的参考样本来预测相同图片块中的像素值。在帧内预测中,为减少由预测变换编解码器的变换(例如熵编码块225)和熵编码(例如熵编码块225)代码化的残差,由相同帧内的重构像素预测样本。帧间预测是指相对于至少一个先前代码化的图片的数据来预测图片块中的像素值。

变换块215可以被配置为将来自空间域的像素值转换成变换域中的变换系数。变换系数可以对应于与原始块相同大小的二维矩阵系数。换句话说,存在与原始块中的像素一样多的变换系数。然而,由于变换,一部分变换系数会具有等于0的值。

变换块215可以被配置为将(来自预测块210)的残差变换成例如频域中的变换系数。变换能够包括Karhunen-Loève变换(KLT)、离散余弦变换(“DCT”)、奇异值分解变换(“SVD”)和不对称离散正弦变换(ADST)。

量化块220可以被配置为减小每一变换系数中的数据。量化可以包含将相对大范围内的值映射到相对小范围中的值,由此减少表示表示量化的变换系数所需的数据量。量化块220可以将变换系数转换成离散量子值,其被称为量化的变换系数或量化级。例如,量化块220可以被配置为将0添加到与变换系数相关联的数据。例如,编码标准可以在标量量化过程中定义128个量化级。

然后,由熵编码块225熵编码量化的变换系数。然后,熵编码的系数,连同解码该块所需的信息,诸如使用的预测的类型、运动矢量、和量化器值一起被输出为压缩视频比特10。使用诸如行程长度编码(RLE)和零行程编码的各种技术来格式化压缩视频比特10。

提出图2A中的重构路径以确保视频编码器125和视频解码器175(下文参考图2B描述)使用相同参考帧来解码压缩视频比特10(或压缩图像比特)。重构路径执行与在下文更详细所述的解码过程期间发生的功能类似的功能,包括在逆量化块230处逆量化该量化的变换系数,以及在逆变换块235处逆变换该逆量化的变换系数,以便产生导数残差块(导数残差)。在重构块240处,能够将在预测块210处预测的预测块添加到导数残差来创建重构块。然后,将环路滤波器245应用于重构块来减少诸如块效应的失真。

上文参考图2A所述的视频编码器125包括所示的块。然而,示例性实施例不限于此。基于所使用的不同的视频编码配置和/或技术,可以添加另外的块。此外,基于所使用的不同视频编码配置和/或技术,上文参考图2A所述的视频编码器125中所示的每一块可以是可选块。

图2B是被配置为解码压缩视频比特10(或压缩图像比特)的解码器175的示意块图。解码器175,与先前所述的编码器125的重构路径类似,包括熵解码块250、逆量化块255、逆变换块260、重构块265、环路滤波器块270、预测块275、解块滤波器块280、和2D表示到球形块285。

能够(例如使用场境(context)自适应二进制算法解码)由熵解码块250解码压缩视频比特10内的数据元素来产生量化的变换系数集合。逆量化块255去量化该量化的变换系数,以及逆变换块260(使用ADST)逆变换该去量化的变换系数以产生能与在编码器125中的重构阶段创建的导数残差相同的导数残差。

使用从压缩视频比特10解码的头部信息,解码器175能使用预测块275来创建与在编码器175中创建的预测块相同的预测块。能将该预测块添加到导数残差来由重构块265创建重构块。能将环路滤波器块270应用于该重构块来减少块效应。能将解块滤波器块280应用于该重构块来减少块失真,并且将结果输出为视频流5。

2D表示到球形块285可以被配置为将球形帧或图像的2D表示映射到球形帧或图像。例如,图4A图示出在圆柱体400内部的球体300(例如作为帧或图像)。球体300先前已经被投影在圆柱体400的表面上。投影能是例如等距长方投影或半等距长方投影。将球形帧或图像的2D表示映射到球形帧或图像能是先前映射的逆映射。在下文中,参考图8,更详细地描述将球形帧或图像的2D表示映射到球形帧或图像。

上文参考图2B所述的视频解码器175包括所示的块。然而,示例性实施例不限于此。基于所使用的不同视频编码配置和/或技术,可以添加另外的块。此外,基于所使用的不同的视频编码配置和/或技术,上文参考图2B所述的视频解码器175内所示的块的每一个可以是可选块。

编码器125和解码器可以被配置为分别编码球形视频和/或图像并且解码球形视频和/或图像。球形图像是包括球形组织的多个像素的图像。换句话说,球形图像是所有方向均连续的图像。因此,球形图像的观众能在任一方向(例如上、下、左、右或其任意组合)重新定位(例如移动她的头或眼睛)并且连续地查看图像的一部分。

球形图像能具有视角。例如,球形图像能是地球的图像。内部视角能是从地球的中心向外看的视图。或内部视角能是在地球上看向太空。外部视角能是从太空向下看向地球的视图。如另一示例,视角能基于可观看的内容。换句话说,可观看视角能够是能由观众看到的内容。可观看的视角能是在观众前方的球形图像的一部分。例如,当从内部视角观看时,观众能躺在地上(例如地球)上并且看向太空。观众能在该图像中,看到月亮、太阳或特定的星星。然而,尽管观众所躺的地面包括在球形图像中,但地面在当前可观看视角外。在该示例中,观众能转动她的头并且地面将包括在周围可观看视角中。观众能翻身并且地面在可观看视角中,而月亮、太阳或星星则不是。

来自外部视角的可观看视角可以是未被遮挡(例如由该图像的另一部分)的球形图像的一部分和/或未弯曲出视野的球形图像的一部分。通过移动(例如旋转)球形图像和/或球形图像的运动,可以将球形图像的另一部分从外部视角引入可观看视角。因此,可观看视角是在球形图像的观众的可观看范围内的球形图像的一部分。

球形图像是不会随时间改变的图像。例如,与地球有关、来自内部视角的球形图像可以显示一个位置中的月亮和星星。而球形视频(或图像序列)可以随时间改变。例如,与地球有关、来自内部视角的球形视频可以显示月亮和星星运动(例如因为地球旋转)和/或划过图像(例如天空)的飞机。

图3示出球体的二维(2D)表示。如图3所示,球体300(例如作为球形图像)示出内部视角305、310、外部视角315和可观看视角320、325、330。可观看视角320可以是如从内部视角310观看的球形图像335的一部分。可观看视角320可以是如从内部视角305观看的球体300的一部分。可观看视角325可以是如从外部视角315观看的球体300的一部分。

图5-8是根据示例性实施例的方法的流程图。由于执行在与装置(例如如图1所示)相关联的存储器(例如至少一个存储器110)中存储并且由与该装置相关联的至少一个处理器(例如至少一个处理器105)执行的软件代码,可以执行参考图5-8所述的步骤。然而,能设想替选实施例,诸如具体化为专用处理器的系统。尽管下文所述的步骤描述为由处理器执行,但这些步骤不一定由相同处理器执行。换句话说,至少一个处理器可以执行下文参考图5-8所述的步骤。

图5是根据至少一个示例性实施例,将球形图像映射到该球形图像的2D表示的方法的流程图。如图5所示,在步骤S505,将球形帧(或图像)映射到圆柱体表示。映射(或转换)能包括基于球形到圆柱投影,将球形视频的帧或图像映射到2D表示。例如,图4A图示出在圆柱体400内部的球体300(例如作为帧或图像)。球体300能被投影到圆柱体400的表面上。在一个示例性实施方式中,投影能是等距长方投影。例如,点C和D之间的线和两极A和B之间是等距的。点C和D之间的线能被投影到圆柱体400上。换句话说,沿点C和D之间的线的像素被映射到绕圆柱体400的圆周的(圆柱体400的上和下之间的)等距线上。然后,移开(从点C和D之间的线向上和向下),每一水平线被映射到圆柱体上,作为横跨该图像的中间的直线,同时垂直线仍然垂直。当水平线越来越接近两极A和B时,能拉伸该图像来与该圆柱体相配。在数学上,等距长方投影能被定义为x=λcosθ和y=θ,其中,λ是经度,而θ是纬度。

在另一示例性实施方式中,投影能是半等距长方投影。在半等距长方投影中,每一水平线被映射到圆柱体上,作为横跨图像的中间的直线,而垂直线保持垂直,与在等距长方投影中一样。然而,当水平线越来越接近两极A和B时,该图像能够在无拉伸或减小拉伸(例如按比例)的情况下被投影到圆柱体上。被投影到圆柱体上的图像的半等距长方投影部分为空或空值(null)像素。空或空值像素可以表示为黑或白(或一些其他恒定像素表示)像素。数学上,半等距长方投影能被定义为x=aλcosθ和y=bθ,其中,λ是经度以及θ是纬度,以及其中,a和b是比例因子。其他圆柱投影在本公开的范围内。

在步骤S510,将圆柱表示展开为2D矩形表示。例如,圆柱体400可以按一些垂直线被分离并且打开形成矩形。图4B将展开的圆柱表示405图示为2D矩形表示。示为展开的圆柱表示405的图像的等距长方投影可以呈现为拉伸图像,如图像远离点A和B之间的中线垂直进展(如图4B所示,向上和向下)。在半等距长方投影中,图像可以呈现为具有以空或空值像素填充展开的圆柱表示405的角块410-1、410-2、410-3、410-4的内部或周围空间的椭圆形。

在步骤S515,将2D矩形表示分解成N×N块的C×R矩阵。例如,如图4B所示,所图示的展开的圆柱表示405为N×N块的30×16矩阵。然而,其他C×R维度也在本公开的范围内。块可以是2×2、4×4、8×8、16×16等块(或像素块)。

在步骤S520,指定空值块。例如,在半等距长方投影中,多个块可以包括空或空值像素。包括所有、大部分或显著部分的空或空值像素的块可以被指定为空值块。例如,如果块为2×2块,例如包括阈值数目或百分比的空或空值像素的任一块可以被指定为空值块。空值块可以存储在表或查找表中。例如,空值块可以存储在图4C所图示的查找表445中。如下所述,在帧内/帧间预测期间,可以不使用空值块。如果使用等距长方投影,则不指定空值块。

如上所述,球形图像是所有方向均连续的图像。因此,如果球形图像将被分解成多个块,则所述多个块在球形图像上将是邻接的。换句话说,如在2D图像中,不存在边缘或边界。在示例性实施方式中,相邻端块可以与2D表示的边界相邻。此外,相邻端块可以是2D表示的边界上的块的邻接块。例如,相邻端块与二维表示的两个或更多个边界相关联。换句话说,因为球形图像是在所有方向均连续的图像,因此,相邻端块能与图像或帧中的(例如块的列中)上边界和下边界相关联和/或与图像或帧中的(例如块的行中)左边界和右边界相关联。

例如,如果使用等距长方投影,则相邻端块可以是列或行的另一端块。例如,如图4B所示,块415-1和425-1可以是彼此的相应相邻端块(按列)。此外,块435和块440可以是彼此的相应相邻端块(按列)。进一步,块420和430可以是彼此的相应相邻端块(按行)。如下文所述,相邻端块可以被用作用于帧内预测方案的、待编码的块的左和/或上方的1,2,3,…,n像素边界(在下文中,称为模板)。此外,相邻端块可以被用作用于帧间预测方案的预测块。在半等距长方投影中,多个块可以包括空值块。因此,在半等距长方投影中,一些相邻端块可以不被用作用于帧内/帧间预测方案的模板。

因此,在步骤S525,关联相邻端块。例如,如上所述,在半等距长方投影中,多个块可以包括空或空值像素。因此,行或列中的端块可以不是处于行的上或下方,和/或列的左或右。因此,对图像端部但不是列或行端部的块(例如,块415-2,其中,415-1是空值块),相邻端块可以不在行或列的另一侧的端部(例如块425-2,其中,425-1为空值块)。因此,相邻端块可以关联并且存储在查找表(例如图4D所示的查找表450)中。

在帧(例如帧、图像、片、宏块组)内的样本之间采用空间冗余被称为帧内预测。在帧内预测中,能由相同帧(或图像)中的先前编码和重构的块、像素或子像素(例如,1/2、1/4等)生成模板。在编码前,从当前块减去模板。例如,利用亮度(luma)采样,对每一N×N(例如4×4)子块或对N×N(例如16×16)宏块,形成该模板。在编码和/或解码期间,能够在每一帧或片内顺序地代码化块或宏块。根据示例性实施例,空间冗余包括基于球形视频或图像,考虑帧的连续特性。因此,帧内预测能使用基于横跨相同帧(或图像)中的边界的先前编码和重构的块、像素或子像素(例如1/2、1/4等)的模板。

在帧内预测中,代码化通道能包括沿行(例如从上到下)、列(例如从左到右)或者以锯齿图案(例如从左上角开始)顺序地代码化块。在帧内预测方案或代码化通道中,先前已经编码和重构位于帧(或图像)内的当前块的上方和左边的块。因此,位于当前块的上方或左边的块能够可用于编码器/解码器作为模板。然而,如果当前块(或待编码的块)在帧的左上角中,则在该帧中没有先前块被先前编码和重构或解码。此外,如果当前块在帧的最上行,则没有当前块(或待编码的块)上方的邻居被先前编码和重构或解码。进一步,如果当前块(或待编码的块)处于帧的左列,则没有与当前块相同行上的相邻块被先前编码和重构或解码。

将空间冗余用于帧(例如帧、图像、片、宏块组)之间的样本被称为帧间预测。在帧间预测中,能够响应于在不同(例如时间上在前或基本/模板)帧中先前编码和重构的块,而生成预测块。

在帧间预测中,将当前帧分成固定大小的块(例如宏块)。为编码块(例如当前块或待编码的块),在参考帧中搜索最佳匹配块。例如,搜索可以包括搜索参考帧的搜索区。在来自当前帧中的宏块与可能候选宏块之间比较以找到匹配(例如近似或良好匹配)候选宏块。能基于例如预期运动估计解析、当前帧的宏块和候选宏块之间的差、编码用于该宏块的运动矢量的处理成本等,在搜索区中校验候选宏块(例如逐个像素和/或逐个子像素)。根据示例性实施例,空间冗余包括考虑基于球形视频或图像的帧的连续特性。因此,帧间预测能使用参考帧的搜索区,包括横跨参考帧(或图像)中的边界的块、像素或子像素(例如1/2、1/4等)来选择最佳匹配块、候选块和/或预测块。

图6是根据至少一个示例性实施例的编码视频帧的方法的流程图。如图6所示,在步骤S605,控制器(例如控制器120)接收球形视频序列帧(或图像)的2D矩形表示以编码。例如,视频编码器可以接收球形视频流输入5、将该流分成多个视频帧、将每一帧转换成2D矩形表示(如上参考图5所述)并且选择第一视频帧。控制器还可以设置初始配置。例如,控制器可以设置帧内代码化方案或模式。

在步骤S610,确定与预测方案相关联的块是否处于2D矩形表示的帧(或图像)边界处/或(或块包括2D矩形表示的帧(或图像)边界)。关联块可以是帧内预测实施方式中的相邻左和/或上块中的一个或多个。替选地,块可以是帧间预测实施方式中的参考帧中的搜索区内的一个或多个块。例如,在一个示例性实施例中,N×N块的C×R矩阵包括每一块中的像素(例如当使用等距长方投影时)。因此,行0、列0、行R-1和列C-1中的块包括球形图像的像素。因此,如果在扫描或搜索期间,块的C×R矩阵包括每一块中的像素(例如等距长方投影)并且列/行=0或列/行=C-1/R-1,则该块处于边界处。

在另一示例性实施方式中,块的N×N矩阵包括至少一个空值块或至少一个块中的空或空值像素(例如当使用半等距长方投影时)。因此,如果在扫描或搜索期间,相邻块为空值块,则该块处于边界。例如,为确定相邻块为空值块,可以在查找表(例如LUT 445、450)中查找(例如搜索、识别)该相邻块。在该示例性情况下,如果块处于列/行=0或列/行=A-1/B-1,则该块也处于边界。如果该块处于边界,则处理移动到步骤S615。否则,处理继续到步骤S625。

在步骤S615,查找相邻端块。例如,在一个示例性实施方式中,N×N块的C×R矩阵包括每一块中的像素(例如当使用等距长方投影时)。因此,与行0中的块的列相关联的相邻端块是行R-1中的块。此外,与行R-1的块的列相关联的相邻端块是行0中的块。与列0中的块的行相关联的相邻端块是列C-1中的块。最后,与列C-1的块的行相关联的相邻端块是列0中的块。例如,在另一示例性实施方式中,块的C×R矩阵包括空值块(例如,当使用半等距长方投影时)。在该示例中,能在查找表(例如LUT 450)中查找列和行相邻端块。

在步骤S620,选择包括相邻端块的至少一个块。在帧内预测方案中,选择至少一个相邻端块作为模板。换句话说,能从选自至少一个相邻端块的模板中选择待编码的块的左和/或上方的1,2,3,…,n像素中的一个或多个。该相邻端块与二维表示的两个或更多个边界相关联。选择相邻端块能包括从以下中的至少一个来选择重构块:与预测方案相关联的块相同的行的相对端、或与待编码的块相同列的相对端。

例如,相邻端块可以是除待编码的块(或与待编码的块相比)的左重构块或上重构块外的重构块。换句话说,在未编码块的帧内预测扫描期间,相邻端块不在待编码的块的上方或左边。例如,如上所述,在帧内预测期间,能够基于相同帧(或图像)中的先前编码和重构的块来生成模板。可以将从相邻块(例如待编码的块的上方和/或左边的块)中,选择先前编码和重构的块作为模板。在这种情况下,待编码的块处于C×R矩阵中的列和/或行的端部或紧挨着空值块(例如上方块为空值,或左边块为空值)。换句话说,将用作模板的块不存在或为空值块。因此,将被选择为模板的相邻块的至少一个能够是查找到的相邻端块中的一个。

在帧间预测方案中,能选择至少一个相邻端块作为参考帧的搜索区内的块。因此,能选择至少一个相邻端块作为最佳匹配块、候选块和/或预测块。

在步骤S625,选择至少一个块。在这种情况下,该至少一个块不包括相邻端块。例如,在帧内预测方案中,可以从相邻块(例如位于待编码的块的上方和/或左边的块)选择先前编码和重构的块,作为模板。在这种情况下,待编码的块远离边界。换句话说,待编码的块不是C×R矩阵的行和/或列的端部并且不紧挨着空值块。因此,能从待编码的块的上方和/或左边的块,选择将被选择为模板的相邻块的至少一个。例如,在帧间预测方案中,搜索区在2D帧内是相连的。因此,能选择搜索区而无需遍历2D帧的边界。因此,搜索区不包括相邻端块。

在至少一个示例性实施方式中,能选择多于1个的块用作模板。例如,在帧内预测方案中,能选择相邻块和与该相邻块(在相同方向中)相邻的块(例如两个块)。然后,平均化所选择的块以形成模板块。在该示例中,该模板可以基于相邻块和相邻端块。例如,在帧间预测方案中,最佳匹配块能集中在具有形成最佳匹配块、候选块和/或预测块的多个块的部分的像素上。

在S630,基于该模板,生成用于视频序列帧(或图像)的未编码像素的残差集合。残差集合可以与帧内预测过程和帧间预测过程中的一个相关联。例如,在帧内预测过程中,可以从与被选模板的对应块(或像素)相关联的对应值减去与每一像素相关联的至少一个值。例如,在帧间预测过程中,可以从与所选最佳匹配块、候选块和/或预测块的对应块(或像素)相关联的对应值减去与每一像素相关联的至少一个值。

在步骤S635,对未编码的像素进行编码。例如,可以使用经配置的变换(例如KLT、SVD、DCT或ADST),将未编码像素的残差变换(编码或压缩)成变换系数。

在步骤S640,编码器量化用于块的编码残差值集合。例如,控制器120可以指令(或调用)量化块220来通过任何合理的适当的量化技术,来量化代码化的运动矢量和代码化的残差。此外,在步骤S645,控制器120可以指令熵编码块220来例如通过任何代码化技术,向量化的运动矢量码代码和残差代码指定代码来使代码长度与量化的运动矢量代码和残差代码的概率匹配。

在步骤S650,编码器输出代码化的(压缩的)视频帧。例如,控制器120可以将代码化的视频(或作为代码化的视频帧)输出到一个或多个输出设备。控制器120可以将代码化的视频输出为用于宏块的单个运动矢量和预测器值(例如残差)的单个集合。控制器120可以输出指示由编码器用在帧内代码化中的模式或方案的信息。例如,经代码化的(压缩的)视频帧可以包括用于传输的头部。除其他外,头部可以包括指示由编码器用在帧内代码化中的模式或方案的信息。(例如在头部中)可以与编码(压缩)视频帧一起传送帧内代码化方案或模式。所传送的帧内代码化方案或模式可以指示用来将每一帧转换成2D矩形表示的参数(例如指示等距长方投影或半等距长方投影以及使用的任何等式)。所传送的帧内代码化方案或模式可以是基于数字(例如模式101可以指示具有比例因子a和b的半等距长方投影)的。

图7是根据至少一个示例性实施例,用于解码视频帧的方法的流程图。如图7所示,在步骤S705,视频解码器(例如,视频解码器175)接收编码(压缩)的视频比特(例如压缩的视频比特10)。例如,编码(压缩)的视频比特可以是经由通信网络(例如互联网或内联网)接收的(例如由视频编码器125)先前编码的实时视频球形流(例如音乐会或体育事件录像)。例如,视频流也可以是先前录制的视频(例如电影或视频录像机录像)。编码(压缩)的视频帧可以包括用于传输的头部。除其他外,头部可以包括指示由编码器用在帧内代码化中的方案或模式的信息。例如,帧内代码化方案或模式可以指示用来将每一帧转换成2D矩形表示的参数(例如指示等距长方投影或半等距长方投影以及所使用的任何等式)。

在步骤S710,视频解码器熵解码经编码的视频比特。例如,能够通过使用例如场境自适应二进制算法解码进行熵解码,来解码压缩视频比特以产生量化变换系数集合。在步骤S715,视频解码器去量化由熵解码比特给出的变换系数。例如,能通过将相对小范围内的值映射到相对大范围中的值(例如与上述量化映射相反)来去量化熵解码视频比特。此外,在步骤S720,视频解码器使用(例如在头部中)所指示的变换(例如KLT、SVD、DCT或ADST)来逆变换视频比特。

在步骤S725,确定与预测方案相关联的块是否处于2D矩形表示的帧(或图像)边界处/或(或块包括2D矩形表示的帧(或图像)边界)。关联块可以是帧内预测实施方式中的相邻左和上块中的一个或多个。替选地,块可以是帧间预测实施方式中的参考帧中的搜索区内的一个或多个块。例如,在一个示例性实施方式中,N×N块的C×R矩阵包括每一块中的像素(例如当使用等距长方投影时)。因此,行0、列0、行R-1和列C-1中的块包括球形图像的像素。因此,如果在扫描或搜索期间,块的C×R矩阵包括每一块中的像素(例如等距长方投影)并且列/行=0或列/行=C-1/R-1,该块处于边界处。

在另一示例性实施方式中,N×N块的C×R矩阵包括至少一个空值块或至少一个块中的空或空值像素(例如当使用半等距长方投影时)。因此,如果在扫描或搜索期间,相邻块为空值块,则该块处于边界。例如,为确定相邻块为空值块,可以在查找表(例如LUT 445,450)中查找(或搜索)该相邻块。在该示例性情况下,如果块处于列/行=0或列/行=C-1/R-1,则该块也处于边界。如果该块处于边界,则处理移动到步骤S730。否则,处理继续到步骤S740。

在步骤S730,查找相邻端块。例如,在一个示例性实施方式中块的C×R矩阵包括每一块中的像素(例如当使用等距长方投影时)。因此,与行0中的块的列相关联的相邻端块是行R-1中的块。此外,与行R-1的块的列相关联的相邻端块是行0中的块。与列0中的块的行相关联的相邻端块是列C-1中的块。最后,与列C-1的块的行相关联的相邻端块是列0中的块。例如,在另一示例性实施方式中,块的C×R矩阵包括空值块(例如,当使用半等距长方投影时)。在该示例中,能在查找表(例如LUT 450)中查找(例如识别的)列和行相邻端块。

在步骤S735,选择包括相邻端块的至少一个块。在帧内预测方案中,选择至少一个相邻端块作为模板。换句话说,能从选自至少一个相邻端块的模板中选择待编码的块的左和/或上方的1,2,3,…,n像素中的一个或多个。该相邻端块与二维表示的两个或更多个边界相关联。

例如,相邻端块可以是除待编码的块(或与待编码的块相比)的左重构块或上重构块外的重构块。换句话说,在未编码块的帧内预测扫描期间,相邻端块不在待编码的块的上方或左边。例如,如上所述,在帧内预测期间,能够基于相同帧(或图像)中的先前编码和重构的块来生成模板。可以将从相邻块(例如待编码的块的上方和/或左边的块)中,选择先前编码和重的建块作为模板。在这种情况下,待编码的块处于C×R矩阵中的列和/或行的端部或紧挨着空值块(例如上方块为空值,或左边块为空值)。换句话说,将用作模板的块不存在或为空值块。因此,将被选择为模板的相邻块的至少一个能够是查找到的相邻端块中的一个。

在帧内预测中,能选择至少一个相邻端块作为参考帧的搜索区内的块。因此,能选择至少一个相邻端块作为最佳匹配块、候选块和/或预测块。

在步骤S740,选择至少一个块。在这种情况下,该至少一个块不包括相邻端块。例如,在帧内预测方案中,可以从相邻块(例如位于待编码的块的上方和/或左边的块)选择先前编码和重构的块,作为模板。在这种情况下,待编码的块不是C×R矩阵的行和/或列的端并且不紧挨着空值块。因此,能从待编码的块的上方和/或左边的块,选择将被选择为模板的相邻块的至少一个。例如,在帧间预测方案中,搜索区在2D帧内是相连的。因此,能选择搜索区而无需遍历2D帧的边界。因此,搜索区不包括相邻端块。

在至少一个示例性实施方式中,能选择多于1个的块用作模板。例如,在帧内预测方案中,能选择相邻块和与该相邻块(在相同方向中)相邻的块(例如两个块)。然后,平均化所选择的块以形成模板块。在该示例中,该模板可以基于相邻块和相邻端块。例如,在帧间预测方案中,最佳匹配块能集中在具有形成最佳匹配块、候选块和/或预测块的多个块的部分的像素上。

在步骤S745,视频解码器基于经解码的视频比特,生成重构像素作为视频帧。在帧内预测方案中,能将块用作模块,生成重构像素。留言,能从块中选择待编码的块的左和/或上方的1,2,3,…,n像素中的一个或多个并且用作模板来由解码的视频比特生成重构像素。在示例性实施方式中,块(因此,待编码的块的左和/或上方的1,2,3,…,n像素)能包括相邻端块。在帧内预测方案中,能将块用作预测块,生成重构像素。因此,在示例性实施方式中,预测块能包括相邻端块。例如,为生成重构像素,视频解码器可以将残差(例如变换或解压缩的视频比特)添加到模板中相应的位置或由重构像素生成的预测块。

在步骤S750,视频解码器滤波视频帧中的重构像素。例如,环路滤波器能被应用于重构块来减少块效应。例如,解块滤波器能被应用于重构块来减少块失真。

在S755,2D帧(或图像)被转换成球形视频帧(或图像)。例如,能够使用参考将球形帧(或图像)映射到球形帧(或图像)的2D表示所述的技术相反的技术,来转换2D帧。在下文中,参考图8更详细地描述示例性技术。

在步骤S760,视频解码器基于视频帧来生成球形视频流(或球形图像)。例如,可以按顺序组织重构转换的像素的至少一个视频帧来形成球形视频流。

图8是根据至少一个示例性实施例的用于将球形图像的2D表示转换成球形帧/图像的方法的流程图。如图8所示,在步骤S805,移除空值块。例如,如上所述,在半等距长方投影实施方式中,可以添加空值块,其中,在C×R矩阵的N×N块的一个或多个中,不存在像素。(例如在处理期间)可以从2D帧或图像跳过、删除或移除这些空值块。可以在包括在与接收的代码化(压缩)的视频帧相关联的头部中的查找表(例如LUT 445)中指示空值块。在等距长方投影实施方式中,可以跳过该步骤。

在步骤S810,将2D表示映射到球形帧(或图像)。例如,基于所使用的将球形图像转换成2D表示的投影类型(例如等距长方投影或半等距长方投影),可以使用逆变换(例如使用上述等式的逆等式)将圆柱表示映射到球形图像。例如,等式可以逆变换x=λcosθ和y=θ,其中,λ=xcos y和θ=y中,λ是经度,以及λ是纬度。其他逆变换在本公开的范围内。

图9A和9B图示出根据至少一个示例性实施例的包括瓦片的球形视频帧或图像2D表示。如图9A所示,球形视频帧900的2D表示包括按C×R矩阵组织的多个块(例如块902)。每一块可以是像素的N×N块。例如,视频帧(或图像)可以被转换成块的矩阵,每一块具有多个像素。瓦片由多个块或像素组成。例如,瓦片905、910-1、910-2、910-3、910-4、910-5、910-6、910-7和910-8,每个包括16个块,16个块进而包括多个(例如N×N)像素。瓦片905可以是包括在回放球形视频期间视频(或图像)的观众的观看视角的瓦片。换句话说,瓦片905可以是包括球形视频的观众能看到的球形视频帧的一部分的瓦片(例如可观看视角)。瓦片910-1、910-2、910-3、910-4、910-5、910-6、910-7和910-8可以是包括在外围视野处或观看视角外部(例如回放期间,观众不能看到)的球形视频帧的部分的瓦片。

根据示例性实施方式,瓦片可以重叠。换句话说,块、块的一部分、像素和/或多个像素可以与多于一个的瓦片相关联。如图9A和9B所示,瓦片910-1、910-2、910-3、910-4、910-5、910-6、910-7和910-8可以与瓦片905重叠(例如包括也与瓦片905相关联的块、块的一部分、像素和/或多个像素)。如图9B所示,该重叠图案可以从瓦片905继续向外扩展。例如,瓦片915-1、915-2、915-3、915-4、915-5、915-6、915-7、915-8、915-9、915-10、915-11、915-12、915-13、915-14、915-15和/或915-16可以与瓦片910-1、910-2、910-3、910-4、910-5、910-6、910-7和/或910-8中的一个或多个重叠。如图9B所示,该重叠图示为重叠视频部分920-1、920-2、920-3、920-4、920-5、920-6、920-7和920-8。

根据示例性实施方式,为了在流传送球形视频期间节省资源,能仅流传送球形视频的一部分。例如,能够流传送被指示为在回放期间由观众看到的球形视频的部分。参考图9B,瓦片905可以是被指示为球形视频的观众正观看的球形视频帧的部分的瓦片。因此,出于最低观看体验,应当流传送瓦片905。然而,观众会改变正观看的内容(例如通过移动她的眼睛或她的头),并且在仅流传送了瓦片905的情况下观看体验将是不希望的,因为观众将必须等待适当的球形视频被流传送。例如,如果观众将观看视角从瓦片905改变到瓦片910-2,并且仅流传送了瓦片905,则观众会感受到延迟直到流传送了瓦片910-2为止。

因此,根据至少一个示例性实施例,能流传送多个瓦片(例如作为球形视频帧的一部分)。再次参考图9B,能流传送瓦片905、910-1、910-2、910-3、910-4、910-5、910-6、910-7、910-8、915-1、915-2、915-3、915-4、915-5、915-6、915-7、915-8、915-9、915-10、915-11、915-12、915-13、915-14、915-15和/或915-16。此外,为了在流传送球形视频期间节约资源,能基于多于一个质量服务(QoS)来编码瓦片。如下文所述,QoS会影响用来编码瓦片的资源、用来流传送瓦片的带宽,当解码时,QoS还会影响瓦片的分辨率。例如,能基于第一QoS,流传送瓦片905,并且能基于第二QoS,流传送瓦片910-1、910-2、910-3、910-4、910-5、910-6、910-7和910-8,以及基于第三QoS,流传送瓦片915-1、915-2、915-3、915-4、915-5、915-6、915-7、915-8、915-9、915-10、915-11、915-12、915-13、915-14、915-15和915-16。第一QoS、第二QoS和第三QoS能不同。例如,第一QoS能高于第二QoS,以及第三QoS能低于第一和第二QoS。

因此,与对应于瓦片910-1、910-2、910-3、910-4、910-5、910-6、910-7和910-8的解码瓦片相比,对应于瓦片915-1、915-2、915-3、915-4、915-5、915-6、915-7、915-8、915-9、915-10、915-11、915-12、915-13、915-14、915-15和/或915-16的解码瓦片质量更低。此外,对应于瓦片905的解码瓦片质量最高。因此,被指示为在回放期间由观众观看的球形视频的部分(例如瓦片905)能具有相对最高质量。此外,与被指示为在回放期间由观众观看的球形视频部分(或附近)相比,位于外围视野或在观看视角外(例如在回放期间,观众看不到)的球形视频的部分质量逐渐更低。

因此,(例如通过移动她的眼睛或她的头)观众可能改变正观看的,观众继续看到流传送球形视频(尽管以可能较低质量)。然后,后续流传送帧能基于经改变的位置而包括外围视野,由此维持所需的用户体验同时在流传送球形视频期间节约资源。

在示例性实施方式中,瓦片905能是第一维N1×N1;瓦片910-1、910-2、910-3、910-4、910-5、910-6、910-7和910-8能是第二维N2×N2;以及瓦片915-1、915-2、915-3、915-4、915-5、915-6、915-7、915-8、915-9、915-10、915-11、915-12、915-13、915-14、915-15和915-16能是第三维N3×N3。此外,更接近瓦片905的重叠能小于更加远离瓦片905的重叠。例如,瓦片905和瓦片910-5之间的重叠能是0或1像素,而瓦片910-5和瓦片915-9之间的重叠能是50像素。该图案能继续远离瓦片905延伸。0、1和50的选择在性质上是示例性的并且示例性实施例不限于此。

如果瓦片905小于瓦片910-5(例如,更小的长度×宽度),则编码瓦片910-5比编码瓦片905更有效。因此,通过配置瓦片的生成能获得另外的效果,使得越是远离包括在球形视频的回放期间视频(或图像)的观看者的观看视角的瓦片,瓦片就变得越大(例如,更大长度×宽度)并且重叠变得更大。

图10图示出根据至少一个示例性实施例的系统1000。如图10所示,系统1000包括控制器120、控制器170、编码器1105(在下文详细描述)和位置传感器1025。控制器120进一步包括视野位置控制模块1005和瓦片选择模块1010。控制器170进一步包括视野位置确定模块1015和瓦片请求模块1020。

根据示例性实施方式,位置传感器1025检测观众眼睛(或头)的位置(或位置的改变),视野位置确定模块1015基于检测的位置,确定视野、视角或视野视角,以及瓦片请求模块1020将视野、视角或视野视角传送作为球形视频的帧、瓦片或多个瓦片的请求的一部分。根据另一示例性实施方式,位置传感器1025基于如在显示器上渲染的图像平移位置来检测位置(或位置的改变)。例如,用户可以使用鼠标、跟踪杆或手势(例如在触敏显示器上)来选择、移动、拖拉、扩展等如在显示器上渲染的球形视频或图像的一部分。

对球形视频的帧、瓦片或多个瓦片的请求可以与对球形视频的帧的请求一起传送。对瓦片的请求可以与对球形视频的帧的请求分开传送。例如,对瓦片的请求可以响应于改变的视野、视角或视野视角,导致需要替换先前请求的和/或排队的瓦片、多个瓦片和/或帧的质量。

视野位置控制模块1005接收和处理对瓦片的请求。例如,视野位置控制模块1005能基于视野视角,确定帧和帧中的瓦片或多个瓦片的位置。然后,视野位置控制模块1005能指令瓦片选择模块1010来选择瓦片和/或多个瓦片。选择瓦片和/或多个瓦片能包括将参数传递到编码器1105。在编码球形视频和/或瓦片期间,能由视野选择模块1120使用参数。

因此,位置传感器1025能被配置为检测观众的眼睛(或头)的位置(定向、位置的变化和/或定向的变化。例如,位置传感器1025能包括加速计以便检测移动以及陀螺仪以便检测位置。替选地,或除此之外,位置传感器1025能包括聚焦在观众的眼睛或头的相机或红外传感器以便确定观众的眼睛或头的位置。位置传感器1025能被配置为将位置和位置变化信息传送到视野位置确定模块1015。

视野位置确定模块1015能被配置为确定与球形视频有关的视野或视角视野(例如,观众目前正看的球形视频的部分)。能将视野、视角或视野视角确定为球形视频上的位置、点或焦点。例如,视野能是球形视频上的纬度和经度位置。基于球形视频,视野、视角或视野视角能确定为立方体的面。使用例如超文本传输协议(HTTP),能将视野(例如纬度和经度位置或面)传送到视野位置控制模块1005。

视野位置控制模块1005可以被配置为确定球形视频内的瓦片或多个瓦片的视野位置(例如帧和帧内的位置)。例如,视野位置控制模块1005能选择以视野位置、点或焦点为中心的方形或矩形(例如纬度和经度位置或面)。瓦片选择模块1010能被配置为将方形或矩形选择为块、瓦片或多个瓦片。瓦片选择模块1010能被配置为指令(例如经由参数或配置设置)编码器1105来编码选择的瓦片或多个瓦片。

图11A图示出用于根据至少一个示例性实施例的视频编码器系统的流程图。视频编码器1105包括球形到2D表示块1110、帧分解模块1115、视野选择模块1120、瓦片模块1125、视频编码器125和分组构建器(packet builder)(或合成器)1130。包含在编码器1105中的元件1110-1130、125可以包括软件模块、硬件组件、或其组合。代替系统100中的编码器125,可以使用编码器1105。因此,控制器120可以指示(或调用)元件1110-1130、125来编码球形视频帧。

球形到2D表示块1110可以被配置为将球形帧或图像映射到球形帧或图像的2D表示。例如,球体300能被投影到2D表面(例如圆柱体(展开成矩形)、方形和/或矩形)。投影能例如基于等距长方投影等式。

帧分解模块1115可以被配置为将球形视频帧的每一个分解成具有维度N×N的第一集合的多个块(例如块902)。因此,帧分解模块1115可以被配置为(例如基于四叉树分解)分解球形视频帧。

视野选择模块1120可以被配置为基于正观看球形视频的用户的视野或视角或视野视角,选择瓦片(或多个瓦片)。例如,如上所述,视野、视角或视野视角可以是可观看视角320,反过来,可观看视角320可以是如从内部视角305看到的球体300的部分。瓦片可以是基于视野选择的多个像素。多个像素可以是能包括能由用户看到的球形图像的一部分的块、多个块或宏块。球形图像的部分可以具有长度和宽度。球形图像的部分可以是二维或基本上二维的。视野选择模块1120可以基于来自回放球形视频的设备的视野或视角或视野视角的指示,来选择瓦片(或多个瓦片)。

瓦片模块1125可以基于由视野选择模块1120选择的瓦片,选择多个瓦片。瓦片模块1125可以选择在由视野选择模块1120选择的瓦片(例如瓦片905)周围并且从其向外延伸的瓦片,以包括在多个瓦片中。例如,如图9B所示,多个瓦片可以包括上两行和下两行,以及由视野选择模块1120选择的瓦片(例如瓦片905)的左边两列和右边两列。多个瓦片可以重叠。瓦片模块1125可以被配置为将QoS指定到多个瓦片的每一个。瓦片模块1125可以被配置为在循环中,针对每一瓦片将与QoS相关联的瓦片和参数中的每一个传递到编码器125。

例如,瓦片模块1125可以读取与每一瓦片相关联的块(例如像素)并且将块和QoS存储在队列中并且一次输出队列的内容中的一条目(例如,如由控制器120指令或调用)。编码器125可以使用与QoS相关联的参数来编码瓦片块并且将结果输出到分组构建器1130。编码器125可以单独地编码多个瓦片的每一个。分组构建器1130还可以包括队列以便排队结果,直到多个瓦片中的每一个被编码。在另一示例性实施方式中,编码器1105可以包括多个视频编码器125(或视频编码器125的多个软件实施方式),使得并行地编码多个瓦片。

分组构建器1130可以被配置为构建分组以传输。分组可以包括压缩视频比特10A。分组可以包括多个编码瓦片。分组可以包括用于传输的头部。除此之外,头部可以包括表示由编码器用在帧内代码化中的模式或方案。头部可以包括表示用来将球形视频帧的帧转换成2D矩形表示的参数的的信息。头部可以包括表示用来实现多个编码2D瓦片的(例如每一个的)QoS的参数的信息。

在一个示例性实施方式中,分组构建器1130能构建仅包括多个编码瓦片作为编码比特的分组。在另一实施方式中,分组构建器1130能构建模仿球形视频数据(或球形图像)的编码帧的分组。因此,分组构建器1130可以利用与多个编码瓦片不相关联的(帧的)数据(或比特)位置中的虚拟数据填充模仿帧。例如,分组构建器1130能包括用于编码帧的模板,将与多个编码瓦片相关联的比特映射到对应于多个编码瓦片的模板中的位置并且为模板中的剩余位置指定虚拟数据(例如值0)。

图11B图示出根据至少一个示例性实施例的视频解码器系统的流程图。视频解码器1150包括帧构建器模块1155、视频解码器175和2D表示到球形块1160。包含在解码器1150中的元件1155、175、1160可以包括软件模块、硬件组件或其组合。代替系统150中的解码器175,可以使用解码器1150。因此,控制器170可以指令(或调用)元件1155、175、1160来编码球形视频帧。

帧构建器模块1155可以被配置为构建模仿球形视频数据(或球形图像)的编码帧的帧。例如,帧构建器模块1155可以利用与多个编码瓦片不相关联的(帧的)数据(或比特)位置中的虚拟数据来填充模仿的帧。例如,帧构建器模块1155能包括用于编码帧的模板、将与多个编码瓦片相关联的比特映射到对应于多个编码瓦片的模板中的位置、并且向模板中的剩余位置指定虚拟数据(例如值0)。

2D表示到球形块1160可以被配置为将球形帧或图像的2D表示映射到球形帧或图像。例如,图3图示出球体300(例如作为帧或图像)。球体300可以先前被投影到圆柱体(能被展开成矩形)的表面、方形或矩形上。投影例如能是等距长方投影或半等距长方投影。球形帧或图像的2D表示到球形帧或图像的映射能是在前映射的逆映射。

图11C图示出用于根据至少一个示例性实施例的视频解码器系统的流程图。视频解码器1170包括视频解码器175和2D表示到球形块1160。包含在解码器1170中的元件175、1160可以包括软件模块、硬件组件、或其组合。可以代替系统150中的解码器175来使用解码器1170。因此,控制器170可以指令(或调用)元件175、1160来编码球形视频帧。

在示例性实施方式中,解码器1150可以用在编码器1105将分组传送为压缩视频比特10A的系统,其中,仅对应于球形视频的数据的分组是多个编码瓦片。在另一示例性实施方式中,解码器1170可以用在编码器1105将分组传送为压缩视频比特10A的系统中,其中,该分组包括模仿编码视频帧的数据,编码视频帧包括对应于包括多个编码瓦片的球形视频的数据。

如将认识到,图1A和1B所图示的系统100和150、图2A和11A所图示的编码器125、1105,以及图2B、11B和11C所图示的解码器175、1150、1170可以实现为下文参考图27所述的通用计算机设备2700和/或通用计算机设备950的元件和/或扩展。替选地,或除此之外,图1A和1B所图示的系统100和150、图2A和11A所图示的编码器125、1105,以及图2B、11B和11C所图示的解码器175、1150、1170可以实现在与通用计算机设备2700和/或通用移动计算机设备2750分立的、具有如下文参考通用计算机设备2700和/或通用移动计算机设备2750所述的一些或所有特征的系统中。

图12和13是根据示例性实施例的方法的流程图。由于执行在与装置(例如如图1所示)相关联的存储器(例如至少一个存储器110)中存储并且由与该装置相关联的至少一个处理器(例如至少一个处理器105)执行的软件代码,可以执行参考图12和13所述的步骤。然而,替选实施例设想为诸如具体化为专用处理器的系统。尽管下文所述的步骤描述为由处理器执行,但这些步骤并不一定由相同处理器执行。换句话说,至少一个处理器可以执行下文参考图12和13所述的步骤。

图12图示出根据至少一个示例性实施例,用于编码流传送球形视频的方法。如图12所示,在步骤S1205,接收球形视频流(或球形图像)的帧。例如,控制器(例如控制器120)可以指令编码器(例如编码器125、1105)从视频源接收一个或多个帧。视频源可以包括任何视频源(例如数据存储设备、网络、互联网、单独的计算设备等)。例如,视频序列帧可以是与球形视频流(例如视频流5)相关联的视频帧。视频流可以是实时视频流(例如,视频会议或视频聊天)。例如,视频流可以是先前录制的视频(例如电影或视频录像机录像)。此外,视频内容可以是模拟或数字视频。

在步骤S1210,将球形帧(或图像)映射到2D表示。例如,将帧(或球形图像)映射到2D表示能包括将帧(或球形图像)投影到圆柱体的表面(然后,圆柱体被展开成矩形)、方形或矩形。在一个示例性实施方式中,投影是等距长方投影。换句话说,沿在球体的中心的线(例如赤道)的像素被映射到圆柱体、方形或矩形的顶和底之间的等距线。然后,远离该线(例如,从该线向上和向下),将每一水平线映射到圆柱体作为横过图像的中心的直线并且垂直线保持垂直。当水平线变得越来越接近球体的两极时,能拉伸该图像来与该圆柱体、方形或矩形相配。设想其他投影。例如,能使用半等距长方投影。半等距长方投影可以比例化上述拉伸量,使得投影不完全地填充圆柱体、方形或矩形。

在步骤S1215,包括2D表示的帧被分解成N×N块的C×R矩阵或宏块。例如,控制器120可以指令编码器(例如帧分解模块1115)来将球形视频帧分解成具有N×N维的宏块的C×R矩阵。例如,编码器能使用四叉树分解技术来分解包括2D表示的帧(或图像)。

在步骤S1220,接收视野视角的指示。能从执行球形视频的回放的设备接收视野视角的指示。换句话说,能从实现解码器(例如解码器175、1150、1170)的设备接收视野视角的指示以便观众观看该球形视频。例如,如上所述,视野视角的指示能基于观众目前所看到的球形视频的一部分。指示能是例如球体上的点或位置(例如纬度和经度)、球体上的多个点、或表示球体的立方体的面。

在示例性实施方式中,在将球形帧(或图像)映射到2D表示前,接收视野视角的指示。在该实施方式中,能旋转球形帧(或图像),使得沿例如球体中心的线(例如沿赤道)集中视野视角。因此,(例如,组成上述瓦片的)像素、块和/或宏块处于使得能最小化将像素、块和/或宏块投影在圆柱体的表面、矩形或方形上期间的像素、块和/或宏块的任何失真。

在步骤S1225,基于视野视角,确定球体帧中的瓦片位置。例如,如果该指示是球体上的点或位置(作为球形图像或帧),则能基于点或位置,确定瓦片(例如多个像素、块和/或宏块)。在示例性实施方式中,瓦片(至少一个瓦片或多个瓦片)位置能是以该点或位置为中心的矩形。

在步骤S1230,基于瓦片位置生成多个2D瓦片。例如,如上所述,2D瓦片能是包括多个像素或块的图像。2D瓦片能包括球形视频的帧的一部分。能够通过基于瓦片位置选择球形视频的帧的第一部分作为第一二维瓦片(例如瓦片905)并且从球形视频的帧的第二部分选择多个第二二维瓦片(例如瓦片910-1至8和/或瓦片915-1至16),来生成多个2D瓦片,该帧的第二部分围绕该帧的第一部分并且从帧的第一部分向外延伸。在一个实施方式中,能基于瓦片位置或视野视角,生成2D瓦片以包括多个像素或块,该多个像素或块包括在以该点或位置为中心的方形或矩形中。在另一示例性实施方式中,预定或预配置在帧(或图像)内形成多个2D瓦片的多个像素或块,并且能选择2D瓦片(作为所生成的2D瓦片),使得2D瓦片中的至少一个包括位于瓦片位置或视野视角的中心的瓦片。在又一实施方式中,在球形帧(或图像)的上述旋转期间,能旋转球形帧(或图像),使得瓦片位置或视野视角位于在圆柱体的表面、矩形或方形上的投影的中心。同样地,中心瓦片能是选择的瓦片(如所生成的2D瓦片)中的一个。

在步骤S1235,使用两个或多于两个QoS设置来编码2D瓦片。例如,能够使用配置的变换(例如KLT、SVD、DCT或ADST)来将2D瓦片变换(编码或压缩)成变换系数。能够量化该块的编码的变换系数或残差值集合。例如,控制器120可以指令(或调用)量化块220通过任何合理的适当的量化技术来量化代码化的运动矢量和代码化的残差。此外,控制器120可以指令熵代码化块220通过任何代码化技术来例如将代码分配给量化运动矢量代码和残差代码,以将代码长度与量化的运动矢量代码和残差代码的概率匹配。编码器125(如实现在编码器1105中)可以单独地编码多个2D瓦片中的一个。

在示例性实施方式中,与外围视野或视野视角外部(例如在回放期间,观众看不到的)瓦片相比,不同质量(或服务质量(Qos)可以用在包括视野视角的(多个瓦片的)瓦片上。QoS能基于压缩算法、传输速率、和/或编码方案。例如,可以比处于外围视野或在视野视角外的瓦片更高的QoS来编码包括视野视角的瓦片。当解码时,QoS会影响瓦片的分辨率。因此,能编码包括视野视角(作为包括球形视频帧的一部分的可观看视角)的瓦片,使得(当解码时)与处于外围视野或视野视角外(例如在回放期间,观众看不到)的瓦片相比,包括视野视角的瓦片具有更高的分辨率(当解码时)。

在示例性实施方式中,处于外围视野或视野视角外的多个2D瓦片能包括不同维度的瓦片。此外,与不同维度的瓦片中的较小瓦片的QoS相比,以更低QoS编码不同维度的瓦片中的较大瓦片。因此,基于瓦片的大小和/或瓦片的位置,与处于外围视野或视野视角外的2D瓦片相关联的解码瓦片的分辨率能够不同。

在步骤S1240,生成包括编码2D瓦片的编码(压缩)视频比特分组。例如,分组构建器1130能构建用于传输的分组。该分组可以包括压缩视频比特10A。该分组可以包括编码瓦片(例如多个瓦片)。该分组可以包括用于传输的头部。除此之外,头部可以包括指示用在编码器的帧内代码化中的模式或方案的信息。头部可以包括指示用来将球形视频帧的帧转换成2D矩形表示的参数的信息。头部可以包括指示用来实现编码瓦片的QoS(例如多个QoS)的参数的信息。

在一个示例性实施方式中,分组构建器1130构建仅将多个编码瓦片包括为编码比特的分组。在另一实施方式中,分组构建器1130能构建模仿编码完整帧的分组。因此,分组构建器1130可以用与多个编码瓦片不相关联的(帧的)数据(或比特)位置中的虚拟数据填充模仿的帧。例如,分组构建器1130能包括用于编码帧的模板,将与多个编码瓦片相关联的比特映射到对应于多个编码瓦片的模板中的位置,并且为模板中的剩余位置分配虚拟数据(例如值0)。

图13图示出用于根据至少一个示例性实施例,解码流传送球形视频的方法。如图13所示,在步骤S1305,接收包括编码(压缩)视频比特的分组,该分组包括从球形视频帧(或球形图像)选择的多个编码2D瓦片。例如,该分组可以包括压缩视频比特10A。该分组可以包括用于传输的头部。除此之外,头部可以包括指示由编码器用在帧内代码化中的模式或方案的信息。头部可以包括表示用来将球形视频的帧转换成2D矩形表示的参数的信息。头部可以包括表示用来实现多个编码瓦片的QoS的参数的信息。如上所述,与处于外围视野或视角视野外(回放期间,观众看不到)的瓦片相比,不同质量(或服务质量(QoS))可以用在包括视野视角的(多个瓦片中的)瓦片上。例如,包括视野视角的瓦片的QoS可以高于处于外围视野或视角视野外(例如,回放期间,观众看不到)瓦片的QoS。

在步骤S1310,在一个实施方式中,能生成基于2D瓦片的球形帧(或图像)的2D表示。例如,在这种情况下,仅接收多个编码瓦片。因此,解码器(例如,实现帧构建器模块1155)可以用与多个编码瓦片不相关联的(帧的)数据(或比特)位置中的虚拟数据填充模仿的帧。例如,帧构建器模块1155能包括用于编码帧的模板、将与多个编码瓦片相关联的比特映射到对应于多个编码瓦片的模板中的位置、并且向模板中的剩余位置分配虚拟数据(例如,值0)。

在步骤S1315,解码包括多个编码瓦片的2D表示。例如,视频解码器(例如解码器175、1150、1170)熵解码编码的2D表示。例如,能够通过使用例如场境自适应二进制算法解码进行熵解码,来解码压缩视频比特以产生量化的变换系数集合。视频解码器去量化由熵编码比特给出的变换系数。例如,能通过将相对小范围内的值映射到相对大范围中的值(例如与上述量化映射相反),来去量化熵解码视频比特。此外,视频解码器使用(例如头部中)所指出的变换(例如KLT、SVD、DCT或ADST)来逆变换视频比特。视频解码器能滤波视频帧中的重构像素。例如,能将环路滤波器应用于重构块来减少块的伪效应。例如,能将解块滤波器应用于重构块来减少块失真。解码2D表示能包括使用QoS(的每一个)作为解码方案或编解码器的输入参数。

在步骤S1320,将2D表示转换成球形视频帧。例如,能将解码的2D表示转换成球形视频帧(或图像)。例如,能使用如上参考将球形帧(或图像)映射到球形帧(或图像)的2D表示所述的技术的逆过程,来转换2D表示。

在步骤S1325,基于包括解码的多个瓦片的至少一个球形视频帧,来生成球形视频流(或球形图像)。例如,可以按顺序组织包括解码的多个瓦片的、球形视频的重构转换像素的至少一个视频帧来形成球形视频流。如上所述,以比处于外围视野处或视野视角外(例如回放期间,由观众看不到的)的瓦片更高QoS编码包括视野视角的(多个瓦片中的)瓦片。因此,生成球形视频流会导致在回放球形视频流期间,球形视频流的可见部分具有比球形视频流的外围或不可见部分更高的质量。

在示例性实施方式中,如果在流传送(和/或解码)球形视频或图像期间如由观众看见的视野视角改变,则改变的视野视角的指示会被触发并且被发送到执行球形视频的编码的设备。

图14A图示出根据至少一个示例性实施例的用于视频编码器系统1405的另一流程图。视频编码器1405能替代图1A所示并且如上所述的系统100中的视频编码器125。因此,视频编码器1405包括球形到2D表示块205、预测块210、变换块215、量化块220、熵编码块225、逆量化块230、逆变换块235、重构块240、和环路滤波器块245。此外,视频编码器1405包括视野选择模块1410、编码器125、和分组构建器(或合成器)1415。在替选的实施方式(和/或附加实施方式)中,编码器1405包括开关1440。视频编码器1405的其他结构变形能被用来编码输入视频流5。如图14A所示,虚线表示若干块中的重构路径,以及实线表示若干块中的前向路径。

视野选择模块1410可以被配置为基于观看球形视频的用户的视野或视角或视野视角,选择瓦片(或多个瓦片)。例如,如上所述,视野、视角或视野视角可以是可观看视角320,反过来,可观看视角320可以是如从内部视角305所看到的球体300的一部分。瓦片可以是基于视野选择的多个像素。多个像素可以是能包括能由用户看到的球形图像的一部分的块、多个块或宏块。球形图像的部分可以具有长度和宽度。球形图像的部分可以是二维或基本上二维的。瓦片能具有可变大小(例如,瓦片覆盖球体多少)。例如,能基于例如观众的视野多宽和/或用户多快地旋转他的头,来编码和流传送瓦片的大小。例如,如果观众连续地查看四周,则可以选择更大更低质量瓦片。然而,如果观众聚焦在一个视角上,则可以选择更小更详细的瓦片。

在示例性实施方式中,用在编码器125中和/或由编码器125确定的参数能由编码器1405的其他元件使用。例如,能使用用来编码2D表示的运动矢量(例如如用在预测中)编码瓦片。此外,能在编码器125和编码器1405之间共享用在预测块210、变换块215、量化块220、熵编码块225、逆量化块230、逆变换块235、重构块240和环路滤波器块245中和/或由其确定的参数。

可以将球形视频帧或图像的部分处理为图像。因此,可以将球形视频帧的部分转换(或分解)成块的C×R矩阵(在下文中,称为块)。例如,可以将球形视频帧的部分转换成每个都具有多个像素的16×16、16×8、8×16、8×8、8×4、4×8、4×4或2×2块的C×R矩阵。

根据示例性实施方式,编码器125可以以由Q表示的不同于编码器1405编码瓦片的质量(或服务质量(QoS))来编码帧。该QoS能基于压缩算法、变换速率,和/或编码方案。因此,编码器125可以使用不同于编码器1405的压缩算法和/或编码方案。例如,编码瓦片可以处于比由编码器125编码的帧更高的QoS。如上所述,编码器125可以被配置为编码球形视频帧的2D表示。因此,能够以比球形视频帧的2D表示更高的QoS来编码瓦片(如包括球形视频帧的一部分的可观看视角)。当解码时,QoS会影响帧的分辨率。因此,能够编码瓦片(如包括球形视频帧的部分的可观看视角),使得与球形视频帧的解码的2D表示相比,当解码时该瓦片具有更高的帧分辨率。

分组构建器1415可以被配置为构建用于传输的分组。该分组可以包括压缩视频比特10A。该分组可以包括球形视频帧的编码的2D表示和编码的瓦片(或多个瓦片)。该分组可以包括用于传输的头部。除此之外,头部可以包括指示由编码器用在帧内代码化中的模式或方案的信息。头部可以包括指示用来将球形视频帧的帧转换成2D矩形表示的参数的信息。头部可以包括指示用来实现编码的2D矩形表示和编码瓦片的QoS的参数的信息。

在替选的实施方式(和/或附加实施方式)中,编码器1405能使用不同于用来生成球形视频帧的2D表示的投影技术或算法,来投影瓦片。一些投影在帧的某些区域中具有失真。因此,与球形帧不同地投影瓦片能提高最终图像的质量,和/或更有效地使用像素。在一个示例性实施方式中,能够在投影瓦片前旋转球形图像以便基于投影算法将瓦片定向在最小失真的位置中。在另一示例性实施方式中,瓦片能使用(和/或修改)基于瓦片的位置的投影算法。例如,将球形视频帧投影到其2D表示能够使用等距长方投影,而将球形视频帧投影到包括将被选择作为瓦片的部分的表示则能够使用立方体投影。

在替选实施方式(和/或附加实施方式)中,编码器1405包括开关1440。在该示例性实施方式中,代替基于所选视野来编码瓦片,而是从如从数据库(例如视野帧储存器1515)读取的先前编码(和存储)的瓦片选择该瓦片。先前编码的瓦片能够是时间和视野相关的。换句话说,能够基于当前(例如由如图14A所示的编码器125)编码的帧来选择瓦片。因此,当前编码的帧和所选瓦片来自相同源文件(例如相同(或等同)球形视频文件)并且在相同时间片中。瓦片能够是视野、视角或视野视角相关的,因为能基于与可能已经从球形视频帧选择的视野相同的视野,选择先前编码的瓦片。换句话说,基于与由视野选择模块1410用来从待编码的球形视频帧选择瓦片相同的准则,来选择先前选择的编码瓦片。

图14B图示出根据至少一个示例性实施例的用于视频解码器系统的另一流程图。视频解码器1420能替代图1B中所示并且如上所述的系统150中的视频解码器175。因此,视频解码器1420包括熵解码块250、逆量化块255、逆变换块260、重构块265、环路滤波器块270、预测块275、解块滤波器块280、和2D表示到球形块285。此外,视频解码器1420包括解码器175、分组解构器1425、和瓦片替换模块1430。

分组解构器1425可以被配置为将球形视频帧的编码2D矩形表示与编码瓦片分离。然后,由解码器175解码球形视频帧的编码2D矩形表示。并且解码瓦片,然后,瓦片替换模块1430可以被配置为用解码的瓦片的像素替换球形视频帧中的对应像素(或块或宏块)。如上所述,以比球形视频帧的2D矩形表示更高的QoS来编码瓦片。因此,与不在观看者的视野、视角或视野视角中(或外)的图像(或球形视频的部分)相比,在球形视频的观看者的视野、视角或视野视角中最终球形视频具有更高质量图像(或球形视频部分)。

在示例性实施方式中,能由视频解码器1420的其他元件,使用用在解码器175中和/或由解码器175确定的参数。例如,用来解码2D表示的运动矢量(例如如用在预测中)能被用来解码瓦片。此外,能在解码器175和解码器1420之间共享用在熵解码块250、逆量化块255、逆变换块260、重构块265、环路滤波器块270、预测块275、解块滤波器块280中和/或由其确定的参数。

图15A和15B图示出根据至少一个示例性实施例的用于视频编码器系统的流程图。如图15A所示,编码器1505将功能部件添加到编码器125。因此,视频编码器1505包括球形到2D表示块205、预测块210、变换块215、量化块220、熵编码块225、逆量化块230、逆变换块235、重构块240、和环路滤波器块245。此外,视频编码器1505包括视野选择模块1510。视频编码器1505的其他结构变形能被用来编码输入视频流5。如图15A所示,虚线表示若干块之间的重构路径以及实线表示若干块之间的前向路径。

视野选择模块1510可以被配置为基于观看球形视频的用户的视野或视角,选择瓦片(或多个瓦片)。例如,如上所述,视野、视角或视野视角可以是可观看视角320,反过来,可观看视角320可以是如从内部视角305看到的球体300的部分。瓦片可以是基于视野所选择的多个像素。多个像素可以是能包括能由用户看到的球形图像的一部分的块、多个块或宏块。球形图像的部分可以具有长度和宽度。球形图像的部分可以是二维或基本上二维的。

在替选实施方式(和/或附加实施方式)中,编码器1505能使用不同于用来生成球形视频帧的2D表示的投影技术或算法,来投影瓦片(或多个瓦片)。例如,一些投影能够在帧的某些区域中具有失真,因此,与球形帧不同地投影瓦片能提高最终图像的质量,和/或更有效地使用像素。在一个示例性实施方式中,能够在投影瓦片前旋转球形图像以便基于投影算法将瓦片定向在最小失真的位置中。在另一示例性实施方式中,瓦片能使用(和/或修改)基于瓦片的位置的投影算法。例如,将球形视频帧投影到其2D表示能够使用等距长方投影,而将球形视频帧投影到包括将被选择作为瓦片的部分的表示则能够使用立方体投影。

可以将球形视频帧或图像的部分处理为图像。因此,可以将球形视频帧的部分转换(或分解)成块的C×R矩阵(在下文中,称为块)。例如,可以将球形视频帧的部分转换成每个都具有多个像素的16×16、16×8、8×8、4×4或2×2块的C×R矩阵。

编码器1505可以离线操作为用于使球形视频可用于流传送的设置过程的一部分。视野选择模块1510可以被配置为选择多个视野,使得编码器1505能编码多个瓦片。多个瓦片的每一个可以存储在视野帧储存器1515中。可以索引多个瓦片的每一个,使得参考帧(例如时间相关)和视野(例如视野相关)来存储多个瓦片的每一个。因此,多个瓦片的每一个是时间和视野、视角或视野视角相关的并且能够基于时间和视野相关性而被再次调用。

同样地,在示例性实施方式中,编码器1505可以被配置为执行回路,在该回路中选择帧并且基于视野选择该帧的一部分作为瓦片。然后编码和存储该瓦片。该回路继续循环遍历多个视野。当将例如绕球形图像的垂直线每5度和绕水平线每5度的期望数目的视野保存为瓦片时,选择新帧并且该过程重复,直到球形视频的所有帧具有为它们所保存的期望数目的瓦片为止。这仅是用于编码和保存瓦片的一个示例性实施方式。能设想其他实施方式并且在本公开的范围内。

如图15B所示,编码器125能编码球形视频流5。编码器125能将信息传送到瓦片选择模块1520。例如,编码器125能传送帧号的表示、视野的表示、视角或视野视角以及用于编码球形视频流5的QoS的表示。瓦片选择模块1520能使用该信息来从视野帧储存器1515选择瓦片(或多个瓦片)。分组构建器1415可以被配置为构建用于传输的分组。该分组可以包括压缩视频比特10A。除数据或信息外,该分组可以包括如由编码器125编码的球形视频帧的编码2D表示和如从视野帧储存器1515读取的编码瓦片(或多个瓦片)。

图16图示出根据至少一个示例性实施例的系统1600。如图16所示,系统1600包括控制器120、控制器170、编码器1405、视野帧储存器1515和定向传感器1625。控制器120进一步包括视野位置控制模块1605和瓦片选择模块1610。控制器170进一步包括视野位置确定模块1615和瓦片请求模块1620。

根据示例性实施方式,定向传感器1625检测观众眼睛(或头)的定向(或定向的改变),视野位置确定模块1615基于检测的定向,确定视野、视角或视野视角,并且(除球形视频外)瓦片请求模块1620将视野、视角或视野视角传送为用于瓦片或多个瓦片的请求的一部分。根据另一示例性实施方式,定向传感器1625基于如在显示器上渲染的图像平移定向,来检测定向(或定向的改变)。例如,用户可以使用鼠标、跟踪杆或手势(例如在触敏显示器上)来检测、移动、拖动、展开等如在显示器上渲染的球形视频或图像的一部分。

可以与对球形视频的帧的请求一起,传送对瓦片的请求。可以与对球形视频的帧的请求分开地传送对瓦片的请求。例如,对瓦片的请求可以响应于改变的视野、视角或视野视角,导致替换先前请求和/或排队的瓦片的需要。

视野位置控制模块1605接收和处理对瓦片的请求。例如,视野位置控制模块1605能基于视野来确定帧和帧中的瓦片或多个瓦片的位置。然后,视野位置控制模块1605能指令瓦片选择模块1610来选择瓦片或多个瓦片。选择瓦片或多个瓦片能包括将参数传递到编码器1405。在编码球形视频和/或瓦片期间,能由视野选择模块1410使用参数。替选地,选择瓦片或多个瓦片能包括从视野帧储存器1515选择瓦片或多个瓦片。然后,能将所选瓦片或多个瓦片传递到编码器1405,作为瓦片1445。在另一示例性实施方式中,如上参考图15B所述,选择瓦片或多个瓦片能包括将参数传递到瓦片选择模块1520,瓦片选择模块1520能使用该信息来从视野帧储存器1515选择瓦片(或多个瓦片)。

因此,定向传感器1625能被配置为检测观众眼睛(或头)的定向(或定向的改变)。例如,定向传感器1625能包括加速计以便检测运动,以及包括陀螺仪以便检测定向。替选地,或除此之外,定向传感器1625能包括聚焦在观众的眼睛或头上的相机或红外传感器以便确定观众的眼睛或头的定向。替选地,或除此之外,定向传感器1625能确定如在显示器上渲染的球形视频或图像的一部分以便检测球形视频或图像的定向。定向传感器1625能被配置为将定向和定向信息的变化传送到视野位置确定模块1615。

视野位置确定模块1615能被配置为确定与球形视频有关的视野或视角视野(例如观众目前所看到的球形视频的一部分)。能将视野、视角或视野视角确定为球形视频上的位置、点或焦点。例如,视野能是球形视频上的纬度和经度位置。基于球形视频,能将视野、视角或视野视角确定为立方体的面。能够使用例如超文本传输协议(HTTP)将视野(例如纬度和经度位置或面)传送到视野位置控制模块1605。

视野位置控制模块1605可以被配置为确定球形视频内的瓦片或多个瓦片的视野位置(例如帧和帧内的位置)。例如,视野位置控制模块1605能选择以视野位置、点或焦点为中心的矩形(例如纬度和经度位置或面)。瓦片选择模块1610能被配置为选择矩形作为瓦片或多个瓦片。瓦片选择模块1610能被配置为(例如经由参数或配置设置)指令编码器1405来编码所选瓦片或多个瓦片和/或瓦片选择模块1610能被配置为从视野帧储存器1515选择瓦片或多个瓦片。

图17-20是根据示例性实施例的方法的流程图。由于执行在与(例如如图1所示的)装置的存储器(例如至少一个存储器110)中存储并且由与该装置相关联的至少一个处理器(例如至少一个处理器105)执行的软件代码,可以执行参考图17-20述的步骤。然而,能设想替选实施例,诸如具体化为专用处理器的系统。尽管下文所述的步骤描述为由处理器执行,但这些步骤不一定由相同处理器执行。换句话说,至少一个处理器可以执行下文参考图17-20所述的步骤。

图17示出根据至少一个示例性实施例,编码流传送球形视频的方法。如图17所示,在步骤S1705,接收球形视频流的帧。例如,控制器(例如控制器120)可以指令编码器(例如编码器125、1405、1505)从视频源接收一个或多个帧。视频源可以包括任何视频源(例如,数据存储设备、网络、互联网、单独的计算设备等)。例如,视频序列帧可以是与球形视频流(例如视频流5)相关联的视频帧。视频流可以是实时视频流(例如视频会议或视频聊天)。例如,视频流可以是先前录制的视频(例如电影或视频录像机录像)。此外,视频内容可以是模拟或数字视频。

在步骤S1710,将球形帧映射到2D表示。例如,将帧(或球形图像)映射到2D表示能包括将帧(或球形图像)映射到圆柱体的表面(然后展开成矩形)、方形或矩形。在一个示例性实施方式中,投影能是等距长方投影。换句话说,将沿处于球体的中心的线(例如赤道)的像素映射到圆柱体、方形或矩形上下之间的等距线。然后,远离该线(例如从该线向上和向下),每一水平线被映射到圆柱体,作为横过图像的中间的直线,并且垂直线保持垂直。当水平线越来越接近球体的两极时,能拉伸该图像以与圆柱体相配。设想其他投影。例如,能使用半等距长方投影。半等距长方投影可以比例化上述拉伸量,使得投影不会完全地填充圆柱体、方形和矩形。

在步骤S1715,接收视野视角的指示。能从执行球形视频的回放的设备接收视野视角的指示。换句话说,能从实现解码器(例如解码器175、1420)的设备接收视野视角的指示以便观众观看球形视频。例如,如上所述,视野视角的指示能基于观众目前正观看的球形视频的一部分。该指示能是例如球体上的点或位置(例如纬度和经度)、球体上的多个点、表示球体的立方体的面、和/或表示球体的立方体的多个面。

在步骤S1720,基于视野视角来确定球形帧中的瓦片位置。例如,如果指示为球体上的点或位置(作为球形图像或帧),则能基于该点或位置来确定瓦片(例如多个像素、块和/或宏块)。在示例性实施方式中,瓦片(至少一个瓦片或多个瓦片)位置能是以点或位置为中心的矩形。

在步骤S1725,基于瓦片位置生成2D瓦片。例如,2D瓦片能是包括多个像素的图像。2D瓦片或图像能是球形视频的帧的一部分。2D瓦片或图像能包括包含在以点或位置为中心的矩形中的多个像素。

在替选实施方式(和/或附加实施方式)中,能使用与用来生成球形视频帧的2D表示不同的投影技术或算法来投影瓦片(或多个瓦片)。例如,一些投影在帧的某些区域中具有失真。因此,与投影球形帧不同地投影瓦片能提高最终图像的质量,和/或更有效地使用像素。在一个示例性实施方式中,能在投影瓦片前旋转球形图像以便在基于投影算法将瓦片定向在最小失真的位置中。在另一示例性实施方式中,瓦片能使用(和/或修改)基于瓦片的位置的投影算法。例如,将球形视频帧投影到其2D表示能够使用等距长方投影,而将球形视频帧投影到包括将被选择作为瓦片的部分的表示则能够使用立方体投影。

在步骤S1730,编码2D表示。例如,可以使用配置的变换(例如KLT、SVD、DCT或ADST)将2D表示变换(编码或压缩)成变换系统。能够量化用于该块的编码变换系数或残差值集合。例如,控制器120可以指令(或调用)量化块220通过任何合理的适当的量化技术来量化代码化的运动矢量和代码化的残差。此外,控制器120可以指令熵编码块220例如通过任何代码化技术来将代码分配到量化的运动矢量代码和残差代码,以将代码长度与量化的运动矢量代码和残差代码的概率匹配。此外,编码包括2D表示的帧可以包括将帧分解成N×N块或宏块。例如,控制器120可以指令编码器来将视频序列帧的每一个分解成具有N×N维的宏块。例如,编码器能使用四叉树分解技术来分解包括2D表示的帧。

在步骤S1735,编码2D瓦片。例如,使用配置的变换(例如,KLT、SVD、DCT或ADST),可以将2D瓦片变换(编码或压缩)成变换系数。能够量化用于该块的编码变换系数或残差值集合。例如,控制器120可以指令(或调用)量化块220通过任何合理的适当的量化技术来量化代码化的运动矢量和代码化的残差。此外,控制器120可以指令熵编码块220例如通过任何编码技术来将代码分配到量化的运动矢量代码和残差代码来将代码长度与量化的运动矢量代码和残差代码的概率匹配。此外,编码包括2D瓦片的帧可以包括将帧分解成N×N块或宏块。例如,控制器120可以指令编码器来将视频序列帧的每一个分解成具有N×N维的宏块。例如,编码器能使用四叉树分解技术来分解包括2D表示的帧。此外,编码2D瓦片可以包括将2D瓦片分解成N×N块或宏块。例如,控制器120可以指令编码器将2D瓦片分解成具有N×N维的宏块。例如,编码器能使用四叉树分解技术来分解2D瓦片。

在步骤S1740,生成包括编码的2D表示和编码的2D瓦片的编码(压缩)的视频比特分组。例如,分组构建器1415能构建用于传输的分组。该分组可以包括压缩视频比特10A。该分组可以包括球形视频帧的编码的2D表示和编码的瓦片(例如多个瓦片)。该分组可以包括用于传输的头部。除其它之外,头部可以包括指示用在编码器的帧内代码化中的模式或方案的信息。头部可以包括指示用来将球形视频帧的帧转换成2D矩形表示的参数的信息。头部可以包括指示用来实现编码的2D矩形表示和编码的瓦片的QoS的参数的信息。如上所述,编码的2D矩形表示的QoS和编码的2D瓦片的QoS能够不同。例如,编码的2D矩形表示的QoS可以低于编码的2D瓦片的QoS。

图18图示出根据至少一个示例性实施例的用于编码流传送球形视频的另一方法。如图18所示,在步骤S1805,接收球形视频流的帧。例如,控制器(例如控制器120)可以指令编码器(例如编码器125、1405、1505)从视频源接收一个或多个帧。视频源可以包括任何视频源(例如,数据存储设备、网络、互联网、单独的计算设备等)。例如,视频序列帧可以是与球形视频流(例如视频流5)相关联的视频帧。视频流可以是实时视频流(例如视频会议或视频聊天)。例如,视频流可以是先前录制的视频(例如电影或视频录像机录像)。此外,视频内容可以是模拟或数字视频。

在步骤1810,生成多个视野视角。例如,视野选择模块1510可以被配置为选择多个视野或视野视角,使得编码器1505能编码多个瓦片。编码器1505可以被配置为执行回路,在该回路中选择帧并且基于视野选择该帧的一部分作为瓦片。然后编码和存储该瓦片。该回路继续循环遍历多个视野。当将例如绕球形图像的垂直线每5度和绕球形图像的水平线每5度的期望数目的视野保存为瓦片时,选择新帧并且该过程重复,直到球形视频的所有帧具有为它们所保存的期望数目的多个瓦片为止。

在步骤S1815,基于视野视角的每一个,确定球形帧中的多个瓦片位置。例如,能确定多个视野视角的每一个的瓦片位置。例如,如果多个视野视角的每一个基于球体上的点或位置(作为球形图像或帧),则能够基于点或位置确定瓦片(例如多个像素、块和/或宏块)。在示例性实施方式中,瓦片(至少一个瓦片或多个瓦片)位置能是以点或位置为中心的矩形。

在步骤S1820,基于瓦片位置,生成多个2D瓦片。例如,能生成多个瓦片位置的每一个位置的2D瓦片(例如作为多个图像)。例如,2D瓦片的每一个能是包括多个像素的图像。2D瓦片或图像能是球形视频的帧的一部分。2D瓦片或图像能包括包含在以点或位置为中心的矩形中的多个像素。

在替选实施方式(和/或附加实施方式)中,能使用与用来生成球形视频帧的2D表示不同的投影技术或算法来投影瓦片(或多个瓦片)。例如,一些投影在帧的某些区域中具有失真。因此,与投影球形帧不同地投影瓦片能提高最终图像的质量,和/或更有效地使用像素。在一个示例性实施方式中,能在投影瓦片前旋转球形图像以便在基于投影算法将瓦片定向在最小失真的位置中。在另一示例性实施方式中,瓦片能使用(和/或修改)基于瓦片的位置的投影算法。例如,将球形视频帧投影到其2D表示能够使用等距长方投影,而将球形视频帧投影到包括将被选择作为瓦片的部分的表示则能够使用立方体投影。

在步骤S1825,编码2D瓦片的每一个。例如,可以使用配置变换(例如KLT、SVD、DCT或ADST)将多个2D瓦片的每一个变换(编码或压缩)成变换系数。能够量化用于该块的编码变换系数或残差值集合。例如,控制器120可以指令(或调用)量化块220通过任何合理的适当的量化技术来量化代码化的运动矢量和代码化的残差。此外,控制器120可以指令熵编码块220例如通过任何编码技术来将代码分配到量化的运动矢量代码和残差代码,以将码代长度与量化的运动矢量代码和残差代码的概率匹配。此外,编码包括2D瓦片的帧可以包括将帧分解成N×N块或宏块。例如,控制器120可以指示编码器来将视频序列帧的每一个分解成具有N×N维的宏块。例如,编码器能使用四叉树分解技术来分解包括2D表示的帧。此外,编码2D瓦片可以包括将2D瓦片分解成N×N块或宏块。例如,控制器120可以指令编码器将2D瓦片分解成具有N×N维的宏块。例如,编码器能使用四叉树分解技术来分解2D瓦片。

在步骤S1830,2D瓦片的每一个与帧的指示和该帧内的编码瓦片的位置一起存储。例如,可以将多个编码的2D瓦片的每一个存储在视野帧储存器1515中。可以索引多个瓦片的每一个,使得参考帧(例如时间相关)和视野(例如视野相关),存储多个瓦片的每一个。因此,多个瓦片的每一个是时间和视野、视角或视野视角相关并且能基于时间和视野相关性而被再次调用。

图19图示出根据至少一个示例性实施例的编码流传送球形视频的方法。如图19所示,在步骤S1905,接收视野视角的指示。例如,如上所述,能由包括解码器的设备请求瓦片。瓦片请求能包括基于与球形视频上的观众的定向、位置、点或焦点有关的视角或视野视角的信息。例如,视野视角能是球形视频上的纬度和经度位置。基于球形视频,能将视野、视角或视野视角确定为立方体的面。视野视角的指示还能包括球形视频信息。在示例性实施方式中,视野视角的指示能包括关于与视野视角相关联的帧(例如帧序列)的信息。例如,能使用例如超文本传输协议(HTTP),将视野(例如纬度和经度位置或面)从视野位置确定模块1615传送到视野位置控制模块1605。

在步骤S1910,基于视野视角,确定球形视频内的帧的位置和瓦片位置。例如,关于帧的上述信息能是指示该帧是待编码的当前帧或先前编码的帧的信息(例如,作为帧序列或序列号)。因此,能将该帧确定为待编码的当前帧或先前编码的帧。然后,瓦片位置能基于确定的帧内的视野或视野视角。

在步骤S1915,基于帧和瓦片位置,确定编码的2D瓦片的位置。例如,使用帧或瓦片位置,能在视野帧储存器1515中查找或搜索编码的2D瓦片。在视野帧储存器1515中找到2D瓦片时,能从视野帧储存器1515检索或读取2D瓦片。

在步骤S1920,接收球形视频的帧的编码的2D表示。例如,能接收编码器125的输出。编码器125的输出能是表示球形视频的帧的2D表示的编码的视频比特。

在步骤S1925,生成包括编码的2D表示和编码的2D瓦片的编码(压缩)的视频比特分组。例如,分组构建器1415可以构建用于传输的分组。该分组可以包括压缩视频比特10A。该分组可以包括球形视频帧的编码的2D表示和编码的瓦片(例如多个瓦片)。该分组可以包括用于传输的头部。除其它之外,头部可以包括指示用在编码器的帧内代码化中的模式或方案的信息。头部可以包括指示用来将球形视频帧的帧转换成2D矩形表示的参数的信息。头部可以包括指示用来实现编码的2D矩形表示和编码瓦片的QoS的参数的信息。如上所述,编码的2D矩形表示的QoS和编码的2D瓦片的QoS能够不同。例如,编码2D矩形表示的QoS可以低于编码的2D瓦片的QoS。

在与图7-9相关联的步骤的替选实施方式中,在初始化过程中,为了增加视频的初始流的速度,仅编码和流传送编码的2D瓦片。然后在初始流后,将球体的编码的2D表示添加到包括编码的2D瓦片的分组,如前所述。

在另一替选实施方式中,可以基于例如对视频源可用的带宽,动态地调整编码的2D矩形表示的QoS和编码的2D瓦片的QoS。因此,在一些实施方式中,编码的2D矩形表示的QoS可以与编码的2D瓦片的QoS几乎相同,例如带宽的阈值量应当可用。可以同样地实现解码。

图20图示出根据至少一个示例性实施例的解码流传送球形视频的方法。如图20所示,在步骤S2005,接收包括编码(压缩)的视频比特的分组,该分组包括球形视频帧的编码的2D表示和从球形视频帧选择的编码的2D瓦片。例如,该分组可以包括压缩视频比特10A。该分组可以包括球形视频帧的编码的2D表示和编码的瓦片(例如多个瓦片)。该分组可以包括用于传输的头部。除其它之外,头部可以包括指示用在编码器的帧内代码化中的模式或方案的信息。头部可以包括指示用来将球形视频帧的帧转换成2D矩形表示的参数的信息。头部可以包括指示用来实现编码的2D矩形表示和编码的瓦片的QoS的参数的信息。如上所述,编码的2D矩形表示的QoS和编码的2D瓦片的QoS能不同。例如,编码的2D矩形表示的QoS可以低于编码的2D瓦片的QoS。

在步骤S2010,解码编码的2D表示。例如,视频解码器(例如解码器175)熵解码编码的2D表示。例如,能够通过使用例如场境自适应二进制算法解码进行熵解码来解码压缩视频比特以产生量化的变换系数集合。视频解码器去量化由熵编码比特给出的变换系数。例如,能通过将相对小范围内的值映射到相对大范围中的值(例如与上述量化映射相反),来去量化熵解码视频比特。此外,视频解码器使用(例如头部中)所指出的变换(例如KLT、SVD、DCT或ADST)来逆变换视频比特。视频解码器能滤波视频帧中的重构像素。例如,能将环路滤波器应用于重构块来减少块的伪效应。例如,能将解块滤波器应用于重构块来减少块失真。

在步骤S2015,能将2D表示转换成球形视频帧。例如,能将解码的2D表示转换成球形视频帧(或图像)。例如,能使用如上参考将球形帧(或图像)映射到球形帧(或图像)的2D表示所述技术的逆过程,来转换2D表示。

在步骤S2020,解码编码的2D瓦片。例如,视频解码器(例如解码器1420)熵解码编码的2D瓦片。例如,通过使用例如场境自适应二进制算法解码进行熵解码,来解码压缩视频比特以产生量化的变换系数集合。视频解码器去量化由熵编码比特给出的变换系数。例如,能通过将相对小范围内的值映射到相对大范围中的值(例如与上述量化映射相反),来去量化熵解码视频比特。此外,视频解码器使用(例如头部中)所指出的变换(例如KLT、SVD、DCT或ADST)来逆变换视频比特。视频解码器能滤波视频帧中的重构像素。例如,能将环路滤波器应用于重构块来减少块的伪效应。例如,能将解块滤波器应用于重构块来减少块失真。

在步骤S2025,用解码的2D瓦片替换球形视频帧的对应块。例如,瓦片替换模块1430可以被配置为用解码瓦片的像素替换球形视频帧中的对应块(或像素或宏块)。替换能是具有解码的2D瓦片的像素或块来逐个像素或逐个块地替换经解码且经转换的球形视频帧中的像素或块。换句话说,由表示2D瓦片的像素或块的数据替换与球形视频帧相关联的存储器(例如视频队列)中存储的数据部分。如上所述,能以比球形视频帧的2D表示更高的QoS编码2D瓦片。因此,与不在观看者的视野、视角或视野视角中(或在其外部)的图像(或球形视频的部分)相比,最终球形视频在球形视频的观看者的视野、视角或视野视角中具有更高质量图像(或球形视频部分)。

在步骤S2030,基于包括替换的2D瓦片的至少一个球形视频帧,生成球形视频流。例如,可以按顺序组织球形视频的重构转换像素的至少一个视频帧来形成球形视频流,所述至少一个视频帧包括由2D瓦片替换的部分。如上所述,利用比球形视频帧的2D矩形表示更高的QoS来编码瓦片。因此,包括以2D瓦片替换的生成球形视频流的过程,会导致在回放球形视频流期间,球形视频流的可见部分质量高于球形视频流的不可见部分。

图21A根据至少一个示例性实施例进一步将球体300图示为球形图像。根据示例性实施方式,点C和D之间的线在与点之间或两极A和B之间等距。换句话说,点C和D之间的线能称为球体300的赤道(例如球体300作为地球)。线C和D之间的线能被投影到2D形状(例如方形或矩形)上。

图21B和21C图示出根据至少一个示例性实施例的球形视频帧/块或图像/块的2D方形表示的框图。在图4B的示例中,极A点被映射或投影到方形2100的中心。极点B被映射或投影到方形2100的中心并且图示为B1、B2、B3和B4。点C和D之间的线CD1、CD2、CD3、CD4(或赤道)示为相对于方形2100的旋转方形(虚线)。线CD1、CD2、CD3、CD4的角与角B1、B2、B3和B4等距处与方形2100的边交叉。能够使用Peirce五点梅花投影算法实现将作为球形视频帧或图像的球体300投影到方形2100上。预期将球形视频帧或图像的2D表示编码为矩形。换句话说,许多编码标准被配置为编码作为矩形的视频帧或图像(例如2:1边长比)。因此,在示例性实施方式中,球形视频帧或图像的2D方形表示能被映射到球形视频帧或图像的2D矩形表示。在一些示例性实施方式中,能执行另外的处理来基于所需编码方案调整2D矩形表示的大小。

图21C图示出将作为球形视频帧或图像的球体300投影到方形2100上,方形2100逆时针旋转45度(方形2100也可以顺时针旋转45度)。注意,点C和D之间的线CD1、CD2、CD3、CD4示为方形2100旋转的方形(虚线)。在图21D中,在被映射到矩形后,图示出方形2100。基于方形2100(作为第一2D表示),矩形(作为第二2D表示)能由相等长度边的两个方形形成。能由方形2100(作为第一2D表示)生成两个方形。第一方形能具有在与第一二维表示的角等距处与方形2100的每一边交叉的角。第二方形能基于四个三角形,分别具有与球形视频的帧的内圆的不同边接触的边。第二二维表示能基于第一方形和第二方形。

如图21D所示,三角形2110保持在与图21C相同的位置,已经顺时针旋转三角形2115,已经逆时针旋转三角形2120,以及已经使三角形2125旋转180度并且向右延伸。三角形21102115、2120和2125一起产生与由虚线CD1、CD2、CD3、CD4表示的方形相同大小的方形。此外,极点B位于由三角形2110、2115、2120和2125形成的方形的中心中。由虚线CD1、CD2、CD3、CD4表示的方形和由三角形2110、2115、2120和2125形成的方形一起形成具有两倍边长的矩形。由虚线CD1、CD2、CD3、CD4表示的方形和由三角形2110、2115、2120和2125形成的方形是球形视频帧或图像的2D矩形表示(例如,球体300)。

图21D图示出根据至少一个示例性实施例的球形视频帧/块或图像/块的2D矩形表示的框图。球形视频帧或图像的2D矩形表示示为N×N块的C×R矩阵的分解图像。以2:1比率示出C×R矩阵。N×N块可以是2×2、4×4、8×8、8×16、16×16等块(或像素块)。块2130-1、2130-2、2135-1、2135-2、2140-1和2140-2在图21E中示为边界块或示为在2D矩形表示的边界上。然而,球形图像是连续的并且不具有边界。因此,2D矩形表示也是如此。

如上所述,球形图像是在所有方向连续的图像。因此,如果球形图像将被分解成多个块,多个块在球形图像上将是邻接的。换句话说,如在2D图像中没有边缘或边界。在示例性实施方式中,相邻端块可以是2D表示的边界上的块的邻接块。在图21E所示的示例性实施方式中,块2130-1可以是2130-2的相邻端块,块2135-1可以是2135-2的相邻端块,以及块2140-1可以是2140-2的相邻端块。相反也同样成立。换句话说,块2130-2可以是2130-1的相邻端块,块2135-2可以是2135-1的相邻端块,以及块2140-2可以是2140-1的相邻端块。

因此,在使用相邻块的任何编码方案中,2D矩形表示的边界上的块可以具有位于2D矩形表示的任何地方的对应的相邻端块。图21F图示根据至少一个示例性实施例的查找表(LUT)。LUT 2145可以存储用于2D矩形表示的对应边界块和相邻端块之间的引用。LUT2145示为存储块号指示符,作为例如相互对应的2130-1和2130-2。然而,LUT2145可以按x,y坐标存储对应关系。例如,如果左上手角为0,0,块0,10可以对应于块0,21(例如,可以是用于块0,21的相邻端块)。

图22-26B是根据示例性实施例的方法的流程图。由于执行在与装置(例如如图1所示)的存储器(例如至少一个存储器110)中存储并且由与该装置相关联的至少一个处理器(例如至少一个处理器105)执行的软件代码,可以执行参考图22-26B所述的步骤。然而,能设想替选实施例,诸如具体化为专用处理器的系统。尽管下文所述的方法描述为由处理器执行,但这些方法(或其一部分)不一定由相同处理器执行。换句话说,至少一个处理器可以执行下文参考图22-26B所述的方法。

图22是根据至少一个示例性实施例的将球形图像映射到球形图像的2D表示的方法的流程图。如图22所示,在步骤S2205,将球形图像映射到2D方形表示。例如,图21B图示出在图21A中示为2D方形表示的球体300。映射能包括基于球形或方形投影,将球形视频的图像或帧映射到2D表示。在该示例中,2D表示能是方形。使用投影算法,将球体300投影在2D方形表示上。在一个示例性实施方式中,投影算法能是Peirce五点梅花投影算法。

Peirce五点梅花投影算法规定地球表面的点P、离北极的距离p以及经度θ和纬度λ首先被映射到通过赤道的平面的点(p,θ),该平面被看作具有坐标w的复平面;然后,通过第一种的椭圆函数,将该w坐标映射到复平面的另一点(x,y)(给定坐标z)。将Gudermann符号用于Jacobi椭圆函数,关系是:

其中,

w=pe

其他方形和/或矩形投影在本公开的范围内。

在步骤S2210,将2D方形表示映射到2D矩形表示。映射能包括将2D方形表示映射到另一(或第二)2D表示。另一2D表示能是矩形。例如,图21B图示出2D方形表示。在示例性实施方式中,能顺时针或逆时针旋转2D方形表示(如在图21C中)。能重新定位由基于球体的赤道的线(形成方形)与2D方形表示的边交叉形成并且与2D方形表示的角等距的三角形,来形成与基于球体的赤道相同大小的另一方形。合并基于三角形的方形和基于赤道的方形能形成具有边长比2:1的矩形。

在步骤S2215,2D矩形表示被分解成N×N块的C×R矩阵。例如,如图21E所示,2D矩形表示2150是N×N块的32×16矩阵。N×N块可以是2×2、4×4、8×8、8×16、16×16等块(或像素块)。

因此,在步骤S2220,关联相邻端块。例如,如上所述,块2130-1、2130-2、2135-1、2135-2、2140-1和2140-2示为2D矩形表示的边界块或在边界上。然而,球形图像是连续的并且不具有边界。因此,2D矩形表示也同样如此。在图21E所示的示例性实施方式中,块2130-1可以是2130-2的相邻端块,块2135-1可以是2135-2的相邻端块,以及块2140-1可以是2140-2的相邻端块。相反也是如此。换句话说,块2130-2可以是2130-1的相邻端块,块2135-2可以是2135-1的相邻端块,以及块2140-2可以是2140-1的相邻端块。因此,可以在查找表(例如如图21C所示的查找表2145)中关联和存储相邻端块。

在图21E所示的示例性实施方式中,矩形映射给出2×1的长宽比(相当于16×8)。编码标准可以利用其他长宽比。例如,至少一个编码标准可以使用16×9的长宽比。因此,可以将2D矩形表示2150的大小调整(例如垂直上)到16×9的长宽比。

利用帧(例如帧,图像、片、宏块组)内的样本之间的空间冗余被称为帧内预测。将空间冗余用于帧(例如帧,图像、片、宏块组)间的样本被称为帧间预测。在帧内预测中,响应相同帧(或图像)中的先前编码和重构块,能生成预测块。在帧间预测中,响应不同(例如先前时间或基础/模板顺序)帧中的先前编码和重构块,生成预测块。在编码前,从当前块减去预测块。例如,利用亮度(luma)样本,针对每一N×N(例如4×4)子块或对N×N(例如16×16)宏块,形成预测块。在编码和/或解码期间,在每一帧或片内,顺序地代码化块或宏块。

在帧内预测中,代码化通道能包括沿行(例如从上到下)、列(例如从左到右)或按锯齿图案(例如从左上角开始),顺序地代码化块。在帧内预测代码化通道中,先前已经编码和重构位于帧(或图像)内的当前块的上方和左边的块。因此,位于当前块的上方和左边的块可用于编码器/解码器,作为预测参考。然而,如果当前块处于帧的左上角,则在该帧中尚未先前块已经被代码化。此外,如果当前块处于帧的上行,则尚未有当前块上方的相邻块已经被代码化。更进一步,如果当前块处于帧的左列中,则尚未有与当前块相同行上的相邻块已经被代码化。

图23是根据至少一个示例性实施例的用于编码视频帧的方法的流程图。如图23所示,在步骤S2305,控制器(例如控制器120)接收球形视频序列帧(或图像)的2D矩形表示以编码。例如,视频编码器可以接收球形视频流输入5,将该流分解成多个视频帧,将每一帧转换成2D矩形表示(如上所述)并且选择第一视频帧。控制器还可以设置初始配置。例如,控制器可以设置帧内代码化方案或模式。

在步骤S2310,确定当前块是否处于帧(或图像)边界。例如,在一个示例性实施方式中,N×N块的C×R矩阵包括每一块中的像素。因此,行0、列0、行R-1和列C-1中的块包括球形图像的像素。因此,如果扫描期间,块的C×R矩阵包括每一块中的像素并且列/行=0或列/行=C-1/R-1,则该块处于边界处。如果块处于边界处,则处理移动到步骤S2315。否则,处理继续到步骤S2325。

在步骤S2315,查找(或识别或搜索)相邻端块。例如,在一个示例性实施方式中,块的C×R矩阵可以具有将边界块映射到对应的相邻端块的关联LUT。在该示例中,能在查找表(例如LUT 2145)中查找列和行相邻端块。

在步骤S2320,选择相邻端块作为至少一个模板。例如,如上所述,在帧内预测期间,能响应相同帧(或图像)中先前编码和重构的块,生成预测块。可以从相邻块(例如待编码的块的上方和/或左边的块)选择先前编码和重构的块,作为模板。在这种情况下,待编码的块处于C×R矩阵中的列和/或行的端部。因此,待选择作为模板的相邻块的至少一个能是所查找的相邻端块的一个。

在步骤S2325,选择相邻块作为至少一个模板。例如,可以从相邻块(例如,待编码的块的上方和/或左边的块)选择先前编码和重构的块,作为模板。在这种情况下,待编码的块不在C×R矩阵的列和/或行的端部。因此,能从待编码的块的上方和/或左边的块,选择将被选择为模板的相邻块的至少一个。

在至少一个示例性实施例中,能选择多于一个相邻块用作模板。例如,能选择相邻块和与该相邻块相邻(在相同方向中)的块(例如两个块)。然后,能利用被选块来形成模板块。在该示例中,模板可以基于相邻块和相邻端块。

在步骤S2330,基于该模板,生成用于视频序列帧(或图像)的未编码像素的残差集合。例如,可以从与被选模板的对应块相关联的相应值,减去与每一像素相关联的至少一个值。

在步骤S2335,编码未编码的像素。例如,可以使用配置的变换(例如,KLT、SVD、DCT或ADST)将生成的像素变换(编码或压缩)成变换系数。

在步骤S2340,编码器量化用于块的编码残差值集合。例如,控制器120可以指令(或调用)量化块220来通过任何合理的适当的量化技术,量化编码的运动矢量和编码的残差。此外,在步骤S2345,控制器120可以指令熵编码块220来例如通过任何编码技术,向量化的运动矢量代码和残差代码指定代码来使代码长度与量化的运动矢量代码和残差代码的概率匹配。

在步骤S2350,编码器输出代码化的(压缩的)视频帧。例如,控制器120可以将代码化的视频(或作为代码化的视频帧)输出到一个或多个输出设备。控制器120可以将代码化的视频输出为用于宏块的单个运动矢量和预测因子值(例如残差)的单个集合。控制器120可以输出指示由编码器用在帧内代码化中的模式或方案的信息。例如,代码化(压缩)的视频帧可以包括用于传输的头部。除其他外,头部可以包括指示由编码器用在帧内代码化中的模式或方案的信息。(例如在头部中)可以与代码化(压缩)的视频帧一起传送帧内代码化方案或模式。所传送的帧内代码化方案或模式可以指示用来将每一帧转换成2D矩形表示的参数(例如所使用的Peirce五点梅花投影和任何等式或算法)。所传送的帧内代码化方案或模式可以是基于数字的(例如模式101可以指示Peirce五点梅花投影)。

图24是根据至少一个示例性实施例,用于解码视频帧的方法的流程图。如图24所示,在步骤S2405,视频解码器(例如,视频解码器175)接收编码(压缩)的视频比特(例如压缩视频比特10)。例如,编码(压缩)的视频比特可以是经由通信网络(例如互联网或内联网)接收的(例如由视频编码器125)先前编码的实时视频球形流(例如音乐会或体育事件录像)。例如,视频流也可以是先前录制的视频(例如电影或视频录像机录像)。代码化(压缩)的视频帧可以包括用于传输的头部。除其他外,头部可以包括指示由编码器用在帧内代码化中的方案或模式的信息。例如,帧内代码化方案或模式可以表示用来将每一帧转换成2D矩形表示的参数(例如指示所使用的Peirce五点梅花投影和任何等式或算法)。

在步骤S2410,视频解码器熵解码编码的视频比特。例如,能够通过使用例如场境自适应二进制算法解码进行熵解码,解码压缩视频比特来产生量化变换系数集合。在步骤S2415,视频解码器去量化由熵解码比特给出的变换系数。例如,熵解码视频比特能通过将相对小范围内的值映射到相对大范围中的值(例如与上述量化映射相反)来去量化。此外,在步骤S2420,视频解码器使用(例如在头部中)所示的变换(例如KLT、SVD、DCT或ADST),逆变换视频比特。

在步骤S2425,确定当前块是否处于帧(或图像)边界。例如,在一个示例性实施方式中,N×N块的C×R矩阵包括每一块中的像素。因此,行0、列0、行R-1和列C-1中的块包括球形图像的像素。因此,如果在扫描期间,块的C×R矩阵包括每一块中的像素并且列/行=0或列/行=C-1/R-1,则该块处于边界处。如果块处于边界处,则处理进行到步骤S2430。否则,处理继续到步骤S2440。

在步骤S2430,查找相邻端块。例如,在一个示例性实施方式中,块的C×R矩阵可以具有将边界块映射到对应的相邻端块的关联LUT。在该示例中,能在查找表(例如LUT 2145)中查找列和行相邻端块。

在步骤S2435,将相邻端块选择为至少一个模板。例如,如上所述,在帧内预测期间,能响应于相同帧(或图像)中先前编码和重构的块,生成预测块。可以从相邻块(例如待编码的块的上方和/或左边的块)选择先前编码和重构的块,作为模板。在这种情况下,待编码的块处于C×R矩阵中的列和/或行的端部。因此,待选择作为模板的相邻块的至少一个能是所查找的相邻端块的一个。

在步骤S2440,相邻块被选择为至少一个模板。例如,可以从相邻块(例如,待编码的块的上方和/或左边的块)选择先前编码和重构的块,作为模板。在这种情况下,待编码的块不在N×N矩阵的列和/或行的端部。因此,能从待编码的块的上方和/或左边的块,选择将被选择为模板的相邻块的至少一个。

在至少一个示例性实施例中,能选择多于一个相邻块用作模板。例如,能选择相邻块和与该相邻块相邻(在相同方向中)的块(例如两个块)。然后,能利用被选块来形成模板块。在该示例中,模板可以基于相邻块和相邻端块。

在步骤S2445,视频解码器基于匹配的模板和解码的视频比特,生成重构像素作为视频帧。例如,视频解码器可以将残差(例如变换的或解压缩的视频比特)添加到匹配的模板中对应的位置,导致重构的像素。

在步骤S2450,视频解码器滤波视频帧中的重构像素。例如,环路滤波器能被用于重构块来减少块的伪效应。例如,解块滤波器(例如如下文参考图26A和26B所述)能被应用于重构块来减少块失真。

在S2455,2D帧(或图像)被转换成球形视频帧(或图像)。例如,能够使用参考将球形帧(或图像)映射到球形帧(或图像)的2D表示所述的技术相反的技术,转换2D帧。在下文中,参考图8更详细地描述示例性技术。

在步骤S2460,视频解码器基于视频帧,生成球形视频流(或球形图像)。例如,可以按顺序组织重构转换的像素的至少一个视频帧来形成球形视频流。

图25是根据至少一个示例性实施例的用于将球形图像的2D表示转换成球形帧/图像的方法的流程图。如图25所示,在步骤S2505,将2D矩形表示映射到2D方形表示。例如,如图21C和21D所示,能将方形映射到由两个同等大小的方形形成的矩形。同等大小的方形中的一个能被划分成四个三角形,每一个具有方形的边。因此,能通过重新定位四个三角形中的三个来形成第三方形作为第二二维表示,执行逆映射。在示例性实施方式中,能逆时针旋转三角形2115,能顺时针旋转三角形2120并且能使三角形2125旋转180度。如图21C所示,旋转和定位三角形2115、2120和2125的每一个。

在步骤S2510,能将2D方形表示映射到球形帧(或图像)。例如,能使用Peirce五点梅花投影算法来将2D方形表示转换成球形帧。例如,能使用方程1来基于2D方形表示中的对应像素的x,y坐标,生成用于球形帧中的像素的球形坐标。

图26A和26B是根据至少一个示例性实施例的用于操作解块滤波器的方法的流程图。量化会在重构图像中引入块伪效应。解块滤波器可以被配置为平滑变换块之间的边缘。首先解块垂直边缘,然后解块水平边缘(然而,该顺序在不同实施方式中会不同)。解块滤波器能是内容自适应。换句话说,解块滤波器宽度(例如解块的像素的数量)取决于伪像(或失真)宽度或高度。逐个像素处理边缘,使得边缘的每一边上的8、4、2或1个像素被解块。解块滤波器搜索平整度和边缘上的亮度的区别步骤。通常,不解块图像、帧或片的边缘,因为在2D图像、帧或片中不存在比较块。然而,在示例性实施例中,图像、帧或片是球形图像、帧或片。因此,如在2D图像、帧或片中,不存在边界。

如图26A所示,在步骤S2605,扫描垂直边缘。例如,扫描从解码帧的左上角(0,0)开始。扫描能使列向下移动直到达到行R-1为止。然后,扫描能再次从行0开始并且逐步降低或按下-上-下顺序扫描。垂直边缘的每一扫描可以包括一个或多个块。

在步骤S2610,确定当前块是否处于帧(或图像)边缘处。例如,在一个示例性实施方式中,N×N块的C×R矩阵包括每一块中的像素。因此,行0、列0、行R-1和列C-1中的块包括球形图像的像素。因此,如果在垂直扫描期间,块的C×R矩阵包括每一块中的像素,并且列=0或列=C-1,则该块处于边缘处。此外,在垂直扫描中,待扫描的块能处于待处理的块的左边上或是待处理的块的左边。因此,如果从左处理定向扫描,列0包括边界块。如果从右处理方向扫描,则列C-1可以包括边界块。如果从双处理定向扫描,则列0和C-1可以包括边界块。如果块处于边界,则处理进行到步骤S2615。否则,处理继续块S2625。

在块2615,查找相邻端块。例如,在一个示例性实施方式中,块的C×R矩阵可以具有将边界块映射到对应的相邻端块的关联LUT。在该示例中,能在查找表(例如LUT 2145)中查找列和行相邻端块。

在步骤S2620,选择相邻端块作为比较块。例如,如上所述,在解块滤波期间,能滤波跨两个块的边缘的像素以移除块状转变。可以从(例如包括待滤波的垂直边缘的块的左边的)相邻块选择(经扫描的垂直边缘块的)比较块,作为比较块。在这种情况下,包括待滤波的垂直边缘的块处于帧(或图像)的C×R矩阵中的末尾列上。因此,选择为比较块的相邻块的至少一个能是所查找的相邻端块中的一个。换句话说,与待解块的块相比,将被选择作为比较块的相邻块能不同于左重构块。

在步骤S2625,选择相邻块作为比较块。例如,如上所述,在解块滤波期间,能滤波跨两个块的边缘以移除块状转变。可以从(例如包括待滤波的垂直边缘的块的左边的)相邻块选择(经扫描的垂直边缘块的)比较块,作为比较块。在这种情况下,包括待滤波的垂直边缘的块不处于帧的C×R矩阵中的末尾列上。因此,能从相邻(例如左边)列中的块选择将被选择为比较块的相邻块中的至少一个。

在步骤S2630,滤波垂直边缘。例如,如上所述,解块滤波器宽度(例如解块的像素的数量)能取决于伪像(或失真)宽度。因此,选择来自包括待滤波的垂直边缘的块的多个像素(例如,1、2、4或8个),并且选择来自比较块的相应多个像素。然后滤波像素。滤波(或解块)可以包括例如低通滤波器(例如以减少边缘上的亮度),将回归算法用在被选像素上,将基于小波的算法用在被选像素上,将基于各向异性扩散算法用在被选像素上,和/或在被选像素上执行像素的加权和。在任一情况下,能跨块边界执行解块。

在步骤S2635,确定当前块是否为最后一个垂直块。例如,如果从块0,0开始扫描,则最后一个块可以是块C-1,R-1。如果块是最后一个垂直块,则处理移动到步骤S2640。否则,处理返回到步骤S2605。

在步骤S2640,扫描水平边缘。例如,扫描在解码帧的左上角(0,0)开始。扫描向前移(向右移)直到达到列C-1为止。然后,扫描能再次从列0开始,并且逐步向右且按右-左-右顺序扫描。水平边缘的每一扫描可以包括一个或多个块。

在步骤S2645,确定当前块是否处于帧(或图像)边界。例如,在一个示例性实施方式中,N×N块的C×R矩阵包括每一块中的像素。因此,行0、列0、行R-1和列C-1中的块包括球形图像的像素。因此,如果在水平扫描期间,块的C×R矩阵包括每一块中的像素并且行=0或行=R-1,则该块处于边界处。如果块处于边界处,则处理移动到步骤S2650。否则,处理继续到步骤S2660。

在步骤S2650,查找相邻端块。例如,在一个示例性实施方式中,块的C×R矩阵可以具有将边界块映射到对应的相邻端块的关联LUT。在该示例中,能在查找表(例如LUT 2145)中查找列和行相邻端块。

在步骤S2655,选择相邻端块作为比较块。例如,如上所述,在解块滤波期间,能滤波跨两个块的边缘的像素以移除块状转变。可以从(例如包括待滤波的水平边缘的块上方的)相邻块选择(经扫描的水平边缘块的)比较块,作为比较块。在这种情况下,包括待滤波的水平边缘的块处于帧(或图像)的C×R矩阵中的上或下行中。因此,要选择为比较块的相邻块的至少一个能是所查找的相邻端块中的一个。换句话说,与待解块的块相比,将被选择作为比较块的相邻块能不同于上重构块。

在步骤S2660,选择相邻块作为比较块。例如,如上所述,在解块滤波期间,能滤波跨两个块的边缘的像素以移除块状转变。从(例如包括待滤波的水平边缘的块上方的)相邻块选择(经扫描的水平边缘块的)比较块,作为比较块。在这种情况下,包括待滤波的水平边缘的块不处于帧(或图像)的C×R矩阵中的上或下行中。因此,能从相邻(例如上方)行中的块,选择选择为比较块的相邻块的至少一个。

在步骤S2665,滤波水平边缘。例如,如上所述,解块滤波器宽度(例如解块的像素的数量)能取决于伪像(或失真)高度。因此,选择来自包括待滤波的水平边缘的块的多个像素(例如,1、2、4或8个),并且选择来自比较块的相应多个像素。然后滤波像素。滤波(或解块)可以包括例如低通滤波器(例如以减少边缘上的亮度),将回归算法用在被选像素上,将基于小波的算法用在被选像素上,将基于各向异性扩散算法用在被选像素上,和/或在被选像素上执行像素的加权和。在任一情况下,能跨块边界执行解块。

在步骤S2670,确定当前块是否为最后一个水平块。例如,如果从块0,0开始扫描,则最后一个块可以是块C-1,R-1。如果块是最后一个水平块,则解块过程结束。否则,处理返回到步骤S2640。

如将认识到,图1A和1B所图示的系统100和150可以实现为如下参考图27所述的通用计算机设备2700和/或通用移动计算机设备2750的元件和/或扩展。替选地,或除此之外,可以在与通用计算机设备2700和/或通用移动计算机设备2750分立的、具有如下参考通用计算机设备2700和/或通用移动计算机设备2750所述的一些或全部特征的系统中,实现图1A和1B所示的系统100和150。

图27是能用来实现本文所述的技术的计算机设备和移动计算机设备的示意框图。图27是了可与本文所述的技术一起使用的通用计算机设备2700和通用移动计算机设备2750的示例。计算设备2700旨在表示各种形式的数字式计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、主机及其它适当计算机。计算设备2750旨在表示各种形式的移动设备,诸如个人数字助理、蜂窝式电话、智能电话、及其它类似计算设备。本文所示的组件、其连接和关系、以及其功能旨在仅仅是示例性的,并不旨在限制在本文中描述和/或要求保护的本发明的实施方式。

计算设备2700包括处理器2702、存储器2704、存储设备2706、连接到存储器2704和高速扩展端口2710的高速接口以及连接到低速总线2714和存储设备2706的低速接口2712。组件2702、2704、2706、2708、2710和2712中的每一个被使用各种总线互连,并且可在公共主板上或视情况以其它方式安装。处理器2702可以处理用于在计算设备2700内执行的指令,包括存储在存储器2704中或存储设备2706上以在外部输入/输出设备,诸如被耦合到高速接口2708的显示器2716上显示用于GUI的图形信息。在其它实施方式中,可视情况使用多个处理器和/或多个总线以及多个存储器和多种类型的存储器。并且,可连接多个计算设备2700,每个设备提供所需操作的部分(例如,作为服务器群、一组刀片服务器、或多处理器系统)。

存储器2704存储计算设备2700内的信息。在一个实施方式中,存储器2704是易失性存储器单元。在另一实施方式中,存储器2704是非易失性存储器单元。存储器2704也可以是其他形式的非暂时计算机可读介质,诸如磁盘或光盘和/或非暂时性计算机可读存储介质。

存储设备2706能够为计算设备2700提供大容量存储。在一个实施方式中,存储设备2706可以是或包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪速存储器或其它类似的固态存储器设备或设备阵列,包括在存储区域网络或其它配置中的设备。可以在信息载体中有形地体现计算机程序产品。计算机程序产品还可包含在被执行时执行一个或多个方法,诸如上文所述的那些方法的指令。信息载体是计算机或机器可读介质,诸如存储器2704、存储设备2706或处理器2702上的存储器。

高速控制器2708管理用于计算设备2700的带宽密集操作,而低速控制器2712管理较低带宽密集操作。功能的这样的分配可以仅仅是示例性的。在一个实施方式中,高速控制器2708被耦合到存储器2704、显示器2716(例如,通过图形处理器或加速器)以及高速扩展端口2710,其可接受各种扩展卡(未示出)。在本实施方式中,低速控制器2712被耦合到存储设备2706和低速扩展端口2714。例如,可包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网等)的低速扩展端口可通过网络适配器耦合到一个或多个输入/输出设备,诸如键盘、指针设备、扫描仪或联网设备,诸如交换机或路由器。

可用许多不同的形式来实现计算设备2700,如图中所示。例如,可将其实现为标准服务器2720或者在一组这样的服务器中实现多次。还可将其实现为机架服务器系统2724的一部分。另外,可将其在诸如膝上型计算机2722的个人计算机中实现。替选地,可将来自计算设备2700的组件与移动设备(未示出),诸如设备2750中的其它组件组合。这样的设备中的每一个可包含计算设备2700、2750中的一个或多个,并且整个系统可由相互通信的多个计算设备2700、2750构成。

计算设备2750包括处理器2752、存储器2764、诸如显示器2754的输入/输出设备、通信接口2766以及收发器2768以及其它组件。设备2750还可提供有存储设备,诸如微型驱动或其它设备,以提供附加存储。组件2750、2752、2764、2754、2766和2768中的每一个被使用各种总线互连,并且组件中的多个可在公共主板上或视情况以其它方式安装。

处理器2752可以执行计算设备2750内的指令,包括存储在存储器2764中的指令。可将处理器实现为包括单独和多个模拟和数字处理器的芯片的芯片集。例如,处理器可提供设备2750的其它组件的协作,所述其它组件诸如用户接口的控件、由设备2750运行的应用以及设备2750的无线通信。

处理器2752可通过控制接口2758和被耦合到显示器2754的显示接口2756与用户通信。例如,显示器2754可以是TFTLCD(薄膜晶体管液晶显示器)或OLED(有机发光二极管)显示器或其它适当的显示技术。显示接口2756可包括用于驱动显示器2754以向用户呈现图形及其它信息的适当电路。控制接口2758可从用户接收命令并对其进行转换以便提交到处理器2752。另外,可提供与处理器2752通信的外部接口2762,从而使得能够实现设备2750与其它设备的近区域通信。例如,外部接口2762可在某些实施方式中提供有线通信或者在其它实施方式中提供无线通信,并且还可使用多个接口。

存储器2764存储计算设备2750内的信息。可以将存储器2764实现为计算机可读介质、易失性存储器单元或非易失性存储器单元中的一个或多个。例如,还可提供扩展存储器2774并通过扩展接口2772将其连接到设备2750,该扩展接口2772可包括SIMM(单列直插式存储器模块)卡接口。这样的扩展存储器2774可为设备2750提供额外存储空间,或者还可以存储用于设备2750的应用或其它信息。具体地,扩展存储器2774可包括用以执行或补充上述过程的指令,并且也可包括安全信息。因此,例如,可将扩展存储器2774提供为用于设备2750的安全模块,并且可用许可设备2750的安全使用的指令进行编程。另外,可经由SIMM卡来提供这样的应用,连同附加信息一起,诸如以不可入侵方式在SIMM卡上放置识别信息。

例如,存储器可包括闪速存储器和/或NVRAM存储器,如下面所讨论的。在一个实施方式中,在信息载体中有形地体现计算机程序产品。该计算机程序产品包含指令,该指令在被执行时执行一个或多个方法,诸如上文所述的那些。例如,该信息载体是计算机或机器可读介质,诸如存储器2764、扩展存储器2774或者可通过收发器2768或外部接口2762接收的处理器2752上的存储器。

设备2750可通过通信接口2766来无线地进行通信,该通信接口2766在必要时可包括数字信号处理电路。通信接口2766可提供各种模式或协议下的通信,诸如GSM语音呼叫、SMS、EMS或MMS通讯、CDMA、TDMA、PDC、WCDMA、CDMA2000或GPRS及其它。例如,这样的通信可通过射频收发器2768发生。另外,近程通信可诸如使用蓝牙、WiFi或其它这样的收发器(未示出)发生。另外,GPS(全球定位系统)接收器模块2770可向设备2750提供附加导航和/或位置相关无线数据,其可视情况被在设备2750上运行的应用使用。

设备2750还可使用音频编解码器2760以可听方式通信,其可从用户接收说出的信息并将其转换成可用数字信息。例如,音频编解码器2760可同样地在设备2750的耳机中诸如通过扬声器来为用户生成可听声音。这样的声音可包括来自语音电话呼叫的声音,可包括所记录的声音(例如,语音消息、音乐文件等),并且还可包括由在设备2750上操作的应用生成的声音。

可以许多不同的形式来实现计算设备2750,如图中所示。例如,可将其实现为蜂窝式电话2780。还可将其实现为智能电话2782、个人数字助理或其它类似移动设备的一部分。

将上述示例实施例中的某些描述为被描述为流程图的过程或方法。虽然流程图可将操作描述为连续过程,但许多操作可并行地、并发地或同时地执行。另外,可重新排列操作的顺序。过程在其操作完成时可终止,但是也可具有图中未包括的附加步骤。该过程可对应于方法、功能、规程、子例程、子程序等。

可通过硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现上文所讨论的方法,通过流程图举图示了其中的某些。当用软件、固件、中间件或微代码来实现时,可将执行必要任务的程序或代码段存储在诸如存储介质。处理器可执行所需任务。

出于描述示例实施例的目的,在本文中公开的特定结构和功能细节仅仅是代表性的。然而,可用许多替选形式来体现示例实施例,并且不应将其理解为仅限于本文所阐述的实施例。

将理解的是虽然在本文中可使用术语第一、第二等来描述各种元件,但这些元件不应受到这些术语的限制。这些术语仅用来将一个元件与另一个区别开。例如,在不脱离示例实施例的范围的情况下,可以将第一元件称为第二元件,同样地,可以将第二元件称为第一元件。如本文所使用的术语“和/或”包括关联开列项目中的一个或多个的任何和所有组合。

将理解的是当将元件称为“连接”或“耦合”到另一元件时,其可以被直接地连接或耦合到该另一元件或者可存在中间元件。相反地,当将元件被称为“直接地被连接”或“直接地被耦合”到另一元件时,不存在中间元件。应以类似方式解释用来描述元件之间的关系的其它词语(例如,“在...之间”对比“直接地在...之间”、“邻近于”或“直接地邻近于”等)。

在本文中使用的术语仅仅是出于描述特定实施例的目的且并不旨在限制示例实施例。如本文所使用的单数形式“一”、“一个”和“所述”旨在也包括复数形式,除非上下文另外清楚地指明。将进一步理解的是术语“包括”和/或“包含”当在本文中使用时指定所述特征、整体、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组的存在或添加。

还应注意到的是在某些替选实施方式中,所述功能/动作可不按照图中所述的顺序发生。例如,取决于涉及到的功能/动作,连续地示出的两个图实际上可基本上同时地执行或者有时被按照相反顺序执行。

除非另外定义,本文所使用的所有术语(包括技术和科学术语)具有如示例实施例所属技术领域的技术人员一般地理解的相同意义。将进一步理解的是应将术语,例如,在一般使用的词典中所定义的那些术语理解为具有与其在相关技术的背景中的意义一致的意义,并且不应在理想化或过度形式化的意义上解释,除非在本文中明确地这样定义。

在对计算机存储器内的数据位的操作的软件或算法和符号表示方面提出了上述示例实施例和对应详细描述的部分。这些描述和表示是本领域的技术人员用来向本领域的其他技术人员有效地传达其工作的主旨的描述和表示。将算法,如本文所使用术语并且如其一般地使用的那样,设想为是导致期望结果的步骤的自相一致序列。该步骤是要求物理量的物理操纵的那些。通常但不一定,这些量采取能够被存储、传送、组合、比较以及另外操纵的光、电或磁信号的形式。将这些信号称为位、值、元素、符号、字符、项、数等有时已被证明是方便的,主要是由于常见使用的原因。

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

然而,应记住的是所有这些和类似术语将与适当地物理量相关联,并且仅仅是应用于这些量的方便标记。除非另外具体地叙述,或者从本讨论显而易见,诸如“处理”或“运算”或“计算”、“确定”或“显示”等术语指代计算机系统或类似电子计算设备的动作和过程,其操纵被表示为计算机系统的寄存器和存储器内的物理量、电子量的数据并将其变换成同样地表示为计算机系统存储器或寄存器或其它这样的信息存储、传输或显示设备内的物理量的其它数据。

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

示例性实施例描述用于将球形图像和视频转换成2D表示并且在编码/解码图像和/或视频帧期间,利用2D表示的特定特性的技术。

在一般方面,一种编码球形视频的方法能包括基于投影,将所述球形视频的帧映射到二维表示。此外,在预测过程中,该方法能包括确定与预测方案相关联的至少一个块是否处于二维表示的边界上;以及在确定与预测方案相关联的至少一个块处于边界上时,选择相邻端块作为包括在预测过程期间使用的至少一个像素的块,相邻端块与二维表示的两个或更多个边界相关联。

实施方式能包括下述特征中的一个或多个。例如,预测过程能是帧内预测过程,与预测方案相关联的至少一个块能够是待编码的块,以及相邻端块被选择作为以下中的一个:待编码的块的左重构块或上重构块。预测过程能是帧间预测过程,以及与预测方案相关联的至少一个块能是包括在待搜索匹配块的参考帧中的多个块中的块。预测过程能是帧间预测过程,以及与预测方案相关联的至少一个块被选择为来自待搜索的参考帧中的多个块中的预测块,多个块横跨参考帧的边界。

例如,将球形视频的帧映射到二维表示能包括使用基于等距长方投影的等式。将球形视频的帧映射到二维表示能包括基于半等距长方投影的等式。例如,该方法能进一步包括在确定待编码的块远离边界时,在帧内预测过程中,选择相邻块作为模板,相邻端块是以下中的至少一个:待编码的块的左重构块或上重构块。选择相邻端块包括从以下中的至少一个中选择重构块:与预测方案相关联的块相同的行的相对端或与待编码的块相同的列的相对端。选择相邻端块包括从查找表选择重构块。

例如,该方法能进一步包括基于待编码的块的未编码像素,生成至少一个残差;通过将变换应用于包括至少一个残差的残差块,编码至少一个残差;量化与所编码的至少一个残差相关联的变换系数;将所量化的变换系数熵编码为压缩视频比特流;以及传送包括指示帧内代码化模式的头部的压缩视频比特,帧内代码化模式指示在将球形视频的帧映射到二维表示期间使用的技术。

在一般方面,一种解码球形视频的方法包括接收包括指示帧内代码化的头部的编码比特流,帧内代码化模式指示在将球形视频的帧转换成二维表示期间使用的技术。此外,在预测过程中,该方法能包括确定与预测方案相关联的至少一个块是否处于二维表示的边界上;在确定与预测方案相关联的至少一个块处于边界上时,选择相邻端块作为包括在预测过程期间使用的至少一个像素的块,相邻端块与二维表示的两个或更多个边界相关联。该方法进一步包括基于圆柱投影,将二维表示转换成球形视频的帧。

实施方式能包括下述特征中的一个或多个。例如,二维表示的转换能包括基于投影的逆变换,使用等式将二维表示映射到球形图像。预测过程能是帧内预测过程,与预测方案相关联的至少一个块是待编码的块,以及相邻端块能被选择作为以下中的一个:左重构块或上重构块。例如,预测过程能是帧间预测过程,以及与预测方案相关联的至少一个块能是包括在待为匹配块而进行搜索的参考帧中的多个块中的块。预测过程能是帧间预测过程;以及与预测方案相关联的至少一个块能被选择作为来自待搜索的参考帧中的多个块中的预测块,多个块横跨参考帧的边界。

在一般方面,一种具有其上所存储的计算机可执行程序代码的的非暂时计算机可读存储介质,所述计算机可执行程序代码当在计算机系统上执行时,使计算机系统执行包括基于投影,将球形视频的帧映射到二维表示的步骤。此外,在预测过程中,步骤能包括确定与预测方案相关联的至少一个块是否处于二维表示的边界上;以及在确定与预测方案相关联的至少一个块处于边界上时,选择相邻端块作为包括在预测过程期间使用的至少一个像素的块,相邻端块与二维表示的两个或更多个边界相关联。

实施方式能包括下述特征的一个或多个。例如,预测过程能是帧内预测过程,与预测方案相关联的至少一个块能是待编码的块,以及相邻端块能被选择作为以下中的一个:待编码的块的左重构块或待编码的块的上重构块中的一个。例如,预测过程能是帧间预测过程,以及与预测方案相关联的至少一个块能是包括在为匹配块而进行搜索的参考帧中的多个块中的块。预测过程能是帧间预测过程;以及与预测方案相关联的至少一个块能被选择作为来自待搜索的参考帧中的多个块中的预测块,多个块横跨参考帧的边界。选择相邻端块能包括从以下中的至少一个中选择重构块:与预测方案相关联的块相同的行的相对端或与待编码的块相同的列的相对端。

示例性实施例描述基于球形视频的(由视频的观众)可见部分,优化流传送球形视频(和/或其他三维视频)的系统和方法。

在一般方面,方法包括基于视野视角确定球形视频的帧中的瓦片位置,基于该瓦片位置选择球形视频的帧的第一部分作为第一二维瓦片,从球形视频的帧的第二部分选择多个第二二维瓦片,帧的第二部分围绕帧的第一部分并且远离帧的第一部分延伸,使用第一质量编码第一二维瓦片,使用至少一个第二质量编码多个第二二维瓦片,以及传送分组作为流化球形视频,该分组包括编码的第一二维瓦片和多个编码的第二二维瓦片。

实施方式能包括下述特征中的一个或多个。例如,该方法进一步包括基于到二维形状表面的投影,将球形视频的帧映射到二维表示。与至少一个第二质量相比,第一质量是更高的质量。在回放球形视频期间,视野视角基于如由观众看到的球形视频的可观看部分。例如,该方法能进一步包括从执行球形视频的回放的设备接收视野视角的指示。该分组进一步包括头部和包括在与编码的第一二维瓦片和多个编码的第二二维瓦片不相关联的帧的数据位置中的伪数据的模仿帧。多个编码的第二二维瓦片包括不同大小的两个或更多个二维瓦片以及两个或更多个二维瓦片相互重叠。当多个第二二维瓦片远离帧的第一部分延伸时,多个第二二维瓦片包括第三瓦片,与更接近第一瓦片的第四瓦片的尺寸相比第三瓦片具有更大尺寸。

多个第二二维瓦片包括不同尺寸的瓦片,以及与不同尺寸的瓦片的较小瓦片相比,不同尺寸的瓦片中的较大瓦片被编码较低质量。编码第一二维瓦片和多个第二二维瓦片能包括分别编码每一瓦片以及编码能包括通过从待编码的二维瓦片的块的未编码像素减去模板,来生成用于二维瓦片的至少一个残差,通过将变换应用于包括至少一个残差的残差块来编码至少一个残差,量化与编码的至少一个残差相关联的变换系数,并且将量化的变换系数熵编码为至少一个压缩视频比特,其中,生成至少一个残差、编码至少一个残差、量化变换系数和量化变换系数中的至少一个包括基于第一质量来设置至少一个参数。

在一般方面,一种方法包括接收编码的比特流,编码的比特流包括从球形视频的帧选择的多个编码的二维瓦片,基于多个编码的二维瓦片来解码二维表示,将二维表示转换成球形视频帧,并且回放包括球形视频帧的球形视频。与在回放球形视频期间处于外围视野处或视野视角外部的球形视频帧的一部分相比,球形视频帧能包括与处于能由观众看到的视野视角处的球形视频帧的一部分相关联的更高质量瓦片。

实施方式能包括下述特征中的一个或多个。例如,该方法能进一步包括基于球形视频的模仿帧生成二维表示,球形视频的模仿帧包括与多个编码的二维瓦片不相关联的帧的数据位置中的伪数据。转换球形视频帧的二维表示包括使用与用来将球形视频帧映射到球形视频帧的二维表示相反的技术,将球形视频帧的二维表示映射到球形图像。例如,该方法能进一步包括确定如由观众看到的视野视角已经改变,并且在确定视野视角已经改变时,触发向执行球形视频的编码的设备指示改变的视角视野。

在一般方面,一种具有其上所存储的计算机可执行程序代码的非暂时性计算机可读存储介质,所述计算机可执行程序代码当在计算机系统上执行时,使计算机系统执行包括下述的步骤:基于视野视角确定球形视频的帧中的瓦片位置,基于该瓦片位置选择球形视频的帧的第一部分作为为第一二维瓦片,从球形视频的帧的第二部分选择多个第二二维瓦片,帧的第二部分围绕帧的第一部分并且远离帧的第一部分延伸,使用第一质量编码第一二维瓦片,使用至少一个第二质量编码多个第二二维瓦片,以及传送分组作为流化球形视频,该分组包括编码的第一二维瓦片和多个编码的第二二维瓦片。

实施方式能包括下述特征中的一个或多个。例如,与至少一个第二质量相比,第一质量是更高的质量。在回放球形视频期间,视野视角基于如由观众看到的球形视频的可见部分。步骤能进一步包括从执行球形视频的回放的设备接收视野视角的指示。多个编码的第二二维瓦片包括不同大小的两个或更多个二维瓦片以及两个或更多个二维瓦片相互重叠。当多个第二二维瓦片远离帧的第一部分延伸时,多个第二二维瓦片包括第三瓦片,与更接近第一瓦片的第四瓦片的尺寸相比第三瓦片具有更大尺寸。

示例性实施例描述基于球形视频的(由视频的观众)可见部分,优化流传送球形视频(和/或其他三维视频)的系统和方法。

在一般方面,一种方法包括基于视野视角确定球形视频的帧中的瓦片位置,基于该瓦片位置选择球形视频的帧的一部分作为二维瓦片,以第一质量编码该二维瓦片,基于二维投影算法将球形视频的帧映射到球形视频的二维表示,并且以第二质量编码球形视频的二维表示。

实施方式能包括下述特征中的一个或多个。例如,该方法能进一步包括将编码的二维瓦片和编码的二维表示传送为流传送球形视频。与第二质量相比第一质量是更高的质量。在回放球形视频期间,视野视角能基于如由观众看到的球形视频的可观看部分。例如,该方法能进一步包括从执行球形视频的回放的设备接收视野视角的指示。例如,该方法能进一步包括在同时流传送球形视频的第一时间段传送编码的二维瓦片,并且在同时流传送该球形视频的第一时间段传送编码的二维瓦片和编码的二维表示。

例如,选择球形视频的帧的部分作为二维瓦片和编码二维瓦片能包括从先前编码的瓦片的数据库选择二维瓦片并且从数据库读取二维瓦片。选择球形视频的帧的部分作为二维瓦片能包括基于球形视频上的位置,从球形视频的帧选择二维瓦片作为待编码的帧,其中,所述球形视频上的位置基于视野视角。编码二维瓦片能包括通过从待编码的二维瓦片的块的未编码像素减去模板,来生成用于二维瓦片的至少一个残差,通过将变换应用于包括至少一个残差的残差块来编码至少一个残差,并且将量化的变换系数熵编码为至少一个压缩视频比特,其中,以下中的至少一个包括基于第二质量来设置至少一个参数:生成至少一个残差、编码至少一个残差、量化变换系数和量化变换系数。

例如,编码球形视频的二维表示能包括通过从待编码的球形视频的二维表示的块的未编码像素减去模板,生成用于球形视频的二维表示的至少一个残差,通过将变换应用于包括至少一个残差的残差块来编码至少一个残差,量化与编码的至少一个残差相关联的变换系数,以及将量化的变换系数熵编码为至少一个压缩视频比特,其中,以下中的至少一个包括基于第二质量来设置至少一个参数:生成至少一个残差、编码至少一个残差、量化变换系数和量化变换系数。

在一般方面,一种方法包括接收编码的比特流,编码的比特流包括球形视频帧的编码的二维表示和从球形视频帧选择的编码的二维瓦片,解码二维瓦片,解码球形视频帧的二维表示,将二维表示转换成球形视频帧,以及用解码的二维瓦片替换球形视频帧的对应块。

实施方式能包括下述特征中的一个或多个。例如,接收编码比特流包括接收指示在将球形视频的帧转换成球形视频帧的二维表示期间使用的技术的头部。用解码的二维瓦片替换球形视频帧的对应块包括以下中的一个:用解码的二维瓦片的像素或块,逐个像素或逐个块替换解码和转换的球形视频帧中的像素或块。

例如,转换球形视频帧的二维表示包括使用与用来将球形视频帧映射到球形视频帧的二维表示相反的技术,将球形视频帧的二维表示映射到球形图像。例如,该方法能进一步包括基于包括替换的二维瓦片的至少一个球形视频帧来生成球形视频流,使得在回放球形视频流期间,其中,球形视频流的可见部分质量高于球形视频流的不可见部分。

在一般方面,一种其上存储有计算机可执行程序代码的非暂时性计算机可读存储介质,所述计算机可执行程序代码当在计算机系统上执行时,使计算机系统执行步骤,包括:基于视野视角确定球形视频的帧中的瓦片位置,基于瓦片位置将球形视频的帧的一部分选择为二维瓦片,以第一质量编码二维瓦片,基于二维投影算法将球形视频的帧映射到球形视频的二维表示,并且以第二质量编码球形视频的二维表示。

实施方式能包括下述特征中的一个或多个。例如,步骤能进一步包括从执行球形视频的回放的设备接收视野视角的表示,其中,在回放球形视频期间,视野视角基于如由观众看到的球形视频的可观看部分。第一质量是与第二质量相比更高的质量。将球形视频的帧的部分选择为二维瓦片并且编码二维瓦片能包括从先前编码的瓦片的数据库选择二维瓦片,并且从数据库读取二维瓦片。将球形视频的帧的部分选择为二维瓦片能包括基于球形视频上的位置,从球形视频的帧选择二维瓦片,作为待编码的帧,其中,球形视频的位置基于视野视角。

示例性实施例描述用于将球形图像和视频转换成2D表示并且在图像和/或视频的帧的编码/解码期间,利用2D表示的特定特性。

在一般方面,一种编码球形视频的方法能包括基于球形到方形投影,将球形视频的帧映射到第一二维表示,该第一二维表示为方形,将第一二维表示映射到第二二维表示,该第二二维表示为矩形,并且将第二二维表示编码为编码的比特流。

实施方式能包括下述特征中的一个或多个。例如,球形到方形投影能是Peirce五点梅花投影。例如,在帧内预测过程期间,该方法能包括确定待编码的块是否在第二二维表示的边界上,并且在确定待编码的块在所述边界上时,将相邻端块选择为模板,所述相邻端块不同于待编码的块的左重构块或上重构块。该方法能进一步包括确定待解块的块是否在二维表示的边界上,并且在确定待解块的块在边界上时,将相邻端块选择为比较块,该相邻端块不同于待解块的块的左重构块或上重构块。

例如,第二二维表示由具有相同长度边的方形形成,以及两个方形由第一二维表示形成。将第一二维表示映射到第二二维表示能包括确定具有在与第一二维表示的角等距处与第一二维表示的每一边交叉的角的第一方形,确定四个三角形,每个三角形具有与球形视频的帧的内圆的不同边接触的边,基于四个三角形生成第二方形,并且基于第一方形和第二方形,生成第二二维表示。该方法能进一步包括生成指示至少一个对应相邻端块的位置的查找表。

例如,编码第二二维表示能包括通过从待编码的块的未编码像素减去模板来生成至少一个残差,通过将变换应用于包括至少一个残差的残差块来编码至少一个残差,量化与编码的至少一个残差相关联的变换系数,将量化的变换系数熵编码为压缩视频比特流,以及传送包括指示帧内代码化模式的头部的压缩视频比特流,帧内代码化模式指示在将球形视频的帧映射到二维表示期间使用的技术。

在一般方面,一种解码球形视频的方法能包括接收包括头部的编码的比特流,头部指示在将球形视频的帧转换成第一二维表示期间使用的投影技术,解码第一二维表示,将第一二维表示映射到第二二维表示,第一二维表示是矩形,以及第二二维表示为方形,并且基于球形到方形投影,将第二二维表示映射到球形视频的帧。

实施方式能包括下述特征中的一个或多个。例如,球形到方形投影能是Peirce五点梅花投影。在帧内预测过程期间,该方法能进一步包括确定待解码的块是否在第一二维表示的边界上,并且在确定待解码的块在边界上时,将相邻端块选择为模板,相邻端块不同于待编码的块的左重构块或上重构块。

例如,该方法能进一步包括确定待解块的块是否在二维表示的边界上,并且在确定待解块的块在边界上时,将相邻端块选择为比较块,相邻端块不同于待解块的块的左重构块或上重构块。第一二维表示由具有相同长度边的两个方形形成。例如,将第一二维表示映射到第二二维表示能包括基于第一二维表示生成第一方形和第二方形,由第二方形确定四个三角形,每个三角形具有第二方形的一边,并且重新定位四个三角形中的三个以形成第三方形作为第二二维表示。

该方法能进一步包括生成指示至少一个对应相邻端块的位置的查找表。解码第一二维表示能包括熵解码编码的比特流来生成量化的编码的变换系数,去量化该量化的编码的变换系数来生成编码的变换系数,将变换应用于编码的变换系数来生成至少一个重构预测残差,并且将至少一个重构预测残差添加到与匹配模板相关联的预测块来重构像素块。

在一般方面中,一种在其上存储计算机可执行程序代码的非暂时性计算机可读存储介质计算机可执行程序代码当在计算机系统上执行时,使计算机系统执行步骤,包括:基于球形到方形投影将球形视频的帧映射到第一二维表示,该第一二维表示为方形,将第一二维表示映射到第二二维表示,该第二二维表示为矩形,并且将第二二维表示编码为编码的比特流。

实施方式能包括下述特征中的一个或多个。例如,在帧内预测过程期间,该步骤能进一步包括确定待编码的块是否在第二二维表示的边界上,并且在确定待编码的块在所述边界上时,将相邻端块选择为模板,所述相邻端块不同于待编码的块的左重构块或上重构块。该步骤能进一步包括确定待解块的块是否在二维表示的边界上,并且在确定待解块的块在边界上时,将相邻端块选择为比较块,该相邻端块不同于待解块的块的左重构块或上重构块。

将第一二维表示映射到第二二维表示能包括确定具有在与第一二维表示的角等距处与第一二维表示的每一边交叉的角的第一方形,确定四个三角形,每个三角形具有与球形视频的帧的内圆的不同边接触的边,基于四个三角形生成第二方形,并且基于第一方形和第二方形生成第二二维表示。

尽管附图指出本文所述的特征的特定组合,本公开的范围不限于下文所述的特定组合,而是延伸到涵盖本文所公开的特征或实施例的任何组合,与此时附图中是否具体列举那一特定组合无关。

相关技术
  • 连续预测域
  • 连续预测域
技术分类

06120112195893