用于虚拟现实视频处理的边界填充的方法与装置与流程

文档序号:16811262发布日期:2019-02-10 13:40阅读:330来源:国知局
用于虚拟现实视频处理的边界填充的方法与装置与流程

本申请要求2016年6月7日递交的申请号为62/346,597的美国临时案的优先权,该美国临时专利申请案在此以参考纳入其中。

本发明涉及图像和视频编码和处理。特别地,本发明涉及用于视频编码或处理的填充立方体面帧(paddingcubicfaceframes),其需要在立方体面帧边界之外的像素数据。



背景技术:

360°视频(也称为沉浸式视频)是一种新兴技术,其可以提供“感觉身临其境(feelingassensationofpresent)”。通过围绕用户覆盖全景的环绕场景,特别是360度视野,使用户获得沉浸感。通过立体渲染可以进一步提高“感觉身临其境”。因此,全景视频在虚拟现实(virtualreality,vr)应用中被广泛使用。

沉浸式视频涉及使用多个相机来捕获一个场景,以覆盖全景视野,例如360度视野。沉浸式相机通常使用一组相机,可以捕获360度视野。通常,沉浸式相机使用两个或多个相机。所有视频必须被同时拍摄,并记录场景的分离片段(也称为单独视角)。此外,该组相机通常被布置成水平地捕获视图,然而相机的其它布置是可以的。

360度全景相机捕获周围的场景,并且拼接的球面图像(stitchedsphericalimage)是用来表示在水平方向上连续的vr视频的一种方式。换句话说,球面图像的左端的内容与右端是连续的。球面图像也可以投影到立方体的六个面,作为替代的360度格式。可以通过投影转换来执行转换,以导出表示立方体的六个面的六个面图像(faceimage)。在立方体的面上,这六个图像在立方体的边缘处连接。在图1中,图像110对应于没有任何空白区域的组合的矩形立方体帧,其中组合的帧由1x6的立方体面组成。在图1中,图像120对应于具有使用虚拟数据填充的空白区域的展开的(unfold)立方体图像,其也称为具有空白区域的立方体网格(cubicnet)。如图1所示,展开的立方体面图像被填入到覆盖六个展开的立方体面图像的最小矩形中。

立方体面组合帧通常需要额外的处理,例如视频/图像压缩或图像滤波。例如,在传统的视频编码系统中,运动估计(me)和运动补偿(mc)的处理可能需要在参考帧的帧边界外或跨越帧边界的图像数据。与常规2d视频不同,与360度视频相关联的帧在相邻立方体面之间具有连续性。视频/图像系统通过利用这些信息应该能够更好地执行立方体面之间的连续性的感知。在本发明中,公开了vr视频的边界处理,以利用立方体面之间的连续性的知识。



技术实现要素:

本发明公开了图像序列的视频编码或处理方法和装置,所述图像序列对应于虚拟现实(vr)视频。根据本发明的实施例,使用一个或多个扩展立方体面填充在一个立方体面帧的一个立方体面帧边界之外的填充区域,以形成填充的立方体面帧,其中所述一个立方体面帧中的至少一个边界立方体面一个填充区域,所述一个填充区域使用从相同的立方体面帧中的一个扩展的立方体面导出的像素数据。所述一个立方体面帧可以对应于一个1x6立方体布局,2x3立方体布局,3×2立方体布局或具有空白区域的立方体网格。所述编码所述当前立方体面帧使用帧间预测,并且所述一个立方体面帧对应于在所述当前立方体面帧之前编码的一个参考立方体面帧。

根据一个实施例,对于目标边界立方体面边缘,将与对应的边界立方体面共享所述目标边界立方体面边缘的一个扩展立方体面复制到所述对应的边界立方体面的对应的填充区域。如果在所述填充区域的角处的一个或多个角区域没有对应的的边界立方体面以导出填充数据,则使用一个或多个相邻边界立方体面来导出一个角区域中的像素数据。可以使用基于线的填充,基于圆弧的填充,基于点的填充或基于区域的填充,来导出所述填充区域的一个角中的所述像素数据。当使用基于线的填充时,连接来自一个角区域的两个相邻立方体面的两个对应的边界像素的线被分配相同的像素值。当使用基于圆弧的填充时,连接来自一个角区域的两个相邻立方体面的两个对应的边界像素的圆弧曲线被分配相同的像素值,并且其中所述相同的像素值对应于所述两个对应的边界像素中的一个的像素值或所述两个对应的的边界像素的加权和。当使用基于点的填充时,将对应于一个角区域的角像素或两个相邻立方体面中的另一像素的相同的像素值分配给所述一个角区域。所述像素值对应于滤波后的一个边界像素。当使用基于区域的填充时,使用一个角区域的两个相邻立方体面中的一个来填充所述一个角区域,或者所述一个角区域被分成两个子角区域,并使用所述两个相邻立方体面的对应的子立方体面来填充。

根据一个实施例,公开了连续填充,其中使用与一个或多个对应的边界立方体面共享一个或多个边界立方体面边缘的目标扩展立方体面,来导出所述对应的边界立方体面的目标侧的对应的填充区域,并且其中所述一个或多个边界立方体面边缘与所述对应的边界立方体面的所述目标侧对准。所述目标扩展立方体面被分割成多个区域,并且每个区域包括所述目标扩展立方体面的一个立方体面边缘,并且其中所述每个区域用于填充与所述每个区域共享相同的立方体面边缘的边界立方体面的对应的填充区域。从所述帧边界测量的所述多个区域的高度被调整为相同的高度。可以通过使用来自两个填充区域的两个对应的边界像素进行插值或者使用连接所述两个填充区域的两个对应的边界像素的每条线的相同的值,来填充所述两个填充区域之间的空白区域,并且其中所述相同的值对应于所述两个填充区域的两个边界像素的两个像素值的中的一个。

在连续填充中,根据一个或多个相邻立方体面的边界像素或角像素,使用基于线的填充,基于圆的填充或基于点的填充,来填充与一个扩展立方体面和由所述目标扩展立方体面的一个区域填充的一个填充区域相邻的角区域。如果所述一个或多个对应的边界立方体面和所述目标扩展立方体面共享的不同边界立方体面边缘的总数为三个:将所述目标扩展立方体面分割为一个第一三角形和两个第二三角形,其中所述第一三角形对应于等腰三角形,其具有一个边界立方体面边缘作为底边并且具有等于一个立方体面边缘的长度的等腰三角形的第一高度;每个第二三角形对应于一个直角三角形,其具有以一个边界立方体面边缘作为直角的长相邻边并且与所述直角相邻的短相邻边的长度等于一个立方体面边缘的长度的一半,其中,当所述长相邻边被认为是底边以填充共享一个立方体面边缘的一个边界立方体面的填充区域时,所述第二三角形具有等于一个立方体边缘的长度的一半的第二高度;并且将第一高度和第二高度调整为相同。如果所述一个或多个对应的边界立方体面和所述目标扩展立方体面共享的不同边界立方体面边缘的总数为四个:将所述目标扩展立方体面分割为四个相同尺寸的等腰三角形,其中每个三角形具有一个边界立方体面边缘作为底边,并且具有等于一个立方体面边缘的一半长度的等腰三角形的第一高度。

如果所述立方体帧对应于具有空白区域的立方体网格,则使用一个扩展的立方体面来填充至少一个空白区域。对于正在编码或处理的目标边界立方体面中的目标区块,所述一个扩展立方体面用于填充所述至少一个空白区域,其中所述一个扩展立方体面被选择为与所述目标边界立方体面共享相同的立方体面边缘。在一个实施例中,所述一个空白区域被分割为多个空白区域,并且每个空白区域使用与所述每个空白区域共享一个立方边缘的一个对应的边界立方体面进行填充。所述一个对应的的边界立方体面的对应的区域用于填充所述每个空白区域。在另一个实施例中,对于每个空白区域,沿着从所述一个对应的边界立方体面的对应的边界立方体面边缘到位于所述一个空白区域的中心的所述每个空白区域的角的一条线分配相同的值。

在一个实施例中,如果立方体面框对应于具有空白区域的立方体网格,则根据基于线的填充,基于圆弧的填充或基于点的填充,使用来自相邻立方体面的像素数据来填充至少一个空白区域。当使用一个扩展的立方体面来填充一个空白区域或部分空白区域时,可以沿着两个相邻的共享立方体面边缘施加α混合。根据到扩展的起始点的垂直距离来确定用于α混合的加权因子。

在另一个实施例中,所述方法还可以包括发信或解析分配给每个填充区域或区域的一个或多个填充模式。可以确定相邻立方体面的填充模式,并且仅当当前填充模式不明确时,才发信或解析当前立方体面的所述当前填充模式。

附图说明

图1为不具有任何空白区域的组合矩形立方体帧和具有使用虚拟数据填充的空白区域的展开立方体图像的示例。

图2为在图1中的不具有任何空白区域的组合矩形立方体帧和具有使用虚拟数据填充的空白区域的展开立方体图像的圆形立方体面边缘(circularcubicfaceedge)的示例。

图3为用于vr视频编码的填充处理的示例,其中对应于3×2的组合帧的输入立方体面帧被填充到填充帧(paddedframe)中。

图4为根据本发明的实施例的1x6立方体面组合帧的填充的示例。

图5为在填充具有扩展立方体面的填充区域之后的填充区域的未填充角(unfilledcorner)的示例。

图6a为使用基于线的填充来填充右上未填充角的示例,其中每条线被分配来自单个像素(例如边界像素)的一个值。

图6b为使用基于线的填充来填充右上未填充角的示例,其中每个垂直线被分配来自一个像素的一个值,并且每个水平线被分配来自另一个像素的另一个值。

图6c为使用基于圆形的填充来填充右上未填充角的示例,其中每个圆弧曲线被分配来自单个像素的值或来自两个边界的两个像素的加权和。

图6d为使用基于点的填充来填充右上未填充角的示例,其中角像素被扩展到未填充的角区域。

图7a为通过将角区域的底部边缘上的立方体面逆时针旋转90度来填充未填充的角区域,并且使用旋转的立方体面来填充该区域的示例。

图7b为通过将角区域的左边缘上的立方体面顺时针旋转90度来填充未填充的角区域,并且使用旋转的立方体面来填充该区域的示例。

图8a为使用来自角区域下方的旋转的立方体面的左上半部分来填充角区域的左上半部分的示例。

图8b为使用来自角区域的左侧的旋转的立方体面的右下半部分来填充角区域的右下半部分的示例。

图9为根据本发明的实施例的在填充具有扩展立方体面的填充区域之后,2x3立方体面组合帧和填充区域的未填充角的填充的示例。

图10为填充1x6立方体面组合帧的情况,其中用于填充(fill)填充区域(paddedarea)的任何两个相邻的扩展立方体面之间的边界总是不连续的,如虚线椭圆所示。

图11为填充2x3立方体面组合帧的情况,其中用于填充填充区域的任何两个相邻的扩展立方体面之间的边界总是不连续的,如虚线椭圆所示。

图12为在填充2x3立方体面组合帧期间的不连续性的示例,其中用于填充填充区域的任何两个相邻的扩展立方体面之间的边界是不连续的,如虚线椭圆所示。

图13为根据本发明的实施例的连续填充的示例,其中目标立方体面与立方体帧的底部立方体面共享相同的立方体边缘,并且将目标立方体面分割成多个区域(region)以进行连续填充。

图14为在填充立方体面组合帧期间的不连续性的示例,其中用于填充填充区域的任何两个相邻的扩展立方体面之间的边界是不连续的,如虚线椭圆所示。

图15为根据本发明的实施例的连续填充的示例,其中目标立方体面与立方体帧的底部立方体面共享相同的立方体边缘,并且将目标立方体面分割成多个区域以进行连续填充。

图16a为基于线的填充的示例,以填充两个角区域。

图16b为基于圆弧的填充的示例,以填充两个角区域。

图16c为基于点的填充的示例,以填充两个角区域。

图17为另一种连续填充技术,其中立方体面被等分成四个相同大小的等腰三角形,并且每个三角形的底边与图像的右侧立方边界上的一个立方体面边缘相关联。

图18为具有空白区域的展开的立方体网格的空白区域所需的填充的示例,其中沿着箭头所示的线使用插值或复制来填充空白区域。

图19为使用旋转的相邻立方体面在展开的立方体面网格中填充空白区域的示例。

图20为通过将空白区域分割成多个区域并且每个区域被独立地填充,来填充展开的立方体网格中的空白区域的另一示例。

图21为将展开的立方体面网格中的空白区域分割为多个区域并使用边界立方体面来填充每个区域的示例。

图22为将展开的立方体面网格中的空白区域分割为四个区域并且通过对空白区域中的每条线使用相同的像素值来填充每个区域的示例。

图23为展开的立方体面网格中的空白区域的基于点的填充,其中角像素的值或预定义值用于填充空白区域。

图24为展开的立方体面网格中的空白区域的基于线的填充,其中使用边界像素值沿着线执行插值以填充空白区域。

图25为展开的立方体面网格中的空白区域的基于圆弧的填充,其中可以使用边界像素值沿着圆弧线执行插值以填充空白区域。

图26为指向1x6立方体面组合帧外的大运动向量的示例,其中填充技术用作为在立方体帧边界之外生成所需的数据的示例。

图27为具有伪影的填充的立方体面帧(paddedcubic-faceframe)的示例。

图28为确定α混合(alphablending)的权重的示例。

图29为将α混合应用于两个相邻立方体面以形成混合立方体面的示例。

图30为在布局方案中为每个填充区域分配填充模式的示例,其中虚线区块表示要填充的区域或面积。

图31为分配填充模式的另一示例,其中每个面被独立地编码并创建填充。

图32为根据本发明实施例的对应于虚拟现实(virtualreality,vr)视频的图像序列的视频编码或处理的示例性流程图。

具体实施方式

以下描述为本发明的较佳实施例。以下实施例仅用来说明本发明的一般原理,并应该对此做限制性理解。本发明的保护区域当视权利要求书所界定为准。

如前所述,常规视频/图像编码或常规图像处理将球面图像和立方体图像视为来自常规视频/图像相机的常规帧。当需要边界外的像素数据时,外部的像素数据通常被视为不可用数据。因此,不可用像素数据通常可以用其他方式生成,例如使用预定义数据来填充或扩展边界附近的现有像素。然而,对于立方体面组合帧,立方体面边界之外的数据确实具有连续性。在本发明中,公开了通过考虑跨越立方体面边界的连续性的各种数据填充技术。

如图1所示,这六个立方体面以一定的方式相互连接,因为这六个立方体面在立方体的表面上相互连接。因此,立方体上的每个边缘由两个立方体面共享。换句话说,x,y和z方向上的每四个面是圆形连续的。不具有空白区域(即图1中的图像110)的1x6立方体面组合帧的圆形边缘(circularedge)由图2中的图像210示出。对于每个编号的边缘,存在来自另一立方体面的对应的边缘。例如,左侧的第一个立方体面的顶部的边缘#1与从右侧开始的第二个立方体面的顶部的边缘#1相连接。对于图像110的中间的四个立方体面,没有标记边缘,因为这四个立方体面是连续的,并且在任何两个相邻立方体面图像之间没有可见的边缘。然而,对于这四个立方体面,最左边的立方体面图像的左边缘(即,边缘#3)环绕以连接到最右边的立方体面图像的右边缘(即边缘#3)。具有空白区域的立方体面组合帧(即,图1中的图像120)的圆形边缘由图2中的图像220来示出。

在vr编码视频中,可以从其他立方体面获得帧边界外的信息。图3为用于vr视频编码的填充处理的示例,其中对应于3×2的组合帧的输入立方体面帧310(也称为立方体面布局或立方体布局)被填充到填充帧320中。在填充处理之后中,常规的帧间/帧内预测330随后可用于有效地对视频进行编码。具体地,根据本发明的实施例,从其他面获得图像/视频边界外的像素,其共享相同的立方体面边界。

图4为根据本发明的实施例的1x6立方体面组合帧410的填充的示例。对于帧边界的每个立方体面边缘,识别对应的边缘和相关联的立方体面。例如,在组合帧的左边界上存在立方体边缘#7。相关联的立方体面412将用于在左边界之外产生所需的填充数据。与立方体面帧边界相邻的任何立方体面称为边界立方体面(boundarycubicface)。对于1x6立方体面帧,每个立方体面都是边界立方体面。立方体面412和立方体面422共享相同的立方体面边缘(即#7)。用于导出在目标立方体面422之外的扩展像素数据的立方体面412,是与目标立方体面422不同的立方体面。在本发明中,立方体面412也被称为扩展立方体面(extendedcubicface)。类似地,可以识别边界处的所有其他立方体面。通常,在边界附近只有有限数量的像素将被填充。因此,仅需要填充区域420和1x6立方体面组合帧410之间的像素。然而,对于填充区域的四个角(即412,414,416和418),没有来自相邻立方体面的可用数据。因此,如图5中的区域512,514,516和518所示,这四个未填充角必须用填充数据来填充。

本发明公开了为填充区域的四个未填充角产生填充数据的各种技术。根据一个实施例,通过沿着每条线分配相同的值来使用基于线的填充(line-basedpadding)。例如,如图6a所示,可以从当前面的边界或相邻面的边界获得线,用于右上角区域610的填充。该线被示为连接两个相邻的立方体边缘的箭头线(arrowedline)。像素值可以沿着箭头线从垂直边缘620或从水平边缘622的像素来复制。该线可以被分配来自单个像素或多个像素的一个值。例如,图6b为对于每条线使用两个像素的示例,其中线在对角线632的上方区域中沿水平方向移动,并且在对角线632的下方区域中沿垂直方向移动。对于水平方向,该线从垂直边缘620复制像素,并且对于垂直方向,该线从水平边缘622复制像素。

在另一个实施例中,如图6c所示,通过沿着每个圆弧线分配一个相同的值来使用基于圆弧的填充(circular-basedpadding)。该值可以从两个边界(即620和622)之一或两个边界(即620或622)的两个像素的加权和导出。在另一个实施例中,如图6d所示,通过将角像素642扩展到未填充的角区域来使用基于点的填充(point-basedpadding),以生成填充数据。在这种情况下,填充区域中的像素的像素值与角像素642相同。

在用于填充角区域的上述实施例中,填充值可以是滤波的边界像素。换句话说,可以对边界像素应用滤波,然后使用滤波的像素来生成填充数据。

本发明还公开了基于区域的填充(area-basedpadding)技术,用于生成未填充的角区域的填充数据。在一个实施例中,两个边界立方体面中的一个用于填充未填充的角区域。例如,如图7a所示,角区域的底部边缘上的立方体面710用于填充角区域。在这种情况下,立方体面710逆时针旋转90度以形成旋转的立方体面712,并且通过将立方体面710逆时针旋转90°来用于填充角空间。此外,如图7b所示,角区域的左边缘上的立方体面720可以用于填充角区域。在这种情况下,立方体面720顺时针旋转90度以形成旋转的立方体面722,并用于填充未填充的角区域。注意,在图7a中,填充区域在左边缘714上是连续的,但是在底部边缘716上是不连续的。另一方面,在图7b中,填充区域在底部边缘726上是连续的,但是在左边缘724上是不连续的。

在图7a中,填充区域的左上部分从立方体面边界连续。另一方面,在图7b中,填充区域的右下部分从立方体面边界连续。因此,在另一个实施例中,如图8a和图8b所示,使用角区域的两个边缘的每个立方体面的一半来填充角区域。立方体面712的位于对角线上方的左上半部分用于填充如图8a所示的角区域的位于对角线上方的左上半部分。另一方面,如图8b所示,立方体面722的位于对角线下方的右下半部分用于填充角区域的位于对角线下方的右下半部分。

除了1x6立方体面组合帧之外,还可以使用2x3立方体面组合帧。图9为用于2x3立方体面组合帧910的填充的示例。类似于图5中的1x6立方体面组合帧的情况,共享相同立方体边缘的立方体面围绕着2x3立方体面组合帧910的边界。方框920与2x3立方体面组合帧910之间的区域将被填充。此外,在待填充区域的四个角落处,四个角区域(932,934,936和938)没有可用于填充填充区域的相邻立方体面。图6a-6d,图7a-7b和图8a-8b所示的填充技术也适用于图9的情况。

通过使用共享共同边缘的扩展立方体面的填充技术将得到跨越帧边界的连续图像。然而,用于填充边界区域的两个相邻立方体面之间的区域可能不是连续的。图10为填充1x6立方体面组合帧的情况。如图10所示,用于填充填充区域的任何两个相邻的扩展立方体面之间的边界总是不连续的,如虚线椭圆所示。图11为填充2x3立方体面组合帧的情况。如图11所示,用于填充填充区域的任何两个相邻的扩展立方体面之间的区域总是不连续的,如虚线椭圆所示。

为了克服如图10和图11所示的不连续性问题,公开了连续填充技术,其能够产生从一个扩展立方体面到另一个扩展立方体面的连续的填充区域。图12为基于立方体面1212(指定为目标立方体面)的连续填充的示例。立方体面1212具有三个共享立方体面边缘,其具有2x3立方体面组合帧1210的底部边界。立方体面1212可用于产生2x3立方体面组合帧1210的底部区域1222的填充数据。在2×3立方体面组合帧1210的底部的一列,目标立方体面1212具有与三个立方体面共享的三个边缘(在图12中标记为“a”,“b”和“c”)。但是,如图像1220所示,立方体面1212的两个边缘与相邻的立方体面不连续,如椭圆1230和1232所示。产生连续填充的各种技术如下所述。

在第一示例中,立方体面1212被分割成多个区域。如图12所示,目标立方体面的三个边(即,“a”,“b”和“c”)与立方体帧1210的底部立方体面共享相同的立方体边缘。因此,如图13所示,目标立方体面1310被分割为区域1,2和3。如图像1320所示,将三个分割区域放置在立方体帧的下方。分割的目标立方体面1310由一个等腰三角形(即区域2)和两个直角三角形(即区域1和3)组成。等腰三角形的高度具有共享的立方体边缘(即,如对应于图12所示的边缘b)。该侧被认为是底边(baseside),等腰三角形的高度h1由箭头指示。每个直角三角形具有与直角相邻的长边(即,如图12所示的边缘a或边缘c)和短边。长边的长度等于立方体面边缘的长度。短边的长度h2等于立方体面边缘长度的一半。在填充区域1320中,三个三角形的高度被调整为具有相同的高度。换句话说,如图13所示,调整高度h1'与调整高度h2'相同。分割区域之间的区域可以如箭头所示进行插值。此外,分割区域之间的区域可以沿着箭头所示的每条线分配相同的像素值,其中像素值可以对应于两个相邻分割区域的两个边界像素之一的值。

图14为使用目标立方体面的连续填充的另一示例。图14中的图像1410对应于填充有共享共同边缘的扩展立方体面的图像。如椭圆1412和1414所示,两个相邻的扩展立方体面之间存在不连续性。可以应用如图13所示的连续填充技术。在立方体帧的右侧的目标立方体边缘被标记(即,“a”,“b”,“c”和“d”)。这四个边缘对应于立方体图像1430的四个边缘。类似于图13的示例,立方体面1430被分割成多个区域。如图15所示,目标立方体面1430被分割为区域1,2和3,其中展示了分割的立方体面1510。三个分割区域被放置在立方体面帧的右侧,如图像1520所示。分割区域之间的区域可以如箭头所示进行插值。另外,分割区域之间的区域可以沿着箭头所示的每条线分配相同的像素值,其中像素值可以对应于两个相邻分割区域之一的边界的像素值。

在图15中,对于立方体边缘d的右侧的区域没有转换的立方体面,这是与图4和图5所示的类似的问题。图6a至图6d可以应用于解决该问题。因此,在图16a中显示了基于线的填充,以填充角区域1610和1612;在图16b中显示了基于圆弧的填充,以填充角区域1620和1622;并且在图16c中显示了基于点的填充,以填充角区域1630和1632。

图17为另一种连续填充技术,其中立方体面被等分成四个相等大小的等腰三角形1710,并且每个三角形的底边(标记为a,b,c或d)与图像1420的右侧立方体边界上的一个立方体边缘相关联。因此,这四个分割区域1720被填充到立方体帧1420的右侧。分割区域之间的区域可以使用插值来填充。

图18为展开的立方体网格1810所需的填充的另一示例。在填充与对应的立方体面的共享立方体边缘相邻的区域之后,存在空白区域(1812至1818)。在一个实施例中,可以使用插值来填充空白区域。例如,来自边缘的边界像素可以用于沿着区域1812所示的线进行插值或复制。

在另一个实施例中,可以使用立方体面来填充如图19所示的空白区域。在该示例中,立方体面1912顺时针旋转并且被放置在区域1910中。旋转的立方体面1910在跨越边界1930处是连续的。对于待处理的当前区块1920,可以使用跨越边界1930的周围数据。

在另一个实施例中,如图20所示,空白区域可以被分割成多个区域,并且每个区域被独立地填充,其中空白区域2010被分割为四个区域(区域1,2,3,以及空白区域)。

空白区域还可以使用每个立方体边缘的边界立方体面(称为填充面)来填充。例如,边界面的区域中的像素可用于填充空白区域的区域。图21为将空白区域分割为多个区域并使用边界立方体面来填充每个区域的示例。在图21中,待填充的空白区域2110,以与图20所示相同的方式将空白区域分割成四个区域。对于区域1,2和3,对应的边界立方体面的区域(2120,2122或2124)被扩展以填充对应的空白区域(即分别为区域1,2或3)。在一个示例中,对应的边界立方体面的区域(2120,2122或2124)可以相对于由曲线箭头指示的相应立方边缘进行翻转,并且分别填充对应的空白区域(即,区域1,2或3)。

图22为使用边界立方体面填充空白区域的另一示例。在图22中,以与图20所示的相同的方式将空白区分割成四个区域。对于空白区域的每个区域,为空白区域中的每条线分配相同的像素值。像素值可以是对应的的边界像素值或预定义值。

前面提到的其他填充技术也可以应用于这种情况。例如,图23为基于点的填充,其中角像素2320的值或预定义值可用于填充区域2310。图24为基于线的填充,其中可以使用边界像素值沿着线执行插值来填充区域2410。另外,边界像素值或预定义值可以用于每条线以填充区域2410。图25为基于圆弧的填充,其中可以使用边界像素值沿着圆弧线执行插值以填充区域2510。另外,边界像素值或预定义值可以用于每个圆弧线以填充区域2510。

填充技术通常填充边界周围的相邻区域,以致当需要帧边界外的像素数据时,所需的数据将可用于处理。例如,滤波处理可能需要当前像素上方周围的相邻像素。如果当前像素接近或位于图像的边界处,则某些相邻数据可能不可用。填充处理将生成所需的相邻数据。对于视频编码中的帧间预测,可以使用由运动向量表示的参考数据可作为参考数据。当当前区块在边界附近时,所需的参考数据可能在图像边界之外。填充处理可以帮助生成所需的参考数据。然而,可能会发生大的运动,这将指向超出填充区域的数据。图26为大运动向量的示例,其中使用图5中的填充技术来作为示例。区块2610对应于当前区块。当前区块的运动向量2620指向超过填充区域420的较远的区域。根据一个实施例,如果运动向量在立方体填充区域420之外,则从立方体填充图像的边界像素复制参考像素。

在立方体面表示中,不同的立方体面可能是被不同的相机捕获的和/或经历了不同的处理,这可能导致在填充中沿着立方体帧边界产生伪影。本发明还公开了利用滤波来减少沿着立方体帧边界的可见伪影的填充技术。滤波可以对应于平滑滤波或去区块。图27为具有伪影的填充立方体面帧(paddedcubic-faceframe)的示例。图像2710对应于填充立方体面帧,其中矩形2712表示立方体面帧的边界。图像2720表示填充的立方体面帧中的一些伪影(2722和2724)。

在一个实施例中,使用α混合(alphablending)来减少伪影。特别地,应用α混合沿着不同的方向扩展立方体面。使用加权和来确定滤波像素值。图28为确定α混合的权重的示例。对于像素“x”,从边界像素p1到当前像素“x”的距离为d1,从另一边界像素p2到当前像素“x”的距离为d2。权重因子分别被导出为d2/(d1+d2)和d1/(d1+d2)。图29为将α混合应用于两个相邻立方体面(2910和2912)以形成混合立方体面2920的示例。

本发明还公开了一种发信填充模式的技术。如上所述,有各种填充技术可用于生成填充立方体面帧。没有特定的填充技术可以保证始终提供最好的结果。因此,本发明的实施例允许编码器为模糊的立方体面(ambiguouscubicface)选择最佳填充,其中最佳填充是未知的。图30为在布局方案中为每个填充区域分配填充模式的示例,其中虚线区块表示要填充的区域或区域。图31为分配填充模式的另一示例。在这个例子中,每个面都被独立地编码及创建填充。当前面(currentface)的四个相邻面首先被连接,并为其他区域分配填充模式。

以上公开的发明技术可以以各种形式包含到各种视频编码或解码系统中。例如,可以使用基于硬件的方法来实现本发明,例如专用集成电路(ic),现场可编程逻辑门阵列(fpga),数字信号处理器(dsp),中央处理单元(cpu)等。本发明可以也可以使用能在计算机,便携式计算机或移动设备(诸如智能电话)上执行的软件代码或固件代码来实现。此外,软件代码或固件代码可以在诸如具有专用处理器(例如,视频编码引擎或协同处理器)的cpu的混合型平台上执行。

图32为根据本发明的实施例的对应于虚拟现实(vr)视频的图像序列的视频编码或处理的示例性流程图。根据该方法,在步骤3210中,接收对应于虚拟现实视频的图像序列,其中,图像序列包括立方体面帧,并且每个立方体面帧包括来自立方体的表面的多个立方体面,并且其中每个立方体面帧的帧边界包括多个边界立方体面边缘,多个边界立方体面边缘对应于与帧边界相邻的多个边界立方体面。在步骤3220中,使用一个或多个扩展立方体面生成在一个立方体面帧的一个立方体面帧边界之外的填充区域,以形成填充的立方体帧,其中所述一个立方体面帧中的至少一个边界立方体面具有使用来自相同立方体面帧中的一个扩展立方体面的像素数据的一个填充区域,并且其中所述一个扩展立方体面是与所述至少一个边界立方体面是不同的立方体面。然后在步骤3230中,使用填充的立方体面帧对当前立方体面帧进行编码或处理。

本发明所公开的上述流程图可以对应于将在计算机、移动设备、数字信号处理器或可编程设备上执行的软件程序代码。程序代码可以用诸如c++的各种编程语言来编写。该流程图还可以对应于基于硬件的实现,其中硬件可以是一个或多个电子电路(例如,asic(专用集成电路)和fpga(现场可编程逻辑门阵列))或处理器(例如,dsp(数字信号处理器))。

以上的描述是使所属领域中具有习知技术者在本文提供的特定应用和需求下能够实践本发明。所属领域中具有习知技术者将容易地观察到,在不脱离本发明的精神和范围内,可以进行多种修改和变动。因此,本发明并非限定在所示和描述的特定的实施例上,而本发明公开是为了符合原则和新颖性的最广泛的范围。在上述详细的描述中,各种具体的细节,用以提供对本发明的透彻的了解。尽管如此,将被所属领域中具有习知技术者理解的是,本发明能够被实践。

如上述所述的本发明的实施例,可以使用硬件、软件或其组合来实现。例如,本发明的一实施例可以是集成到视频压缩芯片中的电路或集成到视频压缩软件中的程序代码,以执行所描述的处理。本发明的实施例也可以是将在数字信号处理器上执行的程序代码来执行所描述的处理。本发明还涉及一系列的由计算机处理器、数字信号处理器、微处理器和现场可编程门阵列(fpga)执行的功能。根据本发明,这些处理器可以被配置为执行特定任务,通过执行定义特定方法的计算器可读软件代码或固件代码来实现。软件代码或固件代码可以用不同的编程语言和不同的格式或样式来开发。软件代码也可以为不同的目标平台所编译。然而,软件代码的不同的代码格式、风格和语言,以及配置代码的其他方式以执行任务,均不脱离本发明之精神和范围。

本发明可以以其它具体形式实施而不背离其精神或本质特征。所描述的实施例在所有方面都仅是说明性的而不是限制性。本发明的范围因此由所附权利要求为准而不是由前面的描述所界定。因此,各种修改、改编以及所描述的实施例的各种特征的组合可以在不脱离本发明的区域如权利要求书中阐述的情况下实施。

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