视频编码器和/或视频解码器中的非对称去块的制作方法

文档序号:26361093发布日期:2021-08-20 20:37阅读:361来源:国知局
视频编码器和/或视频解码器中的非对称去块的制作方法

本公开涉及视频编码和/或解码。



背景技术:

本公开涉及由一系列图像(又名图片)组成的视频序列的编码和/或解码。视频序列的每个图像由一个或多个分量组成。可将每个分量描述为是样本值的二维矩形数组。通常,视频序列中的图像由三个分量组成:一个亮度分量(1umacomponent)y,其中样本值是亮度值;第一色度分量(chromacomponent)cb,其中样本值是色度值;以及第二色度分量cr,其中样本值是色度值。其它示例包括y′cbcr、yuv和ictcp。在ictcp中,i是“强度亮度”分量。对于本文档的其余部分,我们将把任何亮度分量y′、y或i称为y或简称为亮度。

通常,色度分量的尺寸在每个维度上是亮度分量的1/2。例如,高清(hd)图像的亮度分量的大小为1920x1080,并且色度分量将各自具有960x540的尺寸。分量有时称为颜色分量。

在视频编码中,将每个分量拆分成块,并且编码的视频位流是一系列块。块是样本的一个二维数组。在视频编码中常见的是,将图像拆分成覆盖图像的特定区域的单元。每个单元由来自构成该特定区域的所有分量的所有块组成,并且每个块完全属于一个单元。h.264中的宏块和hevc中的编码单元(cu)都是单元的示例。

在hevc中,将每个图片分割成编码树单元(ctu)。一ctu由一nxn块的亮度样本和两个mxm对应的色度块组成。hevc中的ctu类似于h.264和早期标准中的宏块,但是与宏块相比,ctu大小是可配置的。然而,大多数时候,将hevc中的ctu大小设置为64x64亮度样本。可对每个ctu递归地进行四叉树拆分。然后,将四叉树的根与ctu相关联。对四叉树进行拆分,直到到达叶子(leaf)为止,叶子称为编码单元(cu)。hevc中的cu总是由具有相等高度和宽度的亮度块组成。在位流中传达(convey)如何拆分每个ctu。cu进一步是以下两种其它树的根节点:已经把预测单元(pu)作为节点的预测树和已经把变换单元(tu)作为节点的变换树。hevc中的一些解码过程在cu级上进行,一些在pu级上进行,并且一些在tu级上进行。通过去块滤波器(deblockingfilter)对pu之间的边界和tu之间的边界进行滤波,以便减少tu和pu之间的不连续性。在hevc中,对于pu存在两种预测类型:仅将来自当前图片的之前解码的样本的预测用于预测的帧内预测(intraprediction);以及使用来自至少一个之前解码的图片的预测的帧间预测(interprediction)。

在hevc中,首先在竖直边界(verticalboundary)上应用去块,并且然后在水平边界(horizontalboundary)上应用去块。边界是tu边界或pu边界。为了启用并行友好去块(pdfd),在8x8样本网格上执行去块。

为每个边界设置去块滤波器强度参数(bs)。如果bs的值大于0,则可应用去块。边界强度越大,就应用越强的滤波。首先,检查,如果块之间的pu边界处块中的任何块是帧内预测的块,则将bs设置成=2,或者如果两个块均使用帧间预测但是它们使用不同的参考帧或具有明显不同的运动向量,则将bs设置成=1。还检查,如果块之间的tu边界在块中的至少一个块中具有非零变换系数(码块标志(codeblockflag)cbf等于1),则将bs设置成=1。该首先的检查设置大于0的边界强度(bs),以指示应当应用去块。边界强度越大,就应用越强的滤波。为了减少/避免在去块时移除自然结构,接着对亮度应用在边界的各自侧上没有任何自然结的检查。在hevc中,在边界的各自侧上使用以下不等式来使用梯度计算(gradientcalculation):abs(p0-2*p1+p2)+abs(q0-2*q1+q2)<beta,其中beta是基于块的量化参数的参数,并且p0、p1至p2是块边界的一侧上的样本,并且q0、q1至q2是块边界的另一侧上的样本。沿边界在两个位置处检查该条件,并且如果两个条件都满足,则对于边界的这4个样本部分,对亮度样本进行去块。如果邻近的块中的任何一个是帧内编码的,则可总是对色度边界进行滤波。

在h.266的规范的当前草案(vvc草案3jvet-l1001(见参考文献[1])(以下简称为“vvc”))中,编码树单元(ctu)类似于hevc中的ctu,其中差别在于,h.266中的ctu具有128x128个亮度样本的大小。在vvc中,可更加灵活地拆分ctu,使得产生的cu可由矩形亮度块组成。在vvc中,没有如hevc中那样的预测树。然而,可隐式地将vvc中的cu划分成多个tu。但是,只有当cu大小具有大于最大变换大小的宽度或高度时才可出现隐式tu。如果情况并非如此,则cu不具有任何预测树,也不具有任何变换树。

在vvc中,首先在竖直cu边界、竖直隐式tu边界和竖直子块边界上应用去块,然后在水平cu边界、水平隐式tu边界和水平子块边界上应用去块。去块基于hevc去块。

在vvc中,包括两个子块预测工具:affine和atmvp。对于块的不同部分(例如,子块),可将子块预测工具表征为具有多于一个运动参数集的预测工具。affine对子块大小4x4进行操作,并且atmvp对子块大小8x8进行操作。由诸如要从中预测的参考帧的一个指示符和至少一个运动向量的特定运动参数来预测每个子块。当cu使用像atmvp和affine的子块运动补偿时,由于在子块中的至少一些中使用了不同的运动参数,所以可能会在cu内创建子块边界。在vvc中,除了在8x8网格上对cu和隐式tu边界进行去块之外,当子块边界的相应侧上的运动参数足够不同时,还在8x8网格上对子块边界进行去块。可既对cu、隐式tu又对子块边界并行地进行去块,因为去块基于在边界的每一侧上读取最多4个样本并写入最多3个样本的hevc亮度去块,这对于在8x8网格上去块时是足够的。

图1示出来自atmvp的竖直子块边界102的示例,它是来自竖直隐式tu边界101的8个样本。图2a示出竖直子块边界202的另一个示例,它是来自cu边界201的8个样本。如图2a中所示,竖直块边界201位于p块和q块之间,p块和q块一起形成一个单元,并且q块在它内具有多个竖直子块边界,包括最接近于边界201并且不与边界201重合的子块边界202。图3a示出来自图2a中所示的单元的示例列303。如图3a中所示,q块包括一组样本(又名像素值)(示出的样本q1至q8),并且p块包括一组样本(示出的样本p1至p8)。

1.使用长滤波器进行去块

当至少与两侧上的块的块边界正交的长度等于或大于32或等于或大于16时,通常对大块应用当前在关于去块的核心试验中使用较长滤波器的去块(jvet-l1031-v2)。还存在这样的情况,其中,在等于或大于32的一侧上使用较长的滤波器,并且如果另一侧小于32,则在该另一侧上使用较短的滤波器。

1.1.使用来自jvet-l1031-v3的长滤波器进行8x8网格亮度去块的示例

ce11.1.6

测试ce11.1.6修改包括:亮度的长滤波器去块、色度的长滤波器去块以及位置相关的限幅(clipping)。

亮度的长去块滤波器

当边界的任一侧上的样本属于大块时,该提议使用双线性滤波器。如当对于竖直边,宽度>=32时以及当对于水平边,高度>=32时,定义属于大块的样本。

下面列出双线性滤波器。

然后,通过线性内插(1inearinterpolation)如下替换块边界样本pi和qi(i=0到s-1):

pi′=(fi*middles,t+(64-fi)*ps+32)>>6),限幅到pi±tcpdi

qi′=(gi*middles,t+(64-gi)*qs+32)>>6),限幅到qi±tcpdi

其中tcpdi项是在第2.5节中描述的位置相关的限幅,并且下面给定fi、middles,t、ps和qs:

亮度的去块控制

本小节中描述去块决策过程。

只有在condition1、condition2和condition3全都为真(true)的情况下才使用长亮度滤波器。

condition1是“大块条件”。该条件检测p-侧和q-侧上的样本是否属于大块,它们分别用变量bsidepislargeblk和bsideqislargeblk表示。bsidepislargeblk和bsideqislargeblk如下定义。

基于bsidepislargeblk和bsideqislargeblk,如下定义条件1。condition1=(bsidepislargeblk||bsidepislargeblk)?true:false。

接着,如果condition1为真,则将进一步检查condition2。首先,推导以下变量:

然后,将条件2定义为:condition2=(d<β)?true:false。

最后,如果condition1和condition2两者都有效,则提出的去块方法将检查condition3(大块强滤波器条件),其如下定义。

色度的长去块滤波器

定义色度的以下强去块滤波器:

提议的色度滤波器在4x4色度样本网格上执行去块。

色度的去块控制

在块边界的两侧上使用色度强滤波器。这里,当色度边缘的两侧都大于或等于8(色度位置)时选择色度滤波器,并且满足具有三个条件的以下决策:第一个赞成(befor)边界强度以及大块的决策。当正交跨越块边缘的块宽度或高度在色度样本域中等于或大于8时,可应用提议的滤波器。第二个和第三个关于hevc亮度决策基本相同,它们分别是开/关决策和强滤波器决策。在第一个决策中,对于色度滤波,如表1中所示对边界强度(bs)进行修改。按顺序检查表1中的条件。如果满足一个条件,则跳过具有较低优先级的剩余条件。

经过修改的边界强度

当检测到大块边界时,bs等于2或者bs等于1时执行色度去块。第二个和第三个条件与如下所述的hevc亮度强滤波器决策基本相同。在第二个条件中,如同在hevc亮度去块中那样推导d。当d小于β时,第二个条件将为真。该测试可包括具有阈值缩放的子采样色度梯度计算,如在jvet-l0572中所描述。在第三个条件中,如下推导strongfiltercondition:

位置相关的限幅

该提议还介绍了位置相关的限幅tcpd,它应用于亮度滤波过程的输出样本,亮度滤波过程涉及修改边界处的7个和3个样本的强且长的滤波器。假设量化误差分布,提议对于预期具有较高量化噪声的样本增加限幅值,从而预期重构样本值与真样本值具有更高的偏差。

对于每个p或q边界,取决于决策过程的结果,从作为侧面信息提供给解码器的tc7和tc3表中选择位置相关的阈值表:

tcpd=(sp==3)?tc3:tc7;

tcqd=(sq==3)?tc3:tc7;

在此之后,根据tcp和tcq限幅值对经滤波的p′i和q′i样本值进行限幅:

p″i=clip3(p′i+tcpi,p′i-tcpi,p′i);并且

q″j=clip3(q′j+tcqj,q′j-tcqj,q′j),

其中p′i和q′i是经滤波的样本值,p″i和q″j是在限幅之后的输出样本值,并且tcpi、tcpi是从vvctc参数以及tcpd和tcqd导出的限幅阈值。函数clip3(x,y,z)是在vvc中规定的限幅函数:

ce11.1.7

该测试利用ce11.1.6的滤波和控制过程。然而,在该测试中,解码器将不访问分别超过用于亮度和色度的6个和3个ctu行缓冲器(linebuffer)的样本值。将例如使用填充(padding)/可用性准则/非对称滤波来对利用超过ctu行缓冲器的位置处的样本的滤波和控制过程进行适当修改。

ce11.1.8

该测试利用ce11.1.6的滤波和控制过程。然而,在该测试中,解码器将不访问分别超过用于亮度和色度的4个和2个ctu行缓冲器的样本值。将例如使用填充/可用性准则/非对称滤波来对利用超过ctu行缓冲器的位置处的样本的滤波和控制过程进行适当修改。

1.2长滤波器的另一个长滤波器示例jvet-l0072

通过线性内插如下替换块边界样本pi和qi(i=0到s-1):

-pi′=(fi*middles+(64-fi)*ps)+32)>>6,限幅到pi±tc

-qi′=(fi*middles+(64-fi)*qs+32)>>6),限幅到qi±tc

其中,下面给定f、middle、p和q:

图2b示出两个块之间的水平边界。

图3b示出示例行缓冲器。如图3中所示,行缓冲器由来自块p的与q块紧密相邻的一组行组成(要素302表示块p和块q之间的水平块边界)。



技术实现要素:

目前存在某些挑战。例如,没有为ce11.1.7定义非对称去块滤波器来处置最多6个ctu行缓冲器。并且,没有为ce11.1.6到ce11.1.8定义非对称去块滤波器来处置与利用长滤波器的去块和子块去块的交互。本公开弥补了这些挑战。

在需要将在至少一侧上要修改的样本的数量限制为5的情况下,可能有用的是在该侧上使用来自jvet-l0072中的滤波器5样本滤波器,并且在另一侧上使用7样本滤波器。这里,以下是可能期望这样的三个示例。

示例1(一般情况):

在块p的高度(ph)等于16并且块q的高度(qh)等于或大于32的情况下,要在p侧上修改的样本的最大数量是5,并且要在q侧上修改的样本的最大数量是qh/2-1,但是尽管样本的最大数量可能高达qh/2-1(例如,当qh=32时为15),在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

示例2(6ctu行缓冲器):

在水平边界与ctu边界对齐的情况下,将在p侧上要修改的样本的数量限制为5。这将行缓冲器的数量减少为6。

示例3(与cu中的子块交互):

在水平边界与cu边界对齐的情况下(其中p或q侧上的cu中的至少一个使用了子块运动补偿),将在使用子块运动补偿的这一侧上的cu边界上要修改的样本的数量限制为5。这能够实现对最接近的子块边界上的至少两个样本的滤波。这在竖直边界的情况下同样适用。

示例4(由于备选方案2或3中的限制而导致的特殊情况)

在p侧上修改5个样本,并在q侧上修改3个样本。例如,可通过备选方案2或3来对p侧进行限制。可通过其它条件来对q侧进行限制,以使用长滤波器。例如,q侧短于32。

本文中描述的非对称滤波器能够实现在减少ctu边界上的行缓冲器的情况下进行去块,和/或能够实现对与使用子块运动补偿的至少一个cu共享的cu边界进行并行去块。

在一个特定方面中,提供有一种非对称去块方法,该方法用于对样本的p块和样本的q块之间的边界进行去块,使得对p块内的样本和q块内的样本进行修改。该方法包括至少基于p5确定值refp,其中p5是p块内的样本,并且在p块内有将p5与边界分开的五个其它样本(p0、p1、p2、p3和p4)。该方法还包括至少基于qx确定值refq,其中qx是p块内的样本,并且要么i)在q块内有将qx与边界分开的三个其它样本(q0、q1和q2);要么ii)在q块内有将qx与边界分开的七个其它样本(q0、q1、q2、q3、q4、q5和q6)。该方法进一步包括至少基于p0和q0确定值refmiddle,其中p0直接与边界相邻,并且q0直接与边界相邻。该方法还包括:在refp和refmiddle之间执行线性内插;以及在refq和refmiddle之间执行线性内插。

在一个实施例中,边界是竖直边界,样本p0至p5在与竖直边界正交的行中对齐,并且样本q0至q3或样本q0至q6在该行中对齐。

在一个实施例中,边界是水平边界,样本p0至p5在与水平边界正交的列中对齐,并且样本q0至q3或样本q0至q6在该列中对齐。

在一个实施例中,在q块内有将qx与边界分开的七个其它样本(q0、q1、q2、q3、q4、q5和q6)(即,qx=q7);refq等于(q6+qx+1)>>1,并且refmiddle等于(p5+p4+p3+p2+2*(p1+p0+q0+q1)+q2+q3+q4+q5+8)>>4)。

在一个实施例中,在refp和refmiddle之间执行线性内插包括计算p′(x)=(f(x)*refmiddle+(64-f(x))*refp+32)>>6,其中x是0到4,p′(x)是px的经滤波的版本,并且f={58,45,32,19,6}。

在一个实施例中,在refq和refmiddle之间执行线性内插包括计算q′(x)=(g(x)*refmiddle+(64-g(x))*refq+32)>>6,其中x是0到6,q′(x)是qx的经滤波的版本,并且g={59,50,41,32,23,14,5}。

在一个实施例中,在q块内有将qx与边界分开的三个其它样本(q0、q1和q2)(即,qx=q3);refq等于(q2+qx+1)>>1,并且refmiddle等于(p3+p2+p1+p0+q0+q1+q2+q3+4)>>3。

在一个实施例中,在refp和refmiddle之间执行线性内插包括计算计算p′(x)=(f(x)*refmiddle+(64-f(x))*refp+32)>>6,其中x是0到4,p′(x)是px的经滤波的版本,并且f={58,45,32,19,6}。

在一个实施例中,在refq和refmiddle之间执行线性内插包括计算q′(x)=(g(x)*refmiddle+(64-g(x))*refq+32)>>6,其中x是0到2,q′(x)是q(x)的经滤波的版本,并且g={53,32,11}。

在一个实施例中,refp等于:(p5+p4+1)>>1。

在一个实施例中,p块在q块的上方或左侧,或者p块在q块的下方或右侧。

在一个实施例中,p块沿与边界正交的方向具有32个样本的大小,并且p块使用预测子块。

在一个实施例中,q块沿与边界正交的方向具有小于32个样本的大小。

在一个实施例中,q块沿与边界正交的方向具有等于或大于32个样本的大小,并且q块不使用子块。

在一个实施例中,p块沿与边界正交的方向具有32个样本的大小,并且边界是水平编码树单元(ctu)边界。

在一个实施例中,该过程还包括:对于从0到4的x,确定p″(x)=clip3(p′(x)+tcpx,p′(x)-tcpx,p′(x)),其中tcpx是限幅阈值,并且

在一个实施例中,限幅阈值tcpx是量化参数(qp)相关的限幅阈值。

在一个实施例中,该过程还包括:对于从0到2的x,确定q″(x)=clip3(q′(x)+tcqx,q′(x)-tcqx,q′(x)),其中tcqx是限幅阈值,并且

在一个实施例中,限幅阈值tcqx是量化参数(qp)相关的限幅阈值。

在另一个方面中,存在一种包括指令的计算机程序,所述指令在由处理电路执行时使所述处理电路执行本文中公开的方法中的任何方法。在一个实施例中,存在一种含有该计算机程序的载体,其中载体是电子信号、光信号、无线电信号和计算机可读存储介质之一。

在另一个方面中,存在一种用于对样本的p块和样本的q块之间的边界进行去块的设备。该设备包括处理电路和存储器。存储器含有由所述处理电路可执行的指令,由此所述设备可操作以:至少基于p5确定值refp,其中p5是p块内的样本,并且在p块内有将p5与边界分开的五个其它样本(p0、p1、p2、p3和p4);至少基于qx确定值refq,其中qx是p块内的样本,并且要么i)在q块内有将qx与边界分开的三个其它样本(q0、q1和q2);要么ii)在q块内有将qx与边界分开的七个其它样本(q0、q1、q2、q3、q4、q5和q6);至少基于p0和q0确定值refmiddle,其中p0直接与边界相邻,并且q0直接与边界相邻;在refp和refmiddle之间执行线性内插;以及在refq和refmiddle之间执行线性内插。

附图说明

并入本文中并形成本说明书的一部分的附图示出了各种实施例。

图1示出竖直块边界和竖直子块边界的示例。

图2a示出竖直块边界和竖直子块边界的另一个示例。

图2b示出两个块之间的水平边界。

图3a示出在竖直块边界的一侧上的第一组样本和在竖直块边界的另一侧上的对应的第二组样本。

图3b示出示例行缓冲器。

图4示出包括编码器和解码器的系统。

图5示出示例编码器。

图6示出示例解码器。

图7是示出根据实施例的过程的流程图。

图8是示出根据实施例的过程的流程图。

图9是示出根据实施例的过程的流程图。

图10是示出根据实施例的过程的流程图。

图11是示出根据实施例的过程的流程图。

图12是示出根据实施例的过程的流程图。

图13是根据一个实施例的设备的框图。

具体实施方式

图4示出根据示例实施例的系统400。系统400包括经由网络110(例如,因特网或其它网络)与解码器404通信的编码器402。在编码器402和解码器404两者中都可执行去块。

图5是根据实施例的用于对视频序列的视频帧中的像素块(blockofpixel)进行编码的编码器402的示意性框图。通过由运动估计器50从已经在同一帧或前一帧中提供的像素块执行运动估计来预测当前像素块。在帧间预测的情况下,运动估计的结果是与参考块相关联的运动或位移向量。由运动补偿器50将运动向量用于输出像素块的帧间预测。帧内预测器49计算当前像素块的帧内预测。来自运动估计器/补偿器50和帧内预测器49的输出输入到选择器51中,选择器51为当前像素块选择帧内预测或帧间预测。来自选择器51的输出输入到采用加法器41形式的误差计算器,加法器41还接收当前像素块的像素值。加法器41计算并输出残差作为像素块和它的预测之间的像素值的差。在变换器42中诸如通过离散余弦变换来变换误差并且通过量化器43进行量化,后面是在编码器44中诸如通过熵编码器(entropydecoder)对其进行编码。在帧间编码中,还将估计的运动向量带入到编码器44,以便生成当前像素块的编码表示。还将当前像素块的经变换的和量化的残差提供给逆量化器45和逆变换器46,以便检索原始残差。由加法器47将该误差添加到从运动补偿器50或帧内预测器49输出的块预测,以创建可在下一像素块的预测和编码中使用的参考像素块。根据所述实施例,首先由去块滤波器单元100处理该新的参考块,以便执行去块滤波以对抗任何成块伪影(blockingartifact)。然后,将经过处理的新的参考块临时存储在帧缓冲器48中,其中它可供帧内预测器49和运动估计器/补偿器50使用。

图6是根据一些实施例的解码器402的对应的示意性框图。解码器60包括用于解码像素块的编码表示以得到一组经过量化和变换的残差的解码器61,如熵解码器。在逆量化器62中对这些残差进行去量化(dequantize),并由逆变换器63对其进行逆变换,以得到一组残差。在加法器64中将这些残差添加到参考像素块的像素值中。取决于是执行帧间预测还是帧内预测,由运动估计器/补偿器67或帧内预测器66确定参考块。由此,选择器68互连到加法器64和运动估计器/补偿器67以及帧内预测器66。根据实施例,将从加法器64输出的所得解码像素块输入到去块滤波器单元100,以便对任何成块伪影进行去块滤波。从解码器60输出像素的经滤波的块,并且此外优选将它临时提供给帧缓冲器65,并且可将它用作要解码的后续像素块的像素参考块。由此,帧缓冲器65连接到运动估计器/补偿器67,以使存储的像素块可供运动估计器/补偿器67使用。优选地,还将来自加法器64的输出输入到帧内预测器66,以用作未经滤波的参考像素块。

在编码器和解码器两者处都执行去块。本公开描述了其中p块在边界上方并且q块在边界下方的水平边界的去块,但是这同样适用于其中p侧是边界的左侧并且q侧是边界的右侧的竖直边界。这里主要针对8x8网格去块的情形描述了去块,但是类似的设计可用于4x4网格去块。

在ce11.1.6/ce11.1.7中的去块决策之上描述了去块,但是那些仅仅是示例,并且本文中公开的实施例也可与用于去块的其它决策结合使用。

示例1(滤波器5+7)

考虑maxlengthp=5是要在p侧上修改的每个列的样本的最大数量,并且maxlengthq=7是要在q侧上修改的每个列的样本的最大数量。还假设,p侧上的一列样本含有以下样本:p5p4p3p2p1p0;并且p侧上的一列样本含有以下样本:q0q1q2q3q4q5q6q7,其中样本p5至p0在块p中,并且样本q0至q7在块q中,其中p0最接近于块q,并且q0最接近于块p。

然后,可将去块滤波器定义为:

然后,可对经滤波的版本进行限幅,以使其沿水平方向不会进一步远离滤波之前的值超过与qp相关的阈值tc有关的值。

在备选实施例中,将refmiddle定义为:refmiddle=(p4+p3+2*(p2+p1+p0+q0)+q1+q2+q3+q4+q5+q6+8)>>4。

示例2(滤波器5+3)

考虑maxlengthp=5是要在p侧上修改的每个列的样本的最大数量,并且maxlengthq=3是要在q侧上修改的每个列的样本的最大数量。还假设,p侧上的一列样本含有以下样本:p5p4p3p2p1p0;并且p侧上的一列样本含有以下样本:q0q1q2q3,其中样本p5至p0在块p中,并且样本q0至q3在块q中,其中p0最接近于块q,并且q0最接近于块p。然后,可将去块滤波器定义为:

然后,可对经滤波的版本进行限幅,以使其沿水平方向不会进一步远离滤波之前的值超过与qp相关的阈值tc有关的值。

在备选实施例中,将refmiddle定义为:refmiddle=(q0+q1+2*(p2+p1+p0+q0+q1+q2)+p3+p4+8)>>4。

示例3

可使用示例1中的滤波器来将行缓冲器的数量减少为6个以用于至少与ctu边界对齐的水平边界。下面在ce11.1.7之上定义利用示例1的示例,以将ctu行缓冲器的数量减少为6个:

其中p侧和q侧两者均大于或等于32的水平ctu边界的非对称滤波。

在一个实施例中,在对于块qq侧的大小已经将滤波器长度限制为3的情况下,一种备选方案然后是使用示例2中的滤波器。

在另一个实施例中,在对于块qq侧的大小已经将滤波器长度限制为3的情况下,另一种备选方案是在这种情况下不使用长滤波器。

示例4

使用示例1中的滤波器来将在两个大型cu之间的边界或两个大型tu(例如,隐式tu)之间的边界的一例上要修改的样本数限制为5,其中在至少一侧上使用子块运动补偿。

ce11.1.6之上的示例实施例:

当一侧使用子块运动补偿时,将长滤波器限制为该侧上修改最多5个样本。该限制可能会生成非对称滤波的两种新情况;在一侧上修改5个样本,并在另一侧上修改7个样本;以及还有在一侧上修改5个样本,并在另一侧上修改3个样本。

在ce11.1.6之上的备选示例实施例:

当一侧使用子块运动补偿时,将长滤波器限制为在这一侧上修改最多5个样本。在限制导致在一侧上3个样本并且在另一侧上5个样本的情况的情况下,不使用长滤波器。

示例5

在该实施例中,对于其中将即将修改的样本数限制为5(maxlengthp==5或maxlengthq==5)的一侧的决定也被限制,使得它最多使用比修改的样本进一步远离块边界的再一个样本。

在ce11.1.6或ce11.1.7之上的这种情况的示例实施例,其中对于其中将即将修改的样本数限制为5的一侧的决定也被限制(ce11.1.6/ce11.1.7中的亮度的去块控制中的条件3):

示例6

在该实施例中,如果至少一侧等于或大于32,并且另一侧等于或大于16,则定义要使用长滤波器。如果一侧等于或大于32,则将要滤波的样本数限制为7;否则,如果一侧等于或大于16,则将要滤波的样本数限制为5,否则,不使用长滤波器滤波。

在ce11.1.6之上的这种情况的示例实施例,用在一侧上5个样本以及在另一侧上7个样本的滤波来替换如同ce11.1.6中的在一侧上3个样本以及在另一侧上7个样本的滤波的非对称滤波。同时,包括对边界两侧的大小的限制。

亮度的长去块滤波器

当位于边界的任一侧上的样本属于大块时,该提议使用双线性滤波器。如当对于竖直边,宽度>=32时以及当对于水平边,高度>=32时,定义属于大块的样本,并且相邻块需要等于或大于16。下面列出双线性滤波器。

通过线性内插如下替换块边界样本pi和qi(i=0到s-1):

pi′=(fi*middles,t+(64-fi)*ps+32)>>6),限幅到pi±tcpdi

qi′=(gi*middles,t+(64-gi)*qs+32)>>6),限幅到qi±tcpdi,

其中tcpdi项是位置相关的限幅,并且下面给定fi、middles,t、ps和qs:

亮度的去块控制

本小节中描述去块决策过程。只有在condition1、condition2和condition3全都为真的情况下才使用长亮度滤波器。

condition1是“大块条件”。该条件检测p-侧和q-侧上的样本是否属于大块,它们分别用变量bsidepislargeblk和bsideqislargeblk表示。bsidepislargeblk和bsideqislargeblk如下定义:

基于bsidepislargeblk和bsideqislargeblk,如下定义条件1a:condition1a=(bsidepislargeblk||bsidepislargeblk)?true:false。

接着,如果condition.1a为真,则还将检查bsidepisnearlargeblk和bsideqisnearlargeblk。如下定义bsidepisnearlarge.blk和bsideqisnearlargeblk:

condition1=conditionla&&((!bsidepislargeblk&&bsidepisnearlargeblk)||(!bsideqislargeblk&&bsideqisnearlargeblk))?true:false。

接着,如果condition1为真,则将进一步检查condition2。首先,推导以下变量:

然后,如下定义条件2:condition2=(d<β)?true:false。

最后,如果condition1和condition2两者都有效,则提议的去块方法将检查condition3(大块强滤波器条件),其如下定义。在condition3strongfiltercondition中,推导以下变量:

如同在hev中那样推导,strongfiltercondition=(dpq小于(β>>2),sp3+sq3小于(β>>3),以及abs(p0-q0)小于(5*tc+1)>>1)?true:false。

如果条件3为真,则每一侧上要修改的样本数被推导为:

示例7

示例7类似于示例6,但是其中对于与ctu边界对齐的水平边界,将在p侧上要修改的样本数限制为5。ce11.1.7之上的示例实施例也如同示例5中那样对决策进行相同的限制。

示例8

示例8类似于示例6,但是具有额外的限制,以将在两个大型cu之间的边界或两个大型tu(例如,隐式tu)之间的边界的一侧上要修改的样本数限制为5,其中在至少一侧上使用子块运动补偿。

对于cu边界或隐式tu边界,如果在块p中使用子块运动补偿,则将maxlengthp设置为5,否则将它设置为7;并且如果在块q中使用子块运动补偿,则将maxlengthq设置为5,否则将它设置为7。如果两侧都使用子块,则这要求一个附加滤波器来覆盖这种情况。

对于maxlengthp=5并且maxlengthq=5的情况的附加滤波器:

在该实施例中,对示例6中的条件3进行了修改,使得:

图7是示出根据实施例的用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的去块过程700的流程图。过程700可在步骤s702中开始。

步骤s702包括确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度。如果第一个条件不为真,则过程700继续进行至步骤s704,否则过程继续进行至步骤s706。

步骤s704包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1;以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。尽管样本的最大数量可多达qh/2-1(例如,当qh=32时为15)和ph/2-1(例如,当ph=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

步骤s706包括确定第二个条件是否为真,其中如果ph等于16并且qh大于或等于32,则第二个条件为真。如果第二个条件为真,则过程转到步骤s708,否则过程转到步骤s710。

步骤s708包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5;以及ii)通过去块修改的q侧上的每列的样本的最大数量为qh/2-1。尽管样本的最大数量可多达qh/2-1(例如,当qh=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

步骤s710包括确定第三个条件是否为真,其中如果qh等于16并且ph大于或等于32,则第三个条件为真。如果第三个条件为真,则过程转到步骤s712,否则过程转到步骤s704。

步骤s712包括在以下限制下对水平块边界进行去块:i)通过去块修改的q侧上的每列的样本的最大数量为5;以及ii)通过去块修改的p侧上的每列的样本的最大数量为ph/2-1。尽管样本的最大数量可多达ph/2-1(例如,当ph=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

图8是示出根据实施例的用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的去块过程800的流程图。过程800可在步骤s802中开始。

步骤s802包括确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度。如果第一个条件不为真,则过程800继续进行至s804,否则过程继续进行至步骤s806。

步骤s804包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmaxl等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1;以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。尽管样本的最大数量qmax1可多达qh/2-1(例如,当qh=32时为15)并且pmax可多达达ph/2-1(例如,当ph=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

步骤s806包括确定第二个条件是否为真,其中如果水平块边界与编码树单元(ctu)边界对齐,并且ph大于或等于32,则第二个条件为真。如果第二个条件为真,则过程转到步骤s808,否则过程转到步骤s804。

步骤s808包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5;以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。尽管样本的最大数量qmax1可多达qh/2-1(例如,当qh=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

图9是示出根据实施例的用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的去块过程900的流程图。过程900可在步骤s902中开始。

步骤s902包括确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度。如果第一个条件不为真,则过程900继续进行至步骤s904,否则过程继续进行至步骤s906。

步骤s904包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1;以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。尽管样本的最大数量qmax1可多达qh/2-1(例如,当qh=32时为15)并且pmax可多达ph/2-1(例如,当ph=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

步骤s906包括确定第二个条件是否为真,其中如果块p对nxn网格上的子块进行去块,并且块q不具有子块,并且ph大于或等于32,则第二个条件为真。如果第二个条件为真,则过程转到步骤s908,否则过程转到步骤s910。

步骤s908包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为m;以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。其中当n等于4时,m等于1;并且当n为8时,m等于5。尽管样本的最大数量qmax1可多达qh/2-1(例如,当qh=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

步骤s910包括确定第三个条件是否为真,其中如果块q对nxn网格上的子块进行去块,并且块p不具有子块,并且qh大于或等于32,则第三个条件为真。如果第三个条件为真,则过程转到步骤s912,否则过程转到步骤s904。

步骤s912包括在以下限制下对水平块边界进行去块:i)通过去块修改的q侧上的每列的样本的最大数量为m;以及ii)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1。其中,当n等于4时,m等于1;并且当n是8时,m等于5。尽管样本的最大数量pmax可多达ph/2-1(例如,当ph=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

图10是示出根据实施例的用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的去块过程1000的流程图。过程1000可在步骤s1002中开始。

步骤s1002包括确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度。如果第一个条件不为真,则过程1000继续进行至步骤s1004,否则过程继续进行至步骤s1006。

步骤s1004包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1;以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。尽管样本的最大数量qmax1可多达qh/2-1(例如,当qh=32时为15)并且pmax可多达ph/2-1(例如,当ph=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

步骤s1006包括确定第二个条件是否为真,其中如果块p对8x8网格上的子块进行去块,并且块q不具有子块,并且ph大于或等于32,则第二个条件为真。如果第二个条件为真,则过程转到步骤s1008,否则过程转到步骤s1010。

步骤s1008包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5;以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。尽管样本的最大数量qmax1可多达qh/2-1(例如,当qh=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

步骤s1010包括确定第三个条件是否为真,其中如果块q对8x8网格上的子块进行去块,并且块p不具有子块,并且qh大于或等于32,则第三个条件为真。如果第三个条件为真,则过程转到步骤s1012,否则过程转到步骤s1004。

步骤s1012包括在以下限制下对水平块边界进行去决:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1;以及ii)通过去块修改的q侧上的每列的样本的最大数量为5。尽管样本的最大数量pmax可多达ph/2-1(例如,当ph=32时为15),但是在一些实施例中也只修改7个样本,因为在许多情况下,修改7个样本是足够的。

图11是示出根据实施例的用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的去块过程1100的流程图。过程1100可在步骤s1102中开始。

步骤s1102包括确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度。如果第一个条件不为真,则过程1100继续进行至步骤s1104,否则过程继续进行至步骤s1106。

步骤s1104包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为3;以及ii)通过去块修改的q侧上的每列的样本的最大数量也为3。在一些实施例中,如果qh等于16,则通过去块修改的q侧上的每列的样本的最大数量为5,并且如果ph等于16,则通过去块修改的p侧上的每列的样本的最大数量为5。

步骤s1106包括确定第二个条件是否为真,其中如果ph大于或等于32并且qh小于32,则第二个条件为真。如果第二个条件为真,则过程转到步骤s1107,否则过程转到步骤s1110。

步骤s1107包括确定第三个条件是否为真,其中如果块p对8x8网格上的子块进行去块,并且块q不具有子块,则第三个条件为真。如果第三个条件为真,则过程转到步骤s1108,否则过程转到步骤s1109。

步骤s1108包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5;以及ii)通过去块修改的q侧上的每列的样本的最大数量为3。例如,在步骤s1208中,可使用如图14中所示的非对称滤波器。在一些实施例中,如果qh等于16,则通过去块修改的q侧上的每列的样本的最大数量为5。

步骤s1109包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为7;以及ii)通过去块修改的q侧上的每列的样本的最大数量为3。在一些实施例中,如果qh等于16,则通过去块修改的q侧上的每列的样本的最大数量为5。

步骤s1110包括确定第四个条件是否为真,其中如果qh大于或等于32并且ph小于32,则第四个条件为真。如果第四个条件为真,则过程转到步骤s1112,否则过程转到步骤s1114。

步骤s1112包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为3;以及ii)通过去块修改的q侧上的每列的样本的最大数量为7。在一些实施例中,如果ph等于16,则通过去块修改的p侧上的每列的样本的最大数量为5。

步骤s1114包括确定第五个条件是否为真,其中如果块q对8x8网格上的子块进行去块,并且块p不具有子块,则第五个条件为真。如果第五个条件为真,则过程转到步骤s1116,否则过程转到步骤s1118。

步骤s1116包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5;以及ii)通过去块修改的q侧上的每列的样本的最大数量为7。例如,在步骤s1216中,可使用如图13中所示的非对称滤波器。

步骤s1118包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为7;以及ii)通过去块修改的q侧上的每列的样本的最大数量为7。

图12是示出根据实施例的用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的去块过程1200的流程图。过程1200可在步骤s1202中开始。

步骤s1202包括确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度。如果第一个条件不为真,则过程1200继续进行至步骤s1204,否则过程继续进行至步骤s1206。

步骤s1204包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为3;以及ii)通过去块修改的q侧上的每列的样本的最大数量也为3。在一些实施例中,如果qh等于16,则通过去块修改的q侧上的每列的样本的最大数量为5,并且如果ph等于16,则通过去块修改的p侧上的每列的样本的最大数量为5。

步骤s1206包括确定第二个条件是否为真,其中如果ph大于或等于32并且qh小于32,则第二个条件为真。如果第二个条件为真,则过程转到步骤s1207,否则过程转到步骤s1210。

步骤s1207包括确定第三个条件是否为真,其中如果水平块边界与ctu边界对齐,则第三个条件为真。如果第三个条件为真,则过程转到步骤s1208,否则过程转到步骤s1209。

步骤s1208包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5;以及ii)通过去块修改的q侧上的每列的样本的最大数量为3。例如,在步骤s1208中,可使用如图14中所示的非对称滤波器。在一些实施例中,如果qh等于16,则通过去块修改的q侧上的每列的样本的最大数量为5。

步骤s1209包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为7;以及ii)通过去块修改的q侧上的每列的样本的最大数量为3。在一些实施例中,如果qh等于16,则通过去块修改的q侧上的每列的样本的最大数量为5。

步骤s1210包括确定第四个条件是否为真,其中如果qh大于或等于32并且ph小于32,则第四个条件为真。如果第四个条件为真,则过程转到步骤s1212,否则过程转到步骤s1214。

步骤s1212包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为3;以及ii)通过去块修改的q侧上的每列的样本的最大数量为7。在一些实施例中,如果ph等于16,则通过去块修改的p侧上的每列的样本的最大数量为5。

步骤s1214包括确定第五个条件是否为真,其中如果水平块边界与ctu边界对齐,则第五个条件为真。如果第五个条件为真,则过程转到步骤s1216,否则过程转到步骤s1218。

步骤s1216包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5;以及ii)通过去块修改的q侧上的每列的样本的最大数量为7。例如,在步骤s1216中,可使用如图13中所示的非对称滤波器。

步骤s1218包括在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为7;以及ii)通过去块修改的q侧上的每列的样本的最大数量为7。

图13是示出根据示例1的用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块使得去块滤波器在p侧上修改5个样本并在q侧上修改7个样本的非对称去块过程1300的流程图。图13还示出来自p块的一列样本(即,样本p0、p1、p2、p3、p4和p5)和来自q块的一对应列样本(即,样本q0、q1、q2、q3、q4、q5、q6和q7)。水平边界是p0和q0之间的边界。过程1300可在步骤s1304中开始。

步骤s1304包括至少基于p5确定refp。例如,在一个实施例中,确定refp包括计算refp=(p5+p4+1)>>1。

步骤s1306包括至少基于q7确定refq。例如,在一个实施例中,确定refq包括计算refq=(q6+q7+1)>>1。

步骤s1308包括至少基于p0和q0确定refmiddle。例如,在一个实施例中,refmiddle=(p5+p4+p3+p2+2*(p1+p0+q0+q1)+q2+q3+q4+q5+8)>>4。在一些备选实施例中,refmiddle=(p4+p3+2*(p2+p1+p0+q0)+q1+q2+q3+q4+q5+q6+8)>>4。

步骤s1310包括在refp和refmiddle之间执行线性内插。例如,在一个实施例中,执行线性内插包括计算p′(x)=(f(x)*refmiddle+(64-f(x))*refp+32)>>6,其中x是0到4,p′(x)是px的经滤波的版本,并且f={58,45,32,19,6},其中f(0)=58,f(1)=45等。

步骤s1312包括在refq和refmidd1e之间执行线性内插。例如,在一个实施例中,执行线性内插包括计算q′(x)=(g(x)*refmiddle+(64-g(x))*refq+32)>>6,其中x是0到6,q′(x)是qx的经滤波的版本,并且g={59,50,41,32,23,14,5},其中g(0)=59,g(1)=50等。

图14是示出根据示例2的用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块使得去块滤波器在p侧上修改5个样本并在q侧上修改3个样本的非对称去块过程1400的流程图。图14还示出来自p块的一列样本(即,样本p0、p1、p2、p3、p4和p5)和来自q块的一对应列样本(即,样本q0、q1、q2、q3、q4、q5、q6和q7)。水平边界是p0和q0之间的边界。过程1400可在步骤s1404中开始。

步骤s1404包括至少基于p5确定refp。例如,在一个实施例中,确定refp包括计算refp=(p5+p4+1)>>1。

步骤s1406包括至少基于q3确定refq。例如,在一个实施例中,确定refq包括计算refq=(q2+q3+1)>>1。

步骤s1408包括至少基于p0和q0确定refmiddle。例如,在一个实施例中,确定refmiddle包括计算refmiddle=(p3+p2+p1+p0+q0+q1+q2+q3+4)>>3。在一些备选实施例中,refmiddle=(q0+q1+2*(p2+p1+p0+q0+q1+q2)+p3+p4+8)>>4。

步骤s1410包括在refp和refmiddle之间执行线性内插。例如,在一个实施例中,执行线性内插包括计算p’(x)=(f(x)*refmiddle+(64-f(x))*refp+32)>>6,其中x是0到4,p′(x)是px的经滤波的版本,并且f={58,45,32,19,6},其中f(0)=58,f(1)=45等。

步骤s1412包括在refq和refmiddle之间执行线性内插。例如,在一个实施例中,执行线性内插包括计算q′(x)=(g(x)*refmiddle+(64-g(x))*refq+32)>>6,其中x是0到2,q′(x)是qx的经滤波的版本,并且g={53,32,11},其中g(0)=53,g(1)=32等。

图15是根据一些实施例的用于实现编码器402或解码器404的设备1501的框图。即,设备1501可配置成执行本文中公开的方法。在其中设备1501实现视频编码器102的实施例中,设备1501可称为“编码设备1501”,并且在其中设备1501实现视频解码器104的实施例中,设备1501可称为“解码设备1501”。如图15中所示,网络设备1501可包括:处理电路(pc)1502,它可包括一个或多个处理器(p)1555(例如,一个或多个通用微处理器和/或一个或多个其它处理器,如专用集成电路(asic)、现场可编程门阵列(fpga)等),这些处理器可共同位于单个外壳(housing)或单个数据中心中,或者可在地理上分布;网络接口1548,它包括用于使得设备1501能够向其它网络节点传送数据和从其接收数据的传送器(tx)1545和接收器(rx)1547,所述其它网络节点连接到与网络节点1548连接的网络150(例如,因特网协议(ip)网络);以及本地存储单元(又名“数据存储系统”)1508,它可包括一个或多个非易失性存储装置和/或一个或多个易失性存储装置。在其中pc1502包括可编程处理器的实施例中,可提供计算机程序产品(cpp)1541。cpp1541包括存储计算机程序(cp)1543的计算机可读介质(crm)1542,cp1543包括计算机可读指令(cri)1544。crm1542可以是非暂时性计算机可读介质,诸如磁介质(例如,硬盘)、光介质、存储器装置(例如,随机存取存储器、闪速存储器)等。在一些实施例中,计算机程序1543的cri1544配置成使得当由pc1502执行时,cri使设备1501执行本文中描述的步骤(例如,本文中参考流程图描述的步骤)。在其它实施例中,设备1501可配置成在无需代码的情况下执行本文中描述的步骤。即,例如,pc1502可仅仅由一个或多个asic组成。因此,本文中描述的实施例的特征可用硬件和/或软件实现。

各种实施例的汇总

a1.一种用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的方法(700),该方法包括:确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度;如果第一个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmaxl,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1;如果第一个条件为真,则确定第二个条件是否为真,其中如果ph等于16并且qh大于或等于32,则第二个条件为真;如果第二个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qh/2-1;如果第二个条件不为真,则确定第三个条件是否为真,其中如果qh等于16并且ph大于或等于32,则第三个条件为真;如果第三个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的q侧上的每列的样本的最大数量为5,以及ii)通过去块修改的p侧上的每列的样本的最大数量为ph/2-1;以及如果第三个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。

b1.一种用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的方法(800),该方法包括:确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度;如果第一个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1;如果第一个条件为真,则确定第二个条件是否为真,其中如果水平块边界与编码树单元(ctu)边界对齐,并且ph大于或等于32,则第二个条件为真;如果第二个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1;以及如果第二个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmaxl,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。

c1.一种用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的方法(900),该方法包括:确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度;如果第一个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1;如果第一个条件为真,则确定第二个条件是否为真,其中如果块p对nxn网格上的子块进行去块,并且块q不具有子块,并且ph大于或等于32,则第二个条件为真;如果第二个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为m,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1,其中当n等于4时,m等于1,并且当n为8时,m等于5;如果第二个条件不为真,则确定第三个条件是否为真,其中如果块q对nxn网格上的子块进行去块,并且块p不具有子块,并且qh大于或等于32,则第三个条件为真;如果第三个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的q侧上的每列的样本的最大数量为m,以及ii)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,其中当n等于4时,m等于1,并且当n为8时,m等于5;以及如果第三个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。

d1.一种用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的方法(10oo),该方法包括:确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32,则第一个条件为真,其中ph是块p的高度,并且qh是块q的高度;如果第一个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1;如果第一个条件为真,则确定第二个条件是否为真,其中如果块p对8x8网格上的子块进行去块,并且块q不具有子块,并且ph大于或等于32,则第二个条件为真;如果第二个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1;如果第二个条件不为真,则确定第三个条件是否为真,其中如果块q对8x8网格上的子块进行去块,并且块p不具有子块,并且qh大于或等于32,则第三个条件为真;如果第三个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,以及ii)通过去块修改的q侧上的每列的样本的最大数量为5;以及如果第三个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为pmax1,其中对于8x8网格上的去块,pmax1等于max(3,ph/2-1),并且对于4x4网格上的去块,pmax1等于ph/2-1,以及ii)通过去块修改的q侧上的每列的样本的最大数量为qmax1,其中对于8x8网格上的去块,qmax1等于max(3,qh/2-1),并且对于4x4网格上的去块,qmax1等于qh/2-1。

e1.一种用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的方法(1100),该方法包括:确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32(其中ph是块p的高度,并且qh是块q的高度),则第一个条件为真;如果第一个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为3,以及ii)通过去块修改的q侧上的每列的样本的最大数量也为3;如果第一个条件为真,则确定第二个条件是否为真,其中如果ph大于或等于32并且qh小于32,则第二个条件为真;如果第二个条件为真,则确定第三个条件是否为真,其中如果块p对8x8网格上的子块进行去块,并且块q不具有子块,则第三个条件为真;如果第二个条件不为真,则确定确定第四个条件是否为真,其中如果qh大于或等于32并且ph小于32,则第四个条件为真;如果第三个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5,以及ii)通过去块修改的q侧上的每列的样本的最大数量为3,例如,在步骤s1208中,可使用如图14所示的非对称滤波器;如果第三个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为7,以及ii)通过去块修改的q侧上的每列的样本的最大数量为3;如果第四个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为3,以及ii)通过去块修改的q侧上的每列的样本的最大数量为7;如果第四个条件不为真,则确定第五个条件是否为真,其中如果块q对8x8网格上的子块进行去块,并且块p不具有子块,则第五个条件为真;如果第五个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5,以及ii)通过去块修改的q侧上的每列的样本的最大数量为7,例如,在步骤s1216中,可使用如图13所示的非对称滤波器;以及如果第五个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为7,以及ii)通过去块修改的q侧上的每列的样本的最大数量为7。

f1.一种用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块的方法(1200),该方法包括:确定第一个条件是否为真,其中如果ph大于或等于32或qh大于或等于32(其中ph是块p的高度,并且qh是块q的高度),则第一个条件为真;如果第一个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为3,以及ii)通过去块修改的q侧上的每列的样本的最大数量也为3;如果第一个条件为真,则确定第二个条件是否为真,其中如果ph大于或等于32并且qh小于32,则第二个条件为真;如果第二个条件为真,则确定第三个条件是否为真,其中如果水平块边界与ctu边界对齐,则第三个条件为真;如果第二个条件不为真,则确定第四个条件是否为真,其中如果qh大于或等于32并且ph小于32,则第四个条件为真;如果第三个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5,以及ii)通过去块修改的q侧上的每列的样本的最大数量为3,例如,在步骤s1208中,可使用如图14所示的非对称滤波器;如果第三个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为7,以及ii)通过去块修改的q侧上的每列的样本的最大数量为3;如果第四个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为3,以及ii)通过去块修改的q侧上的每列的样本的最大数量为7;如果第四个条件不为真,则确定第五个条件是否为真,其中如果水平块边界与ctu边界对齐,则第五个条件为真;如果第五个条件为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为5,以及ii)通过去块修改的q侧上的每列的样本的最大数量为7,例如,在步骤s1216中,可使用如图13所示的非对称滤波器;以及如果第五个条件不为真,则在以下限制下对水平块边界进行去块:i)通过去块修改的p侧上的每列的样本的最大数量为7,以及ii)通过去块修改的q侧上的每列的样本的最大数量为7。

g1.一种用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块使得在p侧上修改5个样本并在q侧上修改7个样本的非对称去块方法(1300),该方法包括:至少基于p5确定refp(例如,refp=(p5+p4+1)>>1),其中p5是来自p块的一列样本中的第六个样本;至少基于q7确定refq(例如,refq=(q6+q7+1)>>1),其中q7是来自q块的一列样本中的第八个样本;至少基于p0和q0确定refmiddle(例如,refmiddle=(p5+p4+p3+p2+2*(p1+p0+q0+q1)+q2+q3+q4+q5+8)>>4),其中p0是来自p块的一列样本中的第一个样本,并且q0是来自q块的一列样本中的第一个样本;在refp和refmiddle之间执行线性内插;以及在refq和refmiddle之间执行线性内插。

g2.实施例g1的方法,其中在refp和refmiddle之间执行线性内插包括计算p′(x)=(f(x)*refmiddle+(64-f(x))*refp+32)>>6,其中x是0到4,p′(x)是px的经滤波的版本,并且f={58,45,32,19,6}。

g3.实施例g1或g2的方法,其中在refq和refmiddle之间执行线性内插包括计算q′(x)=(g(x)*refmiddle+(64-g(x))*refq+32)>>6,其中x是0到6,q′(x)是qx的经滤波的版本,并且g={59,50,41,32,23,14,5}。

h1.一种用于对样本的第一块(表示为块“p”)和样本的第二块(表示为块“q”)之间的水平边界进行去块使得在p侧上修改5个样本并在q侧上修改3个样本的非对称去块方法(1400),该方法包括:至少基于p5确定refp(例如,refp=(p5+p4+1)>>1);至少基于q3确定refq(例如,refq=(q2+q3+1)>>1);至少基于p0和q0确定refmiddle(例如,refmiddle=(p3+p2+p2+p0+q0+q1+q2+q3+4)>>3);在refp和refmiddle之间执行线性内插;以及在refq和refmiddle之间执行线性内插。

h2.实施例h1的方法,其中在refp和refmiddle之间执行线性内插包括计算p’(x)=(f(x)*refmiddle(64-f(x))*refp+32)>>6,其中x是0到4,p′(x)是px的经滤波的版本,并且f={58,45,32,19,6}。

h3.实施例h1或h2的方法,其中在refq和refmiddle之间执行线性内插包括计算q′(x)=(g(x)*refmiddle+(64-g(x))*refq+32)>>6,其中x是0到2,q′(x)是qx的经滤波的版本,并且g={53,32,11}。

j.一种用于对样本的p块和样本的q块之间的边界进行去块使得修改p块内的样本和q块内的样本的非对称去块方法(1300、1400)。该方法包括至少基于p5确定(1304、1404)值refp,其中p5是p块内的样本,并且在p块内有将p5与边界分开的五个其它样本(p0、p1、p2、p3和p4)。该方法还包括基于至少qx确定(1306、1406)值refq,其中qx是q块内的样本,并且要么i)在q块内有将qx与边界分开的三个其它样本(q0、q1和q2);要么ii)在q块内有将qx与边界分开的七个其它样本(q0、q1、q2、q3、q4、q5和q6)。该方法还包括至少基于p0和q0确定(1308、1408)值refmiddle,其中p0直接与边界相邻,并且q0直接与边界相邻。该方法还包括在refp和refmiddle之间执行(1310、1410)线性内插。并且,该方法还包括在refq和refmiddle之间执行(1312、1412)线性内插。

在一个实施例中,边界是竖直边界,样本p0至p5在与竖直边界正交的行中对齐,并且样本q0至q3或样本q0至q6在该行中对齐。

在一个实施例中,边界是水平边界,样本p0至p5在与水平边界正交的列中对齐,并且样本q0至q3或样本q0至q6在该列中对齐。

在一个实施例中,在q块内有七个其它样本(q0、q1、q2、q3、q4、q5和q6)将qx与边界分开(即,qx=q7);refq等于(q6+qx+1)>>1,并且refmiddle等于(p5+p4+p3+p2+2*(p1+p0+q0+q1)+q2+q3+q4+q5+8)>>4)。

在一个实施例中,在refp和refmiddle之间执行线性内插包括计算p′(x)=(f(x)*refmiddle+(64-f(x))*refp+32)>>6,其中x是0到4,p′(x)是px的经滤波的版本,并且f={58,45,32,19,6}。

在一个实施例中,在refq和refmiddle之间执行线性内插包括计算q′(x)=(g(x)*refmiddle+(64-g(x))*refq+32)>>6,其中x是0到6,q′(x)是qx的经滤波的版本,并且g={59,50,41,32,23,14,5}。

在一个实施例中,在q块内有三个其它样本(q0、q1和q2)将qx与边界分开(即,qx=q3);refq等于(q2+qx+1)>>1,并且refmiddle等于(p3+p2+p1+p0+q0+q1+q2+q3+4)>>3。

在一个实施例中,在refp和refmiddle之间执行线性内插包括计算p′(x)=(f(x)*refmiddle+(64-f(x))*refp+32)>>6,其中x是0到4,p′(x)是px的经滤波的版本,并且f={58,45,32,19,6}。

在一个实施例中,在refq和refmiddle之间执行线性内插包括计算q′(x)=(g(x)*refmiddle+(64-g(x))*refq+32)>>6,其中x是0到2,q′(x)是q(x)的经滤波的版本,并且g={53,32,11}。

在一个实施例中,refp等于:(p5+p4+1)>>1。

在一个实施例中,p块在q块的上方或左侧,或者p块在q块的下方或右侧。

在一个实施例中,p块沿与边界正交的方向具有32个样本的大小,并且p块使用预测子块。

在一个实施例中,q块沿与边界正交的方向具有小于32个样本的大小。

在一个实施例中,q块沿与边界正交的方向具有等于或大于32个样本的大小,并且q块不使用子块。

在一个实施例中,p块沿与边界正交的方向具有32个样本的大小,并且边界是水平编码树单元(ctu)边界。

在一个实施例中,该过程还包括:对于从0到4的x,确定p″(x)=clip3(p′(x)+tcpx,p′(x)-tcpx,p′(x)),其中tcpx是限幅阈值,并且

在一个实施例中,限幅阈值tcpx是量化参数(qp)相关的限幅阈值。

在一个实施例中,该过程还包括:对于从0到2的x,确定q″(x)=clip3(q′(x)+tcqx,q′(x)-tcqx,q′(x)),其中tcqx是限幅阈值,并且

在一个实施例中,限幅阈值tcqx是量化参数(qp)相关的限幅阈值。

尽管本文中描述了各种实施例,但是应理解,已经只是作为举例而非限制呈现了它们。因此,本公开的广度和范围不应受上述示例性实施例中的任何实施例限制。此外,除非本文中另外指示或者以其它方式与上下文明显地矛盾,否则本公开涵盖其所有可能的变化中的上述要素的任何组合。

另外,尽管上文描述并在附图中示出的过程被示为一系列步骤,但是这样做仅仅是为了说明。因此设想,可添加一些步骤,可省略一些步骤,可重新排列步骤的顺序,并且可并行执行一些步骤。

参考文献:

[1]jvet-l1001,“versatilevideocoding(draft3),”2018年10月,可在phenix.it-sudparis.eu/jvet/doc_end_user/documents/12_macao/wg1.1/jvet-l1001-v13.zip得到

[2]jvet-l1031,“descriptionofcoreexperiment11(ce11):deblocking,”2018年10月,可在phenix.it-sudparis.eu/jvet/doc_end_user/documents/12_macao/wg11/jvet-l1031-v3.zip得到

[3]jvet-l0072,“ce11:longdeblockingfiltersforluma(ce11.1.1)andforbothlumaandchroma(ce11.1.9)”,2018年10月,可在phenix.it-sudparis.eu/jvet/doc_end_user/documents/12_macao/wg11/jvet-l0072-v1.zip得到。

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