减少环路滤波缓冲器的方法及装置与流程

文档序号:26361089发布日期:2021-08-20 20:37阅读:99来源:国知局
减少环路滤波缓冲器的方法及装置与流程
【相关申请的交叉引用】本发明要求以下申请的优先权:在2018年10月23日提出的申请号为62/749,145的美国临时专利申请、在2018年10月23日提出的申请号为62/750,282的美国临时专利申请、在2018年11月16日提出的申请号为62/768,200的美国临时专利申请。上述美国临时专利申请整体以引用方式并入本文中。【
技术领域
】本发明涉及视频编码系统中的滤波处理。特别地,本发明涉及与视频编码器或解码器中的图块(tile)或切片边界上的环路滤波器处理有关的方法和装置。
背景技术
:运动估计是一种有效的帧间编解码技术,以利用视频序列中的时间冗余。运动补偿的帧间编解码已在各种国际视频编解码标准中广泛使用。各种编解码标准中采用的运动估计通常是基于块的技术,其中,针对每个宏块或类似块配置确定运动信息,例如编解码模式和运动矢量。另外,还自适应地应用帧内编解码,其中在不参考任何其他图片的情况下处理图片。帧间预测残差或帧内预测残差通常通过变换、量化和熵编解码进一步处理以生成压缩视频比特流。在编码过程中,特别是在量化过程中,会引入编解码伪像。为了减轻编解码伪像,在较新的编解码系统中已将附加处理应用于重建的视频,以提高图片质量。通常以环路操作来配置附加处理,以便编码器和解码器可以导出相同的参考图片以实现改进的系统性能。图1a示出了结合有环路处理的示例性自适应帧间/帧内视频编解码系统。对于帧间预测,运动估计(me)/运动补偿(mc)112用于基于来自其他图片的视频数据提供预测数据。开关114选择帧内预测110或帧间预测数据,并且所选择的预测数据被提供给加法器116以形成预测误差,也称为残差。预测误差随后由变换(t)118,然后由量化(q)120处理。然后,经变换和量化的残差由熵编码器122编解码,以形成与压缩视频数据相对应的视频比特流。然后,将与变换系数相关联的比特流与诸如运动、模式之类的辅助信息(sideinformation)以及与图片区域相关联的其他信息打包在一起。辅助信息也可以经过熵编解码以减少所需的带宽。因此,如图1a所示,与辅助信息相关的数据被提供给熵编码器122。当使用帧间预测模式时,也必须在编码器端重建参考图片。因此,通过逆量化(iq)124和逆变换(it)126处理经变换和量化的残差以恢复残差。然后在重建(rec)128处将残差加回到预测数据136以重建视频数据。重建的视频数据可以存储在参考图片缓冲器134中,并用于其他帧的预测。如图1a所示,输入视频数据在编码系统中经历了一系列处理。由于一系列处理,来自rec128的重建视频数据可能遭受各种损害。因此,在将重建视频数据存储在参考图片缓冲器134中之前,对重建视频数据进行各种环路处理,以提高视频质量。在正在开发的高效视频编解码(hevc)标准中,已经开发了去块滤波器(df)130、样本自适应偏移(sao)131和自适应环路滤波器(alf)132以增强图片质量。环路滤波器信息可能必须合并到比特流中,以便解码器可以正确恢复所需的信息。因此,来自sao和alf的环路滤波器信息被提供给熵编解码器122以合并到比特流中。在图1a中,首先将df130应用于重建的视频;然后将sao131应用于df处理的视频;alf132应用于sao处理的视频。但是,可以重新安排df、sao和alf之间的处理顺序。在图1b中示出了用于图1a的编码器的相应解码器。视频比特流由视频解码器142解码以恢复经变换和量化的残差、sao/alf信息和其他系统信息。在解码器侧,仅执行运动补偿(mc)113,而不执行me/mc。解码过程类似于编码器端的重建循环。被恢复的经变换和量化的残差、sao/alf信息以及其他系统信息用于重建视频数据。df130、sao131和alf132对重建的视频进行进一步处理,以生成最终的增强解码视频。hevc中的编解码过程是根据最大编解码单元(lcu)来应用的。使用四叉树将lcu自适应地划分为编解码单元。在每个叶子cu中,对每个8x8块执行df,在hevc测试模型版本4.0(hm-4.0)中,df适用于8x8块边界。对于每个8x8块,首先应用跨垂直块边界的水平滤波,然后应用跨水平块边界的垂直滤波。在亮度块边界的处理期间,滤波器参数推导涉及每一侧的四个像素,并且在滤波之后每侧最多可以改变三个像素。对于跨越垂直块边界的水平滤波,未滤波的重建像素(即,预df像素(pre-dfpixel))用于滤波参数推导,并且还用作滤波的源像素。对于跨水平块边界的垂直滤波,未滤波的重建像素(即,预df像素)用于滤波参数推导,而df中间像素(dfintermediatepixel)(即,水平滤波后的像素)用于滤波。对于色度块边界的df处理,滤波器参数推导涉及每一侧的两个像素,并且在滤波之后每侧最多改变一个像素。对于跨越垂直块边界的水平滤波,未滤波的重建像素用于滤波参数推导,并用作滤波的源像素。对于跨越水平块边界的垂直滤波,将经df处理的中间像素(即,水平滤波之后的像素)用于滤波参数推导,并且还用作滤波的源像素。在hm-4.0中也采用了样本自适应偏移(sao)131,如图1a所示。sao可以视为滤波的一种特殊情况,其中该处理仅适用于一个像素。在sao中,首先要进行像素分类,以将像素分为不同的组(也称为类别或类)。每个像素的像素分类基于3x3窗口。在对图片或区域中的所有像素进行分类后,将为每个像素组导出一个偏移量并进行传输。hevc(高效视频编解码)未采用alf。但是,正在考虑将alf用于新兴的视频编解码标准,命名为vvc(通用视频编解码)。通过最小化滤波样本和原始样本之间的失真之和,可以得出alf的滤波系数。此外,使用开/关控制标志在比特流中发信得出的滤波器系数。可以在一个切片中使用多个滤波器,并且滤波器选择包括基于块的分类的隐式选择和发信的语法的显式选择。在hm-4.0中,将df应用于8x8块边界,以减少在块边界处的伪影的可见性。图2示出了块210中的垂直边界212和块220中的水平边界222,其中部分地示出了8×8块(4×8或8×4)。在一幅图片中,所有垂直边界都可以并行地水平滤波,然后所有水平边界都可以并行地垂直滤波。在亮度边界的处理过程中,滤波器参数推导涉及到每侧的四个像素(p0-p3,q0-q3),并且在滤波后每侧最多可以改变三个像素(p0-p2,q0-q2)。对于亮度水平df,使用df之前的像素(即水平df之前的像素)来导出滤波器参数和滤波。对于亮度垂直df,预df像素用于导出滤波器参数,而h-df像素(即水平df之后的像素)用于滤波。在色度边界的处理期间,滤波器参数推导涉及每侧的两个像素(p0-p1,q0-q1),并且在滤波后每侧的最多一个像素(p0,q0)发生变化。对于色度水平df,预df像素用于导出滤波器参数和滤波。对于色度垂直df,h-df像素用于导出滤波器参数和滤波。在hm-4.0中,sao被应用于亮度和色度分量,并且每个亮度分量被独立地处理。sao可以将一张图片划分为多个lcu对齐区域,并且每个区域可以从两种频带偏移(bandoffset,简写为bo)类型,四种边缘偏移(edgeoffset,简写为eo)类型和无处理(off)中选择一种sao类型。对于每个要处理(也称为要滤波)的像素,bo使用像素强度将像素分类为一个带。如图3所示,将像素强度范围平均分为32个频带。在像素分类之后,为每个频带的所有像素得出一个偏移量,然后选择中心16个频带或外部16个频带的偏移量并进行编解码。至于eo,它使用待处理像素的两个相邻(neighbor)像素将像素分类。四种eo类型分别对应于0°、90°、135°和45°,如图4所示。类似于bo,对于类别0以外的每个类别的所有像素推导出一个偏移量,其中类别0被强制为使用零偏移。表1示出了eo像素分类,其中“c”表示要分类的像素。表1.分类条件1c<两个相邻2c<一个相邻&&c==一个相3c>一个相邻&&c==一个相邻4c>两个相邻0以上都不是在hm-4.0中,alf具有两个滤波形状选项,用于亮度和色度的cross11x5(510)和nowflake5x5(520),如图5所示。在每张图片中,亮度分量可以选择一种形状,而色度分量可以选择一种形状。每张图片最多可应用16个亮度滤波器和最多1个色度滤波器。为了允许alf局部化(localization),亮度像素有两种模式可以选择滤波器。一种是基于区域的自适应(region-basedadaptation,简写为ra)模式,另一种是基于块的自适应(block-basedadaptation,简写为ba)模式。ra模式将一张亮度图片分为16个区域。一旦知道图片大小,就确定并固定了16个区域。区域可以合并,合并后的每个区域都使用一个滤波器。ba模式将边缘活动和方向用作每个4x4块的属性。如图6a所示,计算4×4块(610)的属性需要5×5像素(612)。计算完4x4块的属性后,将它们分为15类。类别可以合并,合并后每个类别将使用一个滤波器。至于色度分量,因为它们是相对平坦的,所以不使用局部适应(localadaptation),并且图片的两个分量共享一个滤波器。在正在开发的新兴vvc(通用视频编解码)标准中,已经公开了更灵活的alf以改善性能。对于基于块的分类,将一张图片划分为几个4x4亮度块,并为每个4x4亮度块导出一组索引。该组索引用于从滤波器集合中选择亮度滤波器。为了减少滤波器系数所需的数据,可以基于一个4x4块的特征来旋转滤波器系数,以便不需要传输某些系数。在vvc中,一个亮度滤波器集合的alf最多可使用25个组,这与基于梯度大小的5个活动级别和基于梯度方向的5个方向相关。不同的组可以共享一个滤波器,其中多个组可以合并为一个合并的组,而一个合并的组则具有一个滤波器。为了确定组索引,计算每个4x4块的梯度(gradient)。梯度包括对应于gradh:水平梯度,gradv:垂直梯度,grad45:diagonal45梯度和grad135:diagonal135梯度的四种类型。水平、垂直、对角线45°和对角线135°的梯度在相应方向上使用三个连续的像素,其中心权重等于-2,两个侧权重等于1。在评估块620的选定位置评估块分类,如图6b中所示,其中以灰色显示的目标4x4块622位于评估块的中心。8x8评估块由在4x4块的每个方向上扩展的2个像素组成。使用32个位置(即所选位置)上的梯度来计算一个4x4块的梯度总和,其中所选位置由带有梯度位置(例如di,j)的小方框表示。每种类型总共累积了32个梯度,由于计算每个梯度在每个方向上需要一个额外的像素,因此需要访问10×10个样本才能得出梯度。如图6b所示,所选位置对应于2:1水平子采样位置,偶数行和奇数行之间有一个像素的偏移为了确定组指数,进一步计算以下两个比率:ratiohv=max(gradh,gradv)/min(gradh,gradv),ratiodia=max(grad135,grad45)/min(grad135,grad45)方向指数(direction)如下确定:if(ratiohv<2&&ratiodia<2)direction=0elseif(ratiohv>ratiodia)direction=(ratiohv>4.5)?2:1elsedirection=(ratiodia>4.5)?4:3通过将(gradh+gradv)的总和量化为5个级别(活动(activity))来确定5个活动级别。组索引是根据(5xdirection+activity)计算得出的。图6c中示出了用于亮度的7x7菱形滤波器和用于色度分量的5x5菱形滤波器的示例,其中,系数是沿对角线630的半对称。在图6b中,系数0-6用于5x5菱形滤波器,系数0-12用于7x7菱形滤波器。系数以8比特表示,其中1比特为正负号(sign),而7比特为小数部分。如果需要,非中心系数(non-centercoefficient)被发信,并且在[-128,127]范围内具有一个限幅阈值(clippingthreshold)。中心系数设置为等于1。vtm4.0中alf的线缓冲器(linebuffer)要求如图6d所示。滤波器占用面积(footprint)是用于亮度的7x7菱形滤波器和用于色度的5x5菱形滤波器。亮度滤波过程总共需要6条线。色度滤波器处理总共需要4条线。在图6e中示出了vtm4.0中alf的基于线缓冲器需求4x4块的分类。对4x4块执行分类。一个4x4块需要一个10×10的窗口,该窗口包含在7x7菱形滤波器中。如果alf的不可用区域与4x4网格对齐,则仅需要7条线。为了减少线缓冲器的使用,在hevc标准开发期间提出了虚拟边界。这个概念是当alf应用于虚拟边界一侧的像素时,则不能使用另一侧的像素,如图6f所示。当基于lcu的处理用于df、sao和alf时,整个解码过程可以以lcu流水线方式并行处理多个lcu,在光栅扫描中逐lcu完成。在这种情况下,df、sao和alf需要线缓冲器,因为处理一个lcu行需要来自上述lcu行(row)的像素。如果使用片外线缓冲器(例如dram),则外部记忆体带宽和功耗将增加;如果使用了片上线缓冲器(例如sram),则将增加芯片面积。因此,尽管线缓冲器已经比图片缓冲器小得多,但是仍然希望减少线缓冲器。图7解释了基于lcu解码的df、sao和alf所需的亮度线缓冲器的数量。给定当前的lcu(下方的h.lcu边界710和左侧的v.lcu边界712),首先通过水平df,然后通过垂直df处理线a-j。接下来,建议将线k-n的水平df延迟到下方(lower)lcu可用,以避免线k-n的垂直df的h-df像素的线缓冲器,由于下方lcu尚不可用,因此目前无法处理,并且df在水平边界的每一侧需要四个pre-df像素和四个h-df像素,以分别导出滤波器参数和滤波,如4像素条纹(720)所示。因此,df必须存储四行(k-n)的pre-df像素。接下来,将在df输出像素上应用sao。由于线k-n的垂直df不会改变线k,因此可以在线k上将水平df附加用于sao以处理线j,如3x3正方形(730)所示。请注意,线k的h-df像素将不会存储在线缓冲器中,而在下方lcu出现时必须再次生成,这在硬件上不是问题。在sao处理线a-j之后,可以计算4x4块属性,如4x4正方形(740)所示。指示了5x5支撑区域(742)。此时,alf可以处理线a-h。此后,在下方lcu出现之前,无法对当前lcu进行进一步的处理。当下方lcu到来时,首先由df处理线k-p,然后由sao处理线k-p。当sao应用于线k时,需要线j。因此,必须为sao存储df输出像素的一行(j)。接下来,计算线i-p的4×4块属性。最后,alf可以滤波线i-p。当滤波线i时,它需要线g-k,如滤波器形状(750)所示,并指示滤波器中心(752)。但是,计算线i-j的块属性仍需要线f-j。因此,必须为alf存储五行(f-j)sao输出像素。总体而言,整个环路滤波需要10个亮度线缓冲器。当考虑整个解码系统时,由于帧内亮度预测已经存储了预df像素的一行(n),因此可以共享该亮度线缓冲器。此外,如果可以使用滤波器索引线缓冲器来存储针对线g-j的ba模式滤波器选择,则在对线i-j进行滤波期间不必再次计算块属性。这样,可以为alf保存一行(f)sao输出像素。滤波器索引线缓冲器每4x4块仅需要4比特,与像素线缓冲器相比仅约10%。图8解释了基于lcu解码的df、sao和alf所需的色度线缓冲器的数量。给定当前的lcu(h.lcu边界810和v.lcu边界812),首先通过水平df处理线a-m,然后通过垂直df处理线a-l。接下来,建议延迟线n的水平df,直到下方lcu出现为止,以便与帧内色度预测共享线n的预df像素的线缓冲器。至于线m-n的垂直df,它必须等待下方lcu。请回想一下,色度df读取两个h-df像素,并可能在边界的每一侧写入一个像素,如2像素条纹(2-pixelstripe)所示。因此,对于df,必须存储一行(m)的h-df像素和一行(n)的预df像素。接下来,将在df输出像素上应用sao。由于用于线m-n的垂直df将不会改变线m,所以线m的h-df像素也是线m的df输出像素,并且sao可以处理线l,如3×3正方形所示(820)。sao处理线a-l之后,alf可以处理线a-j。此后,在下方lcu出现之前,无法对当前lcu进行进一步的处理。当下方lcu到来时,首先通过水平df处理线n-p,然后通过垂直df和sao处理线m-p。当sao处理线m时,需要线l。因此,必须为sao存储df输出像素的一行(l)。最后,线k-p可以通过alf进行滤波。当线k被滤波时,它需要线i-m,如由具有滤波器中心(822)的滤波器形状(820)所示。因此,必须为alf存储四行(i-l)sao输出像素。总的来说,整个环路滤波需要七个色度线缓冲器。虚拟边界以减少线缓冲器的使用为了消除sao和alf的线缓冲器要求,我们引入了虚拟边界(vb)的概念。如图9a所示,vb在水平lcu边界上向上移动了n个像素。在图9b中,vb在垂直lcu边界上左移了n个像素。对于每个lcu,sao和alf可以在下方lcu出现之前处理vb上方的像素,但是直到下方lcu出现之前,才可以处理vb下方的像素,这是由df引起的。考虑到hm-4.0中的df,建议的vb和水平lcu边界之间的间隔设置为亮度的三个像素(即图9a和图9b中的n=3)和色度的一个像素(即在图9a和图9b中n=1)。对sao和alf进行了修改,以确保vb一侧上的每个要处理的像素都不需要从vb另一侧进行任何数据访问,除非可以在不使用任何其他线缓冲器的情况下及时获得该数据。技术实现要素:公开了一种用于重建视频的环路处理的方法和装置。根据该方法,接收与当前图片相关联的重建像素,其中,将当前图片划分为多个块,以对重建像素进行环路处理。确定当前图片中待处理像素的虚拟边界,其中虚拟边界与块边界对齐,并且虚拟边界第一侧的至少一个待处理像素需要在虚拟边界第二侧的一个或多个第二像素。根据该方法,如果目标待处理像素需要来自虚拟边界的第二侧的至少一个第二像素,则修改环路处理,并且修改后的环路处理消除了对虚拟边界第二侧的任何第二像素的需要。在一个实施例中,多个块对应于4x4块。在一实施例中,多个块对应于最小单位,其中所有样本共享相同的环路处理。在一个实施例中,环路处理对应于sao(样本自适应偏移)处理或alf(自适应环路滤波器)处理。在一实施例中,重建的像素对应于亮度像素。对于当前图片的色度重建像素,允许色度虚拟边界穿过色度块。在一个实施例中,如果要处理的目标像素需要来自虚拟边界的第二侧的任何第二像素,则使用填充产生来自虚拟边界的第二侧的上述第二像素。在另一个实施例中,如果要处理的目标像素需要来自虚拟边界的第二侧的任何第二像素,则使用对称填充来填充来自虚拟边界的第二侧的该第二像素。根据另一实施例,修改的环路处理使用具有减小的占用面积的修改的滤波器来消除对虚拟边界的第二侧上的任何第二像素的需要。修改的环路处理可以在编码器侧以及解码器侧应用于重建的像素。根据另一种方法,为属于待处理像素的目标块确定覆盖目标块的扩展块。基于扩展块为目标块导出块分类,其中如果导出块分类所需的扩展块的任何目标像素在虚拟边界的第二侧,则修改与块分类相关联的至少一个操作。然后,如果所述导出块分类所需的扩展块的任何目标像素在虚拟边界的第二侧,则使用块分类将自适应环路滤波器处理应用于目标块,其中与块分类相关联的至少一个操作被修改。在一个实施例中,为目标块确定评估块,其中目标块位于评估块的中心,并且将周围像素添加到评估块以形成扩展块。例如,目标块对应于4x4块,评估块对应于8x8块,扩展块对应于10×10块。在另一实施例中,目标块对应于最小单位,其中所有采样共享相同的自适应环路滤波器处理。在一个实施例中,基于评估块的所选位置处的梯度来导出块分类。在一个实施例中,如果用于评估块的目标所选位置的目标梯度要求虚拟边界第二侧上扩展块的任何目标像素,则将目标梯度从用于块分类的梯度总和中排除或设置为零。在这种情况下,梯度的总和通过评估块所选位置处可用梯度的总数进行归一化。替代地,根据在评估块的所选位置处的可用梯度的总数对梯度的总和加权。在一个实施例中,如果用于评估块的目标所选位置的目标梯度要求在虚拟边界的第二侧上扩展块的任何目标像素,则用于评估块的目标所选位置的目标梯度被修改为排除虚拟边界的第二侧上的扩展块的所述任何目标像素。在一个实施例中,评估块的所选位置对应于在偶数线和奇数线之间具有一个像素偏移的2:1水平子采样位置。【附图说明】图1a示出了结合了df、sao和alf环路处理的示例性自适应帧间/帧内视频编码系统。图1b示出了结合了df、sao和alf环路处理的示例性自适应帧间/帧内视频解码系统。图2示出了应用于8x8块边界以减小在块边界处的伪影的可见性的解块滤波处理的示例,其中示出了垂直边界和水平边界。图3示出了频带偏移(bo)的示例,其中像素强度范围被平均分为32个频带,并且为每个频带确定偏移值。图4示出了对应于hevc(高效视频编解码)标准中用于确定当前像素的类别以应用sao(样本自适应偏移)的0°、90°、135°和45°的边缘偏移(eo)窗口。图5示出了自适应环路滤波器(alf)的示例,其中alf具有两个滤波器形状选项,分别对应于亮度和色度的cross11x5和snowflake5x5。图6a示出了用于自适应环路滤波器(alf)的块自适应(ba)的示例,其中ba模式使用边缘活动性和方向作为每个4x4块的属性。图6b示出了通过评估评估块的选定位置处的梯度来对目标块进行块分类的示例,其中以灰色显示的目标4x4块位于评估块的中心。图6c示出了用于亮度分量的7x7菱形滤波器和用于色度分量的5x5菱形滤波器的示例,其中系数在对角线上为半对称。图6d示出了vtm4.0中alf的线缓冲器要求的示例,其中滤波器占用面积是用于亮度的7x7菱形滤波器和用于色度的5x5菱形滤波器。图6e图示了vtm4.0中用于alf的基于线缓冲器要求4x4块的分类的示例,其中对4x4块执行了分类。图6f图示了这样的概念的示例:当将alf应用于虚拟边界一侧的像素时,则另一侧的像素将无法使用。图7示出了利用基于lcu的解码进行df、sao和alf所需的亮度线缓冲器数量的示例。图8示出了利用基于lcu的解码进行df、sao和alf所需的色度线缓冲器数量的示例。图9a示出了通过将水平lcu边界向上移动n个像素而得到的vb的示例。图9b示出了通过将垂直lcu边界左移n个像素而得到的vb的示例。图10示出了针对vb上方的像素的示例vb处理,其中当前lcu的所有像素均已通过rec处理,并且四行(p0-p3)预df像素存储在df线缓冲器中。图11示出了针对vb上方的像素的示例vb处理,其中vb上方的像素由水平df处理。图12示出了针对vb上方的像素的示例vb处理,其中vb上方的像素由垂直df处理。图13示出了针对vb上方的像素的示例vb处理,其中vb上方的像素将由sao处理。图14示出了针对vb上方的像素的示例vb处理,其中vb上方的所有像素均已通过sao处理。图15示出了针对vb上方的像素的示例vb处理,其中由于线p0-p2的sao输出像素尚不可用,因此直接将线p4-p7的块属性重新用于线p3。图16示出了针对vb上方的像素的示例vb处理,其中snowflake5x5被选择用于alf,snowflake5x5的最后一行(线p2)的sao输出像素(用于滤波线p4)和snowflake5x5的最后两行(线p1-p2)的sao输出像素(用于滤波线p3)尚不可用,并被预df像素替换。图17示出了针对vb上方的像素的示例vb处理,其中为alf选择了cross9x9,cross9x9的最后一行(线p2)的sao输出像素(用于滤波线p6)和cross9x9的最后两行(线p1-p2)的sao输出像素(用于滤波线p5)尚不可用,并被预df像素替换。图18示出了针对vb上方的像素的示例vb处理,其中也为alf选择了cross9x9,cross9x9的最后三行(线p0-p2)的sao输出像素(用于滤波线p4)尚不可用,并被预df像素替换。图19示出了针对vb上方的像素的示例vb处理,其中vb上方的所有像素均已通过alf处理。此时,可以在下方lcu出现之前将vb上方的像素写入已解码的图片缓冲器。第20-29图示出了针对vb下方的像素的提议的亮度vb处理。图20示出了针对vb下方的像素的示例vb处理,其中可以从df线缓冲器读取四行(即p0-p3)预df像素。图21示出了针对vb下方的像素的示例vb处理,其中线p3的像素和vb下方的像素由水平df处理。图22示出了针对vb下方的像素的示例vb处理,其中vb下方的像素由垂直df处理。图23示出了针对vb下方的像素的示例vb处理,其中vb下方的像素将由sao处理。图24示出了针对vb下方的像素的示例vb处理,其中vb下方(以及下一个vb上方)的所有像素均已由sao处理。图25示出了针对vb下方的像素的示例vb处理,其中,将线p3的sao输出像素替换为可用df输出像素。图26示出了针对vb下方的像素的示例vb处理,其中,为了滤波线p2,将snowflake5x5的第二行(即线p3)的sao输出像素替换为df输出像素;snowflake5x5的第一行(即,线p4)的sao输出像素被线p3的最近的df输出像素代替。图27示出了针对低于vb的像素的示例vb处理,其中为alf选择了cross9x9;对于滤波线p2,通过将六个丢弃系数(discardedcoefficient)加到中心像素,将滤波器形状减小为cross9x3;将cross9x3的第一行(即,线p3)的sao输出像素替换为df输出像素。图28示出了针对vb下方的像素的示例vb处理,其中也为alf选择了cross9x9;对于滤波线p0,通过将两个舍弃系数加到中心像素,将滤波器形状减小为cross9x7;将cross9x7的第一行(即,线p3)的sao输出像素替换为df输出像素。图29示出了针对vb下方的像素的示例vb处理,其中vb下方(以及下一个vb上方)的所有像素均已由alf处理。图30-38示出了对于vb上方的像素的色度vb处理。图39-47示出了对于vb下方的像素的色度vb处理。图48示出了根据本发明的实施例的示例性的重建视频的环路处理的流程图。图49示出了根据本发明的实施例的对重建视频的示例性自适应环路滤波器处理的流程图。【具体实施方式】以下描述是实施本发明的最佳构想模式。进行该描述是为了说明本发明的一般原理,而不应被认为是限制性的。本发明的范围最好通过参考所附的权利要求书来确定。亮度vb处理可以分为两部分。第一部分处理vb上方的像素,而第二部分处理vb下方的像素。图10-19示出了针对vb上方的像素的各种提议的亮度vb处理。在图10中,当前lcu的所有像素已经由rec处理,并且四行(p0-p3)预df像素被存储在df线缓冲器中。在图11中,通过水平df处理vb上方的像素。请回想一下,亮度df在8x8块边界的每一侧读取四个像素并最多写入三个像素。在图12中,通过垂直df处理vb上方的像素。在图13中,vb上方的像素将由sao处理。最初,线p3的sao处理可能需要线p2的df输出像素。由于线p2的df输出像素尚不可用,因此将它们替换为线p2的预df像素,以进行线p3的sao处理。在图14中,已经通过sao处理了vb上方的所有像素。在图15-18中,alf将处理vb上方的像素。最初,计算线p3的alf块属性需要线p0-p4的sao输出像素。由于线p0-p2的sao输出像素尚不可用,因此将线p4-p7的块属性直接用于线p3,如图15所示。在滤波期间,最初也可能需要vb下方的sao输出像素。在这些情况下,sao输出像素将替换为预df像素。在图16中,为alf选择了snowflake5x5时,snowflake5x5的最后一行(即线p2)的sao输出像素(用于滤波线p4),snowflake5x5的最后两行(即线p1-p2)的sao输出像素(用于滤波线p3)尚不可用,并被预df像素取代。在图17中,在为alf选择cross9x9的情况下,cross9x9的最后一行(即线p2)的sao输出像素(用于滤波线p6),snowflake5x5的最后两行(即线p1-p2)的sao输出像素(用于滤波线p5)尚不可用,并被预df像素取代。在图18中,其中也为alf选择了cross9x9,cross9x9的最后三行(线p0-p2)的sao输出像素(用于滤波线p4)尚不可用,并被预df像素替换。至于滤波线p3,它最初需要线q0,其属于下方lcu。在这种情况下,将滤波器形状减小为cross9x7,并将原始cross9x9的两个垂直端的系数添加到中心像素。以此方式,不需要改变alf语法,并且可以避免系数的乘法和除法归一化。类似地,用于滤波线p3的cross9x7的最后三行(即,线p0-p2)的sao输出像素尚不可用,并被预df像素代替。在图19中,alf已经处理了vb上方的所有像素。此时,可以在下方lcu出现之前将vb上方的像素写入已解码的图片缓冲器。图20-29示出了针对vb下方的像素的提议亮度vb处理。在图20中,可以从df线缓冲器中读取四行(即,p0-p3)预df像素。在图21中,线p3的像素和vb以下的像素由水平df处理。请注意,计算线p0-p3的水平df决策需要线p0-p7的预df像素。为了节省线p4-p7的线缓冲器,在图11中的线p3-p7的水平df期间,计算这些水平df决策并将其存储在决策线缓冲器中。决策缓冲器每8x8块仅需要一比特,并且可以简单地实现为片上寄存器或sram。在图22中,通过垂直df处理vb下方的像素。请记住,垂直df决策使用预df像素,因此在图21中完成水平df之前,必须先计算水平lcu边界处的垂直df决策。在图23中,vb下方的像素将是由sao处理。最初,线p2的sao处理可能需要线p3的df输出像素。由于线p3的df输出像素已经可用,因此sao输入像素不会更改。在图24中,sao已经处理了vb下方(下一个vb上方)的所有像素。在图25-28中,alf将处理vb下方的像素。最初,计算线p0-p3的alf块属性需要线p0-p4的sao输出像素。但是,线p3-p4的sao输出像素不再可用。因此,如图25所示,将线p3的sao输出像素替换为可用的df输出像素。此外,沿垂直方向重复填充以从线p3的df输出像素生成线p4的像素。在滤波期间,最初也可能需要vb上方的sao输出像素。在这些情况下,将sao输出像素替换为线p3的df输出像素,并可以填充或减小滤波器形状。在图26中,对于alf选择了snowflake5x5,为了滤波线p2,将snowflake5x5的第二行(即线p3)的sao输出像素替换为df输出像素;snowflake5x5的第一行(即,线p4)的sao输出像素被线p3的最近的df输出像素代替。此外,将线p2的滤波输出像素与线p2的sao输出像素进一步平均,以生成线p2的最终alf输出像素。为了滤波线p1,将snowflake5x5的第一行(即线p3)的sao输出像素替换为df输出像素。在图27中,为alf选择cross9x9时,对于滤波线p2,通过将六个舍弃系数与中央像素相加,将滤波器形状减小为cross9x3,cross9x3的第一行(即,线p3)的sao输出像素替换为df输出像素。对于滤波线p1,通过将四个舍弃系数添加到中心像素,将滤波器形状减小为cross9x5,并且将cross9x5的第一行(即,线p3)的sao输出像素替换为df输出像素。在图28中,对于alf也选择了cross9×9,对于滤波线p0,通过将两个舍弃系数加到中心像素,将滤波器形状减小为cross9×7;将cross9x7的第一行(即,线p3)的sao输出像素替换为df输出像素。对于滤波线q0,滤波器形状不变,并且用df输出像素代替cross9x9的第一行(即,线p3)的sao输出像素。以此方式,不需要改变alf语法,并且可以避免系数的乘法和除法归一化。在图29中,alf已经处理了vb以下(和下一个vb以上)的所有像素。此时,可以将vb下方(和下一个vb上方)的像素写入解码后的图片缓冲器。表2总结了亮度vb处理的设计原理。在图11和图21中,可以看到水平df对线p3进行了两次处理。这仅在基于lcu的处理中发生,而不在像hm这样的基于图片的处理中发生。冗余计算对硬件的影响很小,因为已经分配了df硬件,并且df并不是系统的吞吐量瓶颈。可以通过增加一个线缓冲器来存储线p3的h-df像素来避免冗余计算。但是,这绝对不是在硬件上的良好折衷。表2.亮度vb处理建议摘要所提出的色度vb处理具有与所提出的亮度vb处理相同的概念和相似的原理,并在表3中进行了总结。图30-38示出了对于vb上方的像素的色度vb处理,并且图39-47示出了对于vb下方的像素的色度vb处理。请注意,由于色度垂直df不使用任何预df像素,并且线p1的h-df像素已经存储在线缓冲器中,因此对于线p1没有色度水平df的冗余计算。表3.建议的色度vb处理摘要虚拟边界的概念仍然可以在vvc中应用,以减少线缓冲器的使用。在以上描述中,最大编解码单元(lcu)被重命名为vvc中的编解码树单元(ctu)。但是,提出了一些修改以适合当前alf设计的功能。方法1虚拟边界的位置应与最小单位(例如4x4块)的边界对齐。由于一个4×4亮度块中的所有像素共享相同的滤波器系数(即,共享相同的alf处理),所以当虚拟边界与4×4亮度块的边界对齐时,具有虚拟边界的alf的处理变得简单。换句话说,一个4x4亮度块中的所有像素应位于虚拟边界的同一侧。虚拟边界不能将任何4x4亮度块分成两个区域。由于没有色度分量的分类,因此不需要与色度分量的虚拟边界的位置相关的约束。在一个实施例中,所提议的虚拟边界和水平ctu边界之间的空间对于亮度设置为四个像素(即,图9a和图9b中的n=4),对于色度设置为一个像素(即,图9a和图9b中的n=1)。方法2由于使用基于块的分类来实现alf的高编解码增益,因此与其他4x4块相比,虚拟边界以上或虚拟边界以下的4x4块可被视为不同的组。如图7所示,将虚拟边界设置为线j和线k之间的边界。线g-j和线k-n中的4×4块被视为与其他线(诸如线c-f)中的4×4块不同的组。我们可以对线g-j和线k-n中的4x4块应用不同的分类规则。换句话说,用于将4x4块分组为不同类别的分类规则包括4x4块的位置或虚拟边界。在一实施例中,对于普通的4×4块,存在原始的25个类别;与那些在虚拟边界上方的4x4块情况相对应的一个附加(即第26个)类别,以及与那些在虚拟边界以下的4x4块情况相对应的另一个(第27个)类别。在另一个实施例中,对于普通的4x4块有原始的25个类别;虚拟边界上方或下方的那些4x4块被分类为另外的第26类。在另一个实施例中,对于普通的4x4块有原始的25个类别;通过使用相同的分类规则,在虚拟边界上方或下方的那些4x4块又被分为另外25个类别。在一实施例中,alf不应用于虚拟边界上方或下方的这些4×4块。在另一个实施例中,针对虚拟边界上方或下方的这些4×4块禁用alf的决定以序列级别、图片级别、图块级别或切片级别来发信。对于一个4x4块,需要一个10×10窗口来计算块属性。在一个实施例中,虚拟边界另一侧的所需像素在块属性计算过程中不使用。在另一实施例中,当所需像素位于虚拟边界的另一侧时,使用填充技术来生成所需数据,包括活动性、梯度、梯度方向等。方法3虚拟边界的位置是一个4x4亮度块在垂直方向上的中间位置。在一个实施例中,提议的虚拟边界和水平ctu边界之间的间隔被设置为对于亮度为六个像素(即,图9a和图9b中的n=6)和对于色度为一个像素(即,图9a和图9b中n=1)。那些跨越虚拟边界的4×4亮度块(例如,图7中的线g-j中的4×4块)未被alf滤波。方法4虚拟边界的概念进一步扩展为一个保护带(guardband)。对于保护带中的那些像素,将禁用alf。对于保护带上方的待滤波像素或待滤波4x4块,不能使用保护带下方的像素,但可以参考保护带中的像素。对于保护带下方的待滤波像素或待滤波4x4块,不能使用保护带上方的像素,但可以参考保护带中的像素。在一个实施例中,保护带被设置为用于亮度的四个像素(即,图9a和图9b中的n=6),并且高度是4个像素。即,保护带被定义为图7中的线g-j的区域。对于那些在保护带上方的要被滤波的像素或要被滤波的4x4块(即,图7中的线a-f)仅可以使用线j以上(包括线j)的像素。对于保护带下方(即,图7中的线k-p)的那些要被滤波的像素或要被滤波的4×4块,只能使用g行以下(包括g行)的像素。在另一个实施例中,对于在保护带以下的那些要被滤波的像素或要被滤波的4x4块(即,图7中的线k-p),仅可以使用预定行以下(包括预定行)的像素,并且如果所需像素在预定行上方,则可以使用填充技术生成所需像素。例如,预定行可以是线i或线j。方法5当虚拟边界或保护带的概念被应用并且填充技术被用于生成所需像素而不是访问真实像素时,alf的输出值可以是滤波结果和未滤波像素的加权和。当在滤波过程中使用较少的实际像素时(即,在滤波过程中使用较多的填充像素),则减少了滤波结果的权重。在一实施例中,使用方法1中公开的虚拟边界。因此,提议的虚拟边界和水平ctu边界之间的空间对于亮度设置为四个像素(即,图9a和图9b中的n=4),对于色度设置为一个像素(即,图9a和图9b中的n=1)。线g和线n中alf的输出值等于滤波后的结果。线h和线m中alf的输出值等于((滤波后的结果+未滤波的结果)/2)。线i和线l中alf的输出值等于((滤波后的结果+3×未滤波的结果)/4)。线j和线k中alf的输出值等于((滤波后的结果+7×未滤波的结果)/8)。在另一个实施例中,线g和线n中的alf的输出值等于((滤波后的结果+未滤波的结果)/2)。线h和线m中alf的输出值等于(滤波后的结果+3×未滤波的结果)/4。线i和线l中alf的输出值等于(滤波后的结果+7×未滤波的结果)/8。线j和线k中的alf的输出值等于(滤波后的结果+15×未滤波的结果)/16。在另一个实施例中,线g和线n的alf的输出值等于(4×滤波后的结果+0×未滤波的结果)/4。线h和线m中alf的输出值等于(3×滤波后的结果+1×未滤波的结果)/4。线i和线l中alf的值等于((2×滤波后的结果+2×未滤波的结果)/4)。线j和线k中alf的输出值等于((1×滤波后的结果+3×未滤波的结果)/4)。在另一个实施例中,当产生滤波结果和未滤波结果的加权和时考虑舍入偏移(roundingoffset)。在另一实施例中,线g和线n中的alf的输出值等于((7×滤波后的结果+1×未滤波后的结果)/8)。线h和线m中alf的输出值等于((5×滤波后的结果+3×未滤波的结果)/8)。线i和线l中alf的输出值等于((3×滤波后的结果+5×未滤波的结果)/8)。线j和线k中alf的输出值等于((1×滤波后的结果+7×未滤波的结果)/8)。在另一个实施例中,当产生滤波结果和未滤波结果的加权和时考虑舍入偏移。在另一个实施例中,当产生滤波结果和未滤波结果的加权和时考虑舍入偏移。方法6上述方法中的填充技术可以是直接填充、偶数镜像填充、奇数镜像填充、一些预定义值、待滤波像素、待滤波像素行、alf处理之前的一些中间结果,或上述内容的某种组合。在另一实施例中,当所需像素不可用时,填充技术将使用滤波器形状的对称线。例如,使用方法1中提出的虚拟边界。提议的虚拟边界和水平ctu边界之间的空间对于亮度设置为四个像素(即,图9a和图9b中的n=4),对于色度设置为一个像素(即,图9a和图9b中的n=1)。当要滤波的像素位于线k时,由于虚拟边界,无法访问线h-j中的实际像素。我们用l线代替j线,m线代替i线,n线代替k线。当要滤波的像素位于l线时,i和j线的真实像素不能被访问;线n用于替换线j,线o用于替换线i。为了减少alf的线缓冲器的使用,上述方法可以单独使用或组合在一起以实现一个整体解决方案。方法7在一个实施例中,在虚拟边界的另一侧的所需像素在包括分类和滤波操作在内的alf处理中被填充的样本所代替。换句话说,填充技术用于为alf中的所有过程生成所需的样本,而不是访问虚拟边界另一侧的真实像素。例如,在计算梯度时,如果在分类中使用的一个10×10窗口中的某些所需像素在虚拟边界的另一侧,则使用填充技术生成相应的像素。在一个实施例中,当用于分类的一个10×10窗口中的所需像素的一部分在虚拟边界的另一侧时,改变块分类的操作。例如,如果在分类中使用的一个10×10窗口中一部分所需像素位于虚拟边界的另一侧,则将那些位于虚拟边界另一侧的梯度设置为零(即不使用),然后将梯度的总和通过可用梯度的总数归一化。在另一示例中,如果在分类中使用的一个10×10窗口中的一部分所需像素在虚拟边界的另一侧,则更改所需梯度的图案,以避免使用在虚拟边界另一侧的那些像素。可以在编码器和/或解码器中实现任何前述提出的方法。例如,可以在编码器和/或解码器的环路滤波模块中实现任何所提出的方法。可替代地,任何提出的方法可以被实现为耦合到编码器和/或解码器的环路滤波模块的电路。图48示出了根据本发明的实施例的示例性的重建视频的环路处理的流程图。流程图中所示的步骤可被实现为可在编码器侧的一个或多个处理器(例如,一个或多个cpu)上执行的程序代码。流程图中所示的步骤也可以基于硬件来实现,例如被布置为执行流程图中的步骤的一个或多个电子设备或处理器。根据该方法,在步骤4810中接收与当前图片相关联的重建像素,其中,将当前图片划分为多个块,以进行重建像素的所述环路处理。在步骤4820中确定当前图片中待处理像素的虚拟边界,其中该虚拟边界与块边界对齐,并且该虚拟边界的第一侧上的至少一个待处理像素需要该虚拟边界的第二侧上的一个或多个第二像素。在步骤4830中,如果目标待处理像素需要来自虚拟边界的第二侧的至少一个第二像素,则修改所述环路处理,其中,所述修改后的环路处理消除了对虚拟边界的第二侧的任何第二像素的需要。图49示出了根据本发明的实施例的重建视频的示例性自适应环路滤波器处理的流程图。根据另一种方法,在步骤4910中接收与当前图片相关联的重建像素,其中,将当前图片划分为多个块,以用于重建像素的所述自适应环路滤波器处理。在步骤4920中,确定当前图片中待处理像素的虚拟边界,其中,在虚拟边界的第一侧上的至少一个待处理像素需要在所述虚拟边界的第二侧上的一个或多个第二像素。在步骤4930中,为属于待处理像素的目标块确定覆盖目标块的扩展块。在步骤4940中,基于扩展块为目标块导出块分类,其中,如果所述导出块分类所需的扩展块的任何目标像素在虚拟边界的第二侧,则至少一个与像素块分类相关联的操作被修改。在步骤4950中,如果所述导出块分类所需的扩展块的任何目标像素在虚拟边界的第二侧,则使用具有至少一个操作被修改的块分类将所述自适应环路滤波器处理应用于目标块。所示的流程图旨在说明根据本发明的视频编解码的示例。本领域技术人员可以在不脱离本发明的精神的情况下修改每个步骤、重新布置步骤、拆分步骤或组合步骤以实施本发明。在本公开中,已经使用特定的语法和语义来示出用于实现本发明的实施例的示例。本领域技术人员可以通过用等效的语法和语义替换语法和语义来实践本发明,而不脱离本发明的精神。呈现以上描述是为了使本领域技术人员能够实践在特定应用及其要求的上下文中提供的本发明。对所描述的实施例的各种修改对于本领域技术人员将是显而易见的,并且本文中定义的一般原理可以应用于其他实施例。因此,本发明并不旨在限于所示出和描述的特定实施例,而是与和本文所公开的原理和新颖特征相一致的最广范围相一致。在以上详细描述中,示出了各种具体细节以便提供对本发明的透彻理解。然而,本领域技术人员将理解可以实施本发明。如上所述的本发明的实施例可以以各种硬件、软件代码或两者的组合来实现。例如,本发明的实施例可以是集成到视频压缩芯片中的一个或多个电路或集成到视频压缩软件中以执行本文描述的处理的程序代码。本发明的实施例还可以是要在数字信号处理器(dsp)上执行以执行本文描述的处理的程序代码。本发明还可涉及由计算机处理器、数字信号处理器、微处理器或现场可编程门阵列(fpga)执行的许多功能。这些处理器可以被配置为通过执行定义本发明所体现的特定方法的机器可读软件代码或固件代码来执行根据本发明的特定任务。可以以不同的编程语言和不同的格式或样式来开发软件代码或固件代码。也可以为不同的目标平台编译软件代码。然而,不同的代码格式、软件代码的样式和语言以及配置代码以执行根据本发明的任务的其他方式将不脱离本发明的精神和范围。在不脱离本发明的精神或基本特征的情况下,本发明可以以其他特定形式实施。所描述的示例在所有方面仅应被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求书而不是前述描述来指示。落入权利要求书等同含义和范围内的所有改变均应包含在其范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1