用于编码和解码全向视频的方法和装置与流程

文档序号:17733236发布日期:2019-05-22 02:59阅读:267来源:国知局
用于编码和解码全向视频的方法和装置与流程

公开了一种用于将图片译码到比特流中的方法和装置,其中所述图片代表投影到一个或多个图片上的全向视频。还公开了对应的解码方法和装置。



背景技术:

最近,可用的大视场内容(高达360°)有所增长。这样的内容可能不会被观看诸如头戴式显示器(hmd)、智能眼镜、pc屏幕、平板、智能电话等的沉浸式显示设备上的内容的用户完全看得见。这意味着在给定时刻,用户可能只是查看内容的一部分。然而,用户典型地可以通过诸如头部移动、鼠标移动、触摸屏、语音等的各种手段在内容内导航。典型地希望对该内容进行编码和解码。



技术实现要素:

根据本原理的一方面,公开了一种视频编码的方法。这样的方法包括,对于图片的至少一个当前块:

基于图片被表示的第一格式与图片要被呈现的第二格式之间的关系,调整用于所述当前块的至少一个运动矢量预测器;以及

使用所调整的运动矢量预测器对所述当前块进行编码。

本公开允许考虑要编码的图片与图片要在其上呈现的格式之间的关系,以用于调整用于对图片的块进行编码的运动矢量预测器。因此,运动矢量预测器更适合于使用例如运动补偿模式对当前块进行编码。由此提高压缩效率。

根据本公开的另一方面,公开了一种对视频进行解码的方法。这样的方法包括,对于图片的至少一个当前块:

基于图片被表示的第一格式与图片要被呈现的第二格式之间的关系,调整用于所述当前块的至少一个运动矢量预测器;以及

使用所调整的运动矢量预测器对所述当前块进行解码。

根据本公开的实施例,根据查找表确定所述第一格式与所述第二格式之间的关系,该查找表包括所述图片被表示的所述第一格式的用于多个定位的运动矢量与图片要被呈现的所述第二格式的多个对应定位中的运动矢量之间的对应。由此降低计算复杂性。

根据本公开的另一实施例,视频是全向视频,并且图片代表所述视频的2d投影。

根据本公开的另一实施例,所述第一格式与所述第二格式之间的关系至少使用所述全向视频到所述图片上的所述投影。该实施例允许考虑由用于将表示全向视频的图像的3d表面投影到2d图片上的投影函数所引入的失真,以确定用于当前块的运动矢量预测器。

根据本公开的另一实施例,调整用于所述当前块的至少一个运动矢量预测器包括:

使用所述运动矢量预测器在投影空间中计算所述当前块的至少一个点的位移,获得投影空间中的位移点,

将所述位移点投影到图片上,

将所述所调整的运动矢量预测器计算为所投影的位移点在图片上的定位与所述当前块的所述点之间的差。

根据该实施例,在投影空间中,运动矢量预测器应用于要编码的当前块的点。然后,将位移点投影在图片上,以用于计算适合于当前块的运动矢量预测器。根据该实施例,由3d表面到图片上的投影所引入的失真被应用于用于对当前块进行译码的运动矢量预测器。因此,所得运动矢量预测器更接近当前块的视运动(apparentmotion)。

根据本公开的另一实施例,运动矢量预测器是来自所述图片中的块的运动矢量,并且调整用于所述当前块的至少一个运动矢量预测器还包括:

将所述运动矢量预测器应用于所述图片的锚点以用于获得位移锚点,

将所述当前块的所述点、所述锚点和所述位移锚点投影到所述投影空间上,

到所述投影空间中将投影运动矢量预测器计算为所投影的位移锚点与所投影的锚点之间的差,使用所述投影运动矢量预测器在投影空间中计算被执行的所述当前块的至少一个点的位移。

这样的实施例允许考虑由投影函数引入到运动场的失真。在这样的实施例中,在图片中表示运动矢量分量,因此使用运动补偿预测的运动矢量和当前块信息的预测更容易,因为在编码空间(即2d空间)中执行所有预测。

根据本公开的另一实施例,锚点属于包括以下的列表:

第一点,其为所述当前块的相邻块的中心点,

第二点,其通过所述中心点在所述相邻块与所述当前块之间共享的所述当前块的边缘上的投影来确定,

第三点,其通过所述第一点的用于沿着水平轴或垂直轴将所述第三点与所述当前块的中心点对准的平移来确定,

第四点,其通过所述第三点在所述共享边缘上的投影来确定,

第五点,其被确定为作为到当前块的所述中心的最近点的相邻块的点。

由于2d图像是3d表面的投影,所以在2d图像的块中,运动不均匀。因此,对与预测器块相关联的点(所谓的锚点,对其应用运动矢量预测器以用于确定所调整的运动矢量预测器)的选择影响所得调整的运动矢量预测器。对关于与运动矢量预测器相关联的块的锚点的位置的选择可以在比特流中用信号通知,或者可以在编码器和解码器二者处以相同的方式确定。这样的选择可以取决于投影函数的类型和/或与运动矢量预测器相关联的块的图片中的定位,因为图片中的失真可能在图片内变化。

根据本公开的另一实施例,投影空间是作为与3d表面相切的局部平面的局部呈现帧。

根据本公开的另一实施例,投影空间对应于代表所述全向视频的3d表面。该实施例允许通过将局部呈现帧上的投影近似为3d表面上的投影来简化所调整的运动矢量预测器的推导过程。根据本公开的另一实施例,运动矢量预测器是其分量表达在3d表面上的运动矢量。

根据该实施例,所调整的运动矢量预测器推导过程被简化,因为位移的计算在3d空间中比在图片中更不复杂。然而,根据该实施例,运动补偿预测处理更复杂,因为它应当在2d空间中执行。

根据本公开的另一实施例,当前块被分割成包括一个或多个像素的子块,并且使用所述所调整的运动矢量预测器对所述当前块进行编码包括:

使用所述所调整的运动矢量预测器来计算用于当前块的每个子块的运动矢量,

使用针对每个子块计算的所述运动矢量对所述当前块的每个子块进行编码。

根据该实施例,通过针对当前块的每个子块从所调整的运动矢量预测器导出运动矢量,来考虑由投影函数在运动场中引入的失真。由此改进当前块的预测,因为用于预测当前块的数据的运动矢量比例如在块的中心处应用于整个块的单个运动矢量更合适。

根据本公开的另一实施例,当前块被分割成包括一个或多个像素的子块,并且使用所述所调整的运动矢量预测器对所述当前块进行解码包括:

使用所述所调整的运动矢量预测器来计算用于当前块的每个子块的运动矢量,

使用针对每个子块计算的所述运动矢量对所述当前块的每个子块进行解码。

根据本公开的另一实施例,当前块被分割成包括一个或多个像素的子块,并且使用所述运动矢量预测器,所述调整用于所述当前块的一个运动矢量预测器以及所述编码针对所述当前块的每个子块来执行,针对所述当前块的每个子块获得所调整的运动矢量预测器。

根据该实施例,通过根据本原理针对当前块的每个子块导出所调整的运动矢量预测器,来考虑由投影函数在运动场中引入的失真。由此改进当前块的预测,因为用于预测当前块的数据的运动矢量比例如在块的中心处应用于整个块的单个运动矢量更合适。

根据本公开的另一实施例,当前块被分割成包括一个或多个像素的子块,并且使用所述运动矢量预测器,所述调整用于所述当前块的一个运动矢量预测器和所述解码针对所述当前块的每个子块来执行,针对所述当前块的每个子块递送所调整的运动矢量预测器。

根据本公开的另一实施例,当所述运动矢量预测器是时间运动矢量预测器时或者当所述运动矢量预测器使用与所述当前块使用的参考帧不同的参考帧时,所公开的编码和/或解码方法还包括至少使用所述投影函数来缩放所述所调整的运动矢量预测器。

根据本公开的另一实施例,所公开的编码和/或解码方法还包括:

构建至少包括所述运动矢量预测器的运动矢量预测器列表,

所述调整所述运动矢量预测器针对列表中的每个运动矢量预测器来执行,递送所调整的运动矢量预测器的列表,

删减所调整的运动矢量预测器的所述列表,以便移除相同的所调整的运动矢量预测器。

根据该实施例,在校正运动矢量预测器之后执行运动矢量预测器的删减,以便从运动矢量预测器列表中的合适的运动矢量预测器中受益。

根据本原理的另一方面,公开了一种用于视频编码的装置。这样的装置包括,对于图片的至少一个当前块:

用于基于图片被表示的第一格式与图片要被呈现的第二格式之间的关系来调整用于所述当前块的至少一个运动矢量预测器的部件;以及

用于使用所调整的运动矢量预测器对所述当前块进行编码的部件。

根据本原理的另一方面,公开了一种用于对视频进行解码的装置。这样的装置包括,对于图片的至少一个当前块:

用于基于图片被表示的第一格式与图片要被呈现的第二格式之间的关系来调整用于所述当前块的至少一个运动矢量预测器的部件;以及

用于使用所调整的运动矢量预测器来对所述当前块进行解码的部件。

还公开了代表译码视频的比特流。这样的比特流包括代表所述视频的图像的至少一个块的译码数据,以及代表查找表的译码数据,该查找表包括所述图片被表示的第一格式的像素与图片要被呈现的第二格式的像素之间的对应,以用于调整用于所述至少一个块的至少一个运动矢量预测器。

根据本公开的另一实施例,比特流存储在非临时性处理器可读介质上。

本实施例还提供了一种用于传送根据上述方法生成的比特流的装置。

还公开了一种沉浸式呈现设备,其包括用于对代表视频的比特流进行解码的装置。

还公开了一种用于编码到比特流中的沉浸式视频的沉浸式呈现的系统。这样的系统至少包括:

用于从数据网络接收所述比特流的网络接口,

用于根据在此公开的任何一个实施例对所述比特流进行解码的装置,

用于呈现经解码沉浸式视频的沉浸式呈现设备。

根据一个实现方式,如上所述的用于对视频进行编码或用于对代表视频的比特流进行解码的方法的不同步骤由包括旨在由用于对视频进行编码或用于对代表视频的比特流进行解码的装置的数据处理器执行的软件指令的一个或多个软件程序或软件模块程序来实现,这些软件指令被设计为命令执行根据本原理的方法的不同步骤。

还公开了一种计算机程序,其能够由计算机或数据处理器来执行,该程序包括命令执行如上所述的对视频进行译码的方法的步骤或对代表视频的比特流进行解码的方法的步骤的指令。

该程序无论如何可以使用任何编程语言,并且可以是源代码、目标代码或源代码与目标代码之间的中间代码的形式,诸如以部分编译的形式或任何其他期望的形式。

信息载体无论如何可以是能够存储程序的任何实体或装置。例如,载体可以包括诸如rom(例如cdrom或微电子电路rom)之类的储存部件,或者此外包括磁记录部件,例如软盘或硬盘驱动器。

此外,信息载体可以是可传送的载体,诸如电信号或光信号,其可以经由电缆或光缆,通过无线电或其他手段来传达。可以特别地将根据本原理的程序上载到互联网类型的网络。

作为替选,信息载体可以是其中包含程序的集成电路,该电路被调整为执行所讨论的方法或者在执行所讨论的方法中使用。

根据一个实施例,可以借助于软件和/或硬件组件来实现方法/装置。在这方面,术语“模块”或“单元”在本文档中可以同样好地对应于软件组件和对应于硬件组件或者对应于硬件和软件组件的集合。

软件组件对应于一个或多个计算机程序、程序的一个或多个子程序或者更一般地对应于程序的任何元素或能够实现针对有关模块如下所述的功能或功能集合的软件。这样的软件组件由物理实体(终端、服务器等)的数据处理器来执行,并且能够访问该物理实体的硬件资源(存储器、记录介质、通信总线、输入/输出电子板、用户界面等)。

以相同的方式,硬件组件对应于能够实现针对有关模块如下所述的功能或功能集合的硬件单元的任何元素。它可以是可编程硬件组件或具有用于执行软件的集成处理器的组件,例如集成电路、智能卡、存储卡、用于执行固件的电子板等。

附图说明

图1图示了根据本原理的实施例的用于编码和解码全向视频的示例性系统,

图2a图示了从球体表面s到矩形图片f上的投影的示例,

图2b图示了图片f的xy平面参考系,

图2c图示了球体s上的角度参考系,

图3a图示了从立方体表面s到6个图片上的投影的示例,

图3b图示了立方体参考系,

图3c图示了投影立方体的重新布置的矩形图片,

图3d图示了投影在2d图片上的立方体的六个面的布局,

图4a图示了表示全向视频的3d表面的投影图片f中的移动物体,

图4b图示了投影图片的块分区中的对应运动矢量,

图5a图示了根据本公开实施例的将全向视频编码到比特流中的示例性方法的流程图,

图5b图示了根据本公开的实施例的将全向视频解码到比特流中的示例性方法的流程图,

图6图示了要编码的2d图片的块blk和可用于对块blk进行编码的运动矢量预测器,

图7图示了根据本公开的实施例的使运动矢量预测器适配的示例性方法的流程图,

图8a图示了图7上所示的使运动矢量预测器适配的示例性方法中使用的从帧坐标系到呈现帧的投影,

图8b图示了图7上所示的使运动矢量预测器适配的示例性方法中使用的从呈现帧到帧坐标系的投影,

图9a图示了球体s上的点的位移和呈现帧g上的对应位移,

图9b图示了球体s上的运动的近似,

图10图示了在根据利用图7公开的实施例使运动矢量预测器适配中要使用的可能的锚点,

图11图示了根据本公开另一实施例的使运动矢量预测器适配的示例性方法的流程图,

图12a图示了根据本公开的实施例的细分成为其导出适配运动矢量预测器的子块的当前块blk,

图12b图示了根据本公开另一实施例的细分成为其导出适配运动矢量预测器的子块的当前块blk,

图13a图示了针对当前块blk的适配运动矢量预测器的时间重新缩放,

图13b图示了针对当前块blk的适配运动矢量预测器的参考帧适配重新缩放,

图14图示了根据本公开另一实施例的使运动矢量预测器适配的示例性方法的流程图,

图15图示了仿射运动矢量工具的情况下的运动矢量预测器,

图16图示了根据本公开实施例的用于将全向视频译码到比特流中的示例性编码器的框图,

图17图示了根据本公开的实施例的用于从比特流解码代表全向视频的图片的2d图片的当前块的示例性解码器的框图,

图18图示了根据一个实施例的用于将全向视频编码到比特流中的示例性装置,

图19图示了根据一个实施例的用于解码代表全向视频的比特流的示例性装置,

图20图示了其中可以实现本原理的示例性实施例的各个方面的示例性系统的框图,

图21表示根据本原理的特定实施例的系统的第一实施例,

图22表示根据本原理的特定实施例的系统的第一实施例,

图23表示根据本原理的特定实施例的系统的第一实施例,

图24表示根据本原理的特定实施例的系统的第一实施例,

图25表示根据本原理的特定实施例的系统的第一实施例,

图26表示根据本原理的特定实施例的系统的第一实施例,

图27表示根据本原理的系统的第一实施例,

图28表示根据本原理的系统的第一实施例,

图29表示根据本原理的沉浸式视频呈现设备的第一实施例,

图30表示根据本原理的沉浸式视频呈现设备的第一实施例,以及

图31表示根据本原理的沉浸式视频呈现设备的第一实施例。

具体实施方式

图2a示出了使用等矩形投影从表示为球体的表面s到一个单个矩形图片f上的投影的示例。

图3a示出了从这里表示为立方体的表面s到六个图片或面上的投影的另一示例。具有图3b上所示的参考系的立方体的面可以可能地使用图3d上所示的布局来重新布置成一个单个图片,如图3c中所示。

3d表面到2d图片上的投影可能引入一些失真,诸如几何失真。例如,直线不再是直的,规格化正交(orthonormal)坐标系不再是规格化正交的。在全向视频的连续图片之间的运动表示的情况下,3d表面上的块内运动可以被认为是同质的(homogenous)。然而,当3d表面的块被投影在2d图片上时,这样的断言不再正确。

图4a图示了表示全向视频的3d表面的投影图片f,其中物体150沿着轨迹移动。在通过全向视频表示的场景中,物体150沿着直线移动。投影图片f中所得的视运动表示为虚线。在图4b上示出了用于图片f的任意块分区的所得运动矢量。如可以注意到的那样,即使运动在呈现图片中完全笔直,但是要编码的图片f示出非均匀运动矢量。对于携带运动物体150的信息的块a、b、c和d,运动矢量都不同。

在传统视频译码中,使用来自相邻块的运动矢量预测器对块运动矢量进行预测译码。例如,根据块a、b和c的运动矢量来预测块d的运动矢量。

可以看出,在将3d表面投影在2d图片上之后,用于预测块d的运动矢量的可用运动矢量预测器是不适合的,因为这样的预测将导致要编码的大预测残差。

因此,存在对编码和解码全向视频的新的方法和装置的需要。

大视场内容可以是三维计算机图形影像场景(3dcgi场景)、点云或沉浸式视频,等等。许多术语可以用来设计这样的沉浸式视频,诸如例如虚拟现实(vr)、360、全景、4π、球面度、沉浸式、全向、大视场。

沉浸式视频典型地涉及在作为二维像素阵列(即,色彩信息的元素)的矩形帧上编码的视频,如“常规”视频。在许多实现方式中,可以执行以下处理。为了呈现,首先将帧映射在凸体积(volume)的内表面上,也称为映射表面(例如,球体、立方体、金字塔),其次,该体积的一部分由虚拟相机捕获。由虚拟相机捕获的图像被呈现在沉浸式显示设备的屏幕上。将立体视频编码在一个或两个矩形帧上,投影在两个映射表面上,这两个映射表面被组合以根据设备的特性由两个虚拟相机捕获。

在帧中,可以根据映射函数对像素进行编码。映射函数可以取决于映射表面。对于相同的映射表面,若干个映射函数是可能的。例如,可以根据帧表面内的不同布局来构造立方体的面。例如,可以根据等矩形投影或球心投影来映射球体。产生自所选投影函数的像素的组织使线连续性、规格化正交局部帧、像素密度修改或断开,并引入时间和空间上的周期性。这些是用于对视频进行编码和解码的典型特征。现有的编码和解码方法通常不考虑沉浸式视频的特异性。实际上,随着沉浸式视频可以是360°视频,例如摇拍引入运动和不连续性,这需要在场景的内容不改变的同时编码大量数据。在对视频帧进行编码和解码时考虑沉浸式视频特异性将为编码或解码方法带来有价值的优势。

图1图示了根据示例实施例的编码和解码系统的总体概述。图1的系统是功能系统。预处理模块110可以准备用于由编码设备120进行编码的内容。预处理模块110可以执行多图像采集,在公共空间(如果我们对方向进行编码,则典型地为3d球体)中合并所采集的多个图像,以及使用例如但不限于等矩形映射或立方体映射将3d球体映射到2d帧中。预处理模块110也可以接受特定格式(例如,等矩形)的全向视频作为输入,并对视频进行预处理,以将映射改变成更适合于编码的格式。取决于所采集的视频数据表示,预处理模块110可以执行映射空间改变。

将关于说明书的其他附图描述编码设备120和编码方法。在编码之后,数据(例如其可以对沉浸式视频数据或3dcgi编码数据进行编码)被发送到网络接口130,网络接口130典型地可以以任何网络接口来实现,例如存在于网关中。然后,数据通过通信网络(诸如互联网,但是可以预见任何其他网络)被传送。然后,数据经由网络接口140被接收。网络接口140可以实现在网关中、电视中、机顶盒中、头戴式显示设备中、沉浸式(投影式)墙壁中或者任何沉浸式视频呈现设备中。

在接收之后,数据被发送到解码设备150。解码功能是在下面的图21至图31中描述的处理功能之一。然后,解码数据由播放器160处理。播放器160准备用于呈现设备170的数据,并且可以接收来自传感器的外部数据或用户输入数据。更准确地,播放器160准备将由呈现设备170显示的视频内容的部分。解码设备150和播放器160可以集成在单个设备(例如,智能电话、游戏控制台、stb、平板、计算机等)中。在其他实施例中,播放器160可以集成在呈现设备170中。

例如在呈现沉浸式视频时,可以设想若干类型的系统来执行沉浸式显示设备的解码、播放和呈现功能。

图21至图25中图示了用于处理增强现实、虚拟现实或增强的虚拟内容的第一系统。这样的系统包括处理功能、沉浸式视频呈现设备,沉浸式视频呈现设备可以是例如头戴式显示器(hmd)、平板或智能电话,并且可以包括传感器。沉浸式视频呈现设备也可以包括显示设备与处理功能之间的附加接口模块。处理功能可以由一个或若干个设备执行。它们可以集成到沉浸式视频呈现设备中,或者它们可以集成到一个或若干个处理设备中。处理设备包括一个或若干个处理器,以及与沉浸式视频呈现设备的通信接口,诸如无线或有线通信接口。

处理设备也可以包括与诸如互联网之类的宽接入网络的第二通信接口,并且直接地或者通过诸如家庭或本地网关之类的网络设备访问位于云上的内容。处理设备也可以通过第三接口(诸如以太网类型的本地接入网接口)访问本地存储。在实施例中,处理设备可以是具有一个或若干个处理单元的计算机系统。在另一实施例中,它可以是智能电话,其可以通过有线或无线链路连接到沉浸式视频呈现设备,或者其可以在沉浸式视频呈现设备中插入壳体中并通过连接器或者无线地与之通信。处理设备的通信接口是有线接口(例如总线接口、广域网接口、局域网接口)或无线接口(诸如ieee802.11接口或接口)。

当由沉浸式视频呈现设备执行处理功能时,沉浸式视频呈现设备可以提供有直接或者通过网关接收和/或传送内容的到网络的接口。

在另一实施例中,该系统包括与沉浸式视频呈现设备并且与处理设备通信的辅助设备。在这样的实施例中,该辅助设备可以包含至少一个处理功能。

沉浸式视频呈现设备可以包括一个或若干个显示器。该设备可以在其每个显示器前面采用诸如透镜之类的光学器件。显示器也可以是沉浸式显示设备的一部分,如智能电话或平板的情况。在另一实施例中,显示器和光学器件可以嵌入头盔中、眼镜中或用户可以佩戴的面罩中。沉浸式视频呈现设备也可以集成若干个传感器,如稍后所述。沉浸式视频呈现设备也可以包括若干个接口或连接器。它可以包括一个或若干个无线模块,以便与传感器、处理功能、手持或其他身体部位相关设备或传感器通信。

沉浸式视频呈现设备也可以包括由一个或若干个处理器执行并且被配置为解码内容或处理内容的处理功能。通过在此处理内容,要理解所有功能用于准备可被显示的内容。这可以包括例如解码内容、在显示内容之前合并内容以及修改内容以适合显示设备。

沉浸式内容呈现设备的一个功能是控制虚拟相机,该虚拟相机捕获被构造为虚拟体积的内容的至少一部分。该系统可以包括姿势跟踪传感器,其完全或部分地跟踪用户的姿势,例如,用户头部的姿势,以便处理虚拟相机的姿势。一些定位传感器可以跟踪用户的位移。该系统也可以包括与环境相关的其他传感器,例如以测量照明、温度或声音条件。这样的传感器也可以与用户的身体相关,例如以测量发汗或心率。通过这些传感器采集的信息可以用于处理内容。该系统也可以包括用户输入设备(例如,鼠标、键盘、遥控器、操纵杆)。来自用户输入设备的信息可以用于处理内容、管理用户界面或控制虚拟相机的姿势。传感器和用户输入设备通过有线或无线通信接口与处理设备和/或与沉浸式呈现设备通信。

使用图21至图25,描述用于显示增强现实、虚拟现实、增强虚拟或从增强现实到虚拟现实的任何内容的该第一类型的系统的若干个实施例。

图21图示了被配置为解码、处理和呈现沉浸式视频的系统的特定实施例。该系统包括沉浸式视频呈现设备10、传感器20、用户输入设备30、计算机40和网关50(可选的)。

图29中所示的沉浸式视频呈现设备10包括显示器101。显示器例如是oled或lcd类型。沉浸式视频呈现设备10例如是hmd、平板或智能电话。设备10可以包括触摸表面102(例如,触摸板或触觉屏幕)、相机103、与至少一个处理器104和至少一个通信接口106连接的存储器105。至少一个处理器104处理从传感器20接收的信号。

使用来自传感器的一些测量来计算设备的姿势和控制虚拟相机。用于姿势估计的传感器例如是陀螺仪、加速度计或罗盘。也可以使用(例如使用一套相机(arigofcameras)的)更复杂的系统。在这种情况下,至少一个处理器执行图像处理以估计设备10的姿势。使用一些其他测量来根据环境条件或用户的反应处理内容。用于观察环境和用户的传感器例如是麦克风、光传感器或接触传感器。也可以使用更复杂的系统,比如例如跟踪用户眼睛的摄像机。在这种情况下,至少一个处理器执行图像处理以操作预期测量。来自传感器20和用户输入设备30的数据也可以被传送到计算机40,计算机40将根据这些传感器的输入来处理数据。

存储器105包括用于处理器104的参数和代码程序指令。存储器105也可以包括从传感器20和用户输入设备30接收的参数。通信接口106使得沉浸式视频呈现设备能够与计算机40通信。处理设备的通信接口106可以是有线接口(例如总线接口、广域网接口、局域网接口)或无线接口(诸如ieee802.11接口或接口)。

计算机40将数据以及可选地将控制命令发送到沉浸式视频呈现设备10。计算机40负责处理数据,即,准备它们以用于由沉浸式视频呈现设备10显示。处理可以由计算机40专门完成,或者部分处理可以由计算机完成,并且部分由沉浸式视频呈现设备10完成。计算机40直接或者通过网关或网络接口50连接到互联网。计算机40从互联网接收代表沉浸式视频的数据,处理这些数据(例如,将它们解码以及可能地准备将由沉浸式视频呈现设备10显示的视频内容的部分),并将处理后的数据发送到沉浸式视频呈现设备10以用于显示。在另一实施例中,该系统也可以包括存储代表沉浸式视频的数据的本地储存器(未示出),所述本地储存器可以在计算机40上或者在例如可通过局域网访问的本地服务器上(未示出)。

图22表示第二实施例。在该实施例中,stb90直接(即,stb90包括网络接口)或者经由网关50连接到诸如互联网之类的网络。stb90通过无线接口或者通过有线接口连接到诸如电视机100或沉浸式视频呈现设备200之类的呈现设备。除了stb的传统功能之外,stb90包括处理视频内容以用于呈现在电视100或者任何沉浸式视频呈现设备200上的处理功能。这些处理功能与针对计算机40描述的处理功能相同,并且这里不再描述。传感器20和用户输入设备30也与较早关于图21描述的类型相同。stb90从互联网获得代表沉浸式视频的数据。在另一实施例中,stb90从存储代表沉浸式视频的数据的本地储存器(未示出)获得代表沉浸式视频的数据。

图23表示与图21中所示的实施例相关的第三实施例。游戏控制台60处理内容数据。游戏控制台60将数据以及可选地将控制命令发送到沉浸式视频呈现设备10。游戏控制台60被配置为处理代表沉浸式视频的数据并将处理后的数据发送到沉浸式视频呈现设备10以用于显示。处理可以由游戏控制台60专门完成,或者部分处理可以由沉浸式视频呈现设备10完成。

游戏控制台60直接或者通过网关或网络接口50连接到互联网。游戏控制台60从互联网获得代表沉浸式视频的数据。在另一实施例中,游戏控制台60从存储代表沉浸式视频的数据的本地储存器(未示出)获得代表沉浸式视频的数据,所述本地储存器可以在游戏控制台60上或者在例如可通过局域网访问的本地服务器上(未示出)。

游戏控制台60从互联网接收代表沉浸式视频的数据,处理这些数据(例如,将它们解码以及可能地准备将要显示的视频的部分),并将处理后的数据发送到沉浸式视频呈现设备10以用于显示。游戏控制台60可以从传感器20和用户输入设备30接收数据,并且可以使用它们来处理从互联网或者从本地储存器获得的代表沉浸式视频的数据。

图24表示所述第一类型的系统的第四实施例,其中沉浸式视频呈现设备70由插入壳体705中的智能电话701形成。智能电话701可以连接到互联网,并且因此可以从互联网获得代表沉浸式视频的数据。在另一实施例中,智能电话701从存储代表沉浸式视频的数据的本地储存器(未示出)获得代表沉浸式视频的数据,所述本地储存器可以在智能电话701上或者在例如可通过局域网访问的本地服务器上(未示出)。

关于图30描述沉浸式视频呈现设备70,图30给出了沉浸式视频呈现设备70的优选实施例。它可选地包括至少一个网络接口702和用于智能电话701的壳体705。智能电话701包括智能电话和显示器的所有功能。智能电话的显示器用作沉浸式视频呈现设备70显示器。因此,不包括除智能电话701的显示器之外的显示器。然而,包括诸如透镜之类的光学器件704以用于在智能电话显示器上看到数据。智能电话701被配置为可能地根据从传感器20和从用户输入设备30接收的数据来处理(例如,解码以及准备用于显示)代表沉浸式视频的数据。使用来自传感器的一些测量来计算设备的姿势和控制虚拟相机。用于姿势估计的传感器例如是陀螺仪、加速度计或罗盘。也可以使用(例如使用一套相机的)更复杂的系统。在这种情况下,至少一个处理器执行图像处理以估计设备10的姿势。使用一些其他测量来根据环境条件或用户的反应处理内容。用于观察环境和用户的传感器例如是麦克风、光传感器或接触传感器。也可以使用更复杂的系统,比如例如跟踪用户眼睛的摄像机。在这种情况下,至少一个处理器执行图像处理以操作预期测量。

图25表示所述第一类型的系统的第五实施例,其中沉浸式视频呈现设备80包括用于处理和显示数据内容的所有功能。该系统包括沉浸式视频呈现设备80、传感器20和用户输入设备30。沉浸式视频呈现设备80被配置为可能地根据从传感器20和从用户输入设备30接收的数据来处理(例如,解码以及准备用于显示)代表沉浸式视频的数据。沉浸式视频呈现设备80可以连接到互联网,并且因此可以从互联网获得代表沉浸式视频的数据。在另一实施例中,沉浸式视频呈现设备80从存储代表沉浸式视频的数据的本地储存器(未示出)获得代表沉浸式视频的数据,所述本地储存器可以在呈现设备80上或者在例如可通过局域网访问的本地服务器上(未示出)。

沉浸式视频呈现设备80在图31中示出。沉浸式视频呈现设备包括显示器801。显示器可以是例如oled或lcd类型,触摸板(可选的)802,相机(可选的)803,与至少一个处理器804和至少一个通信接口806连接的存储器805。存储器805包括用于处理器804的参数和代码程序指令。存储器805也可以包括从传感器20和用户输入设备30接收的参数。存储器也可以足够大以存储代表沉浸式视频内容的数据。为此,可以存在若干类型的存储器,并且存储器805可以是单个存储器,或者可以是若干类型的储存器(sd卡、硬盘、易失性或非易失性存储器…)。通信接口806使得沉浸式视频呈现设备能够与互联网通信。处理器804处理代表视频的数据,以便显示器801显示它们。相机803捕获环境的图像以用于图像处理步骤。从该步骤提取数据以便控制沉浸式视频呈现设备。

用于处理增强现实、虚拟现实或增强的虚拟内容的第二系统在图26至图28中示出。这样的系统包括沉浸式墙壁。

图26表示第二类型的系统。它包括显示器1000,其为从计算机4000接收数据的沉浸式(投影式)墙壁。计算机4000可以从互联网接收沉浸式视频数据。计算机4000通常直接或者通过网关5000或网络接口连接到互联网。在另一实施例中,由计算机4000从存储代表沉浸式视频的数据的本地储存器(未示出)获得沉浸式视频数据,所述本地储存器可以在计算机4000中或者在例如可通过局域网访问的本地服务器中(未示出)。

该系统也可以包括传感器2000和用户输入设备3000。沉浸式墙壁1000可以是oled或lcd类型。它可以配备有一个或若干个相机。沉浸式墙壁1000可以处理从传感器2000(或多个传感器2000)接收的数据。从传感器2000接收的数据可以相关于照明条件、温度、用户的环境,例如物体的位置。

沉浸式墙壁1000也可以处理从用户输入设备3000接收的数据。用户输入设备3000发送诸如触觉信号之类的数据,以便给出关于用户情绪的反馈。用户输入设备3000的示例是手持设备,诸如智能电话、遥控器,以及具有陀螺仪功能的设备。

传感器2000和用户输入设备3000数据也可以被传送到计算机4000。计算机4000可以根据从这些传感器/用户输入设备接收的数据来处理视频数据(例如,将它们解码以及准备它们以用于显示)。传感器信号可以通过沉浸式墙壁的通信接口来接收。该通信接口可以是蓝牙类型、wifi类型或者任何其他类型的连接,优选地是无线的,但也可以是有线连接。

计算机4000将处理后的数据以及可选地将控制命令发送到沉浸式墙壁1000。计算机4000被配置为处理将由沉浸式墙壁1000显示的数据,即准备它们以用于显示。处理可以由计算机4000专门完成,或者部分处理可以由计算机4000完成,并且部分由沉浸式墙壁1000完成。

图27表示第二类型的另一系统。它包括沉浸式(投影式)墙壁6000,其被配置为处理(例如,解码以及准备数据以用于显示)并显示视频内容。它还包括传感器2000、用户输入设备3000。

沉浸式墙壁6000通过网关5000从互联网或者直接从互联网接收沉浸式视频数据。在另一实施例中,由沉浸式墙壁6000从存储代表沉浸式视频的数据的本地储存器(未示出)获得沉浸式视频数据,所述本地储存器可以在沉浸式墙壁6000中或者在例如可通过局域网访问的本地服务器中(未示出)。

该系统也可以包括传感器2000和用户输入设备3000。沉浸式墙壁6000可以是oled或lcd类型。它可以配备有一个或若干个相机。沉浸式墙壁6000可以处理从传感器2000(或多个传感器2000)接收的数据。从传感器2000接收的数据可以相关于照明条件、温度、用户的环境,例如物体的位置。

沉浸式墙壁6000也可以处理从用户输入设备3000接收的数据。用户输入设备3000发送诸如触觉信号之类的数据,以便给出关于用户情绪的反馈。用户输入设备3000的示例是手持设备,诸如智能电话、遥控器,以及具有陀螺仪功能的设备。

沉浸式墙壁6000可以根据从这些传感器/用户输入设备接收的数据来处理视频数据(例如,将它们解码以及准备它们以用于显示)。传感器信号可以通过沉浸式墙壁的通信接口来接收。该通信接口可以是蓝牙类型、wifi类型或者任何其他类型的连接,优选地是无线的,但也可以是有线连接。沉浸式墙壁6000可以包括至少一个通信接口,以与传感器并且与互联网通信。

图28图示了第三实施例,其中沉浸式墙壁用于游戏。一个或若干个游戏控制台7000优选地通过无线接口连接到沉浸式墙壁6000。沉浸式墙壁6000通过网关5000从互联网或者直接从互联网接收沉浸式视频数据。在另一实施例中,由沉浸式墙壁6000从存储代表沉浸式视频的数据的本地储存器(未示出)获得沉浸式视频数据,所述本地储存器可以在沉浸式墙壁6000中或者在例如可通过局域网访问的本地服务器中(未示出)。

游戏控制台7000将指令和用户输入参数发送到沉浸式墙壁6000。沉浸式墙壁6000可能地根据从传感器2000和用户输入设备3000和游戏控制台7000接收的输入数据来处理沉浸式视频内容,以便准备用于显示的内容。沉浸式墙壁6000也可以包括内部存储器以存储要显示的内容。

在一个实施例中,我们考虑全向视频以实现周围3d表面s到标准矩形帧f上的投影的格式来表示,该标准矩形帧f以适合于视频编解码器的格式表示。可以使用各种投影将3d表面投影到2d表面。例如,图2a示出了使用等矩形投影将示例性球体表面s映射到2d帧f,并且图3a示出了如上所述使用立方体映射将示例性立方体表面映射到如图3c中所示的2d帧。诸如金字塔、二十面体或八面体映射之类的其他映射可以将3d表面映射到2d帧中。

然后,可以使用现有视频编码器(例如,符合vp9、vp10、mpeg-2、h.264/avc或h.265/hevc的编码器)对2d帧f进行编码。也可以利用适配于全向视频的属性的编码器(例如,使用经调整的vp9、vp10、mpeg-2、h.264/avc或h.265/hevc编码器)对2d帧f进行编码。在编码和解码之后,可以将经解码2d帧映射回到对应的3d表面(例如,用于等矩形映射的球体或者用于立方体映射的立方体)。然后,可以将3d表面投影到与用户视点相对应的“虚拟屏幕”上,以便获得最终的呈现帧。将2d帧解码以及从3d表面投影到呈现帧的步骤可以合并成单个步骤,其中经解码帧的一部分被映射到呈现帧上。在本申请中,我们可以使用投影空间来指代在其上执行投影的呈现帧或3d表面。

为了简化符号,我们可以将经解码2d帧也称为“f”,并且将呈现中使用的3d表面也称为s。应当理解,要编码的2d帧和要解码的2d帧可能由于视频压缩而不同,并且预处理中的3d表面和呈现中的3d表面也可能不同。在本申请中,我们可互换地使用术语“映射”和“投影”,可互换地使用术语“像素”和“样本”,并且可互换地使用术语“帧”和“图片”。

图5a图示了根据本公开的实施例的将全向视频编码到比特流中的示例性方法的流程图。这里,假设将全向视频的图片表示为3d表面,诸如但不限于球体或立方体,如上所公开。然后,使用投影函数将3d表面投影到至少一个2d图片上,以用于编码。例如,这样的投影函数可以是等矩形投影或者其他类型的投影函数。

然后,将2d图片划分成块,并且例如使用所提出的视频压缩技术对每个块进行编码。

图6图示了要编码的2d图片的块blk和可用于对块blk进行编码的运动矢量预测器dv。可以将这样的运动矢量预测器导出为当前块blk的相邻块的译码运动矢量。在图6上所示的示例中,运动矢量预测器dv是针对块blk的顶部相邻块译码运动矢量。

这样的运动矢量预测器dv可以用于预测分配给当前块blk的运动矢量,或者可以直接用于在投影的全向视频的参考帧中对当前块blk进行运动补偿,以用于计算块blk的预测块残差。

回到图5a,在步骤1600中,至少使用用于将表示全向视频的3d表面投影到2d图片上的投影函数,使运动矢量预测器dv适配于当前块blk。由此获得适配运动矢量预测器dp。可以针对可用于对当前块blk进行译码的所有运动矢量预测器迭代该处理。然后,针对每个可用的运动矢量预测器获得适配运动矢量预测器。下面关于图7和图11给出用于使运动矢量预测器dv适配的进一步细节。

在步骤1601中,例如使用传统视频压缩技术,使用适配运动矢量预测器dp对当前块blk进行编码,而不是直接使用运动矢量预测器dv。适配运动矢量预测器dp可以用于预测分配给当前块blk的运动矢量,或者可以直接用于在投影的全向视频的参考帧中对当前块blk进行运动补偿,以用于计算块blk的预测块残差。

图5b图示了根据本公开的实施例的对代表经译码全向视频的比特流进行解码的示例性方法的流程图。

在步骤1602中,至少使用用于将表示全向视频的3d表面投影到2d图片上的投影函数来使用于对当前块blk进行编码的运动矢量预测器dv适配,如在编码器侧完成的那样。如果使用多于一个运动矢量预测器dv对当前块blk进行编码,则根据本原理使用于对当前块blk进行译码的每个运动矢量预测器适配。

在步骤1603中,使用适配运动矢量预测器dp或者适配运动矢量预测器对当前块blk进行解码。取决于用对当前块blk进行译码的译码模式,适配运动矢量预测器dp可以用于根据从比特流解码的运动矢量残差来重建当前块blk的运动矢量,或者它可以直接用于在投影的全向视频的参考帧中对当前块blk进行运动补偿,以用于根据从比特流解码的预测块残差来重建当前块blk。

图7图示了根据本公开的实施例的针对要编码的当前块blk的点p使相邻块的运动矢量预测器dv适配的示例性方法的流程图。根据该实施例,运动矢量预测器dv的坐标表达在2d图片f的坐标参考系中。

在步骤1800中,计算变换t以将来自要编码的2d图片(图8a上的f)的点投影到图8a上的呈现帧g。如图8a上所示,为了将点p从图片f投影到呈现帧g中的点p”,使用中间3d空间。注意,呈现帧g表示由以兴趣点p为中心的“传统”相机查看的场景,即,t将帧f变换为“看起来像”“传统”帧。

下面在等矩形投影的情况下公开变换t的计算。这样的投影函数如下定义函数f,我们使p(x,y)表示来自图片f的点,并且使表示来自球体s的表面的点,假设归一化坐标:

θ=2πx

对于非归一化坐标,点p'的坐标如下:

因此,球体的给定点p'对应于来自3d空间的点p3d。通过以下给出p3d的坐标:

3d:p′→p3d

然后,将3d空间映射到呈现帧g。选择帧g使得p在g中的投影p”在帧的中心。帧g对应于表面s到p’中与表面s相切的平面的局部投影。

为了固定与球体s相切的帧g,定义旋转矩阵r,使得点p3d投影在p”=(0,0)中。为了固定矩阵r,使用任意单位矢量u=(ux,uy,uz),然后推导矩阵r:

r3=r1×r2

可以看出,关于点p’周围的帧取向存在模糊性(其由对矢量u的选择给出)。针对u的合理选择可以是u=(1,0,0)。针对u的选择取决于对f和s中的坐标系的选择。

找到允许固定取向的帧g的另一等效方式是根据点p周围的3d轴导出平面:

其中,并且

然后,在由原点p3d和局部帧dx3dpn和dy3dpn定义的局部平面上完成投影。

一旦旋转r已被固定,则点p3d被旋转然后投影在g上:

p″=proj(rp3d),其中

proj:p3d→p″

变换t最终可以表达为:

t:p→p″

p′=f(p)

p″=proj(r3d(p′))

p″=t(p)=proj(r3d(f(p))

下面公开逆变换t-1的计算。为了从g中的点p”回到帧f,计算逆变换t-1

t-1:p″→p

p3d=rtproj-1(p″)

p=f-1(3d-1(rtproj-1(p″)))

通过以下给出从呈现帧g到3d空间的反投影:

proj-1:p″→p3d

根据点p3d(x,y,z),我们可以使用标准笛卡尔到极坐标变换来回到球体参数化:

3d:p3d→p′

对于奇点(典型地,在极点处),当x和y接近0时,直接将极坐标设置为θ=0和

然后,通过以下给出逆投影函数:

x=θ/2π

在图8a和图8b上,球体的表面上的点(p′)和3d空间中的对应点(p3d)一起示出。

由于投影函数对于视频是固定的并且以序列级进行编码,所以可以对整个视频执行一次变换t的计算。该计算的结果可以存储在lut(查找表)中以便降低计算复杂性。这样的lut将允许为2d图片的每个点导出呈现帧g中的对应点,反之亦然。

在步骤1801中,使用变换t将当前块blk的点p投影在呈现帧g上:p″=t(p)。使用变换t将锚点v投影在呈现帧g上:v″=t(v)。将锚点v在2d图片f中位移运动矢量预测器dv,其中w=v+dv。使用变换t将位移锚点w投影在呈现帧g上:w″=t(w)。通过构建,如上所述,p″在呈现帧g的中心处:p″=[0,0]t

在步骤1802中,将投影运动矢量预测器dv″计算为dv″=(w″-v″)。然后,使用dv″将点p″位移,其中:q″=p″+dv″。

在步骤1803中,然后,使用逆变换t-1将点q″向后投影到2d图片f上,给出q=t-1(q″)。

在步骤1804中,然后,将适配运动矢量预测器dp计算为点q与点p的定位之间的差:dp=q-p。

因此,可以使用以下等式eq.(1):dp=q-p来获得用于2d图片的任何给定点p的适配运动矢量预测器dp。

dp=f-1(rtproj-1(p″+dp″))-p

dp=f-1(rtproj-1(proj(rf(p))+proj(rf(v+dv))-proj(rf(v))))-peq.(1)

在以上计算中,点v处的运动矢量dv已被投影在呈现帧g中,以便推导p处的运动矢量dp。如图9a上所示,球体s上的点{p’,v’,w’}在{p”,v”,w”}处投影在呈现帧g上。然后,将所得点q”在点q’处投影回球体s上,然后在点q处投影回帧f中。

对于接近点p的点v和w(通常是这种情况),可以省略呈现帧g上的投影,如图9b上所示。在这种情况下,可以将点q’直接推导为:q′=p′+(w′-v′),其中点{p’,q’,v’,w’}都在极坐标中,因为距离d(v”,w”)几乎等于弧长d(v’,w’)。根据该实施例,等式eq.(1)则可以简化为eq.(1b):

dp=f-1(p′+dp′)-p

dp=f-1(f(p)+f(v+dv)-f(v))-peq.(1b)

在利用图7公开的实施例中,运动矢量预测器dv已被应用于2d图片的锚点v。这样的锚点在图6中示为从其使用运动矢量预测器dv的相邻块的中心。然而,运动在块内是不均匀的,并且对锚点的选择可能对用于当前块blk的所得的适配运动矢量预测器有影响。

假设每个块具有一个运动矢量,如图10中所示,对于给定的顶部块,根据不同实施例,用于计算适配运动矢量预测器dp的锚点v可以在以下点之中选择:

-相邻块的中心v1,

-中心v1在当前块blk边缘上的投影v2,

-产生自块中心v1到与当前块blk的中心p对齐的v1的平移的点v3,

-产生自v3在当前块blk的边缘上的投影的点v4,

-从相邻块到当前块的中心的最近点v5。

可以针对其他相邻块(例如,左相邻块、左上相邻块)推导类似的推论。

图11是根据本公开的另一实施例的使运动矢量预测器适配的示例性方法的流程图。使用图9b上所示的近似,校正运动矢量的预测的另一方式是使用球体s坐标系直接表达运动矢量。这样的实施例允许针对某个投影函数更直接地使运动矢量预测器适配,尤其针对3d表面的连续参数化。根据该实施例,帧f中的点m(x,y)与运动矢量(表达为球体上在点处的角度差)相关联(在图2b和图2c上示出)。

来自相邻块的球体上的点p′处的运动矢量预测器dv′直接是然而,在点p处使用运动矢量在2d图片中预测当前块blk的运动补偿需要在帧f坐标系中投影运动矢量dv′,以用于获得帧f中的适配运动矢量预测器dp。

在步骤2200中,在球体上将当前块的点位移运动矢量预测器dv,其中p′d=p′+dv。

在步骤2201中,使用以上关于图7公开的逆变换t-1来投影位移点p′d:pd=t-1(p′d)。

在步骤2202中,将用于点p的适配运动矢量预测器dp计算为:dp=pd-p。

使用以上公开的变换t的计算,可以如下导出dp:

dp=f-1(rtproj-1(p′+dv′))-p

dp=f-1(rtproj-1(f(p)+dv′))-peq.(2)

随着运动矢量现在以极坐标表达,根据投影函数使改变单位。使用投影函数f找到单位。对于等矩形投影,图片f中的一个像素的单位对应于2π/width的角度,其中width是图片宽度。

下面,在使用利用图3d所示的立方体的面的布局的立方体映射的情况下,公开用于使运动矢量预测器适配的利用图7公开的实施例。

假设当前块的点p(x,y)在正面中,我们想要根据位于左面中的点v(x,y),在点p处预测用于当前块的运动矢量。

按照图7中说明的步骤,计算v和w=v+dv在左面中的投影:

y(x,y)→v′l(ul,vl)

w(x,y)=v(x,y)+dv(dx,dy)→w′l(u′x,v′l)=wl′(ul+dul,vl+dvl),其中(dul,dvl)表示运动矢量预测器dv在左面中的坐标。

然后,将点从表面投影到3d空间:

然后,使用正面的投影将点投影在呈现帧g上:

将投影运动矢量预测器应用在正面的点p:

要注意,由于在球体情况中,所以一些情况是奇特的(通常当预测器或矢量目标对坐标系的原点闭合时)。实际的实现方式会通过对矢量的最小绝对值施加限制来限制除以因子u(u+du)的影响。

按照图7中描述的用于使运动矢量预测器适配的实施例,这里讨论短焦距视频的情况。针对失真的传统模型要使用brown-conrady模型,其中2d+3d失真被合并成简单的2d函数:(xd,yd)=g(xu,yu,s),其中(xd,yd)是失真之后的像素坐标(帧f中),并且(xu,yu)是失真之前的像素坐标(帧g中)。失真函数g()是组合:g=f-1o3d-1oproj-1。可以使用brown-conrady模型来获得失真函数g()。

可以根据g来恢复函数g-1,通常作为离线处理,其中像素被映射到对应的未失真像素,并且适用于以上实施例。逆函数g-1可能并不总是可解析地可逆,并且可以使用数值方法或者使用lut找到。

以上已经考虑代表要编码的当前块blk的点p而公开了使用于要编码的当前块blk的运动矢量预测器适配的实施例。例如,点p可以是当前块blk的中心,或者是块blk的左上角的像素,或者是块blk的任何其他点。然后,将所获得的适配运动矢量预测器用于对整个块blk进行译码。

然而,由于2d图片f中的运动场失真,所以可能更适合推导当前块blk的每个像素或像素组(例如,在hevc标准的情况下为4×4像素子块)的适配运动矢量预测器,以用于对这样的块进行译码。因此,本原理的另一实施例是针对当前块blk的每个子块导出适配运动矢量预测器。当前块blk的子块可以包括块blk的一个或多个像素。

在图12a中所示的另一实施例中,通过向每个子块应用根据利用图7或图11公开的任何实施例使运动矢量预测器dv适配的方法,针对当前块blk的每个子块导出适配运动矢量预测器dpsb。根据该实施例,利用图7或图11公开的实施例的点p由此对应于当前处理的子块的代表点,例如,子块的中心。

在图12b中所示的另一实施例中,首先使用代表当前块的点p,针对块blk根据利用图7或图11公开的任何实施例来计算适配运动矢量预测器dp,p可以是例如块blk的中心。然后,使用针对块blk获得的适配运动矢量预测器dp,针对块的每个子块推导适配运动矢量预测器dpsb。例如,可以通过将根据利用图7或图11公开的任何实施例公开的方法应用于子块并使用当前块blk的适配运动矢量预测dp作为初始运动矢量预测器dv,来导出针对子块的适配运动矢量预测器dpsb。

根据这些实施例,将至少一个适配运动矢量预测器分配给当前块的每个子块。取决于在编码器处执行的速率/失真优化,然后可以使用每个子块的适配运动矢量预测器来独立地对每个子块进行译码。或者,可以通过使用每个子块的运动补偿及其分配的适配运动矢量预测器计算当前块的运动补偿预测块,来使用子块的所有适配运动矢量预测器对当前块blk进行译码。

以上已经针对当前块的空间相邻块(顶部、左侧或左上相邻者)的运动预测器公开了使运动矢量预测器适配的本原理。这样的原理可以以类似的方式应用于当前块的时间相邻者(即,视频序列的先前的或之后的2d图片的共同定位块(co-locatedblock))的运动矢量预测器。

对于时间运动预测器计算,传统地,通过因子αt,其中tn、tk和t0分别是帧fn、fk和f0的显示时间,将来自帧f0的共同定位块的运动矢量预测器u0->n重新缩放以形成来自帧fk的当前块的新运动矢量预测器uk->n,如图13a上所示。

以类似的方式,当空间相邻块的运动矢量和当前块的运动矢量不使用相同的参考帧时,应当执行参考帧适配重新缩放,以用于将空间相邻者的运动矢量u0->n重新缩放以形成当前块的新运动矢量预测器uk->n,如图13b上所示。传统地,如果相邻块的运动矢量预测器u0->n使用与当前块的参考图片(图13b上的fn)不同的参考图片(图13b上的fm),则利用因子αs重新缩放运动矢量预测器u0->n,其中tn、tk和tm分别是帧fn、fk和fm的显示时间。

为了改进以上讨论的重新缩放方法,可以在3d空间中或者在呈现帧g上执行这样的重新缩放,以便考虑由投影函数在运动场中引入的失真。

图14图示了根据本公开另一实施例的使运动矢量预测器适配的示例性方法的流程图。一旦根据利用图7或图11公开的任何实施例获得了适配运动矢量预测器dp,就可以执行这样的方法。也可以在根据利用图7或图11公开的任何实施例使运动矢量预测器适配的同时执行该方法。

在下面公开的实施例中,我们使p表示代表当前块blk的点,并且使dp1表示要重新缩放的运动矢量预测器。这里,根据利用图7或图11公开的任何实施例,要重新缩放的运动矢量预测器dp1是校正之后的运动矢量预测器dp。

在该实施例中,通过(使用等式1b)将运动矢量预测器投影在3d表面上,重新缩放,然后回到2d图片f,来完成重新缩放。对于时间重新缩放,我们使用因子αt,并且对于空间重新缩放,使用αs。

在步骤2500中,使用投影函数f通过q’=f(p+dp1)=f(q)将与利用运动矢量dp1的位移点p相对应的点q投影在3d表面上。

在步骤2501中,使用因子αi通过dp’2=αidp’对作为q'与p'的定位之间的差(dp'=q'-p')的运动矢量预测器dp'进行重新缩放。

在步骤2502中,与点p'位移运动矢量dp2'相对应的点q2':q2’=p’+dp2'=p'+αidp’。然后,通过以下将点q2'投影回2d图片上:q2=f-1(q2’)。

在步骤2503中,然后将重新缩放的适配运动矢量预测器dp2计算为q2与p的定位之间的差,作为dp2=q2-p。

以上已经在3d表面上投影的情况下公开了重新缩放。根据另一实施例,在使用点p”、q”代替点p'和q'以及较早公开的变换函数t和t-1在呈现帧g上投影的情况下,可以获得重新缩放的适配运动矢量预测器dp2。

根据利用图7或图11公开的任何实施例,已经在校正之后重新缩放运动矢量预测器的情况下公开了以上实施例。根据另一实施例,当根据利用图7或图11公开的任何实施例执行对运动矢量预测器的校正时,可以执行这样的重新缩放。在该情况下,除了利用图7或图11公开的步骤之外,仅执行图14的步骤2501。

根据另一实施例,在用于预测当前块blk的仿射运动补偿模型的情况下,p1和p2处的2个运动矢量用于导出当前块blk的仿射运动,如图15上所示。使用来自周围块的候选运动矢量预测器来预测这些运动矢量。

以上公开的使运动矢量预测器适配的方法的不同实施例可以应用于这些周围块的运动矢量预测器。根据该实施例,当应用如上公开的使运动矢量预测器适配的方法时,点vi处的运动矢量预测器dvi用于预测点pi处的运动矢量dpi,而不使用当前块的中心。这里,p1和p2分别表示当前块的左上子块、右上子块的中心。

在以上公开的实施例中,由于表示全向视频的表面与2d图片之间的投影和对应的逆投影是固定的并且对于编码和解码器是已知的,例如投影函数可以在比特流中译码,所以eq.(1)或eq.(2)可以针对2d图片的各个像素预先计算,例如作为lut,给出应用于每个像素或像素组以在帧f与g之间往返的变换,或者在帧f与表面s之间的近似版本(eq.(1b))的情况下。

图16是示出示例性视频编码器400的示意性框图。根据本原理的实施例,这样的视频编码器400执行代表全向视频的投影的图片集合到比特流中的编码。视频编码器400被公开为符合hevc译码器,然而,本原理可以应用于将视频处理为2d图片序列的任何2d视频译码方案。

传统地,视频编码器400可以包括用于基于块的视频编码的若干个模块,如图16中所示。代表来自要编码的全向视频的投影图片的2d图片i被输入到编码器400。

首先,细分模块将图片i划分成像素块的集合。

下面描述的编码处理处理图片i的每个块blk。取决于所使用的视频译码标准,这样的块blk可以对应于h.264/avc宏块,或者hevc译码树单元,或者来自上述单元之一的任何子块,或者图片i的细分的任何其他布局。

下面描述的编码和解码处理用于说明目的。根据一些实施例,可以添加或移除编码或解码模块,或者可以从以下模块改变编码或解码模块。然而,在此公开的原理仍然可以应用于这些实施例。

编码器400如下执行对图片i的每个块blk的编码。编码器400包括模式选择单元,用于为要译码的图片的块blk选择译码模式,例如,基于速率/失真优化。这样的模式选择单元包括:

-运动估计模块,用于估计要译码的图片的一个当前块与参考图片之间的运动,

-运动补偿模块,用于使用所估计的运动来预测当前块,

-帧内预测模块,用于空间预测当前块。

模式选择单元也可以根据例如速率/失真优化来决定是否需要块的细分。在该情况下,模式选择单元然后针对块blk的每个子块进行操作。

在当前块blk的帧间预测的情况下,模式选择单元可以执行根据以上公开的本原理的任何实施例使当前块blk的相邻块的运动矢量预测器适配的方法。在若干个运动矢量预测器可用的情况下,例如在当前块具有若干个可用的相邻块(诸如左块、顶块或左上块)的情况下,使可用于对当前块blk进行译码的每个运动矢量预测器适配,如上所述。然后,针对每个可用的运动矢量预测器获得适配运动矢量预测器。然后,以传统方式使用所得的适配运动矢量预测器作为用于当前块blk的运动矢量预测器。

例如,用于当前块blk的适配运动矢量预测器dp可以用于预测针对当前块blk估计的运动矢量mv(通过将运动矢量残差计算为mv与dp之间的差)。然后,由熵译码模块对运动矢量残差进行编码。

根据另一实施例,构建运动矢量预测器列表以用于预测针对当前块blk估计的运动矢量。然后,从该列表中选择运动矢量预测器,并将数据译码到比特流中,以用于将所选运动矢量预测器指示给解码器。为了降低这样的数据的译码成本,执行列表的删减适配。在该删减适配期间,如果一些运动矢量等于已经在列表中的运动矢量,则从列表中移除该一些运动矢量。

根据该实施例,在根据以上公开的任何实施例的运动矢量预测器的校正之后执行列表的运动矢量的比较。

适配运动矢量预测器dp也可以用于通过对代表全向视频的参考表面的2d参考帧中的当前块blk进行运动补偿来预测当前块blk,以用于计算块blk的预测块残差。

一旦针对当前块blk选择了译码模式或多个译码模式,模式选择单元就递送预测块pred和要在比特流中译码的对应语法元素,以用于在解码器处执行相同的块预测。当已经分割当前块blk时,预测块pred由通过模式选择单元针对每个子块递送的预测子块的集合形成。

然后,通过从原始块blk中减去预测块pred来获得残差块res。

然后,通过变换处理模块对残差块res进行变换,该变换处理模块递送变换系数的变换块tcoef。在变换处理模块对尺寸小于残差块res的变换块进行操作的情况下,变换处理模块递送对应的变换块tcoef的集合。例如,可以执行速率/失真优化以决定应当使用大变换块还是较小的变换块。在hevc译码器的情况下,变换处理模块在称为变换单元(tu)的块上进行操作。

然后,通过量化模块对每个递送的变换块tcoef进行量化,该量化模块递送量化残差变换系数的量化变换块qcoef。

然后,将语法元素和块qcoef的量化残差变换系数输入到熵译码模块,以递送比特流str的译码视频数据。

量化变换块qcoef的量化残差变换系数由逆量化模块处理,该逆量化模块递送未量化变换系数的块tcoeff'。块tcoef'被传递到逆变换模块,以用于重建残差预测的块res'。

然后,通过将预测块pred添加到重建残差预测块res'来获得块blk的重建版本rec。将重建块rec存储在存储器中以用于稍后由图片重建模块使用来重建图片i的解码版本i'。一旦图片i的所有块blk已被译码,图片重建模块就根据重建块rec执行图片i的解码版本i'的重建。可选地,可以将解块滤波应用于重建图片i',以用于移除重建块之间的块效应。

一旦重建图片i'已被重建并最终解块,则将所得的重建图片添加到参考图片存储器,以用于稍后用作用于对要译码的图片集合的随后图片进行编码的参考图片。

然后,从上述编码处理生成的比特流通过数据网络被传送或者被存储在存储器上,以用于对从比特流str解码的全向视频进行沉浸式呈现。

根据本公开的实施例,以上公开的任何一个方法的实施例可以实现在示例性解码器中,以用于解码代表全向视频的比特流,诸如下面公开的那样。

图17是说明适配于解码使用本原理编码的比特流的示例性视频解码器方法的示意性框图。对代表全向视频到所述2d图片上的投影的译码图片加以代表的比特流str包括代表所述2d图片的至少一个当前块blk的译码数据。这样的当前块可以已经根据本公开的实施例被译码。

根据实施例,比特流str也可以包括代表与投影函数相关的信息项的译码数据。

在此公开的视频解码器700根据hevc视频译码标准来执行图片的解码。然而,本原理可以容易地应用于任何视频译码标准。

视频解码器700通过在逐个图片的基础上从比特流对译码图片进行解码并且通过在逐块的基础上对每个图片进行解码来执行全向视频的重建。根据所使用的视频压缩方案,并行处理可以用于基于图片或者基于块对比特流进行解码。因此,如下从压缩的比特流重建图片i'。

将译码数据传递到视频解码器700的视频解码模块,以用于重建图片i'的块。

如图17中所示,将译码数据传递到熵解码模块,熵解码模块执行熵解码并将量化变换系数的块qcoef递送到逆量化模块并将语法元素递送到预测模块。

在熵解码之后,量化变换系数的块qcoef由逆量化模块进行逆量化,以递送去量化变换系数的块tcoef'。

通过逆变换模块对去量化变换系数的块tcoef'进行逆变换,该逆变换模块递送残差预测块res'。

预测模块根据语法元素,并且在当前块已被帧间预测的情况下使用运动补偿模块,或者在当前块已被空间预测的情况下使用帧内预测模块,来构建预测块pred。

在当前块blk的帧间预测的情况下,预测模块可以执行根据以上公开的本原理的任何实施例使当前块blk的相邻块的运动矢量预测器适配的方法。在若干个运动矢量预测器可用的情况下,例如在当前块具有若干个可用的相邻块(诸如左块、顶块或左上块)的情况下,使可用于对当前块blk进行译码的每个运动矢量预测器适配,如上所述。然后,针对每个可用的运动矢量预测器获得适配运动矢量预测器。然后,以传统方式使用所得的适配运动矢量预测器作为用于当前块blk的运动矢量预测器。

例如,用于当前块blk的适配运动矢量预测器dp可以用于通过将从比特流解码的运动矢量残差添加到适配运动矢量预测器dp来重建当前块blk的运动矢量mv。

根据另一实施例,构建运动矢量预测器列表以用于预测针对当前块blk估计的运动矢量。然后,从该列表中选择运动矢量预测器,并将数据译码到比特流中,以用于将所选运动矢量预测器指示给解码器。为了降低这样的数据的译码成本,执行列表的删减适配。在该删减适配期间,如果一些运动矢量等于已经在列表中的运动矢量,则从列表中移除该一些运动矢量。

根据该实施例,在根据以上公开的任何实施例的运动矢量预测器的校正之后执行列表的运动矢量的比较。

适配运动矢量预测器dp也可以用于通过对代表全向视频的参考表面的2d参考帧中的当前块blk进行运动补偿来预测当前块blk,以用于计算块blk的预测块残差。

适配运动矢量预测器dp也可以用于预测当前块blk。可以通过使用适配运动矢量预测器对代表全向视频的参考表面的2d参考帧中的当前块blk进行运动补偿,来计算预测块pred。

然后,通过将预测块pred添加到重建残差预测块res'来获得重建块rec。将重建块rec存储在存储器中以用于稍后由图片重建模块使用来重建解码图片i'。一旦图片i的所有块已被解码,图片重建模块就从重建块rec执行解码图片i'的重建。可选地,可以将解块滤波应用于重建图片i',以用于移除重建块之间的块效应。

然后,将重建图片i'添加到参考图片存储器,以用于稍后用作用于对要解码的图片集合的随后图片进行解码的参考图片。

然后,重建图片i'存储在存储器上或者由视频解码器装置700输出到沉浸式呈现设备(1810),如下面利用图20所公开的那样。视频解码器装置700也可以包括在沉浸式呈现设备(1810)中。在该情况下,重建图片i'由解码器装置输出到沉浸式呈现设备(1810)的显示模块。

根据所实现的沉浸式呈现系统,所公开的解码器装置可以包括在诸如例如在计算机(1840)、或游戏控制台、或智能电话、或沉浸式呈现设备(1810)、或沉浸式墙壁中在此公开的沉浸式呈现系统的任何一个处理设备中。

装置解码器700可以实现为硬件或软件或其硬件和软件的组合。

图18图示了根据实施例的用于对全向视频进行译码的装置(400)的简化结构。这样的装置被配置为实现根据以上已经在此描述的本原理对全向视频进行译码的方法。

根据实施例,编码器装置包括处理单元proc,其配备有例如处理器并由存储在存储器mem中的计算机程序pg驱动,并且实现根据本原理对全向视频进行译码的方法。

在初始化时,计算机程序pg的代码指令例如被加载到ram(未示出)中,然后由处理单元proc的处理器执行。处理单元proc的处理器根据计算机程序pg的指令来实现以上已经在此描述的对全向视频进行译码的方法的步骤。

编码器装置包括通信单元comout,以将编码比特流str传送到数据网络。

编码器装置也包括用于接收要译码的图片或要编码的全向视频的接口comin。

图19图示了根据实施例的用于对代表全向视频的比特流进行解码的装置(700)的简化结构。这样的装置被配置为实现根据以上已经在此描述的本原理对代表全向视频的比特流进行解码的方法。

根据实施例,解码器装置包括处理单元proc,其配备有例如处理器并由存储在存储器mem中的计算机程序pg驱动,并且实现根据本原理对代表全向视频的比特流进行解码的方法。

在初始化时,计算机程序pg的代码指令例如被加载到ram(未示出)中,然后由处理单元proc的处理器执行。处理单元proc的处理器根据计算机程序pg的指令来实现以上已经在此描述的对代表全向视频的比特流进行解码的方法的步骤。

该装置可以包括通信单元comout,以将视频数据的重建图片传送到呈现设备。

该装置也包括用于从数据网络或网关或机顶盒接收代表要解码的全向视频的比特流str的接口comin。

装置400和700可以位于单独的设备处,或者在充当接收器和传送器二者的同一设备中。

图20图示了其中可以实现本原理的示例性实施例的各个方面的示例性系统1700的框图。系统1700可以实施为包括下面描述的各种组件并且被配置为执行上述处理的设备。这样的设备的示例包括但不限于hmd、个人计算机、膝上型计算机、智能电话、平板计算机、数字多媒体机顶盒、数字电视接收器、个人视频记录系统、连接的家用电器和服务器。系统1700可以包括传感器,并且可以经由如图20中所示并且如本领域技术人员已知的通信信道通信地耦接到其他类似系统,以实现上述示例性视频系统。

系统1700可以包括至少一个处理器1710,其被配置为执行加载在其中的指令,以用于实现如上所述的各种处理。处理器1710可以包括嵌入式存储器、输入输出接口和本领域已知的各种其他电路。系统1700也可以包括至少一个存储器1720(例如,易失性存储器设备,非易失性存储器设备)。系统1700可以另外包括储存设备1740,其可以包括非易失性存储器,包括但不限于eeprom、rom、prom、ram、dram、sram、闪速存储器、磁盘驱动器和/或光盘驱动器。作为非限制性示例,储存设备1740可以包括内部储存设备、附接储存设备和/或网络可访问储存设备。系统1700也可以包括编码器/解码器模块1730,其被配置为处理数据以提供经编码视频或经解码视频。

编码器/解码器模块1730表示可以包括在设备中以执行编码和/或解码功能的模块。编码器400和解码器700可以用在编码器/解码器模块1730中。如已知的那样,设备可以包括编码和解码模块中的一个或二者。另外,编码器/解码器模块1730可以实现为系统1700的单独元件,或者可以作为硬件和软件的组合并入处理器1710内,本领域技术人员已知的那样。

系统1700还可以包括显示器(1790)或者可以经由通信信道通信地耦接到显示器。显示器例如是oled或lcd类型。显示器也可以是沉浸式(投影式)墙壁,其通常有巨大的尺寸。

系统1700还可以包括触摸表面1780(例如触摸板或触觉屏幕)和相机1770。处理器1710可以处理从传感器接收的信号,传感器可以是或者可以不是系统1700的部分。来自传感器的一些测量可以用于计算系统1700或连接到系统1700的另一设备的姿势。相机1770可以捕获环境的图像以用于图像处理。处理器1710也可以执行如图1中描述的预处理和后处理功能。

要加载到处理器1710上以执行上文描述的各种处理的程序代码可以存储在储存设备1740中,并且随后加载到存储器1720上以供处理器1710执行。根据本原理的示例性实施例,一个或多个处理器1710、存储器1720、储存设备1740和编码器/解码器模块1730可以在执行上文讨论的处理期间存储各种项中的一个或多个,包括但不限于输入视频、比特流、等式、公式、矩阵、变量、运算和运算逻辑。

系统1700也可以包括通信接口1750,其使得能够经由通信信道1760与其他设备进行通信。通信接口1750可以包括但不限于被配置为从通信信道1760传送和接收数据的收发器。通信接口可以包括但不限于调制解调器或网卡,并且通信信道可以实现在有线和/或无线介质中。系统1700的各种组件可以使用各种合适的连接(包括但不限于内部总线、布线和印刷电路板)而连接或通信地耦接在一起。

可以通过由处理器1710实现的计算机软件、通过硬件或者通过硬件和软件的组合来执行根据本原理的示例性实施例。作为非限制性示例,可以通过一个或多个集成电路来实现根据本原理的示例性实施例。存储器1720可以是适合于技术环境的任何类型,并且可以使用任何适当的数据储存技术来实现,诸如作为非限制性示例的光存储器设备、磁存储器设备、基于半导体的存储器设备、固定存储器和可移动存储器。处理器1710可以是适合于技术环境的任何类型,并且可以涵盖作为非限制性示例的微处理器、通用计算机、专用计算机和基于多核架构的处理器中的一个或多个。

以上描述了各种方法,并且每个方法包括用于实现所描述的方法的一个或多个步骤或动作。除非为了方法的正确操作需要特定顺序的步骤或动作,否则可以修改或组合特定步骤和/或动作的顺序和/或使用。

在此描述的实现方式可以例如以方法或处理、装置、软件程序、数据流或信号来实现。即使仅在单一形式的实现方式的背景下进行了讨论(例如,仅作为方法进行了讨论),但是所讨论的特征的实现方式也可以以其他形式(例如,装置或程序)来实现。装置例如可以实现在适当的硬件、软件和固件中。方法例如可以实现在诸如例如处理器(其通常涉及处理设备,包括例如计算机、微处理器、集成电路或可编程逻辑器件)之类的装置中。处理器还包括通信设备,诸如例如计算机、蜂窝电话、便携式/个人数字助理(“pda”),以及便于最终用户之间的信息通信的其他设备。

对本原理的“一个实施例”或“实施例”或“一个实现方式”或“实现方式”的引用以及其其他变型意指结合实施例描述的特定特征、结构、特性等包括在本原理的至少一个实施例中。因此,在整个说明书中出现在各处的短语“在一个实施例中”或“在实施例中”或“在一个实现方式中”或“在实现方式中”以及任何其他变型的出现不一定都涉及相同的实施例。

另外,本申请或其权利要求可以涉及“确定”各种信息。确定信息可以包括例如估计信息、计算信息、预测信息或从存储器取回信息中的一个或多个。

此外,本申请或其权利要求可以涉及“访问”各种信息。访问信息可以包括例如接收信息、(例如,从存储器)取回信息、存储信息、处理信息、传送信息、移动信息、复制信息、擦除信息、计算信息、确定信息、预测信息或估计信息中的一个或多个。

另外,本申请或其权利要求可以涉及“接收”各种信息。与“访问”一样,接收旨在为广义术语。接收信息可以包括例如访问信息或(例如,从存储器)取回信息中的一个或多个。此外,在诸如例如存储信息、处理信息、传送信息、移动信息、复制信息、擦除信息、计算信息、确定信息、预测信息或估计信息的操作期间,典型地以某种方式涉及“接收”。

如对于本领域技术人员将明显的那样,实现方式可以产生被格式化为携带例如可以被存储或传送的信息的各种信号。信息可以包括例如用于执行方法的指令或者由所描述的实现方式之一产生的数据。例如,可以将信号格式化为携带所描述的实施例的比特流。可以将这样的信号格式化为例如电磁波(例如,使用频谱的射频部分)或者基带信号。格式化可以包括例如对数据流进行编码以及以经编码数据流来调制载波。信号携带的信息例如可以是模拟或数字信息。如已知的那样,可以通过各种不同的有线或无线链路来传送信号。信号可以存储在处理器可读介质上。

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