CN114128296A - 自适应环路滤波中跨视频单元边界访问样点 - Google Patents

自适应环路滤波中跨视频单元边界访问样点 Download PDF

Info

Publication number
CN114128296A
CN114128296A CN202080051539.3A CN202080051539A CN114128296A CN 114128296 A CN114128296 A CN 114128296A CN 202080051539 A CN202080051539 A CN 202080051539A CN 114128296 A CN114128296 A CN 114128296A
Authority
CN
China
Prior art keywords
samples
boundary
video
picture
boundaries
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080051539.3A
Other languages
English (en)
Inventor
张莉
张凯
刘鸿彬
王悦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ByteDance Network Technology Co Ltd
ByteDance Inc
Original Assignee
Beijing ByteDance Network Technology Co Ltd
ByteDance Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing ByteDance Network Technology Co Ltd, ByteDance Inc filed Critical Beijing ByteDance Network Technology Co Ltd
Priority claimed from PCT/CN2020/102040 external-priority patent/WO2021008546A1/en
Publication of CN114128296A publication Critical patent/CN114128296A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种视频处理方法,包括:在包括包含视频单元的视频图片的视频和所述视频的比特流之间执行转换。在所述比特流中包括第一组语法元素,以指示在适用于所述视频单元的边界的滤波处理中是否可以访问跨越所述视频单元的边界的样点,并且所述第一组语法元素被包括在不同的级别中。

Description

自适应环路滤波中跨视频单元边界访问样点
相关申请的交叉引用
根据适用专利法和/或适用于巴黎公约的规则,本申请及时要求2019年7月15日提交的国际专利申请No.PCT/CN2019/096059的优先权和权益。出于法律的所有目的,通过引用将上述申请的全部公开并入,作为本申请公开的一部分。
技术领域
本专利文件通常针对视频编码和解码技术。
背景技术
视频编解码标准主要是通过众所周知的ITU-T和ISO/IEC标准的发展而发展起来的。ITU-T制作了H.261和H.263,ISO/IEC制作了MPEG-1和MPEG-4视频,并且两个组织联合制作了H.262/MPEG-2视频和H.264/MPEG-4高级视频编解码(AVC)和H.265/高效视频编解码(HEVC)标准。自H.262以来,视频编解码标准基于混合视频编解码结构,其中使用时域预测加变换编解码。为了探索HEVC之外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(JVET)。此后,JVET采用了许多新的方法,并将其应用到名为联合探索模型(JEM)的参考软件中。2018年4月,创建了VCEG(Q6/16)和ISO/IEC JTC1 SC29/WG11(MPEG)之间的JVET,旨在制定下一代多功能视频编解码(VVC)标准,与HEVC相比,VVC的比特率降低50%。
发明内容
利用所公开的视频编码、转码或解码技术,视频编码器或解码器的实施例可以处理编解码树块的虚拟边界,以提供更好的压缩效率和更简单的编码或解码工具的实现。
在一个示例性方面,公开了一种视频处理方法。该方法包括:在包括包含视频单元的视频图片的视频和所述视频的比特流之间执行转换。在所述比特流中包括第一组语法元素,以指示在适用于所述视频单元的边界的滤波处理中是否可以访问跨越所述视频单元的边界的样点,并且所述第一组语法元素被包括在不同的级别中。
在另一示例性方面,公开了一种视频处理方法。该方法包括:在视频图片的视频块和其比特流之间执行转换,其中使用编解码树块的逻辑分组来处理视频块,并且基于底部编解码树块的下边界是否在视频图片的下边界之外来处理编解码树块。
在另一示例性方面,公开了一种视频处理方法。该方法包括:基于当前视频块的编解码树块的条件,确定环路滤波期间的虚拟样点的使用状态;以及根据虚拟样点的使用状态,在视频块和视频块的比特流之间执行转换。
在又一示例性方面,公开了一种视频处理方法。该方法包括:在逻辑上分组为一个或多个视频条带或视频砖块的视频图片与视频图片的比特流之间的转换期间,确定在自适应环路滤波处理中禁用对另一个条带或砖块中的样点的使用;以及根据确定执行转换。
在又一示例性方面,公开了一种视频处理方法。该方法包括:在视频图片的当前视频块和当前视频块的比特流之间的转换期间,确定当前视频块包括位于视频图片的视频单元的边界处的样点;以及基于确定执行转换,其中,执行转换包括:使用对于视频图片中的所有边界类型都相同的统一方法来生成用于环路滤波处理的虚拟样点。
在又一示例性方面,公开了一种视频处理方法。该方法包括:在视频图片的当前视频块与其比特流之间的转换期间,确定在转换期间应用可用于该视频图片的多个自适应环路滤波器(ALF)样点选择方法中的一种;以及通过应用多个ALF样点选择方法中的一种来执行转换。
在又一示例性方面,公开了一种视频处理方法。该方法包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作,其中,边界规则禁止使用跨越视频图片的虚拟管道数据单元(VPDU)的样点;以及使用环路滤波操作的结果执行转换。
在又一示例性方面,公开了一种视频处理方法。该方法包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作;其中,边界规则规定对于跨越视频单元边界的当前视频块的位置,使用未使用填充生成的样点;以及使用环路滤波操作的结果执行转换。
在又一示例性方面,公开了一种视频处理方法。该方法包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作,其中,边界规则规定为环路滤波操作选择滤波器,该滤波器的维度使得在环路滤波期间使用的当前视频块的样点不跨越视频图片的视频单元的边界;以及使用环路滤波操作的结果来执行转换。
在又一示例性方面,公开了一种视频处理方法。该方法包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作,其中,边界规则规定基于环路滤波是否需要填充的样点,来为环路滤波操作选择剪切参数或滤波器系数;以及使用环路滤波操作的结果来执行转换。
在又一示例性方面,公开了一种视频处理方法。该方法包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作,其中,边界规则取决于当前视频块的颜色分量标识;以及使用环路滤波操作的结果执行转换。
在又一示例性方面中,公开了一种被配置为执行上述方法的视频编码器。
在又一示例性方面中,公开了一种被配置为执行上述方法的视频解码器。
在又一示例方面中,公开了一种机器可读介质。所述介质存储代码,所述代码在执行时使处理器实现上述方法中的一个或多个。
在附图、说明书和权利要求中更详细地描述了所公开技术的上述和其他方面和特征。
附图说明
图1示出了具有18×12亮度编解码树单元CTU的图片的示例,该图片被分割为12个片和3个光栅扫描条带。
图2示出了具有18×12亮度编解码树单元CTU的图片的示例,该图片被分割为24个片和9个矩形条带。
图3示出了被分割为4个片、11个砖块和4个矩形条带的图片的示例。
图4A示出了当K=M,L<N时跨越图片边界的编解码树块CTB的示例。
图4B示出了当K<M,L=N时跨越图片边界的编解码树块CTB的示例。
图4C示出了当K<M,L<N时跨越图片边界的编解码树块CTB的示例。
图5示出了编码器框图的示例。
图6是8×8网格上的图片样点和水平和垂直块边界、以及可以并行去方块的8×8样点的非重叠块的图示。
图7示出了涉及滤波器开/关决策和强/弱滤波器选择的像素的示例。
图8示出了四个一维方向图案。
图9示出了几何自适应环路滤波(GALF)滤波器形状的示例(左侧:5×5菱形,中间:7×7菱形,右侧:9×9菱形)。
图10示出了5×5菱形过滤器支持的相对坐标。
图11示出了5×5菱形滤波器支持的相对坐标的示例。
图12A示出了用于子采样拉普拉斯(Laplacian)计算的示例性布置。
图12B示出了用于子采样拉普拉斯计算的另一示例性布置。
图12C示出了用于子采样拉普拉斯计算的另一示例性布置。
图12D示出了用于子采样拉普拉斯计算的另一示例性布置。
图13示出了VTM-4.0中针对亮度分量的环路滤波器行缓冲器要求的示例。
图14示出了VTM-4.0中针对色度分量的环路滤波器行缓冲器要求的示例。
图15A示出了当N=4时在虚拟边界处的ALF块分类的示例。
图15B示出了当N=4时在虚拟边界处的ALF块分类的另一示例。
图16A示出了在虚拟边界处修改的亮度ALF滤波的示例。
图16B示出了在虚拟边界处修改的亮度ALF滤波的另一示例。
图16C示出了在虚拟边界处修改的亮度ALF滤波的又一示例。
图17A示出了在虚拟边界处修改的色度ALF滤波的示例。
图17B示出了在虚拟边界处修改的色度ALF滤波的另一示例。
图18A示出了水平环绕运动补偿的示例。
图18B示出了水平环绕运动补偿的另一示例。
图19示出了修改的自适应环路滤波器的示例。
图20示出了在视频图片中处理CTU的示例。
图21示出了修改的自适应环路滤波器边界的示例。
图22是视频处理装置的示例的框图。
图23是视频处理的示例方法的流程图。
图24示出了3x2布局的HEC的图像的示例。
图25示出了两种边界的样点的填充行的数量的示例。
图26示出了图片中的CTU的处理的示例。
图27示出了图片中的CTU的处理的另一示例。
图28示出了当前样点和需要访问的样点的另一示例。
图29示出了“不可用”的临近样点的填充的另一示例。
图30示出了ALF分类处理中需要使用的样点的示例。
图31是其中可以实现所公开的技术的示例性视频处理系统的框图。
图32是根据本技术的用于视频处理的方法的流程图表示。
具体实施方式
在本文档中使用节标题是为了便于理解,并且不将在一节中公开的实施例仅限于该节。此外,虽然参考多功能视频编解码或其他特定视频编解码器描述了某些实施例,但是所公开的技术也适用于其他视频编解码技术。此外,虽然一些实施例详细描述了视频编解码步骤,但是应当理解,撤销编码的相应解码步骤将由解码器实现。此外,术语“视频处理”包括视频编码或压缩、视频解码或解压缩以及视频转码,其中视频像素从一种压缩格式表示为另一种压缩格式或以不同的压缩比特率表示。
1.概述
本文涉及视频编解码技术。具体地,涉及图片/条带/片/砖块边界和虚拟边界编解码,特别是针对非线性自适应环路滤波器。它可以应用于现有的视频编解码标准,如HEVC,也可以应用于待定的标准(多功能视频编解码)。它也适用于未来的视频编解码标准或视频编解码器。
2.初步讨论
视频编解码标准主要是通过众所周知的ITU-T和ISO/IEC标准的发展而发展起来的。ITU-T制作了H.261和H.263,ISO/IEC制作了MPEG-1和MPEG-4视频,并且两个组织联合制作了H.262/MPEG-2视频和H.264/MPEG-4高级视频编解码(AVC)和H.265/HEVC标准。自H.262以来,视频编解码标准基于混合视频编解码结构,其中使用时域预测加变换编解码。为了探索HEVC之外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(JVET)。此后,JVET采用了许多新的方法,并将其应用到名为JEM的参考软件中。2018年4月,创建了VCEG(Q6/16)和ISO/IEC JTC1 SC29/WG11(MPEG)之间的JVT,旨在制定VVC标准,与HEVC相比,VVC的比特率降低50%。
2.1颜色空间和色度子采样
颜色空间,也称为颜色模型(或颜色系统),是一种抽象的数学模型,它简单地将颜色范围描述为数字元组,通常为3或4个值或颜色分量(例如RGB)。从根本上说,颜色空间是坐标系和子空间的精化。
对于视频压缩,最常用的颜色空间是YCbCr和RGB。
YCbCr、Y’CbCr或Y-Pb/Cb Pr/Cr,也写作YCbCr或Y’CbCr,是一系列颜色空间,用作视频和数字摄影系统中彩色图像管道的一部分。Y’是亮度分量,并且CB和CR是蓝差和红差色度分量。Y’(具有原色)与Y不同(Y是亮度),它意味着光强度是基于伽马(gamma)校正的RGB原色进行非线性编解码的。
色度子采样是利用人类视觉系统对色差的敏感度低于亮度的优势,通过对色度信息实施比亮度信息更低的分辨率来对图像进行编解码的实践。
2.1.1颜色格式4:4:4
三个Y’CbCr分量中的每一个都具有相同的采样率,因此没有色度子采样。这种方案有时用于高端电影扫描仪和电影后期制作。
2.1.2颜色格式4:2:2
两个色度分量以亮度采样率的一半采样:水平色度分辨率减半。这将未压缩视频信号的带宽减少三分之一,而几乎没有视觉差异。
2.1.3颜色格式4:2:0
在4:2:0中,水平采样比4:1:1加倍了,但由于在此方案中,Cb和Cr通道只在每个交替行上采样,因此垂直分辨率减半。因此,数据速率是相同的。Cb和Cr在水平和垂直方向上各以因子2进行子采样。有三种不同的4:2:0方案的变型,其具有不同的水平和垂直位置。
在MPEG-2中,Cb和Cr是水平共位的。Cb和Cr位于垂直方向上的像素之间(间隔定位)。
在JPEG/JFIF、H.261和MPEG-1中,Cb和Cr位于间隔亮度样点之间的中间位置。
在4:2:0DV中,Cb和Cr在水平方向上共位。在垂直方向上,它们在间隔行上共位。
2.2各种视频单元
图片被划分为一个或多个片行和一个或多个片列。片是一系列覆盖图片矩形区域的CTU。
片被划分为一个或多个砖块,每一个砖块都由片内的若干个CTU行组成。
没有被分割为多个砖块的片也被称为砖块。然而,作为片的真正子集的砖块不称为片。
条带包含图片的多个片或片的多个砖块。
支持两种条带模式,即光栅扫描条带模式和矩形条带模式。在光栅扫描条带模式下,条带包含图片的片光栅扫描顺序的一系列片。在矩形条带模式下,条带包含图片的多个砖块,这些砖块共同形成了图片的矩形区域。矩形条带内的砖块按条带的砖块光栅扫描顺序排列。
图1示出了图片的光栅扫描条带分割的示例,其中图片被划分成12块和3个光栅扫描条带。
图2示出了图片的矩形条带分割的示例,其中图片被划分成24个片(6个片列和4个片行)和9个矩形条带。
图3示出了被分割为片、砖块和矩形条带的图片的示例,其中图片被划分成4片(2个片列和2个片行)、11砖块(左上方的片包含1个砖块,右上方的片包含5个砖块,左下方的片包含2个砖块,右下方的片包含3个砖块),和4个矩形条带。
2.2.1 CTU/CTB尺寸
在VVC中,在SPS中由语法元素log2_ctu_size_minus2信令通知的CTU尺寸可以小到4x4。
7.3.2.3序列参数集RBSP语法
Figure BDA0003471585410000081
Figure BDA0003471585410000091
log2_ctu_size_minus2加2指定每个CTU的亮度编解码树块的尺寸。
log2_min_luma_coding_block_size_minus2加2指定最小亮度编解码块尺寸。
变量CtbLog2SizeY、CtbSizeY、MinCbLog2SizeY、MinCbSizeY、MinTbLog2SizeY、MaxTbLog2SizeY、MinTbSizeY、MaxTbSizeY、PicWidthInCtbsY、PicHeightInCtbsY、PicSizeInCtbsY、PicWidthInMinCbsY、PicHeightInMinCbsY、PicSizeInMinCbsY、PicSizeInSamplesY、PicWidthInSamplesC和PicHeightInSamplesC导出如下:
CtbLog2SizeY=log2_ctu_size_minus2+2 (7-9)
CtbSizeY=1<<CtbLog2SizeY (7-10)
MinCbLog2SizeY=log2_min_luma_coding_block_size_minus2+2 (7-11)
MinCbSizeY=1<<MinCbLog2SizeY (7-12)
MinTbLog2SizeY=2 (7-13)
MaxTbLog2SizeY=6 (7-14)
MinTbSizeY=1<<MinTbLog2SizeY (7-15)
MaxTbSizeY=1<<MaxTbLog2SizeY (7-16)
PicWidthInCtbsY=Ceil(pic_width_in_luma_samples÷CtbSizeY) (7-17)
PicHeightInCtbsY=Ceil(pic_height_in_luma_samples÷CtbSizeY) (7-18)
PicSizeInCtbsY=PicWidthInCtbsY*PicHeightInCtbsY (7-19)
PicWidthInMinCbsY=pic_width_in_luma_samples/MinCbSizeY (7-20)
PicHeightInMinCbsY=pic_height_in_luma_samples/MinCbSizeY (7-21)
PicSizeInMinCbsY=PicWidthInMinCbsY*PicHeightInMinCbsY (7-22)
PicSizeInSamplesY=pic_width_in_luma_samples*pic_height_in_luma_samples (7-23)
PicWidthInSamplesC=pic_width_in_luma_samples/SubWidthC (7-24)
PicHeightInSamplesC=pic_height_in_luma_samples/SubHeightC (7-25)
2.2.2图片中的CTU
假设由MxN指示CTB/LCU尺寸(通常M等于N,如HEVC/VVC中所定义的),并且对于位于图片(或片、或条带、或其他种类的类型,以图片边界为例)边界处的CTB,KxL样点在图片边界内,其中K<M或L<N。对于图4A-4C中所示的那些CTB,CTB尺寸仍然等于MxN,然而,CTB的下边界/右侧边界在图片之外。
图4A示出了跨越底部图片边界的CTB。图4B示出了跨越右侧图片边界的CTB。图4C示出了跨越右下图片边界的CTB。
图4A-4C示出了跨越图片边界的CTB的示例,(a)K=M,L<N;(b)K<M,L=N;(c)K<M,L<N。
2.3典型视频编解码器的编码流程
图5示出了VVC的编码器框图的示例,其包含三个环路滤波块:去方块滤波器(DF)、样点自适应偏移(SAO)和ALF。与使用预定义滤波器的DF不同,SAO和ALF利用当前图片的原始样点,分别通过添加偏移量和应用有限脉冲响应(FIR)滤波器来减少原始样点和重构样点之间的均方误差,其中编码的边信息信令通知偏移量和滤波器系数。ALF位于每个图片的最后一个处理阶段,并且可以看作是试图捕捉并修复前一阶段产生的伪影的工具。
2.4去方块滤波器(DB)
DB的输入是环路滤波器前的重构样点。
首先滤波图片中的垂直边缘。然后,使用通过垂直边缘滤波处理修改的样点作为输入来滤波图片中的水平边缘。每个CTU的CTB中的垂直边缘和水平边缘均以编解码单元为基础进行处理。从编解码块左侧的边缘开始按其几何顺序穿过边缘、朝向编解码块的右侧对编解码单元中的编解码块的垂直边缘进行滤波。从编解码块顶部的边缘开始按其几何顺序穿过边缘、朝编解码块的底部对编解码单元中的编解码块的水平边缘进行滤波。
图6是8×8网格上的图片样点和水平和垂直块边界、以及可以并行去方块的8×8样点的非重叠块的图示。
2.4.1边界决策
滤波被应用于8x8块边界。另外,它必须是变换块边界或编解码子块边界(例如,由于使用仿射运动预测、ATMVP)。对于那些没有这种边界的,将禁用滤波器。
2.4.1边界强度计算
对于变换块边界/编解码子块边界,如果其位于8x8网格中,则可以对其进行滤波并且在表1和表2中分别对该边缘的bS[xDi][yDj]设置(其中[xDi][yDj]表示坐标)进行了定义。
表1边界强度(禁用SPS IBC时)
Figure BDA0003471585410000111
表2边界强度(禁用SPS IBC时)
Figure BDA0003471585410000112
Figure BDA0003471585410000121
2.4.3亮度分量的去方块决策
在该小节中描述了去方块决策处理。
图7示出了涉及滤波器开/关决策和强/弱滤波器选择的像素的示例。
更宽更强的亮度滤波器是仅当条件1(Condition 1)、条件2(Condition 2)和条件3(Condition 3)都为真时才使用的滤波器。
条件1是“大块(large block)条件”。此条件检测P侧和Q侧的样点是否属于大块,其分别由变量bSidePisLargeBlk和bSideQisLargeBlk表示。bSidePisLargeBlk和bSideQisLargeBlk定义如下。
bSidePisLargeBlk=((边缘类型是垂直的,并且p0属于宽度>=32的CU)||(边缘类型是水平的,并且p0属于高度>=32的CU))?真:假
bSideQisLargeBlk=((边缘类型是垂直的,并且q0属于宽度>=32的CU)||(边缘类型是水平的,并且q0属于高度>=32的CU))?真:假
基于bSidePisLargeBlk和bSideQisLargeBlk,条件1被定义如下。
Condition1=(bSidePisLargeBlk||bSidePisLargeBlk)?真:假
接下来,如果条件1(Condition1)为真,则将进一步检查条件2(Condition2)。首先,导出以下变量:
–如在HEVC中那样首先导出dp0,dp3,dq0,dq3;
–如果(p侧大于或等于32),则
dp0=(dp0+Abs(p50-2*p40+p30)+1)>>1
dp3=(dp3+Abs(p53-2*p43+p33)+1)>>1
–如果(q侧大于或等于32),则
dq0=(dq0+Abs(q50-2*q40+q30)+1)>>1
dq3=(dq3+Abs(q53-2*q43+q33)+1)>>1
Condition2=(d<β)?TRUE:FALSE,
其中d=dp0+dq0+dp3+dq3。
如果条件1和条件2有效,则进一步检查是否有任何块使用子块:
Figure BDA0003471585410000131
最后,如果条件1和条件2均有效,则所提出的去方块方法将检查条件3(大块强滤波器条件),其定义如下。
在条件3(StrongFilterCondition)中,导出以下变量:
如在HEVC中那样导出dpq。
如在HEVC中那样导出sp3=Abs(p3-p0)
如果(p侧大于或等于32)
如果(Sp==5)
sp3=(sp3+Abs(p5-p3)+1)>>1
否则
sp3=(sp3+Abs(p7-p3)+1)>>1
如在HEVC中那样导出sq3=Abs(q0-q3)
如果(q侧大于或等于32)
如果(Sq==5)
sq3=(sq3+Abs(q5-q3)+1)>>1
否则
sq3=(sq3+Abs(q7-q3)+1)>>1
如在HEVC中那样,StrongFilterCondition=(dpq小于(β>>2),sp3+sq3小于(3*β>>5),并且Abs(p0-q0)小于(5*tC+1)>>1)?真:假。
2.4.4用于亮度的更强的去方块滤波器(为更大块设计的)
当边界任一侧的样点属于大块时,使用双线性滤波器。属于大块的样点定义为:对于垂直边缘,当宽度>=32,并且对于水平边缘,高度>=32。
双线性滤波器在下面列出。
然后,将对于i=0到Sp-1的块边界样点pi、和对于j=0到Sq-1的块边界样点qi(pi和qi是上述HEVC去方块中描述的、用于滤波垂直边缘的行中的第i个样点,或者用于滤波水平边缘的列中的第i个样点)替换为线性插值,如下所示:
pi′=(fi*Middles,t+(64-fi)*Ps+32)>>6),剪切为pi±tcPDi
qj′=(gj*Middles,t+(64-gj)*Qs+32)>>6),剪切为qj±tcPDj
其中tcPDi和tcPDj是第2.4.7节中描述的位置相关的剪切,而gj、fi、Middles,t、Ps和Qs如下所示:
2.4.5色度的去方块控制
在块边界的两侧都使用色度强滤波器。此处,当色度边缘的两侧都大于或等于8(色度位置)并满足以下三个条件的决策时,选择色度滤波器:第一个条件用于决策边界强度以及大块。当在色度样点域中正交于块边缘的块宽度或高度等于或大于8时,可以应用所提出的滤波器。第二个和第三个基本上与HEVC亮度去方块决策相同,分别是开/关决策和强滤波器决策。
在第一决策中,修改色度滤波的边界强度(bS)并依次检查条件。如果满足条件,则跳过优先级较低的其余条件。
当bS等于2、或当检测到大块边界时bS等于1时,执行色度去方块。
第二和第三条件基本上与如下的HEVC亮度强滤波器决策相同。
在第二条件下:
然后如在HEVC亮度去方块中那样导出d。当d小于β时,第二条件为真。
在第三条件下,StrongFilterCondition导出如下:
如在HEVC中那样,导出dpq。
如在HEVC中那样,导出sp3=Abs(p3-p0)
如在HEVC中那样,导出sq3=Abs(q0-q3)
如在HEVC设计中那样,StrongFilterCondition=(dpq小于(β>>2),sp3+sq3小于(β>>3),并且Abs(p0-q0)小于(5*tC+1)>>1)。
2.4.6用于色度的强去方块滤波器
定义了以下用于色度的强去方块滤波器:
p2’=(3*p3+2*p2+p1+p0+q0+4)>>3
p1’=(2*p3+p2+2*p1+p0+q0+q1+4)>>3
p0’=(p3+p2+p1+2*p0+q0+q1+q2+4)>>3
所提出的色度滤波器对4x4色度样点网格执行去方块。
2.4.7位置相关的剪切
位置相关的剪切tcPD被应用于涉及强滤波器和长滤波器的亮度滤波处理的输出样点,强滤波器和长滤波器在边界处修改7、5和3个样点。假设量化误差分布,提出增加期望具有更高量化噪声的样点的剪切值,从而期望重构样点值与真实样点值的偏差更大。
对于用不对称滤波器进行滤波的每个P或Q边界,取决于2.4.2节中的决策处理的结果,从提供给解码器的两个表(例如,下表中列出的Tc7和Tc3)中选择位置相关的阈值表作为边信息:
Tc7={6,5,4,3,2,1,1};Tc3={6,4,2};
tcPD=(Sp==3)?Tc3:Tc7;
tcQD=(Sq==3)?Tc3:Tc7;
对于用短对称滤波器进行滤波的P或Q边界,应用较低幅度的位置相关的阈值:
Tc3={3,2,1};
在定义阈值之后,根据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–tcQ j,q’j);
其中p'i和q'i是滤波后的样点值,p”i和q”j是剪切后的输出样点值,并且tcPi、tcQi是从VVC tc参数以及tcPD和tcQD导出的剪切阈值。函数Clip3是VVC中指定的剪切函数。
2.4.8子块去方块调整
为了同时使用长滤波器和子块去方块实现并行友好去方块,如长滤波器的亮度控制中所示,将长滤波器限制为在使用子块去方块(AFFINE或ATMVP或DMVR)的一侧最多修改5个样点。另外,调整子块去方块,使得限制在8x8网格上接近CU或隐式TU边界的子块边界,以在每一侧最多修改两个样点。
以下内容适用于与CU边界不对齐的子块边界。
Figure BDA0003471585410000161
其中等于0的边缘(edge)对应于CU边界,等于2或等于orthogonalLength-2的边缘对应于来自CU边界等的子块边界的8个样点。如果使用TU的隐式(implicit)划分,则隐式TU为真。
2.5 SAO
SAO的输入是DB后的重构样点。SAO的概念是通过首先使用选定的分类器将区域样点分成多个类别,获得每个类别的偏移量,然后将偏移量添加到该类别的每个样点中,从而降低区域的平均样点失真,其中在比特流中对分类器索引和区域偏移量进行编解码。在HEVC和VVC中,区域(用于SAO参数信令的单元)被定义为CTU。
HEVC采用了两种SAO类型,能够满足低复杂度的要求。这两种类型是边缘偏移(EO)和带偏移(BO),下面将进一步详细讨论。SAO类型的索引被编码(在[0,2]的范围内)。对于EO,样点分类基于根据一维方向图案(水平、垂直、135°对角线和45°对角线)比较当前样点和临近样点。
图8示出了EO样点分类的四种一维方向图案:水平(EO类别=0)、垂直方向(EO类别=1)、135°对角线(EO类别=2)和45°对角线(EO类别=3)。
对于给定的EO类别,CTB内的每个样点被分为五类中的一类。标记为“c”的当前样点值与沿着选定的一维图案的两个临近值进行比较。表I总结了每个样点的分类规则。类别1和类别4分别与沿着选定的一维图案的局部波谷和局部波峰相关联。类别2和类别3分别与沿着选定的一维图案的凹角和凸角相关联。如果当前样点不属于EO类别1-4,则其为类别0且不应用SAO。
表3:边缘偏移的样点分类规则
类别 条件
1 c<a并且c<b
2 (c<a&&c==b)||(c==a&&c<b)
3 (c>a&&c==b)||(c==a&&c>b)
4 c>a&&c>b
5 非上述情况
2.6基于几何变换的自适应环路滤波器
DB的输入是DB和SAO之后的重构样点。样点分类和滤波处理基于DB和SAO之后的重构样点。
在一些实施例中,应用具有基于块的滤波器自适应的基于几何变换的自适应环路滤波器(GALF)。对于亮度分量,基于局部梯度的方向和活跃度性,为每个2×2块选择25个滤波器中的一个。
2.6.1滤波器形状
在一些实施例中,可以为亮度分量选择多达三个菱形滤波器形状(如图9所示)。在图片级别信令通知索引以指示用于亮度分量的滤波器形状。每个正方形代表一个样点,并且Ci(i为0~6(左)、0~12(中)、0~20(右))表示应用于该样点的系数。对于图片中的色度分量,通常使用5×5菱形。
2.6.1.1块分类
每个2x2块被分为25个类别中的一个。根据其方向性D以及活跃度的量化值
Figure BDA0003471585410000181
导出分类别索引C,如下所示:
Figure BDA0003471585410000182
为了计算D和
Figure BDA0003471585410000183
首先用一维拉普拉斯(Laplacian)方程计算水平、垂直和两个对角线方向的梯度:
Figure BDA0003471585410000184
Figure BDA0003471585410000185
Figure BDA0003471585410000186
Figure BDA0003471585410000187
索引i和j指的是2x2块中左上角样点的坐标,并且R(i,j)指示坐标(i,j)处的重构样点。
然后将水平和垂直方向的梯度的最大值和最小值设为:
Figure BDA0003471585410000188
并且将两个对角线方向的梯度的最大值和最小值设为:
Figure BDA0003471585410000191
为了导出方向性D的值,将这些值相互比较,并与两个阈值t1和t2比较:
步骤1,如果
Figure BDA0003471585410000192
Figure BDA0003471585410000193
两者都为真,则将D设置为0。
步骤2,如果
Figure BDA0003471585410000194
则从步骤3继续;否则从步骤4继续。
步骤3,如果
Figure BDA0003471585410000195
则将D设置为2;否则将D设置为1。
步骤4,如果
Figure BDA0003471585410000196
则将D设置为4;否则将D设置为3。
活跃度值A计算如下:
Figure BDA0003471585410000197
进一步将A量化到0到4的范围(包括0和4),并且将量化值表示为
Figure BDA0003471585410000198
对于图片中的两个色度分量,不应用分类方法,例如,对每个色度分量应用一组单独的ALF系数。
2.6.1.2滤波系数的几何变换
图10示出了5×5菱形滤波器支持的相关协调器:左:对角,中:垂直翻转,右:旋转。
在对每个2×2块进行滤波之前,对滤波系数f(k,l)(与坐标(k,l)相关联)应用诸如旋转、对角线和垂直翻转等几何变换,具体取决于为该块计算的梯度值。这相当于将这些转换应用于滤波器支持区域中的样点。这个想法是通过调整它们的方向性,使应用ALF的不同块变得更加相似。
介绍了包括对角线、垂直翻转和旋转的三种几何变换:
Figure BDA0003471585410000199
其中K是滤波器的尺寸,并且0≤k,l≤K-1是系数坐标,使得位置(0,0)在左上角并且位置(K-1,K-1)在右下角。取决于为该块计算的梯度值,将变换应用于滤波器系数f(k,l)。表4总结了变换与四个方向的四个梯度之间的关系。图9示出了基于5x5菱形的每个位置的变换系数。
表4:为一个块计算的梯度和变换的映射
梯度值 变换
g<sub>d2</sub>&lt;g<sub>d1</sub>并且g<sub>h</sub>&lt;g<sub>v</sub> 无变换
g<sub>d2</sub>&lt;g<sub>d1</sub>并且g<sub>v</sub>&lt;g<sub>h</sub> 对角线
g<sub>d1</sub>&lt;g<sub>d2</sub>并且g<sub>h</sub>&lt;g<sub>v</sub> 垂直翻转
g<sub>d1</sub>&lt;g<sub>d2</sub>并且g<sub>v</sub>&lt;g<sub>h</sub> 旋转
2.6.1.3滤波器参数信令
在一些实施例中,例如在第一个CTU的条带标头之后并且在SAO参数之前,为第一个CTU信令通知GALF滤波器参数。可以信令通知多达25组亮度滤波器系数。为了减少比特开销,可以合并不同分类的滤波器系数。另外,参考图片的GALF系数被存储并且被允许重新使用作为当前图片的GALF系数。当前图片可以选择使用为参考图片存储的GALF系数,并绕过GALF系数信令。在这种情况下,仅信令通知参考图片之一的索引,并且所存储的指示的参考图片的GALF系数被继承用于当前图片。
为了支持GALF时域预测,维护GALF滤波器组的候选列表。在开始解码新序列时,候选列表为空。在解码一个图片之后,可以将对应的滤波器组添加到候选列表。一旦候选列表的尺寸达到最大可允许值(例如,6),新的滤波器组就会以解码顺序覆盖最旧的组,即将先进先出(FIFO)规则应用于更新候选列表。为避免重复,只有当相应图片不使用GALF时域预测时,才可以将组添加到列表中。为了支持时域可伸缩性,存在滤波器组的多个候选列表,并且每个候选列表都与时域层相关联。更具体地,由时域层索引(TempIdx)分配的每个阵列可以组成具有等于较低的TempIdx的先前解码图片的滤波器组。例如,第k个阵列被分配为与等于k的TempIdx相关联,并且它仅包含来自具有TempIdx小于或等于k的图片的滤波器组。在对某个图片进行编码之后,与该图片相关联的滤波器组将用于更新与相等的或更高的TempIdx相关联的那些阵列。
GALF系数的时域预测用于帧间编解码的帧,以最小化信令开销。对于帧内帧,时域预测不可用,并且为每个类别分配了16个固定滤波器的组。为了指示固定滤波器的使用,将信令通知每个类别的标志,并在必要时信令通知所选固定滤波器的索引。即使为给定类别选择了固定滤波器,仍可以为该类别发送自适应滤波器的系数f(k,l),在这种情况下,将应用于重构图像的滤波器系数为两组系数的和。
亮度分量的滤波处理可以控制在CU级别。信令通知标志以指示是否将GALF应用于CU的亮度分量。对于色度分量,仅在图片级别指示是否应用GALF。
2.6.1.4滤波处理
在解码器侧,当对块启用GALF时,对该块内的每个样点R(i,j)进行滤波,得出样点值R'(i,j),如下所示,其中L表示滤波器长度,fm,n表示滤波器系数,f(k,l)表示解码的滤波器系数。
Figure BDA0003471585410000211
图11示出了假设当前样点的坐标(i,j)为(0,0)时用于5x5菱形滤波器支持的相对坐标的示例。用相同颜色填充的不同坐标中的样点乘以相同的滤波器系数。
2.7基于几何变换的自适应环路滤波器(GALF)
2.7.1GALF的示例
在一些实施例中,自适应环路滤波器的滤波处理如下执行:
O(x,y)=∑(i,j)w(i,j).I(x+i,y+j) (11)
其中样点I(x+i,y+j)是输入样点,O(x,y)是滤波后的输出样点(例如,滤波结果),并且w(i,j)表示滤波系数。实际上,在VTM 4.0中,它使用用于定点精度计算的整数算法来实现:
Figure BDA0003471585410000212
其中L表示滤波器长度,并且其中w(i,j)是定点精度的滤波器系数。
VVC中GALF的当前设计具有以下主要变化:
(1)去除了自适应滤波器形状。亮度分量仅允许7x7滤波器形状,色度分量仅允许5x5滤波器形状。
(2)将ALF参数的信令从条带/图片级别移到了CTU级别。
(3)类别索引的计算以4x4级别而不是2x2级别执行。另外,在一些实施例中,利用用于ALF分类的子采样拉普拉斯计算方法。更具体地,不需要为一个块内的每个样点计算水平/垂直/45对角线/135度梯度。取而代之的是,使用了1:2子采样。
图12A-12D示出了CE2.6.2的子采样拉普拉斯计算。图12A示出了用于垂直梯度的子采样位置,图12B示出了用于水平梯度的子采样位置,图12C示出了用于对角线梯度的子采样位置,并且图12D示出了用于对角线梯度的子采样位置。
2.8非线性ALF示例
2.8.1滤波重组(reformulation)
可以在以下表达式中重组等式(11),而不影响编解码效率:
O(x,y)=I(x,y)+∑(i,j)≠(0,0)w(i,j)×(I(x+i,y+j)-I(x,y)) (13)
这里,w(i,j)是与公式(11)相同的滤波器系数[期望w(0,0)在公式(13)中等于1,而在公式(11)中等于1-∑(i,j)≠(0,0)w(i,j)]。
使用该上述(13)的滤波器公式,VVC通过使用简单的剪切函数来引入非线性以使ALF更有效率,以在邻居样点值与当前正被滤波的样点值(I(x,y))大不相同时,减少邻居样点值(I(x+i,y+j))的影响。
更具体地,ALF滤波器修改如下:
O′(x,y)=I(x,y)+∑(i,j)≠(0,0)w(i,j)×K(I(x+i,y+j)-I(x,y),k(i,j))(14)
这里,K(d,b)=min(b,max(-b,d))是剪切函数,并且k(i,j)是取决于(i,j)滤波器系数的剪切参数。编解码器执行优化以找到最佳k(i,j)。
在一些实施例中,为每个ALF滤波器指定剪切参数k(i,j),对每个滤波器系数信令通知一个剪切值。这意味着对每个亮度滤波器可以在比特流中信令通知最多12个剪切值,对色度滤波器可以在比特流中信令通知最多6个剪切值。
为了限制信令成本和编解码器复杂度,仅使用4个对于INTER和INTRA条带都相同的固定值。
由于亮度的局部差异的方差通常比色度的高,因此对于亮度和色度滤波器应用两个不同组。还可以在每个组中引入最大样点值(这里对于10比特深度为1024),以便在不必要时可以禁用剪切。
在表5中提供了在一些实施例中使用的剪切值的组。通过在对数域中将亮度的样点值的全范围(以10比特进行编解码)以及色度从4到1024的范围进行大致相等地划分,选择了4个值。
更精确地,剪切值的亮度表已通过以下公式获得:
Figure BDA0003471585410000231
其中M=210且N=4。(15)
类似地,剪切值的色度表根据以下公式获得:
Figure BDA0003471585410000232
其中M=210,N=4且A=4。 (16)
表5:核准的剪切值
Figure BDA0003471585410000233
通过使用与上表2中的剪切值的索引相对应的Golomb编解码方案,在“alf_data”语法元素中对所选择的剪切值进行编解码。该编解码方案与滤波器索引的编解码方案相同。
2.9虚拟边界
在硬件和嵌入式软件中,基于图片的处理由于其对图片缓冲器的要求很高,实际上是不可接受的。使用片上图片缓冲器非常昂贵,而使用片外图片缓冲器会显著增加外部内存访问、功耗和数据访问延迟。因此,在实际产品中,DF、SAO和ALF将从基于图片的解码转变为基于LCU的解码。当基于LCU的处理用于DF、SAO和ALF时,整个解码处理可以在光栅扫描中由LCU来完成,其采用LCU流水线方式并行处理多个LCU。在这种情况下,DF、SAO和ALF需要行缓冲器,因为处理一个LCU行需要来自上方LCU行的像素。如果使用片外行缓冲器(如DRAM),则会增加外部存储器带宽和功耗;如果使用片上行缓冲器(如SRAM),则会增加芯片面积。因此,虽然行缓冲器已经比图片缓冲器小得多,但是仍然需要减少行缓冲器。
在一些实施例中,如图13所示,亮度分量所需的行缓冲器的总数为11.25行。对行缓冲器要求的解释如下:由于决策和滤波需要来自第一个CTU的行K、L、M、M和来自底部CTU的行O、P,所以无法对与CTU边缘重叠的水平边缘进行去方块。因此,与CTU边缘重叠的水平边缘的去方块被推迟直到更下方的CTU出现。因此,对于行K、L、M、N,重构的亮度样点必须存储在行缓冲器(4行)中。然后对行A到J进行SAO滤波。由于去方块不改变K行的样点,所以可以对J行进行SAO滤波。对于K行的SAO滤波,边缘偏移分类决策只存储在行缓冲器中(即0.25亮度行)。ALF滤波只能对行A-F执行。如图13所示,对每个4x4块执行ALF分类。每个4x 4块分类需要尺寸为8x8的活跃度窗口,而活跃度窗口又需要9x 9窗口来计算一维拉普拉斯以确定梯度。
因此,对于与行G、H、I、J重叠的4x4块的块分类,需要虚拟边界以下的SAO滤波样点。此外,ALF分类需要行D、E、F的SAO滤波样点。此外,行G的ALF滤波需要来自上方行的三个SAO滤波行D、E、F。因此,总的行缓冲器要求如下:
-行K-N(水平DF像素):4行
-行D-J(SAO滤波像素):7行
-行J和行K之间的SAO边缘偏移分类器值:0.25行
因此,所需的亮度行总数为7+4+0.25=11.25。
类似地,在图14中示出了色度分量的行缓冲器要求。色度分量的行缓冲器要求估计为6.25行。
为了缓解SAO和ALF对行缓冲器的要求,在最新的VVC中引入了虚拟边界(VB)的概念。如图13所示,VB是向上移动N个像素的水平LCU边界。对于每个LCU,SAO和ALF可以在较低的LCU出现之前处理VB以上的像素,但在较低的LCU出现之前不能处理VB以下的像素,这是由DF引起的。考虑到硬件实现成本,建议的VB和水平LCU边界之间的空间被设置为亮度的四个像素(例如,图13中的N=4)和色度的两个像素(例如,图9中的N=2)。
2.9.1当VB尺寸N为4时修改的ALF块分类
图15A-15B描述了当虚拟边界高于CTU边界4行(N=4)时的修改块分类。如图15A所示,对于从行G开始的4x4块,块分类仅使用行E到J。然而,对于属于行J的样点,拉普拉斯梯度计算需要下面的另一个行(行K)。因此,用行J填充行K。
类似地,如图15B所示,对于从行K开始的4x4块,块分类仅使用行K到行P。然而,对于属于行K的样点,拉普拉斯梯度计算需要在(行J)上方的另一个行。因此,用行K填充行J。
2.9.2跨越虚拟边界样点的两侧填充
如图16A-16C所示,滤波器的截短版本用于滤波属于靠近虚拟边界的行的亮度样点。以图16A为例,当滤波如图13所示的行M时,例如,7x7菱形支撑的中心样点在行M中。它需要访问VB上方的一行(用粗体线表示)。在这种情况下,VB上方的样点从VB下方的右下方样点复制,例如实线的P0样点被复制到上面的虚线位置。对称地,实线的P3样点也被复制到右下方虚线位置,即使该位置的样点可用。复制的样点仅用于亮度滤波处理。
用于ALF虚拟边界的填充方法可以表示为“两侧填充”,其中,如果填充位于(i,j)处的一个样点(例如,图16B中虚线的P0A),则位于(m,n)处的共享相同的滤波系数的对应样点(例如,图16B虚线的P3B)也被填充,即使该样点可用,如图16A-16C和图17A-17B所示。在图16A-16C中,7x7菱形滤波器支持,中心是当前要滤波的样点。图16A示出了VB上方/下方的需要填充的一行。图16B示出了VB上方/下方需要填充的2行。图16C示出了VB上方/下方需要填充的3行。
类似地,如图17A-17B所示,两侧填充法也用于色度ALF滤波。图17A-17B示出了虚拟边界处的修改的色度ALF滤波(5x5菱形滤波器支持,中心是当前要滤波的样点)。图17A示出了VB上方/下方需要填充的1行。图17B示出了VB上方/下方需要填充的2行。
2.9.3禁用非线性ALF时实现两侧填充的替代方法
当CTB禁用非线性ALF时,例如,等式(14)中的剪裁参数k(i,j)等于(1<<Bitdepth)中时,填充处理可以通过修改滤波器系数来代替(即基于修改系数的ALF,MALF)。例如,在行L/I滤波样点时,滤波系数c5修改为c5’,在这种情况下,不需要将亮度样点从实线P0A复制到虚线P0A,以及从实线P3B复制到虚线P3B,如图18A所示。在这种情况下,则两侧填充和MALF将产生相同的结果,假设要滤波的当前样点位于(x,y)处。
c5.K(I(x-1,y-1)-I(x,y),k(-1,-1))+c1.K(I(x-1,y-2)-I(x,y),k(-1,-2))=(c5+c1).K(I(x-1,y-1)-I(x,y),k(-1,-1)) (17)
因为由于填充,K(d,b)=d并且I(x-1,y-1)=I(x-1,y-2)。
然而,当启用非线性ALF时,MALF和两侧填充可能产生不同的滤波结果,因为非线性参数与每个系数相关,例如对于滤波器系数c5和c1,剪裁参数是不同的。因此,
c5.K(I(x-1,y-1)-I(x,y),k(-1,-1))+c1.K(I(x-1,y-2)-I(x,y),k(-1,-2))!=(c5+c1).K(I(x-1,y-1)-I(x,y),k(-1,-1)) (18)
因为由于填充,即使I(x-1,y-1)=I(x-1,y-2),K(d,b)!=d。
2.10 ALF滤波规范
新添加的部分以粗体斜体下划线文本表示。删除的部分用[[]]表示。
7.3.2.4图片参数集RBSP语法
Figure BDA0003471585410000261
Figure BDA0003471585410000271
Figure BDA0003471585410000281
loop_filter_across_bricks_enabled_flag等于1指定可以在参考PPS的图片中跨越砖块边界执行环路滤波操作。loop_filter_across_bricks_enabled_flag等于0指定不在参考PPS的图片中跨越砖块边界执行环路滤波操作。环路滤波操作包括去方块滤波、样点自适应偏移滤波和自适应环路滤波操作。当不存在时,则会推断loop_filter_across_bricks_enabled_flag的值等于1。
loop_filter_across_slices_enabled_flag等于1指定可以在参考PPS的图片中跨条带边界执行环路滤波操作。loop_filter_across_slices_enabled_flag等于0指定不在参考PPS的图片中跨条带边界执行环路滤波操作。环路滤波操作包括去方块滤波、样点自适应偏移滤波和自适应环路滤波操作。如果不存在,则会推断loop_filter_across_slices_enabled_flag的值等于0。
pps_loop_filter_across_virtual_boundaries_disabled_flag等于1指定在参考PPS的图片中禁用跨虚拟边界环路滤波操作。pps_loop_filter_across_virtual_boundaries_disabled_flag等于0指定在参考PPS的图片中不禁用跨虚拟边界的此类环路滤波操作。环路滤波操作包括去方块滤波、样点自适应偏移滤波和自适应环路滤波操作。如果不存在时,则会推断pps_loop_filter_across_virtual_boundaries_disabled_flag等于0。
pps_num_ver_virtual_boundaries指定出现在PPS中的pps_virtual_boundaries_pos_x[i]语法元素的数量。如果pps_num_ver_virtual_boundaries不存在,则将其推断为等于0。
8.8.5.2亮度样点的编解码树块滤波处理
该处理的输入是:
–在自适应环路滤波处理之前的重构亮度图片样点阵列recPictureL,
–滤波后的重构亮度图片样点阵列alfPictureL,
–亮度位置(xCTB,yCTB),其指定当前亮度编解码树块相对于当前图片的左上角样点的左上角样点。
该处理的输出是经过修改的滤波后的重构亮度图片样点阵列alfPictureL。
以位置(xCtb,yCtb)和重构亮度图片样点阵列recPictureL作为输入,调用第8.8.5.3节中的滤波器索引的推导处理,并且将filtIdx[x][y]和transposeIdx[x][y](x,y=0..CtbSizeY-1)作为输出。
对于滤波后的重构亮度样点alfPictureL[x][y]的推导,对当前亮度编解码树块内的每个重构亮度样点recPictureL[x][y](x,y=0..CtbSizeY–1)滤波如下:
–亮度滤波器系数的阵列f[j]和对应于由filtIdx[x][y]指定的滤波器的亮度剪切值的阵列c[j]导出如下,其中j=0..11:
–如果AlfCtbFiltSetIdxY[xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]小于16,则以下适用:
i=AlfCtbFiltSetIdxY[xCtb>>Log2CtbSize][yCtb>>Log2CtbSize] (8-1172)
f[j]=AlfFixFiltCoeff[AlfClassToFiltMap[i][filtidx]][j] (8-1173)
c[j]=2BitdepthY (8-1174)
–否则(AlfCtbFiltSetIdxY[xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]大于或等于16,则以下适用:
i=slice_alf_aps_id_luma[AlfCtbFiltSetIdxY[xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]-16] (8-1175)
f[j]=AlfCoeffL[i][filtIdx[x][y]][j] (8-1176)
c[j]=AlfClipL[i][filtIdx[x][y]][j] (8-1177)
–亮度滤波器系数和剪切值索引idx取决于transposeIdx[x][y]如下导出:
–如果transposeIndex[x][y]等于1,则以下适用:
idx[]={9,4,10,8,1,5,11,7,3,0,2,6} (8-1178)
–否则,如果[x][y]等于2,则以下适用:
idx[]={0,3,2,1,8,7,6,5,4,9,10,11} (8-1179)
–否则,如果transposeIndex[x][y]等于3,则以下适用:
idx[]={9,8,10,4,3,7,11,5,1,0,2,6} (8-1180)
–否则,以下适用:
idx[]={0,1,2,3,4,5,6,7,8,9,10,11} (8-1181)
–给定亮度样点的阵列recPicture内的对应亮度样点(x,y)的每一个的位置(hx+i,vy+j)(i,j=-3..3)导出如下:
–对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xCtb+x-PpsVirtualBoundariesPosX[n]大于或等于0并且小于3,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xCtb+x+i) (8-1182)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosX[n]-xCtb-x大于0并且小于4,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]-1,xCtb+x+i) (8-1183)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples-1,xCtb+x+i) (8-1184)
–对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yCtb+y-PpsVirtualBoundariesPosY[n]大于或等于0并且小于3,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yCtb+y+j) (8-1185)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosY[n]-yCtb-y大于0并且小于4,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]-1,yCtb+y+j) (8-1186)
–否则,以下适用:
vy+j=Clip3(0,pic_height_in_luma_samples-1,yCtb+y+j) (8-1187)
Figure BDA0003471585410000311
–根据水平亮度样点位置y和applyVirtualBoundary,在表8-22中指定重构样点偏移量r1,r2和r3。
–变量curr导出如下:
curr=recPictureL[hx,vy] (8-1188)
–变量sum导出如下:
Figure BDA0003471585410000321
–sum=curr+((sum+64)>>7) (8-1190)
–修改后的滤波后的重构亮度样点alfPictureL[xCtb+x][yCtb+y]导出如下:
–如果pcm_loop_filter_disabled_flag和pcm_flag[xCtb+x][yCtb+y]都等于1,则以下适用:
alfPictureL[xCtb+x][yCtb+y]=recPictureL[hx,vy] (8-1191)
–否则(pcm_loop_filter_disabled_flag等于0或者pcm_flag[x][y]等于0),则以下适用:
alfPictureL[xCtb+x][yCtb+y]=Clip3(0,(1<<BitDepthY)-1,sum) (8-1192)
表8-22根据水平亮度样点位置y和applyVirtualBoundary的r1,r2和r3的规范
Figure BDA0003471585410000331
8.8.5.4色度样点的编解码树块滤波处理
该处理的输入是:
–在自适应环路滤波处理之前重构的色度图片样点阵列recPicture,
–滤波后的重构色度图片样点阵列alfPicture,
–色度位置(xCtbC,yCtbC),其指定当前色度编解码树块相对于当前图片的左上角样点的左上角样点。
该处理的输出是修改后的滤波后的重构色度图片样点阵列alfPicture。
当前色度编解码树块的宽度和高度ctbWidthC和ctbHeightC推导如下:
ctbWidthC=CtbSizeY/SubWidthC (8-1230)
ctbHeightC=CtbSizeY/SubHeightC (8-1231)
为了推导滤波后的重构色度样点alfPicture[x][y],对当前色度编解码树块内的每个重构色度样点recPicture[x][y]进行如下滤波,其中x=0..CTBWidthC-1,y=0..CTBHeightC-1:
–给定的色度样点阵列recPicture内的每个对应的色度样点(x,y)的位置(hx+i,vy+j)导出如下,其中i,j=-2..2:
–对于任何n=0..pps_num_ver_virtual_boundaries-1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xCtbC+x-PpsVirtualBoundariesPosX[n]/SubWidthC大于或等于0并且小于2,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n]/SubWidthC, (8-1232)
pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries-1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosX[n]/SubWidthC-xCtbC-x大于0并且小于3,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]/SubWidthC-1,xCtbC+x+i)
(8-1233)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i)(8-1234)
–对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yCtbC+y-PpsVirtualBoundariesPosY[n]/SubHeightC大于或等于0并且小于2,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n]/SubHeightC, (8-1235)
pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j)
–否则,对于任何n=0..pps_num_hor_virtual_boundaries-1如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosY[n]/SubHeightC-yCtbC-y大于0并且小于,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]/SubHeightC-1,yCtbC+y+j)
(8-1236)
–否则,以下适用:
vy+j=Clip3(0,pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j)
(8-1237)
–变量applyVirtualBoundary推导如下:
Figure BDA0003471585410000341
–根据水平亮度样点位置y和applyVirtualBoundary,在表8-22中指定重构样点偏移量r1和r2。
–变量curr导出如下:
curr=recPicture[hx,vy] (8-1238)
–色度滤波器系数的阵列f[j]和色度剪切值的阵列c[j]导出如下,其中j=0..5:
f[j]=AlfCoeffC[slice_alf_aps_id_chroma][j] (8-1239)
c[j]=AlfClipC[slice_alf_aps_id_chroma][j] (8-1240)
–变量um推导如下:
Figure BDA0003471585410000351
sum=curr+(sum+64)>>7) (8-1242)
–修改后的滤波后的重构色度图片样点alfPicture[xCtbC+x][yCtbC+y]推导如下:
–如果pcm_loop_filter_disabled_flag和pcm_flag[(xCtbC+x)*SubWidthC][(yCtbC+y)*SubHeightC]都等于1,则以下适用:
alfPicture[xCtbC+x][yCtbC+y]=recPictureL[hx,vy] (8-1243)
–否则(pcm_loop_filter_disabled_flag等于0或pcm_flag[x][y]等于0),以下适用alfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1<<BitDepthC)-1,sum)(8-1244)
2.11 CTU处理的示例
根据目前的VVC设计,如果一个CTB的下边界是条带/砖块的下边界,则ALF虚拟边界处理方法被禁用。例如,如图19所示,一张图片被划分成多个CTU和2个条带。
假设CTU尺寸为MxM(例如,M=64),根据虚拟边界定义,CTB内的最后4行被视为在虚拟边界下方。在硬件实现中,以下适用:
-如果CTB的下边界是图片的下边界(例如CTU-D),它处理(M+4)×M块,包括CTU行上方的4行和当前CTU中的所有行。
-否则,如果CTB的下边界是条带(或砖块)的下边界(例如CTU-C),并且loop_filter_across_slice_enabled_flag(或loop_filter_across_bricks_enabled_flag)等于0,则处理(M+4)×M块,包括来自CTU行上方的4行和当前CTU中的所有行。
-否则,如果CTU/CTB位于条带/砖块/片中的第一CTU中(如CTU-A),则处理M×(M-4)块,不包括最后4行。
-否则,如果CTU/CTB不在条带/砖块/片的第一CTU行中(例如,CTU-B)中,也不在条带/砖块/片的最后一个CTU中,则处理M×M块,包括CTU行上方的4行,而不包括当前CTU中的最后4行。
图19示出了图片中的CTU的处理的示例。
2.12 360度视频编解码
VTM5中的水平环绕运动补偿是一种360度专用编解码工具,旨在提高以等矩形(ERP)投影格式表示的重构的360度视频的视觉质量。在传统的运动补偿中,当运动矢量指向参考图片的图片边界之外的样点时,通过复制对应图片边界上的最临近点,应用重复填充来导出边界外的样点的值。对于360度视频,这种重复填充的方法是不合适的,并且可能会在重构的视区视频中产生称为“接缝伪影”(seam artefacts)的视觉伪影。由于360度视频是在球体上捕获的,并且本质上没有“边界”,因此始终可以从球面域中的临近样点中获得超出投影域中参考图片边界的参考样点。对于一般的投影格式,可能很难在球面域中导出相应的临近样点,因为它涉及二维到三维和三维到二维坐标转换,以及分数采样位置的样点插值。这个问题对于ERP投影格式的左边界和右边界要简单得多,因为可以从右图片边界内的样点中获得左图片边界外的球面邻居,反之亦然。
图20示出了VVC中的水平环绕运动补偿的示例。
水平环绕运动补偿处理如图20所示。当参考块的一部分在投影域中的参考图片的左(或右)边界之外时,代替重复填充,“边界外”部分取自参考的对应球面邻居,该邻居是朝向投影域的右(或左)边界的参考图片的对应球面邻居。重复填充仅用于顶部和底部图片边界。如图20所示,水平环绕运动补偿可以与360度视频编解码中常用的非规范填充方法相结合。在VVC中,这是通过信令通知高级语法元素来指示环绕偏移来实现的,该偏移量应设置为填充前的ERP图片宽度;该语法用于相应地调整水平环绕的位置。该语法不受左右图片边界上特定填充量的影响,因此自然支持ERP图片的不对称填充,例如,当左填充和右填充不同时。当参考样点在参考图片的左右边界之外时,水平环绕运动补偿为运动补偿提供了更有意义的信息。
对于由多个面组成的投影格式,无论使用何种紧凑的帧打包排列,帧压缩图片中的两个或多个相邻面之间都会出现不连续。例如,考虑到图24所示的3×2帧打包配置,上半部分的三个面在3D几何中是连续的,下半部分中的三个面在3D几何中是连续的,但是帧打包图片的上半部分和下半部分在3D几何体中是不连续的。如果在该不连续性上执行环路滤波操作,则可以在重构视频中看到面接缝伪影。
为了减轻面接缝伪影,可以在帧打包图片中的不连续处禁用环路滤波操作。提出了一种语法来信令通知垂直和/或水平虚拟边界,在这些边界上,环路内的滤波操作被禁用。与使用两个片(每组连续面一个)和在片上禁用环路滤波操作相比,所提出的信令方法更灵活,因为它不要求面尺寸是CTU尺寸的倍数。
2.13基于子图片的运动约束独立区域的示例
在一些实施例中,包括以下特征:
1)图片可以划分为子图片。
2)在SPS中指示子图片存在的指示,以及子图片的其他序列级信息。
3)在解码处理(不包括环路滤波操作)中,子图片是否被视为图片可以由比特流控制。
4)是否禁用跨越子图片边界的环路滤波可以由每个子图片的比特流控制。DBF、SAO和ALF处理被更新,以控制跨越子图片边界的环路滤波操作。
5)为了简单起见,作为起始点,在SPS中以亮度样点为单位来信令通知子图片的宽度、高度、水平偏移和垂直偏移。子图片边界被约束为条带边界。
6)通过稍微更新编解码树单元()语法并更新到以下解码处理来指定在解码处理(不包括环路滤波操作)中将子图片视为图片:
ο(高级)时域亮度运动矢量预测的推导处理
ο亮度样点双线性插值处理
ο亮度样点8抽头插值滤波处理
ο色度样点插值处理
7)在SPS中明确指定子图片ID,并将其包含在片组标头中,以便在不需要更改VCLNAL单元的情况下允许提取子图片序列。
提出输出子图片集(OSPS)来指定子图片及其集合的标准提取和一致性点。
3.本文提供的解决方案解决的技术问题
当前的VVC设计存在以下问题:
1.启用ALF虚拟边界的当前设置取决于CTB的下边界是否为图片的下边界。如果为真,则ALF虚拟边界被禁用,如图19中的CTU-D。然而,CTB的底边界可能在图片的下边界之外,例如256x240的图片被划分成4个128x128的CTU,在这种情况下,对于具有位于图片下边界之外的样点的最后2个CTU,ALF虚拟边界将被错误地设置为真。
2.对于底部图片边界和条带/片/砖块边界,处理ALF虚拟边界的方式被禁用。沿条带/砖块边界禁用VB可能会造成管道气泡,或者需要针对每个虚拟管道数据单元(VPDU,VVC中的64x64)处理68行(假设LCU尺寸为64x64)。例如:
a.对于预先不知道条带/砖块/片边界的解码器(如低延迟应用),需要恢复ALF行缓冲器。行缓冲器中的内容是否用于ALF滤波取决于当前CTU是否也是条带/砖块/片边界CTU,然而,在解码下一个条带/砖块/片之前,这些信息是未知的。
b.对于预先知道条带/砖块/片边界的解码器,要么解码器需要与管道气泡共存(非常不可能),要么始终以每64x64 VDPU 68行的速度运行ALF(过度配置),以避免使用ALF行缓冲器。
3.存在处理虚拟边界和视频单元边界的不同方法,例如,不同的填充方法。同时,当行处于多个边界处时,可以对其执行多个填充方法。
a.在一个示例中,如果块的下边界是360度虚拟边界,并且ALF虚拟边界也应用于该块,在这种情况下,可以首先应用360度虚拟边界的填充方法来生成360度虚拟边界以下的虚拟样点。然后,这些位于360度虚拟边界以下的虚拟样点被视为可用。并且根据图16A-C可以进一步应用ALF两侧填充方法。图25中描绘了一个示例。
4.处理虚拟边界的方法可能是次优的,因为使用了填充样点,可能效率较低。
5.当非线性ALF被禁用时,MALF和两侧填充方法将能够生成相同的结果,用于滤波需要访问跨越虚拟边界的样点的样点。然而,当非线性ALF被启用时,这两种方法会带来不同的结果。把这两种情况进行一致化是有益的。
6.条带可以是矩形条带,也可以是非矩形条带,如图28所示。在这种情况下,对于CTU,它可能不符合任何边界(例如,图片/条带/片/砖块)。然而,它可能需要访问当前条带之外的样点。如果跨越条带边界的滤波(例如,loop_filter_across_slices_enabled_flag为false)被禁用,则如何执行ALF分类和滤波处理尚未可知。
7.子图片是图片内一个或多个条带的矩形区域。子图片包含一个或多个条带,它们共同覆盖了图片的矩形区域。语法表修改如下,以包含子图片的概念(粗体、斜体和下划线)。
7.3.2.3序列参数集RBSP语法
Figure BDA0003471585410000391
Figure BDA0003471585410000401
应当注意的是,对每个子图片控制启用跨子图片的滤波。然而,在图片级对启用跨条带/片/砖块的滤波的控制进行控制,该控制被信令通知一次,以控制一个图片内所有的条带/片/砖块。
8.ALF分类是在4x4单元中进行的,即一个4x4单元内的所有样点共享相同的分类结果。然而,更精确地说,包含当前4x4块的8x8窗口中的样点需要计算其梯度。在这种情况下,需要访问10x10个样点,如图30所示。如果某些样点位于不同的视频单元(例如,“360虚拟边界”之上或左或右或下/“ALF虚拟边界”之上或下的不同的条带/片/砖块/子图片)中,则需要定义如何计算分类。
4.技术和实施例的示例
下面的项目应被视为解释一般概念的示例。不应狭义解释所列技术。此外,这些技术可以以任何方式组合。
用于ALF虚拟边界的填充方法可表示为“两侧填充”,其中,如果填充位于(i,j)处的一个样点,则即使样点可用,位于(m,n)处共享相同滤波器系数的对应样点也被填充,如图12-13所示。
用于图片边界/360度视频虚拟边界、正常边界(例如,顶部和下边界)的填充方法可以表示为“一侧填充”,其中,如果要使用的一个样点在边界之外,则从图片内部的可用样点复制该样点。
用于360度视频左边界和右边界的填充方法可以表示为“环绕基准填充”,其中,如果要使用的一个样点在边界之外,则使用运动补偿结果复制该样点。
在下面的讨论中,样点是“在视频单元的边界处”可以意味着样点和视频单元的边界之间的距离小于或不大于阈值。“行”可指位于同一水平位置的样点或同一垂直位置的样点。(例如,同一行中的样点和/或同一列中的样点)。函数Abs(x)定义如下:
Figure BDA0003471585410000411
在下面的讨论中,“虚拟样点”是指生成的样点,其可以不同于重构样点(可以是通过去方块和/或SAO处理过的)。虚拟样点可用于对另一个样点进行ALF。虚拟样点可以通过填充生成。
“为一个块启用ALF虚拟边界处理方法”可以指示将规范中的applyVirtualBoundary设置为真。“启用虚拟边界”可以指示当前块被虚拟边界划分为至少两个部分,并且在滤波处理(例如,ALF)中不允许位于一个部分的样点使用另一个部分的样点。虚拟边界可以是一个块下边界上方的K行。
在以下描述中,临近样点可以是滤波器分类和/或滤波处理所需的样点。
在本公开中,如果临近样点在当前图片、或当前子图片、或当前片、或当前条带、或当前砖块、或当前CTU、或当前处理单元(例如ALF处理单元或窄ALF处理单元)或任何其他当前视频单元之外,则临近样点“不可用”。
1.将“当前编解码树块的下边界是图片的下边界”的确定替换为“当前编解码树块的下边界是图片的下边界或在图片外部”。
a.可选地,此外,在这种情况下,可以禁用ALF虚拟边界处理方法。
2.是否在环路滤波处理中启用虚拟样点的使用(例如,是否启用虚拟边界(例如,设置applyVirtualBoundary为真或假))可取决于CTB尺寸。应用虚拟边界
a.在一个示例中,对于给定的CTU/CTB尺寸,例如,对于CTU/CTB尺寸等于KxL(例如,K=L=4),总是将applyVirtualBoundary设置为假。
b.在一个示例中,对于某些不大于或小于KxL(例如K=L=8)的CTU/CTB尺寸,总是将applyVirtualBoundary设置为假。
c.可选地,对于某些CTU/CTB尺寸(如4x4、8x8),ALF被禁用。
3.是否在环路滤波处理(例如,ALF)中启用虚拟样点(例如,从重构样点中填充)的使用可以取决于块的下边界是否是与图片(例如,条带/片/砖块)相比粒度更细的视频单元的下边界或虚拟边界。
a.在一个示例中,如果编解码树块(CTB)的下边界是视频单元的边界或虚拟边界,则可以为编解码树块(CTB)启用ALF虚拟边界处理方法(例如,将applyVirtualBoundary设置为真)。
i.此外,可选地,如果下边界不是底部图片边界或者如果下边界在图片外部,则启用上述方法。
b.当当前编解码树块的下边界是图片的底部虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1时,ALF虚拟边界处理方法仍然可以启用(例如,将applyVirtualBoundary设置为真)。
c.在一个示例中,对于CTB是否启用ALF虚拟边界处理方法(例如,applyVirtualBoundary的值)可仅取决于CTB的下边界和图片的下边界之间的关系。
i.在一个示例中,仅当CTB的下边界是包含CTB的图片的下边界或者如果下边界在图片之外时,将applyVirtualBoundary设置为假。
ii.在一个示例中,当CTB的下边界不是包含CTB的图片的下边界时,将applyVirtualBoundary设置为真。
d.在一个示例中,当解码图18A-18C中的CTU-C时,可以用CTU以上的K行滤波M×M样点,并排除虚拟边界以下的K行。
4.建议在滤波处理(例如,ALF)中禁用跨越砖块/条带边界的样点的使用,即使环路滤波器的信令通知的跨越砖块/条带边界的控制使用标志(例如,loop_filter_across_bricks_enabled_flag/loop_filter_across_slices_enabled_flag)为真。
a.可选地,此外,信令通知的loop_filter_across_bricks_enabled_flag/loop_filter_across_slices_enabled_flag可以仅控制除了ALF之外的去方块滤波器和SAO的滤波处理。
b.在一个示例中,可以使用虚拟样点代替相应位置处的重构样点来对另一个样点进行ALF。
5.当一个块(例如,CTB)包含位于视频单元边界(例如,条带/砖块/片块/360度视频虚拟或正常边界/图片边界)处的样点时,如何在视频单元内部或外部生成虚拟样点(例如,填充方法)以用于诸如ALF的环路滤波可以针对不同边界类型进行统一。
a.可选地,此外,虚拟边界的方法(例如,两侧填充方法)可应用于块以处理边界处的样点以用于环路滤波。
b.可选地,此外,当块包含位于视频单元的下边界处的样点时,可以应用上述方法。
c.在一个示例中,当解码一个块的K行时,如果K行处于该块的虚拟边界以下(例如,图17A-17B中CTU-B中的最后K行)并且块的下边界是视频单元的下边界,在ALF分类/滤波处理中可以生成虚拟样点,以避免使用这些K行之外的其他样点,例如,可以应用两侧填充法。
i.可选地,对于最后的K行,ALF可能被禁用。
d.在一个示例中,当一个块位于多个边界时,用于ALF分类的像素/样点可以被限制为不跨越这些多个边界中的任何一个。
i.在一个示例中,例如,如果它的某个临近样点“不可用”(例如,跨越多个边界中的任何一个),则可能无法计算该样点的单独的或所有类型的梯度/方向性。
1.在一个示例中,样点的梯度可以被视为零。
2.在一个示例中,样点的梯度可以被视为“不可用”,并且不能被添加到在ALF分类处理中导出的活跃度(例如,第2.6.1.1节的公式(8)中定义的)。
ii.在一个示例中,当在ALF分类处理中使用的仅部分样点是“可用的”(例如,不跨越任何这些边界)时,ALF分类处理中导出的活跃度/方向性可以按因子缩放。
iii.在一个示例中,对于边界块,假设ALF分类处理中需要计算N个样点的梯度/方向性,并且只能计算M个样点的梯度(例如,如果某个样点的某个临近样点不“可用”,则无法计算该样点的梯度),则活跃度可以乘以N/M。
1.可选地,可以将其乘以取决于N/M的因子。例如,数字可以是MN(N是整数),例如M=2。
e.在一个示例中,MxN(例如,当前设计中M=N=8,M列和N行)窗口中部分样点的梯度可用于分类。
i.例如,对于当前的N1*N2(当前设计中N1=N2=4)块,M*N位于N1*N2块的中心。
ii.在一个示例中,可以使用不需要跨越任何边界访问样点的样点的梯度。
1.可选地,此外,当计算位于一个或多个边界处的样点的梯度时,如果当前样点的一些临近样点“不可用”,则可以执行填充(例如,单侧填充)。
2.可选地,此外,如果当前样点位于视频单元的上边界(例如,条带/砖块/片/360度视频虚拟边界或ALF虚拟边界),则可以填充上方的K(例如K=1、2)个不可用的行。
3.可选地,此外,如果当前样点位于视频单元的左边界,则可以填充左侧的K(例如,K=1、2)个不可用的列。
4.可选地,此外,如果当前样点位于视频单元的右边界,则可以填充右侧的K(例如,K=1、2)个不可用的列。
5.可选地,此外,如果当前样点位于视频单元的下边界,则可以填充底部K(例如,K=1、2)不可用行。
6.可选地,此外,如果当前样点位于视频单元的上边界和左边界,则可以首先填充上方的K1(例如,K1=1,2)个不可用的行以生成M*(N+K1)窗口,然后填充左侧的K2(例如K2=1,2)个不可用的列以生成(M+K2)*(N+K1)窗口。
a.可选地,可以先填充左侧的K2(例如K2=1,2)个不可用的列,生成(M+K2)*N窗口,然后填充上方的K1(例如K1=1,2)个不可用的行,生成(M+K2)*(N+K1)窗口。
7.可选地,此外,如果当前样点位于视频单元的上边界和右边界,则可以首先填充上方的K1(例如,K1=1,2)个不可用的行以生成M*(N+K1)窗口,然后填充右侧的K2(例如K2=1,2)个不可用的列以生成(M+K2)*(N+K1)窗口。
a.可选地,可以先填充右侧的K2(例如K2=1,2)个不可用的列以生成(M+K2)*N窗口,然后填充上方的K1(例如K1=1,2)个不可用的行以生成(M+K2)*(N+K1)窗口。
8.可选地,此外,如果当前样点位于视频单元的下边界和右边界,则可以首先填充底部的K1(例如,K1=1,2)个不可用的行以生成M*(N+K1)窗口,然后填充右侧的K2(例如K2=1,2)个不可用的列以生成(M+K2)*(N+K1)窗口。
a.可选地,可以先填充右侧的K2(例如K2=1,2)个不可用的列以生成(M+K2)*N个窗口,然后填充底部的K1(例如K1=1,2)个不可用的行以生成(M+K2)*(N+K1)窗口。
9.另外,如果当前样点位于视频单元的下边界和左边界,则可以首先填充底部的K1(例如,K1=1,2)个不可用的行以生成M*(N+K1)窗口,然后填充左侧的K2(例如K2=1,2)个不可用的列以生成(M+K2)*(N+K1)窗口。
a.可选地,可以先填充左侧的K2(例如K2=1,2)个不可用的列以生成(M+K2)*N个窗口,然后填充底部的K1(例如K1=1,2)个不可用的行以生成(M+K2)*(N+K1)窗口。10.可选地,此外,填充样点可用于计算梯度。
iii.在一个示例中,对于视频单元的顶部/下边界(例如,条带/砖块/片/360度视频虚拟边界或ALF虚拟边界)处的块,可以使用M*(N–C1)窗口中的样点对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的顶部/底部C1行的梯度。
iv.在一个示例中,对于视频单元的左/右边界处的块,可以使用(M–C1)*N窗口中的样点梯度来对块进行分类。
1.此外,可选地,在分类中不使用M×N窗口的左/右C1列的梯度。
v.在一个示例中,对于视频单元的上边界和下边界处的块,可以使用M*(N–C1–C2)窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的顶部C1行和底部C2行的梯度。
vi.在一个示例中,对于视频单元的上边界和左边界处的块,可以使用(M–C1)*(N–C2)窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的顶部C1行和左侧C2列的梯度。
vii.在一个示例中,对于视频单元的上边界和右边界处的块,可以使用(M–C1)*(N–C2)窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的顶部C1行和右侧C2列的梯度。
viii.在一个示例中,对于位于视频单元的下边界和左边界的块,可以使用(M–C1)*(N–C2)窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的底部C1行和左C2列的梯度。
ix.在一个示例中,对于位于视频单元的下边界和右边界的块,可以使用(M–C1)*(N–C2)窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的底部C1行和右C2列的梯度。
x.在一个示例中,对于视频单元的左边界和右边界处的块,可以使用(M–C1–C2)*N窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的左C1列和右C2列的梯度。
xi.在一个示例中,对于位于视频单元的上边界、下边界和左边界的块,可以使用(M–C3)*(N–C1–C2)窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的顶部C1行、底部C2行和左侧C3列的梯度。
xii.在一个示例中,对于位于视频单元的上边界、下边界和右边界的块,可以使用(M–C3)*(N–C1–C2)窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的顶部C1行、底部C2行和右侧C3列的梯度。
xiii.在一个示例中,对于位于视频单元的左边界、右边界和上边界的块,可以使用(M–C1–C2)*(N–C3)窗口中的样点梯度来对块进行分类。
1.此外,可选地,在分类中不使用M×N窗口左侧C1列、右侧C2列和顶部C3行的梯度。
xiv.在一个示例中,对于位于视频单元的左边界、右边界和下边界的块,可以使用(M–C1–C2)*(N–C3)窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口左C1列、右C2列和的底部C3行的梯度。
xv.在一个示例中,对于位于视频单元的左边界、右边界、上边界和下边界的块,可以使用(M–C1–C2)*(N–C3–C4)窗口中的样点梯度来对块进行分类。
1.可选地,此外,在分类中不使用M×N窗口的左侧C1列和右侧C2列、顶部C3行和底部C4行的梯度。
xvi.在一个示例中,C1、C2、C3和C4等于2。
xvii.在一个示例中,可以使用不具有梯度计算中所需的任何“不可用”临近样点的样点的梯度。
f.在一个示例中,当一行位于多个边界处时(例如,该行到边界之间的距离小于阈值),填充处理只执行一次,而不管它可能属于多少个边界。
i.可选地,此外,应填充多少临近行可能取决于当前行相对于所有边界的位置。
ii.例如,需要填充多少临近行可以由当前行与两个边界之间的距离决定的,例如当当前行在两个边界内时(两个边界在上方和下方)。
iii.例如,需要填充多少临近行可以由当前行与最近边界之间的距离来决定,例如当当前行在两个边界内时(两个边界在上方和下方)。
iv.例如,可以为每一个边界单独计算需要填充多少个临近行,并选择最大的一个作为最终填充的行数。
v.在一个示例中,可以为该行的每一侧(例如,上侧和下侧)确定应填充多少条临近行。
vi.在一个示例中,对于两侧填充法,可以由两侧共同决定需要填充多少个临近行。
vii.可选地,此外,应用ALF使用的两侧填充方法。
g.在一个示例中,当一行位于多个边界处,并且在该行的每一侧(例如,上侧和下侧)至少有一个边界时,可为其禁用ALF。
h.在一个示例中,当当前行所需的填充行的数量大于阈值时,可以对当前行禁用ALF。
i.在一个示例中,当任何一侧的填充行的数量大于阈值时,可以对当前行禁用ALF。
ii.在一个示例中,当两侧的填充行的总数大于阈值时,可以对当前行禁用ALF。
i.可选地,此外,当块包含位于视频单元的下边界处的样点并且为该块启用诸如ALF的环路滤波时,可以应用上述方法。
j.可选地,此外,还可以在某些条件下应用上述方法,例如当块包含位于视频单元下边界处的样点并且不允许跨越边界的滤波时(例如,pps_loop_filter_across_virtual_boundaries_disabled_flag/loop_filter_across_slices_enabled_flag/loop_filter_across_slices_enabled_flag为真)。
k.所提出的方法也适用于垂直边界上的样点/块。
6.当样点是一个块的至少两个边界(例如,位于当前行上方的至少一个是ALF虚拟边界,下方的是另一个边界)的样点时,填充多少条行并不是纯粹由当前行相对于ALF虚拟边界之间的距离决定的。相反,它是由当前行相对于两个边界之间的距离决定的。
a.在一个示例中,每侧填充的行数设置为(M–min(D0,D1))。
b.在一个示例中,每侧填充的行数设置为(M–max(D0,D1))。
c.在上面的示例中,D0,D1表示当前行与上/下边界之间的距离。
d.在上面的示例中,M表示ALF虚拟边界从一个CTU的底部开始的行数。
7.在ALF分类和/或ALF线性或非线性滤波处理中,可以定义至少两种选择样点的方法,其中一种是在应用任何环路滤波方法之前选择样点;另一种是在应用一种或多种环路滤波方法之后但在应用ALF之前选择样点。
a.在一个示例中,不同方法的选择可取决于要滤波的样点的位置。
b.在一个示例中,当用于另一个样点的ALF时,可以使用第一种方法选择视频单元(例如CTB)的下边界处的样点。否则(不在边界处),选择第二种方法。
8.提出在滤波处理中禁用跨越VPDU边界(例如,64x64区域)的样点的使用。
a.在一个示例中,当ALF分类处理所需的样点在VPDU边界之外或在虚拟边界之下时,它可以被虚拟样点代替,或者可以从与其他样点相关联的样点中复制该样点的分类结果,例如从可用样点填充。
b.在一个示例中,当滤波处理所需的样点在VPDU边界之外或在虚拟边界之下时,它可以被虚拟样点代替,例如从可用样点填充。
c.在一个示例中,如果块包含位于VPDU边界的样点,则可以为块启用ALF虚拟边界处理方法(例如,将applyVirtualBoundary设置为真)。
d.可选地,可以在滤波处理中禁用跨越水平VPDU边界的样点的使用。
i.在一个示例中,当滤波处理所需的样点在水平VPDU边界之下或在虚拟边界之下时,其可以被虚拟样点代替,例如从可用样点填充。
e.可选地,可以在滤波处理中禁用跨越垂直VPDU边界的样点的使用。
i.在一个示例中,当滤波处理所需的样点在垂直VPDU边界之外或在虚拟边界之下时,其可以被虚拟样点代替,例如从可用样点填充。
9.在ALF分类/滤波处理中,不使用填充样点(例如,不可用、虚拟边界上方/下方、视频单元边界上方/下方),而是提出使用所有环路滤波器之前的重构样点。
a.可选地,此外,通过从所有环路滤波器之前的重构样点进行样点填充来应用双侧填充的概念。
i.在一个示例中,如果滤波器支持中的样点来自所有环路滤波器之前的重构样点,则滤波器支持中的对称(例如,关于原点(例如,当前样点)对称)样点也应使用所有环路滤波器之前的重构样点。
1.假设当前待滤波样点的坐标为(0,0),且位于(i,j)处的样点是所有环路滤波器之前的重构样点,则位于(-i,-j)处的样点是所有环路滤波器之前的重构样点。
2.假设当前待滤波样点的坐标为(x,y),且位于(x+i,y+j)处的样点是所有环路滤波器之前的重构样点,则位于(x-i,y-j)处的样点是所有环路滤波器之前的重构样点。
b.可选地,此外,当环路整形(又称LMCS)被启用时,所有环路滤波器之前的重构样点是从整形域转换而来的原始域中的样点。
10.在ALF滤波处理中,不使用填充样点(例如,不可用、虚拟边界上方/下方、视频单元边界上方/下方),而是提出使用不同的ALF滤波器支持。
a.在一个示例中,假设在上述方法中需要填充一个样点,将与样点相关联的滤波系数设置为零,而不是执行填充。
i.在这种情况下,通过排除需要填充的样点来修改滤波器支持。
ii.可选地,此外,应用于除当前样点之外的其他样点的滤波器系数保持不变,然而,应用于当前样点的滤波器系数可以被修改,例如((1<<C_BD)–应用于不需要填充的样点的所有滤波器系数之和),其中C_BD表示滤波器系数的比特深度。
1.以图18A-18B为例,当滤波行L和I时,应用于当前样点的滤波系数c12被修改为((1<<C_BD)–2*(c4+c5+c6+c7+c8+c9+c10+c11))。
b.在一个示例中,假设在上述方法中从(x2,y2)填充样点(x1,y1),替代执行填充,将与(x1,y1)相关联的滤波器系数加到位置(x2,y2)处的系数上,而不考虑启用或禁用非线性滤波器。
i.另外,还可以动态地导出(x2,y2)的剪切参数。
1.在一个示例中,可以将其设置为等于(x2,y2)的解码剪切参数。
2.可选地,可以将其设置为以(x1,y1)和(x2,y2)的解码剪切参数作为输入的函数的返回值,例如较大的值或较小的值。
11.剪切参数/滤波器系数/滤波器支持的选择可取决于滤波样点是否需要访问填充样点(例如,不可用、虚拟边界上方/下方、视频单元边界上方/下方)。
a.在一个示例中,不同的剪切参数/滤波器系数/滤波器支持可用于具有相同类别索引的样点,但对于其中一些样点需要访问填充样点,而其他则不需要。
b.在一个示例中,可以在CTU/区域/条带/片级别上信令通知用于对需要访问填充样点的样点进行滤波的剪切参数/滤波器系数/滤波器支持。
c.在一个示例中,可以从用于对不需要访问填充样点的样点进行滤波的的剪切参数/滤波器系数/滤波器支持导出用于对需要访问填充样点的样点进行滤波的剪切参数/滤波器系数/滤波器支持。
i.在一个示例中,可以应用项目9a或9b。
12.如何在边界处处理样点以进行环路滤波(例如ALF)可取决于颜色分量和/或颜色格式。
a.例如,对于不同的颜色分量,“在边界处”的定义可能不同。在一个示例中,如果亮度样点与下边界之间的距离小于T1,则其位于下边界处;如果色度样点与下边界之间的距离小于T2,则其位于下边界处。T1和T2可以不同。
i.在一个示例中,当颜色格式不是4:4:4时,T1和T2可以不同。
13.当一个CTU/VPDU的下/上/左/右边界也是使用独立编解码的条带/片/砖块/子区域的边界时,应用固定顺序的多个填充处理。
a.在一个示例中,在第一步骤中,首先应用条带/片/砖块的填充方法(例如,单侧填充)。然后,在第二步骤中,进一步应用用于处理ALF虚拟边界的填充方法(例如,两侧填充方法)。在这种情况下,第一步之后的填充样点被标记为可用,并且可以用来决定在ALF虚拟边界处理中要填充多少行。同样的规则用于处理不在这些边界处的CTU(例如,图16A-C)。
14.所提出的方法可以应用于两个子图片之间的一个或多个边界。
a.应用所提出方法的边界可以是水平边界。
b.应用所提出方法的边界可以是垂直边界。
15.上述方法可应用于垂直边界处的样点/块。
16.是否或/和如何在“360虚拟边界”处应用所提出的方法可取决于“360虚拟边界”的位置。
a.在一个示例中,当“360虚拟边界”与CTU边界重合时,可应用所提出的方法。例如,对于“360虚拟边界”处的样点,ALF中只能应用两侧填充。
b.在一个示例中,当“360虚拟边界”与CTU边界不重合时,可不应用所提出的方法。例如,对于“360虚拟边界”处的样点,ALF中只能使用单侧填充。
c.在一个示例中,对于“360虚拟边界”处的样点,不管“360虚拟边界”的位置如何,都可以在ALF中应用相同的填充方法。
i.例如,对于“360虚拟边界”处的样点,可以在ALF中应用单侧填充。
ii.例如,对于“360虚拟边界”处的样点,可以在ALF中应用两侧填充。
d.在一个示例中,对于位于多个边界的样点(其中至少一个边界是“360虚拟边界”,并且“360虚拟边界”中的至少一个不与CTU边界重合),则可以不应用所提议的方法。
i.例如,跨越这些多个边界中任何一个的样点都可以用单侧填充来填充。
1.此外,可选地,如果存在“虚拟边界”,则可以在ALF中在单侧填充之后应用两侧填充。
e.在一个示例中,对于位于两种边界之间的样点,如果其中一种是“360虚拟边界”,而另一种不是,则在ALF处理中只调用一次填充。
i.在一个示例中,可以调用用于处理ALF虚拟边界的填充方法(例如,两侧填充方法)。
1.可选地,可以调用用于处理图片(或条带/片/砖块/子图片)边界的填充方法(例如,单侧填充)。
ii.可选地,可以按顺序应用两个或多个填充处理。
1.在一个示例中,可首先应用用于处理图片(或条带/片/砖块/子图片)边界的填充方法(例如,单侧填充),然后,可进一步调用用于处理ALF虚拟边界的填充方法(例如,两侧填充方法)。
a.可选地,此外,在第一填充之后的填充样点在第二填充处理中被视为可用。
iii.在一个示例中,对于位于两种或多种边界之间的样点(例如,条带边界/片边界/砖块边界/“360虚拟边界”/“ALF虚拟边界”/“子图片边界”),如果其中只有一个边界是“360虚拟边界”(例如,如图24所示,第一个边界是“360虚拟边界”,并且第二个边界是“ALF虚拟边界”或条带/砖块/片边界/子图片边界;反之亦然),则可以应用所提出的方法。例如,对于这些样点,ALF中只能使用两侧填充。
1.可选地,如果这些多种边界是“360虚拟边界”或图片边界,则可以不应用所提出的方法。例如,对于这些样点,ALF中只能使用单侧填充。
f.在一个示例中,对于位于两种或多种边界之间的样点,并且如果其中至少一个边界是“360虚拟边界”,并且它与CTU边界不重合,则可以不应用所提出的方法。
i.在这种情况下,可将其视为仅在“360虚拟边界”处而不是在其他边界类型处处理样点的现有技术。
ii.在一个示例中,对于这些样点,在ALF中只能应用单侧填充。
g.在一个示例中,对于位于两种或多种边界之间的样点,并且如果其中至少一个边界是“360虚拟边界”,则可以不应用所提出的方法。
i.在这种情况下,可将其视为仅在“360虚拟边界”处而不是在其他边界类型处处理样点的现有技术。
ii.在一个示例中,对于这些样点,在ALF中只能应用单侧填充。
17.当ALF滤波处理中所需的参考样点(例如,在图16C中,当滤波当前样点P0时,i为A/B/C/D的P0i)或/和ALF分类处理中所需的参考样点“不可用”,例如,由于该样点与当前样点位于不同的视频单元(例如,条带/砖块/片/子图片)中,并且使用跨视频单元(例如,条带/砖块/片/子图片边界)的样点进行滤波不被允许时,可以用“可用”样点(例如,与当前样点位于同一条带/砖块/片/子图片内的样点)填充“不可用”样点。
a.在一个示例中,可首先将“不可用”参考样点剪切到其最近的“可用”水平位置,然后,如有必要,将“不可用”参考样点剪切到其最近的“可用”垂直位置。
b.在一个示例中,可首先将“不可用”参考样点剪切到其最近的“可用”垂直位置,然后,如有必要,将“不可用”样点剪切到其最近的“可用”水平位置。
c.在一个示例中,将“不可用”参考样点的坐标剪切到其在水平方向上最近的“可用”样点的坐标(例如,最小距离)。
i.在一个示例中,对于两个具有坐标(x1,y1)和(x2,y2)的样点,它们之间的水平距离可以计算为Abs(x1–x2)。
d.在一个示例中,将“不可用”参考样点的坐标剪切到其在垂直方向上最近的“可用”样点的坐标(例如,最小距离)。
i.在一个示例中,对于两个具有坐标(x1,y1)和(x2,y2)的样点,它们之间的垂直距离可以计算为Abs(y1–y2)。
e.在一个示例中,将“不可用”样点剪切到其最近的“可用”样点(例如,最小距离)。
i.在一个示例中,对于两个具有坐标(x1,y1)和(x2,y2)的样点,它们之间的距离可以计算为(x1–x2)*(x1–x2)+(y1–y2)*(y1–y2)。
ii.可选地,两个像素之间的距离可以计算为Abs(x1–x2)+Abs(y1–y2)。
f.可选地,对当前样点禁用滤波处理。
g.可选地,ALF中的分类处理(例如,当前样点的梯度计算)可能不允许使用不可用的参考样点。
18.如何导出不可用参考样点的填充样点可取决于CTU是否与任何边界重合。
a.在一个示例中,当当前CTU不与任何边界类型重合,但当前样点的滤波处理(例如ALF分类/ALF滤波处理)需要访问不同视频单元(例如,条带)中的参考样点时,可以应用项目16中描述的方法。
i.可选地,此外,当当前CTU不与任何边界类型重合,但是当前样点的滤波处理(例如,ALF分类/ALF滤波处理)需要访问不同视频单元(例如,条带)中的参考样点、并且不允许跨越条带边界的滤波时,可以应用项目16中描述的方法。
ii.可选地,此外,当当前CTU不与任何边界类型重合时,但是当前样点的滤波处理(例如,ALF分类/ALF滤波处理)需要访问不同视频单元中的参考样点(例如,条带)、并且不允许在同一视频单元中的参考样点和跨越条带边界的滤波时,可以应用项目16中描述的方法。
b.在一个示例中,当当前CTU与至少一种边界重合时,可以应用统一的填充方法(例如,两侧填充或单侧填充)。
i.可选地,当当前CTU与多种边界重合并且不允许跨越这些边界的滤波时,可以应用统一的填充方法(例如,两侧填充或单侧填充)。
c.在一个示例中,只能用项目16中描述的方法来填充不可用两侧填充或/和单侧填充进行填充的“不可用”样点。
19.滤波处理(例如,去方块、SAO、ALF、两侧滤波、Hadamard变换滤波等)是否可以访问跨越视频单元的边界(例如,条带/砖块/片/子图片边界)的样点可以在不同的级别上进行控制,例如由其自身控制,而不是对序列/图片中的所有视频单元进行控制。
a.可选地,对于PPS/条带标头中的条带,可以信令通知一个语法元素,以指示滤波处理是否可以跨越该条带的条带边界。
b.可选地,对于PPS/条带标头中的砖块/片,可以信令通知一个语法元素,以指示滤波处理是否可以跨越该砖块/片的砖块/片边界。
c.在一个示例中,可以在SPS/PPS中信令通知语法元素,以指示滤波处理是否可以跨越视频/图片的砖块边界或/和片边界或/和条带边界或/和“360度虚拟边界”。
i.在一个示例中,可以为不同边界类型信令通知单独的语法元素。
ii.在一个示例中,可以为所有不同边界类型信令通知一个语法元素。
iii.在一个示例中,可以为几种不同边界类型信令通知一个语法元素。
1.例如,可以为砖块边界和片边界信令通知一个语法元素。
d.在一个示例中,可以在SPS中信令通知语法元素,以指示在滤波处理上是否存在PPS/片级指示。
i.在一个示例中,可以为不同边界类型信令通知单独的语法元素。
ii.在一个示例中,可以为所有不同边界类型信令通知一个语法元素。
iii.在一个示例中,可以为几种不同边界类型信令通知一个语法元素。
1.例如,可以为砖块边界和片边界信令通知一个语法元素。
iv.只有当SPS中对应的语法元素等于某个值时,才可以在PPS/条带标头中信令通知滤波处理是否可以跨越条带/砖块/片/子图片边界的指示。
1.可选地,当SPS中的对应语法元素等于某些值时,可以不在PPS/条带标头中信令通知滤波处理是否可以跨越条带/砖块/片/子图片边界的指示。
a.在这种情况下,如果SPS中的指示等于某个值,则可能不允许滤波处理跨越条带/砖块/片/子图片边界。
b.在这种情况下,如果SPS中的指示等于某个值,则滤波处理可以跨越条带/砖块/片/子图片边界。
5.实施例
在下面的部分中,描述了如何修改VVC标准的当前版本以适应所公开技术的一些实施例的一些示例。新添加的部分以粗体斜体下划线文本表示。删除的部分用[[]]表示。
5.1实施例1
loop_filter_across_bricks_enabled_flag等于1指定可以在参考PPS的图片中跨越砖块边界执行环路滤波操作。loop_filter_across_bricks_enabled_flag等于0指定不在参考PPS的图片中跨越砖块边界执行环路滤波操作。环路滤波操作包括去方块滤波、样点自适应偏移滤波[[和自适应环路滤波]]操作。当不存在时,则会推断loop_filter_across_bricks_enabled_flag的值等于1。
loop_filter_across_slices_enabled_flag等于1指定可以在参考PPS的图片中跨条带边界执行环路滤波操作。loop_filter_across_slices_enabled_flag等于0指定不在参考PPS的图片中跨条带边界执行环路滤波操作。环路滤波操作包括去方块滤波、样点自适应偏移滤波[[和自适应环路滤波]]操作。如果不存在,则会推断loop_filter_across_slices_enabled_flag的值等于0。
5.2实施例2
图21示出了图片中的CTU的处理。与图19相比的差异用虚线突出显示。
5.3实施例3
8.8.5.2亮度样点编解码树块滤波处理
该处理的输入是:
–在自适应环路滤波处理之前的重构亮度图片样点阵列recPictureL
–滤波后的重构亮度图片样点阵列alfPictureL
–亮度位置(xCTB,yCTB),其指定当前亮度编解码树块相对于当前图片的左上角样点的左上角样点。
该处理的输出是经过修改的滤波后的重构亮度图片样点阵列alfPictureL
以位置(xCtb,yCtb)和重构亮度图片样点阵列recPictureL作为输入,调用第8.8.5.3节中的滤波器索引的推导处理,并且将filtIdx[x][y]和transposeIdx[x][y](x,y=0..CtbSizeY-1)作为输出。
对于滤波后的重构亮度样点alfPictureL[x][y]的推导,对当前亮度编解码树块内的每个重构亮度样点recPictureL[x][y](x,y=0..CtbSizeY–1)滤波如下:
–亮度滤波器系数的阵列f[j]和对应于由filtIdx[x][y]指定的滤波器的亮度剪切值的阵列c[j]导出如下,其中j=0..11:
–…
–亮度滤波器系数和剪切值索引idx取决于transposeIdx[x][y]如下导出:
–…
–给定亮度样点的阵列recPicture内的对应亮度样点(x,y)的每一个的位置(hx+i,vy+j)(i,j=-3..3)导出如下:
–…
–变量applyVirtualBoundary导出如下:
–如果以下条件[[中的一个或多个]]为真,则将applyVirtualBoundary设置为
等于0:
–当前编解码树块的下边界是图片的下边界。
–[[当前编解码树块的下边界是砖块的下边界并且loop_filter_across_bricks_enabled_flag等于0。
–当前编解码树块的下边界是条带的下边界并且loop_filter_across_slices_enabled_flag等于0。
–当前编解码树块的下边界是图片的底部虚拟边界中的一个并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1]]。
–否则,将applyVirtualBoundary设置为等于1。
–根据水平亮度样点位置y和applyVirtualBoundary,在表8-22中指定重构样点偏移量r1,r2和r3。
-…
8.8.5.4色度样点的编解码树块滤波处理
该处理的输入是:
–在自适应环路滤波处理之前重构的色度图片样点阵列recPicture,
–滤波后的重构色度图片样点阵列alfPicture,
–色度位置(xCtbC,yCtbC),其指定当前色度编解码树块相对于当前图片的左上角样点的左上角样点。
该处理的输出是修改后的滤波后的重构色度图片样点阵列alfPicture。
当前色度编解码树块的宽度和高度ctbWidthC和ctbHeightC推导如下:
ctbWidthC=CtbSizeY/SubWidthC (8-1230)
ctbHeightC=CtbSizeY/SubHeightC (8-1231)
为了推导滤波后的重构色度样点alfPicture[x][y],对当前色度编解码树块内的每个重构色度样点recPicture[x][y]进行如下滤波,其中x=0..CTBWidthC-1,y=0..CTBHeightC-1:
–给定的色度样点阵列recPicture内的每个对应的色度样点(x,y)的位置(hx+i,vy+j)导出如下,其中i,j=-2..2:
–对于任何n=0..pps_num_ver_virtual_boundaries-1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xCtbC+x-PpsVirtualBoundariesPosX[n]/SubWidthC大于或等于0并且小于2,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n]/SubWidthC, (8-1232)
pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries-1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosX[n]/SubWidthC-xCtbC-x大于0并且小于3,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]/SubWidthC-1,xCtbC+x+i)
(8-1233)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i) (8-1234)
–对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yCtbC+y-PpsVirtualBoundariesPosY[n]/SubHeightC大于或等于0并且小于2,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n]/SubHeightC, (8-1235)
pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j)
–否则,对于任何n=0..pps_num_hor_virtual_boundaries-1如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosY[n]/SubHeightC-yCtbC-y大于0并且小于,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]/SubHeightC-1,yCtbC+y+j)
(8-1236)
–否则,以下适用:
vy+j=Clip3(0,pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j)
(8-1237)
–变量applyVirtualBoundary推导如下:
–如果以下条件[[中的一个或多个]]为真,则将applyVirtualBoundary设置为等于0:
–当前编解码树块的下边界是图片的下边界。
–[[当前编解码树块的下边界是砖块的下边界并且loop_filter_across_bricks_enabled_flag等于0。
–当前编解码树块的下边界是条带的下边界并且loop_filter_across_slices_enabled_flag等于0。
–当前编解码树块的下边界是图片的底部虚拟边界中的一个并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1]]。
–否则,将applyVirtualBoundary设置为等于1。
–根据水平亮度样点位置y和applyVirtualBoundary,在表8-22中指定重构样点偏移量r1和r2。
–…
可选地,条件“当前编解码树块的下边界是图片的下边界”可以替换为“当前编解码树块的下边界是图片的下边界或在图片外部”。
5.4实施例4
本实施例示出了在ALF分类处理中不允许使用VPDU区域以下的样点的示例(对应于第4节中的第7项)。
8.8.5.3亮度样点ALF转置和滤波器索引的推导处理
该处理的输入是:
–亮度位置(xCtb,yCtb),指定当前亮度编解码树块相对于当前图片的左上样点的左上样点,
–在自适应环路滤波处理之前的重构的亮度图片样点阵列recPictureL
该处理的输出是:
–分类滤波器索引阵列filtIdx[x][y],其中x,y=0..CtbSizeY-1,
–转置索引阵列transposeIdx[x][y],其中x,y=0..CtbSizeY-1。
–给定亮度样点的阵列recPicture内的对应亮度样点(x,y)的每一个的位置(hx+i,vy+j)(i,j=-2..5)导出如下:
–对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xCtb+x-PpsVirtualBoundariesPosX[n]大于或等于0并且小于2,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xCtb+x+i) (8-1193)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosX[n]-xCtb-x大于0并且小于6,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]-1,xCtb+x+i) (8-1194)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples-1,xCtb+x+i) (8-1195)
–对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yCtb+y-PpsVirtualBoundariesPosY[n]大于或等于0并且小于2,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yCtb+y+j) (8-1196)
–否则,对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosY[n]-yCtb-y大于0并且小于6,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]-1,yCtb+y+j) (8-1197)
–否则,以下适用:
–如果yCtb+CtbSizeY大于或等于pic_height_in_luma_samples,则以下适用:
vy+j=Clip3(0,pic_height_in_luma_samples-1,yCtb+y+j) (8-1198)
–否则,如果y小于CtbSizeY–4,则以下适用:
vy+j=Clip3(0,yCtb+CtbSizeY-5,yCtb+y+j) (8-1199)
–否则,以下适用:
vy+j=Clip3(yCtb+CtbSizeY-4,pic_height_in_luma_samples-1,yCtb+y+j)
(8-1200)
用以下顺序步骤导出分类滤波器索引阵列filtIdx和转置索引阵列transposeIdx:
1.变量filtH[x][y],filtV[x][y],filtD0[x][y]和filtD1[x][y](x,y=-2..CtbSizeY+1)导出如下:
–如果x和y都是偶数或x和y都是非偶数,则以下适用:
filtH[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx-1,vy]-recPicture[hx+1,vy]) (8-1201)
filtV[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx,vy-1]-recPicture[hx,vy+1]) (8-1202)
filtD0[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx-1,vy-1]-recPicture[hx+1,vy+1]) (8-1203)
filtD1[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx+1,vy-1]-recPicture[hx-1,vy+1]) (8-1204)
–否则,filtH[x][y],filtV[x][y],filtD0[x][y]和filtD1[x][y]被设置为等于0。
2.变量minY,maxY和ac导出如下:
–如果(y<<2)等于
Figure BDA0003471585410000611
[[(CtbSizeY-8)]]并且(yCtb+CtbSizeY)小于pic_height_in_luma_samples–1,minY被设置为等于-2,maxY被设置为等于3并且ac被设置为等于96。
–否则,如果(y<<2)等于
Figure BDA0003471585410000612
[[(CtbSizeY-4)]]并且(yCtb+CtbSizeY)小于pic_height_in_luma_samples–1,minY被设置为等于0,maxY被设置为等于5,并且ac被设置为等于96。
–否则,minY被设置为等于-2,并且maxY被设置为等于5,并且ac被设置为等于64。
3.变量varTempH1[x][y],varTempV1[x][y],varTempD01[x][y],varTempD11[x][y]和varTemp[x][y](x,y=0..(CtbSizeY-1)>>2)导出如下:
sumH[x][y]=∑ij filtH[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=-2..5,j=minY..maxY (8-1205)
sumV[x][y]=∑ij filtV[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=-2..5,j=minY..maxY (8-1206)
sumD0[x][y]=∑ij filtD0[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=-2..5,j=minY..maxY (8-1207)
sumD1[x][y]=∑ij filtD1[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=-2..5,j=minY..maxY (8-1208)
sumOfHV[x][y]=sumH[x][y]+sumV[x][y] (8-1209)
4.变量dir1[x][y],dir2[x][y]和dirS[x][y]其中x,y=0..CtbSizeY-1导出如下:
–变量hv1,hv0和dirHV导出如下:
–变量d1,d0和dirD导出如下:
5.变量avgVar[x][y](x,y=0..CtbSizeY–1)导出如下:
varTab[]={0,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4} (8-1227)
avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*ac)>>(3+BitDepthY))] (8-1228)
6.分类滤波器索引阵列filtIdx[x][y]和转置索引阵列transposeIdx[x][y](x=y=0..CtbSizeY-1)导出如下:
transposeTable[]={0,1,0,2,2,3,1,3}
transposeIdx[x][y]=transposeTable[dir1[x][y]*2+(dir2[x][y]>>1)]
filtIdx[x][y]=avgVar[x][y]
当dirS[x][y]不等于0时,filtIdx[x][y]修改如下:
filtIdx[x][y]+=(((dir1[x][y]&0x1)<<1)+dirS[x][y])*5(8-1229)
5.5实施例5
对于位于多种边界(如条带/砖块边界、360度虚拟边界)处的样点,填充处理只调用一次。并且每侧填充多少行取决于当前样点相对于边界的位置。
在一个示例中,应用了ALF两侧填充方法。可选地,此外,在对称的双侧填充方法中,当样点位于两个边界(例如,上侧的一个边界和下侧的一个边界)处时,填充的样点数量由图27所示的较近边界决定。同时,在导出分类信息时,仅使用图27中两个边界之间的4行。
图26示出了如果4行样点是两个边界的样点的填充方法的示例。在一个示例中,图26中的第一边界可以是ALF虚拟边界;图25中的第二边界可以是条带/片/砖块边界或360度虚拟边界。
5.6实施例6
8.8.5.2亮度样点的编解码树块滤波处理
该处理的输入是:
–在自适应环路滤波处理之前的重构亮度图片样点阵列recPictureL
–滤波后的重构亮度图片样点阵列alfPictureL
–亮度位置(xCTB,yCTB),其指定当前亮度编解码树块相对于当前图片的左上角样点的左上角样点。
该处理的输出是经过修改的滤波后的重构亮度图片样点阵列alfPictureL
以位置(xCtb,yCtb)和重构亮度图片样点阵列recPictureL作为输入,调用第8.8.5.3节中的滤波器索引的推导处理,并且将filtIdx[x][y]和transposeIdx[x][y](x,y=0..CtbSizeY-1)作为输出。
–给定亮度样点的阵列recPicture内的对应亮度样点(x,y)的每一个的位置(hx+i,vy+j)(i,j=-3..3)导出如下:
–对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xCtb+x-PpsVirtualBoundariesPosX[n]大于或等于0并且小于3,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xCtb+x+i)(8-1197)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosX[n]-xCtb-x大于0并且小于4,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]-1,xCtb+x+i) (8-1198)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples-1,xCtb+x+i) (8-1199)
–[[对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yCtb+y-PpsVirtualBoundariesPosY[n]大于或等于0并且小于3,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yCtb+y+j)(8-1200)
–否则,对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosY[n]-yCtb-y大于0并且小于4,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]-1,yCtb+y+j) (8-1201)]]
–[[否则,]]
Figure BDA0003471585410000641
vy+j=Clip3(0,pic_height_in_luma_samples-1,yCtb+y+j) (8-1202)
–[[变量applyVirtualBoundary导出如下:
–如果以下条件中的一个或多个为真,则将applyVirtualBoundary设置为等于0:
–当前编解码树块的下边界是图片的下边界。
–当前编解码树块的下边界是砖块的下边界,并且
loop_filter_across_bricks_enabled_flag等于0。
–当前编解码树块的下边界是条带的下边界,并且
loop_filter_across_slices_enabled_flag等于0。
–当前编解码树块的下边界是图片的底部虚拟边界中的一个,并且
pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。
–否则,将applyVirtualBoundary设置为等于1。]]
Figure BDA0003471585410000642
表8-24–根据水平亮度样点位置y和[[applyVirtualBoundary]]
Figure BDA0003471585410000643
Figure BDA0003471585410000644
r1,r2,和r3的规范
Figure BDA0003471585410000645
Figure BDA0003471585410000651
8.8.5.3亮度样点ALF转置和滤波器索引的推导处理
该处理的输入是:
–亮度位置(xCtb,yCtb),指定当前亮度编解码树块相对于当前图片的左上样点的左上样点,
–在自适应环路滤波处理之前的重构的亮度图片样点阵列recPictureL。
该处理的输出是:
–分类滤波器索引阵列filtIdx[x][y],其中x,y=0..CtbSizeY-1,
–转置索引阵列transposeIdx[x][y],其中x,y=0..CtbSizeY-1。
给定亮度样点的阵列recPicture内的对应亮度样点(x,y)的每一个的位置(hx+i,vy+j)(i,j=-2..5)
导出如下:
–对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xCtb+x-PpsVirtualBoundariesPosX[n]大于或等于0并且小于2,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xCtb+x+i) (8-1208)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosX[n]-xCtb-x大于0并且小于6,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]-1,xCtb+x+i) (8-1209)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples-1,xCtb+x+i) (8-1210)
–[[如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yCtb+y-PpsVirtualBoundariesPosY[n]大于或等于0并且小于2对于任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yCtb+y+j)(8-1211)
–否则,对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosY[n]-yCtb-y大于0并且小于6,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]-1,yCtb+y+j) (8-1212)
–否则,以下适用:
–如果yCtb+CtbSizeY大于或等于pic_height_in_luma_samples,则以下适用:
vy+j=Clip3(0,pic_height_in_luma_samples-1,yCtb+y+j) (8-1213)
–否则,如果y小于CtbSizeY-4,则以下适用:
vy+j=Clip3(0,yCtb+CtbSizeY-5,yCtb+y+j) (8-1214)
–否则,以下适用:
vy+j=Clip3(yCtb+CtbSizeY-4,pic_height_in_luma_samples-1,yCtb+y+j)(8-1215)]]
Figure BDA0003471585410000661
用以下顺序步骤导出分类滤波器索引阵列filtIdx和转置索引阵列transposeIdx:
1.变量filtH[x][y],filtV[x][y],filtD0[x][y]和filtD1[x][y](x,y=-2..CtbSizeY+1)
导出如下:
–如果x和y都是偶数或x和y都是非偶数,则以下适用:
filtH[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx-1,vy]- (8-1216)recPicture[hx+1,vy])
filtV[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx,vy-1]- (8-1217)recPicture[hx,vy+1])
filtD0[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx-1,vy-1]- (8-1218)recPicture[hx+1,vy+1])
filtD1[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx+1,vy-1]- (8-1219)recPicture[hx-1,vy+1])
–否则,filtH[x][y],filtV[x][y],filtD0[x][y]和filtD1[x][y]被设置为等于0。
2.变量minY,maxY和ac导出如下:
–如果(y<<2)等于(CtbSizeY-8)并且(yCtb+CtbSizeY)小于pic_height_in_luma_samples-1,将minY设置为等于-2,将maxY设置为等于3并且将ac设置为等于96。
–否则,如果(y<<2)等于(CtbSizeY-4)并且(yCtb+CtbSizeY)小于pic_height_in_luma_samples-1,将minY设置为等于0,将maxY设置为等于5并且将ac设置为等于96。
Figure BDA0003471585410000671
Figure BDA0003471585410000681
–[[否则,将minY设置为等于-2并且将maxY设置为等于5并且将ac设置为等于64.]]
3.变量sumH[x][y],sumV[x][y],sumD0[x][y],sumD1[x][y]和sumOfHV[x][y](x,y=0..(CtbSizeY-1)>>2)导出如下:
sumH[x][y]=∑ij filtH[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=-2..5,j=minY..maxY (8-1220)
sumV[x][y]=∑ij filtV[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=-2..5,j=minY..maxY (8-1221)
sumD0[x][y]=∑ij filtD0[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=-2..5,j=minY..maxY (8-1222)
sumD1[x][y]=∑ij filtD1[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=-2..5,j=minY..maxY (8-1223)
sumOfHV[x][y]=sumH[x][y]+sumV[x][y] (8-1224)
8.8.5.4色度样点的编解码树块滤波处理
该处理的输入是:
–在自适应环路滤波处理之前重构的色度图片样点阵列recPicture,
–滤波后的重构色度图片样点阵列alfPicture,
–色度位置(xCtbC,
yCtbC),其指定当前色度编解码树块相对于当前图片的左上角样点的左上角样点。
该处理的输出是修改后的滤波后的重构色度图片样点阵列alfPicture。
当前色度编解码树块的宽度和高度ctbWidthC和ctbHeightC导出如下:
ctbWidthC=CtbSizeY/SubWidthC (8-1245)
ctbHeightC=CtbSizeY/SubHeightC (8-1246)
为了推导滤波后的重构色度样点alfPicture[x][y],对当前色度编解码树块内的每个重构色度样点recPicture[x][y]进行如下滤波,其中x=0..CTBWidthC-1,y=0..CTBHeightC-1:
–给定的色度样点阵列recPicture内的每个对应的色度样点(x,y)的位置(hx+i,vy+j)导出如下,其中i,j=-2..2:
–对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xCtbC+x-PpsVirtualBoundariesPosX[n]/SubWidthC大于或等于0并且小于2,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n]/SubWidthC, (8-1247)
pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosX[n]/SubWidthC-xCtbC-x大于0并且小于3,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]/SubWidthC-1,xCtbC+x+i) (8-1248)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i) (8-1249)
–[[对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yCtbC+y-PpsVirtualBoundariesPosY[n]/SubHeightC大于或等于0并且小于2,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n]/SubHeightC, (8-1250)
pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j)
–否则,对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且PpsVirtualBoundariesPosY[n]/SubHeightC-yCtbC-y大于0并且小于3,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]/SubHeightC-1,yCtbC+y+j) (8-1251)
–否则,]]
Figure BDA0003471585410000691
vy+j=Clip3(0,pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j) (8-1252)
–[[变量applyVirtualBoundary导出如下:
–如果以下条件中的一个或多个为真,则将applyVirtualBoundary设置为等于0:
–当前编解码树块的下边界是图片的下边界。
–当前编解码树块的下边界是砖块的下边界,并且loop_filter_across_bricks_enabled_flag等于0。
–当前编解码树块的下边界是条带的下边界,并且loop_filter_across_slices_enabled_flag等于0。
–当前编解码树块的下边界是图片的底部虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。
–否则,将applyVirtualBoundary设置为等于1。]]
–通过调用8.8.5.5中指定的垂直边界位置推导处理(yCtb等于yCtb,并且y等于y)来导出变量boundaryPos1和boundaryPos2。
–将变量boundaryPos1设置为等于boundaryPos1/SubWidthC。
–将变量boundaryPos2设置为等于boundaryPos2/SubWidthC。
–在表8-24中根据水平亮度样点位置y和applyVirtualBoundary指定重构样点偏移量r1,r2和r3。
–变量curr导出如下:
curr=recPicture[hx,vy] (8-1253)
–色度滤波器系数的阵列f[j]和色度剪切值的阵列c[j]导出如下,其中j=0..5:
f[j]=AlfCoeffC[slice_alf_aps_id_chroma][j] (8-1254)
c[j]=AlfClipC[slice_alf_aps_id_chroma][j] (8-1255)
–变量sum导出如下:
Figure BDA0003471585410000692
Figure BDA0003471585410000701
sum=curr+(sum+64)>>7) (8-1257)–修改的滤波后的重构色度图片样点alfPicture[xCtbC+x][yCtbC+y]导出如下:
–如果pcm_loop_filter_disabled_flag和pcm_flag[(xCtbC+x)*SubWidthC][(yCtbC+y)*SubHeightC]都等于1,则以下适用:
alfPicture[xCtbC+x][yCtbC+y]=recPictureL[hx,vy] (8-1258)
–否则(pcm_loop_filter_disabled_flag等于0或pcm_flag[x][y]is equal 0),则以下适用:
alfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1<<BitDepthC)-1,sum) (8-1259)
[[表8-25–根据水平亮度样点位置y和applyVirtualBoundary的r1和r2的规范]]
Figure BDA0003471585410000702
Figure BDA0003471585410000704
–根据水平亮度样点位置y和
Figure BDA0003471585410000705
的r1和r2的规范
Figure BDA0003471585410000703
8.8.5.5亮度样点的垂直位置推导处理
Figure BDA0003471585410000711
Figure BDA0003471585410000721
5.7实施例7
对于CTU,它可能不与任何边界重合(例如,图片/条带/片/砖块/子图片边界)。然而,它可能需要访问当前单元之外的样点(例如,图片/条带/片/砖块/子图片)。如果跨越条带边界的滤波被禁用(例如,loop_filter_across_slices_enabled_flag为假),则需要在当前单元之外填充样点。
例如,对于图28中的样点2801(以亮度样点为例),可以如图29那样填充ALF滤波处理中使用的样点。
5.8实施例8
在本实施例中,应用以下主要思想:
关于启用ALF虚拟边界:
-对于不在图片的最后一个CTU行中的CTU(例如,CTU的下边界不是图片的下边界或者超过图片的下边界),ALF虚拟边界被启用,即一个CTU可以被划分成两个或多个部分,并且一个部分中的样点不允许使用另一部分中的样点。
-对于位于图片的最后一个CTU行中的CTU(例如,CTU的下边界是图片的下边界或超过图片的下边界),ALF虚拟边界被启用,即一个CTU可以被划分为两个或多个部分,并且一个部分中的样点不允许使用另一部分中的样点。
关于分类处理中边界的填充(包括ALF虚拟边界、条带/片/砖块/子图片边界、“360虚拟边界”):
对于一个(或多种)边界处的样点,当不允许使用跨越边界的临近样点时,执行单侧填充来填充这些临近样点。
关于ALF滤波处理中边界的填充(包括ALF虚拟边界、条带/片/砖块/子图片边界、“360虚拟边界”):
-对于一个(或多种)边界(条带/片/砖块/子图片边界或与CTU边界重合的“360虚拟边界”)处的样点,当不允许使用跨越边界的临近样点时,执行两侧填充来填充这些临近样点。
-对于一个(或多种)边界(图片边界或与CTU边界不重合的“360虚拟边界”处的样点,当不允许使用跨越边界的临近样点时,执行单侧填充来填充这些临近样点。
8.8.5.2亮度样点的编解码树块滤波处理
该处理的输入是:
–在自适应环路滤波处理之前的重构亮度图片样点阵列recPictureL
–滤波后的重构亮度图片样点阵列alfPictureL
–亮度位置(xCTB,yCTB),其指定当前亮度编解码树块相对于当前图片的左上角样点的左上角样点。
该处理的输出是经过修改的滤波后的重构亮度图片样点阵列alfPictureL
以位置(xCtb,yCtb)和重构亮度图片样点阵列recPictureL作为输入,调用第8.8.5.3节中的滤波器索引的推导处理,并且将filtIdx[x][y]和transposeIdx[x][y](x,y=0..CtbSizeY-1)作为输出。
对于滤波后的重构亮度样点alfPictureL[x][y]的推导,对当前亮度编解码树块内的每个重构亮度样点recPictureL[x][y](x,y=0..CtbSizeY–1)滤波如下:
–与filtIdx[x][y]指定的滤波器相对应的亮度滤波器系数的阵列f[j]和亮度剪切值的阵列c[j]导出如下,其中j=0..11:
–如果AlfCtbFiltSetIdxY[xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]小于16,则以下适用:
i=AlfCtbFiltSetIdxY[xCtb>>Log2CtbSize][yCtb>>Log2CtbSize] (8-1187)
f[j]=AlfFixFiltCoeff[AlfClassToFiltMap[i][filtIdx[x][y]]][j] (8-1188)
c[j]=2BitdepthY (8-1189)
–否则(AlfCtbFiltSetIdxY[xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]大于或等于16,则以下适用:
i=slice_alf_aps_id_luma[AlfCtbFiltSetIdxY[xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]-16] (8-1190)
f[j]=AlfCoeffL[i][filtIdx[x][y]][j] (8-1191)
c[j]=AlfClipL[i][filtIdx[x][y]][j] (8-1192)
–亮度滤波器系数和剪切值索引idx取决于transposeIdx[x][y]导出如下:
–如果transposeIndex[x][y]等于1,则以下适用:
idx[]={9,4,10,8,1,5,11,7,3,0,2,6} (8-1193)
–否则,如果transposeIndex[x][y]等于2,则以下适用:
idx[]={0,3,2,1,8,7,6,5,4,9,10,11} (8-1194)
–否则,如果transposeIndex[x][y]等于3,则以下适用:
idx[]={9,8,10,4,3,7,11,5,1,0,2,6} (8-1195)
–否则,以下适用:
idx[]={0,1,2,3,4,5,6,7,8,9,10,11} (8-1196)–给定亮度样点的阵列recPicture内的对应亮度样点中的每一个的位置(hx+i,vy+j)(i,j=-3..3)导出如下:
–对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1
Figure BDA0003471585410000741
Figure BDA0003471585410000742
并且xCtb+x-PpsVirtualBoundariesPosX[n]大于或等于0并且小于3,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xCtb+x+i)(8-1197)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1
Figure BDA0003471585410000743
Figure BDA0003471585410000744
并且PpsVirtualBoundariesPosX[n]-xCtb-x大于0并且小于4,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]-1,xCtb+x+i) (8-1198)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples-1,xCtb+x+i) (8-1199)
–[[如果包含位于位置(hx,vy)处的亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[SubPicIdx]等于0,则以下适用:
hx+i=Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,hx+i) (8-1184)]]
–对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1
Figure BDA0003471585410000745
Figure BDA0003471585410000746
并且yCtb+y-PpsVirtualBoundariesPosY[n]大于或等于0并且小于3,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yCtb+y+j)
(8-1200)
–否则,对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1
Figure BDA0003471585410000751
Figure BDA0003471585410000752
并且PpsVirtualBoundariesPosY[n]-yCtb-y大于0并且小于4,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]-1,yCtb+y+j) (8-1201)
–否则,以下适用:
vy+j=Clip3(0,pic_height_in_luma_samples-1,yCtb+y+j) (8-1202)
–[[如果包含位于位置(hx,vy)处的亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[SubPicIdx]等于0,则以下适用:
vy+j=Clip3(SubPicTopBoundaryPos,SubPicBotBoundaryPos,vy+j) (8-1184)
–变量applyVirtualBoundary导出如下:
–如果以下条件中的一个或多个为真,则将applyVirtualBoundary设置为等于0:
–当前编解码树块的下边界是图片的下边界。
–当前编解码树块的下边界是砖块的下边界,并且loop_filter_across_bricks_enabled_flag等于0。
–当前编解码树块的下边界是条带的下边界,并且loop_filter_across_slices_enabled_flag等于0。
–当前编解码树块的下边界是子图片的下边界,并且包含位于位置(hx,vy)处的亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[SubPicIdx]等于0。
–当前编解码树块的下边界是图片的底部虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。
–否则,将applyVirtualBoundary设置为等于1。]]
Figure BDA0003471585410000753
-在表8-24中根据水平亮度样点位置y和
Figure BDA0003471585410000754
[[applyVirtualBoundary]]指定重构样点偏移量r1,r2和r3。
Figure BDA0003471585410000755
–变量curr导出如下:
curr=recPictureL[hx,vy] (8-1203)
–变量sum导出如下:
Figure BDA0003471585410000761
sum=curr+((sum+64)>>7) (8-1205)
–修改的滤波后的重构亮度图片样点alfPictureL[xCtb+x][yCtb+y]导出如下:
–如果pcm_loop_filter_disabled_flag并且pcm_flag[xCtb+x][yCtb+y]都等于1,则以下适用:
alfPictureL[xCtb+x][yCtb+y]=recPictureL[hx,vy] (8-1206)
–否则(pcm_loop_filter_disabled_flag等于0或pcm_flag[x][y]等于0),则以下适用:
alfPictureL[xCtb+x][yCtb+y]=Clip3(0,(1<<BitDepthY)-1,sum) (8-1207)
表8-24–根据水平亮度样点位置y,
Figure BDA0003471585410000774
[[和applyVirtualBoundary]]的r1,r2,和r3的规范
Figure BDA0003471585410000771
Figure BDA0003471585410000772
Figure BDA0003471585410000775
Figure BDA0003471585410000776
8.8.5.3亮度样点ALF转置和滤波器索引的推导处理
该处理的输入是:
–亮度位置(xCtb,yCtb),指定当前亮度编解码树块相对于当前图片的左上样点的左上样点,
–在自适应环路滤波处理之前的重构的亮度图片样点阵列recPictureL
该处理的输出是:
–分类滤波器索引阵列filtIdx[x][y],其中x,y=0..CtbSizeY-1,
–转置索引阵列transposeIdx[x][y],其中x,y=0..CtbSizeY-1。
给定亮度样点的阵列recPicture内的对应亮度样点(x,y)的每一个的位置(hx+i,vy+j)(i,j=-2..5)
导出如下:
–对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1
Figure BDA0003471585410000773
Figure BDA0003471585410000781
并且xCtb+x-PpsVirtualBoundariesPosX[n]大于或等于0并且小于2,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xCtb+x+i) (8-1208)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1
Figure BDA0003471585410000782
Figure BDA0003471585410000783
并且PpsVirtualBoundariesPosX[n]-xCtb-x大于0并且小于6,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]-1,xCtb+x+i) (8-1209)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples-1,xCtb+x+i) (8-1210)
–[[如果包含位于位置(hx,vy)处的亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[SubPicIdx]等于0,则以下适用:
hx+i=Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,hx+i) (8-1184)]]
–对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1
Figure BDA0003471585410000784
Figure BDA0003471585410000785
并且yCtb+y-PpsVirtualBoundariesPosY[n]大于或等于0并且小于2,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yCtb+y+j)(8-1211)
–否则,对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1
Figure BDA0003471585410000786
Figure BDA0003471585410000787
并且PpsVirtualBoundariesPosY[n]-yCtb-y大于0并且小于6,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]-1,yCtb+y+j) (8-1212)
–否则,以下适用:
–如果yCtb+CtbSizeY大于或等于pic_height_in_luma_samples,则以下适用:
vy+j=Clip3(0,pic_height_in_luma_samples-1,yCtb+y+j) (8-1213)
–[[否则,如果y小于CtbSizeY-4,则以下适用:
vy+j=Clip3(0,yCtb+CtbSizeY-5,yCtb+y+j) (8-1214)
–否则,以下适用:
vy+j=Clip3(yCtb+CtbSizeY-4,pic_height_in_luma_samples-1,yCtb+y+j) (8-1215)
–如果包含位于位置(hx,vy)处的亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[SubPicIdx]等于0,则以下适用:
vy+j=Clip3(SubPicTopBoundaryPos,SubPicBotBoundaryPos,vy+j) (8-1184)]]
Figure BDA0003471585410000791
用以下顺序步骤导出分类滤波器索引阵列filtIdx和转置索引阵列transposeIdx:
1.变量filtH[x][y],filtV[x][y],filtD0[x][y]和filtD1[x][y](x,y=-2..CtbSizeY+1)
导出如下:
–如果x和y都是偶数或x和y都是非偶数,则以下适用:
filtH[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx-1,vy]- (8-1216)recPicture[hx+1,vy])
filtV[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx,vy-1]- (8-1217)recPicture[hx,vy+1])
filtD0[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx-1,vy-1]- (8-1218)recPicture[hx+1,vy+1])
filtD1[x][y]=Abs((recPicture[hx,vy]<<1)-recPicture[hx+1,vy-1]- (8-1219)recPicture[hx-1,vy+1])
–否则,filtH[x][y],filtV[x][y],filtD0[x][y]和filtD1[x][y]被设置为等于0。
2.[[变量minY,maxY和ac导出如下:
–如果(y<<2)等于(CtbSizeY-8)并且(yCtb+CtbSizeY)小于pic_height_in_luma_samples-1,则将minY设置为等于-2,将maxY设置为等于3并且将ac设置为等于96。
–否则,如果(y<<2)等于(CtbSizeY-4)并且(yCtb+CtbSizeY)小于pic_height_in_luma_samples-1,将minY设置为等于0,将maxY设置为等于5并且将ac设置为等于96。]]
3.变量sumH[x][y],sumV[x][y],sumD0[x][y],sumD1[x][y]和sumOfHV[x][y](x,y=0..(CtbSizeY-1)>>2)导出如下:
Figure BDA0003471585410000792
Figure BDA0003471585410000801
Figure BDA0003471585410000807
Figure BDA0003471585410000802
sumH[x][y]=Sij filtH[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=
Figure BDA0003471585410000803
[[-2..5]],j=minY..maxY (8-1220)
sumV[x][y]=∑ij filtV[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=
Figure BDA0003471585410000804
[[-2..5]],j=minY..maxY (8-1221)
sumD0[x][y]=∑ij filtD0[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=
Figure BDA0003471585410000805
[[-2..5]],j=minY..maxY (8-1222)
sumD1[x][y]=∑ij filtD1[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb]其中i=
Figure BDA0003471585410000806
[[-2..5]],j=minY..maxY (8-1223)
sumOfHV[x][y]=sumH[x][y]+sumV[x][y] (8-1224)
4.变量dir1[x][y],dir2[x][y]和dirS[x][y](x,y=0..CtbSizeY-1)导出如下:
–变量hv1,hv0和dirHV导出如下:
–如果sumV[x>>2][y>>2]大于sumH[x>>2][y>>2],则以下适用:
hv1=sumV[x>>2][y>>2] (8-1225)
hv0=sumH[x>>2][y>>2] (8-1226)
dirHV=1(8-1227)
–否则,以下适用:
hv1=sumH[x>>2][y>>2] (8-1228)
hv0=sumV[x>>2][y>>2] (8-1229)
dirHV=3 (8-1230)
–变量d1,d0和dirD导出如下:
–如果sumD0[x>>2][y>>2]大于sumD1[x>>2][y>>2],则以下适用:
d1=sumD0[x>>2][y>>2] (8-1231)
d0=sumD1[x>>2][y>>2] (8-1232)
dirD=0 (8-1233)
–否则,以下适用:
d1=sumD1[x>>2][y>>2] (8-1234)
d0=sumD0[x>>2][y>>2] (8-1235)
dirD=2 (8-1236)
–变量hvd1,hvd0导出如下:
hvd1=(d1*hv0>hv1*d0)?d1:hv1 (8-1237)
hvd0=(d1*hv0>hv1*d0)?d0:hv0 (8-1238)
–变量dirS[x][y],dir1[x][y]和dir2[x][y]导出如下:
dir1[x][y]=(d1*hv0>hv1*d0)?dirD:dirHV (8-1239)
dir2[x][y]=(d1*hv0>hv1*d0)?dirHV:dirD (8-1240)
dirS[x][y]=(hvd1>2*hvd0)?1:((hvd1*2>9*hvd0)?2:0) (8-1241)
5.变量avgVar[x][y](x,y=0..CtbSizeY–1)导出如下:
varTab[]={0,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4} (8-1242)
avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*ac)>>(3+BitDepthY))] (8-1243)
6.分类滤波器索引阵列filtIdx[x][y]和转置索引阵列transposeIdx[x][y](x=y=0..CtbSizeY-1)导出如下:
transposeTable[]={0,1,0,2,2,3,1,3}
transposeIdx[x][y]=transposeTable[dir1[x][y]*2+(dir2[x][y]>>1)]
filtIdx[x][y]=avgVar[x][y]
当dirS[x][y]不等于0时,filtIdx[x][y]修改如下:
filtIdx[x][y]+=(((dir1[x][y]&0x1)<<1)+dirS[x][y])*5 (8-1244)
8.8.5.4色度样点的编解码树块滤波处理
该处理的输入是:
–在自适应环路滤波处理之前重构的色度图片样点阵列recPicture,
–滤波后的重构色度图片样点阵列alfPicture,
–色度位置(xCtbC,
yCtbC),其指定当前色度编解码树块相对于当前图片的左上角样点的左上角样点。
该处理的输出是修改后的滤波后的重构色度图片样点阵列alfPicture。
当前色度编解码树块的宽度和高度ctbWidthC和ctbHeightC导出如下:
ctbWidthC=CtbSizeY/SubWidthC (8-1245)
ctbHeightC=CtbSizeY/SubHeightC (8-1246)
为了推导滤波后的重构色度样点alfPicture[x][y],对当前色度编解码树块内的每个重构色度样点rec Picture[x][y]进行如下滤波,其中x=0..CTBWidthC-1,y=0..CTBHeightC-1:
–给定的色度样点阵列recPicture内的每个对应的色度样点(x,y)的位置(hx+i,vy+j)导出如下,其中i,j=-2..2:
–对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,
Figure BDA0003471585410000821
并且xCtbC+x-PpsVirtualBoundariesPosX[n]/SubWidthC大于或等于0并且小于2,则以下适用:
hx+i=Clip3(PpsVirtualBoundariesPosX[n]/SubWidthC, (8-1247)
pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i)
–否则,对于任何n=0..pps_num_ver_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,
Figure BDA0003471585410000822
并且PpsVirtualBoundariesPosX[n]/SubWidthC-xCtbC-x大于0并且小于3,则以下适用:
hx+i=Clip3(0,PpsVirtualBoundariesPosX[n]/SubWidthC-1,xCtbC+x+i) (8-1248)
–否则,以下适用:
hx+i=Clip3(0,pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i) (8-1249)
–[[如果包含位于位置(hx,vy)处的亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[SubPicIdx]等于0,则以下适用:
hx+i=Clip3(SubPicLeftBoundaryPos/SubWidthC,SubPicRightBoundaryPos/SubWidthC,hx+i) (8-1184)]]
–对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,
Figure BDA0003471585410000823
并且yCtbC+y-PpsVirtualBoundariesPosY[n]/SubHeightC大于或等于0并且小于2,则以下适用:
vy+j=Clip3(PpsVirtualBoundariesPosY[n]/SubHeightC, (8-1250)
pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j)
–否则,对于任何n=0..pps_num_hor_virtual_boundaries–1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,
Figure BDA0003471585410000824
并且PpsVirtualBoundariesPosY[n]/SubHeightC-yCtbC-y大于0并且小于3,则以下适用:
vy+j=Clip3(0,PpsVirtualBoundariesPosY[n]/SubHeightC-1,yCtbC+y+j) (8-1251)
–否则,以下适用:
vy+j=Clip3(0,pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j) (8-1252)
–[[如果包含位于位置(hx,vy)处的亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[SubPicIdx]等于0,则以下适用:
vy+j=Clip3(SubPicTopBoundaryPos/SubWidthC,SubPicBotBoundaryPos/SubWidthC,vy+j) (8-1184)
–变量applyVirtualBoundary导出如下:
–如果以下条件中的一个或多个为真,则将applyVirtualBoundary设置为等于0:
–当前编解码树块的下边界是图片的下边界。
–当前编解码树块的下边界是砖块的下边界,并且loop_filter_across_bricks_enabled_flag等于0。
–当前编解码树块的下边界是条带的下边界,并且loop_filter_across_slices_enabled_flag等于0。
–当前编解码树块的下边界是子图片的下边界,并且包含位于位置(hx,vy)处的亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[SubPicIdx]等于0。
–当前编解码树块的下边界是图片的底部虚拟边界中的一个,并且
pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。
–否则,将applyVirtualBoundary设置为等于1。]]
Figure BDA0003471585410000831
–在表8-27中根据水平亮度样点位置y,
Figure BDA0003471585410000834
[[和 applyVirtualBoundary]]指定重构样点偏移量r1和r2。
Figure BDA0003471585410000832
–变量curr导出如下:
curr=recPicture[hx,vy] (8-1253)
–色度滤波器系数的阵列f[j]和色度剪切值的阵列c[j]导出如下,其中j=0..5:
f[j]=AlfCoeffC[slice_alf_aps_id_chroma][j] (8-1254)
c[j]=AlfClipC[slice_alf_aps_id_chroma][j] (8-1255)
–变量sum导出如下:
Figure BDA0003471585410000833
Figure BDA0003471585410000844
sum=curr+(sum+64)>>7) (8-1257)
–修改的滤波后的重构色度图片样点alfPicture[xCtbC+x][yCtbC+y]导出如下:
–如果pcm_loop_filter_disabled_flag和pcm_flag[(xCtbC+x)*SubWidthC][(yCtbC+y)*SubHeightC]都等于1,则以下适用:
alfPicture[xCtbC+x][yCtbC+y]=recPictureL[hx,vy] (8-1258)
–否则(pcm_loop_filter_disabled_flag等于0或pcm_flag[x][y]等于0),则以下适用:
alfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1<<BitDepthC)-1,sum) (8-1259)
表8-27根据水平亮度样点位置y,
Figure BDA0003471585410000845
[[和applyVirtualBoundary]]的r1和r2的规范
Figure BDA0003471585410000841
Figure BDA0003471585410000842
Figure BDA0003471585410000846
Figure BDA0003471585410000847
8.8.5.5样点的ALF边界位置推导处理
Figure BDA0003471585410000843
Figure BDA0003471585410000851
Figure BDA0003471585410000861
上述实施例中使用的特定值-128可以替换为其他值,例如-K,其中K大于或不小于从CTU下边界移动的行数(例如,K=-5)。
可选地,基于PpsVirtualBoundariesPosY[n]在1到Ceil(pic_height_in_luma_samples÷8)-1(包括1和Ceil(pic_height_in_luma_samples÷8)-1)的范围内,可以进一步移除“PpsVirtualBoundariesPosY[n]不等于pic_height_in_luma_samples–1或0”的条件检查。
可选地,如果位于视频单元边界处,则可以使用一个标志来标记是否需要以不同的方式处理每个样点。
图22是视频处理装置2200的框图。装置2200可用于实现本文所述的一种或多种方法。装置2200可以体现在智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置2200可以包括一个或多个处理器2202、一个或多个存储器2204和视频处理硬件2206。处理器2202可以被配置成实现本文档中描述的一个或多个方法。存储器(多个存储器)2204可用于存储用于实现本文所述的方法和技术的数据和代码。视频处理硬件2206可用于在硬件电路中实现本文档中描述的一些技术。在一些实施例中,视频处理硬件2206可以在处理器2202(例如,图形处理器单元)的内部或部分地在处理器2202的内部。
在一些实施例中,可以使用如关于图22所述的在硬件平台上实现的装置来实现视频编解码方法。
图23是视频处理的示例方法2300的流程图。该方法包括:为视频的当前视频块和当前视频块的比特流之间的转换,确定(2302)在转换期间要使用的一个或多个插值滤波器,其中,一个或多个插值滤波器来自视频的多个插值滤波器;以及使用所述一个或多个插值滤波器执行(2304)转换。
使用解决方案列表进一步描述本文中描述的各种解决方案和实施例。
第4节第1项提供了以下解决方案的附加示例。
1.一种视频处理方法,包括:在视频图片的视频块和其比特流之间执行转换,其中使用编解码树块的逻辑分组来处理视频块,其中,基于底部编解码树块的下边界是否在视频图片的下边界之外来处理编解码树块。
2.根据解决方案1所述的方法,其中,处理编解码树块包括:通过使用编解码树块内的样点对编解码树块的样点值执行自适应环路滤波。
3.根据解决方案1所述的方法,其中,处理编解码树块包括:通过禁用根据虚拟边界将编解码树块划分成两部分来对编解码树块的样点值执行自适应环路滤波。
第4节第2项提供了以下解决方案的附加示例。
4.一种视频处理方法,包括:基于当前视频块的编解码树块的条件,确定环路滤波期间的虚拟样点的使用状态;以及根据虚拟样点的使用状态,在视频块和视频块的比特流之间执行转换。
5.根据解决方案4所述的方法,其中,使用状态的逻辑真值指示当前视频块被虚拟边界至少划分为两部分,并且不允许一个部分中的滤波样点使用来自另一部分的信息。
6.根据解决方案4所述的方法,其中,使用状态的逻辑真值指示环路滤波期间使用虚拟样点,并且其中,使用当前视频块的重构样点的修改值来执行环路滤波。
7.根据解决方案4所述的方法,其中,使用状态的逻辑假值指示允许块中的滤波样点使用同一块中的信息。
8.根据解决方案4所述的方法,其中,使用状态的逻辑真值指示在不进一步修改重构样点的情况下对当前视频块的重构样点执行环路滤波,。
9.根据解决方案4-8中任一项所述的方法,其中条件指定由于编解码树块具有特定尺寸而将使用状态设置为逻辑假值。
10.根据解决方案4-8中任一种所述的方法,其中条件指定由于编解码树块的尺寸大于特定尺寸而将使用状态设置为逻辑假值。
11.根据解决方案4-8中任一种所述的方法,树块的尺寸小于特定尺寸。
第4节第3项提供了以下解决方案的附加示例。
12.根据解决方案5所述的方法,其中条件取决于当前视频块的下边界是否是小于视频图片的视频单元的下边界,或当前视频块的下边界是否是虚拟边界。
13.根据解决方案12所述的方法,其中条件取决于当前视频块的下边界是否是条带、或片、或砖块边界的下边界。
14.根据解决方案12所述的方法,其中条件指定当当前视频块的下边界是条带、或片、或砖块边界的下边界时,将使用状态设置为逻辑真值。
15.根据解决方案4-12所述的方法,其中条件指定当当前视频块的下边界是图片边界的下边界或在图片边界的下边界之外时,将使用状态设置为逻辑假值。
第4节第4项提供了以下解决方案的附加示例。
16.一种视频处理方法,包括:在逻辑上分组为一个或多个视频条带或视频砖块的视频图片与视频图片的比特流之间的转换期间,确定在自适应环路滤波处理中禁用对另一个条带或砖块中的样点的使用;以及根据确定执行转换。
第4节第5项提供了以下解决方案的附加示例。
17.一种视频处理方法,包括:在视频图片的当前视频块和当前视频块的比特流之间的转换期间,确定当前视频块包括位于视频图片的视频单元的边界处的样点;以及基于确定执行转换,其中,执行转换包括:使用对于视频图片中的所有边界类型都相同的统一方法来生成用于环路滤波处理的虚拟样点。
18.根据解决方案17所述的方法,其中,所述视频单元是条带、或片、或360度视频。
19.根据解决方案17所述的方法,其中,环路滤波包括自适应环路滤波。
20.根据解决方案17-19中任一项所述的方法,其中统一方法是两侧填充法。
21.根据解决方案17-20中任一项所述的方法,其中统一方法是:当不允许访问第一行以下的样点、并且使用填充来为第一行以下的样点生成虚拟样点时,则访问第二行以上的样点也被设置为不允许,并且使用填充来为第二行以上的样点生成虚拟样点。
22.根据解决方案17-20中任一项所述的方法,其中统一方法是:当不允许访问第一行以上的样点、并且使用填充来为第一行以上的样点生成虚拟样点时,则访问第二行以下的样点也被设置为不允许,并且使用填充来为第二行以下的样点生成虚拟样点。
23.根据解决方案21-22中任一项所述的方法,其中第一行和待滤波样点所在的当前行之间的距离以及第二行和第一行之间的距离相等。
第4节第6项提供了以下解决方案的附加示例。
24.一种视频处理方法,包括:在视频图片的当前视频块与其比特流之间的转换期间,确定在转换期间应用可用于该视频图片的多个自适应环路滤波器(ALF)样点选择方法中的一种;以及通过应用多个ALF样点选择方法中的一种来执行转换。
25.根据解决方案24所述的方法,其中,多个ALF样点选择方法包括第一种方法,其中在转换期间对当前视频块应用在环路滤波器之前选择的样点;以及第一种方法,其中在转换期间对当前视频块应用在环路滤波器之后选择的样点。
第4节第7项提供了以下解决方案的附加示例。
26.一种视频处理方法,包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作,其中,边界规则禁止使用跨越视频图片的虚拟管道数据单元(VPDU)的样点;以及使用环路滤波操作的结果执行转换。
27.根据解决方案26所述的方法,其中VPDU对应于具有固定尺寸的视频图片的区域。
28.根据解决方案26-27中任一项所述的方法,其中边界规则还规定使用虚拟样点代替禁用样点进行环路滤波。
29.根据解决方案28所述的方法,其中通过填充生成虚拟样点。
第4节第8项提供了以下解决方案的附加示例。
30.一种视频处理方法,包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作;其中,边界规则规定对于跨越视频单元边界的当前视频块的位置,使用未使用填充生成的样点;以及使用环路滤波操作的结果执行转换。
31.根据解决方案30所述的方法,其中使用两侧填充技术生成样点。
32.根据解决方案30所述的方法,其中环路滤波操作包括在环路滤波操作期间对对称定位的样点使用相同的虚拟样点生成技术。
33.根据解决方案30-32中任一项所述的方法,其中对当前视频块的样点进行的环路滤波操作包括:在应用环路滤波之前对当前视频块的样点进行整形。
第4节第9项提供了以下解决方案的附加示例。
34.一种视频处理方法,包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作,其中,边界规则规定为环路滤波操作选择滤波器,该滤波器的维度使得在环路滤波期间使用的当前视频块的样点不跨越视频图片的视频单元的边界;以及使用环路滤波操作的结果来执行转换。
第4节第10项提供了以下解决方案的附加示例。
35.一种视频处理方法,包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作,其中,边界规则规定基于环路滤波是否需要填充的样点,来为环路滤波操作选择剪切参数或滤波器系数;以及使用环路滤波操作的结果来执行转换。
36.根据解决方案35所述的方法,其中剪切参数或滤波器系数包括在比特流中。
第4节第11项提供了以下解决方案的附加示例。
37.一种视频处理方法,包括:在当前视频块和当前视频块的比特流之间的转换期间,基于边界规则对视频图片的当前视频块的样点执行环路滤波操作,其中,边界规则取决于当前视频块的颜色分量标识;以及使用环路滤波操作的结果执行转换。
38.根据解决方案37所述的方法,其中对于亮度和/或不同的颜色分量,边界规则是不同的。
39.根据解决方案1-38中任一项所述的方法,其中转换包括将当前视频块编码成比特流。
40.根据解决方案1-38中任一项所述的方法,其中转换包括解码比特流以生成当前视频块的样点值。
41.一种视频编码装置,包括处理器,处理器被配置成实现解决方案1-38中的任一项或多项中所述的方法。
42.一种视频解码装置,包括处理器,处理器被配置成实现解决方案1-38中的任一项或多项中所述的方法。
43.一种计算机可读介质,其上存储有代码,当处理器执行代码时,该代码使处理器实现解决方案1-38中任一项或多项中所述的方法。
图31是示出其中可以实现本文公开的各种技术的示例性视频处理系统3100的框图。各种实现可以包括系统3100的部分或全部组件。系统3100可以包括用于接收视频内容的输入3102。视频内容可以原始或未压缩格式(例如,8位或10位多分量像素值)接收,或者可以压缩或编解码格式接收。输入3102可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口(例如以太网、无源光网络(PON))和无线接口(例如Wi-Fi或蜂窝接口)。
系统3100可以包括编码组件3104,其可以实现在本文档中描述的各种编码或编码方法。编码组件3104可以将从输入3102到编码组件3104的输出的视频的平均比特率降低以产生视频的编码表示。因此,编码技术有时被称为视频压缩或视频转码技术。编码组件3104的输出可以被存储,或者通过由组件3106表示的连接的通信发送。组件3108可以使用在输入3102处接收到的视频的存储或通信比特流(或编码)表示来生成发送到显示接口3110的像素值或可显示视频。从比特流生成用户可见视频的处理有时称为视频解压缩。此外,虽然某些视频处理操作被称为“编码”操作或工具,但是应当理解的是,在编码器处使用编码工具或操作,并且将由解码器执行与编码结果相反的相应解码工具或操作。
外围总线接口或显示接口的示例可以包括通用串行总线(USB)或高清多媒体接口(HDMI)或显示端口(Displayport)等。存储器接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以体现在各种电子设备中,例如移动电话、笔记本电脑、智能手机或能够执行数字数据处理和/或视频显示的其他设备。
图32是根据本技术的用于视频处理的方法3200的流程图表示。方法3200包括:在操作3210处,在包括包含视频单元的视频图片的视频和视频的比特流之间执行转换。在比特流中包括第一组语法元素,以指示在适用于视频单元边界的滤波处理中是否可以访问跨越视频单元边界的样点,并且第一组语法元素被包括在不同的级别中。
在一些实施例中,滤波处理包括去方块滤波处理、样点自适应偏移滤波处理、自适应环路滤波处理、双边滤波处理或哈达玛(Hadamard)变换滤波处理。在一些实施例中,视频单元包括条带、砖块、片或子图片。
在一些实施例中,第一组语法元素包括在条带级别或子图片级别的至少一个中。在一些实施例中,第一组语法元素包括指示跨条带使用环路滤波器的标志、或指示跨子图片使用环路滤波器的标志。
在一些实施例中,视频单元的边界包括条带边界、砖块边界、片边界或360度虚拟边界。在一些实施例中,第一组语法元素位于比特流中的条带参数集或图片参数集中。在一些实施例中,第一组语法元素包括针对不同边界类型信令通知的不同语法元素。
在一些实施例中,视频单元是条带,并且第一组语法元素的第一语法包括在比特流中的图片参数集或条带标头中,以指示在滤波处理中是否可以访问跨越条带边界的样点。在一些实施例中,视频单元是砖块或片,并且第一组语法元素的第二语法包括在比特流的图片参数集中,以指示在滤波处理中是否可以访问跨越砖块或片边界的样点。
在一些实施例中,第一组语法元素包括针对所有边界类型信令通知的单个语法元素。在一些实施例中,第一组语法元素包括针对多个边界类型信令通知的语法元素。在一些实施例中,针对砖块边界和片边界信令通知语法元素。
在一些实施例中,比特流包括序列参数集中的第二组语法元素,其指示用于滤波处理的图片参数集级别或条带级别的信息。在一些实施例中,第二组语法元素包括针对不同边界类型信令通知的不同语法元素。在一些实施例中,第二组语法元素包括针对所有边界类型信令通知的单个语法元素。在一些实施例中,第二组语法元素包括针对多个边界类型信令通知的语法元素。在一些实施例中,针对砖块边界和片边界信令通知语法元素。
在一些实施例中,第一组语法元素是否存在于比特流的图片参数集或条带标头中基于关于比特流的序列参数集中的第二组语法元素中的语法元素的值的条件。在一些实施例中,在语法元素的值等于预定值的情况下,第一组语法元素存在于图片参数集或条带标头中。在一些实施例中,在语法元素的值等于预定值的情况下,在图片参数集或条带标头中省略第一组语法元素。在一些实施例中,在语法元素的值等于第一预定值的情况下,可以在滤波处理中访问样点。在一些实施例中,在语法元素的值等于第二预定值的情况下,在滤波处理中不可访问样点。
在一些实施例中,转换包括将视频编码成比特流。在一些实施例中,转换包括将比特流解码成视频。
从前面可以理解,为了说明的目的,本文描述了本公开技术的具体实施例,但是可以在不偏离本发明的范围的情况下进行各种修改。因此,除了所附权利要求外,本公开技术不受限制。
所公开技术的一些实施例包括做出决策或确定以启用视频处理工具或模式。在示例中,当启用视频处理工具或模式时,编解码器将在视频块的处理中使用或实现该工具或模式,但是不一定基于该工具或模式的使用来修改结果比特流。也就是说,从视频块到视频的比特流的转换将在基于决策或确定启用视频处理工具或模式时使用视频处理工具或模式。在另一示例中,当启用视频处理工具或模式时,解码器将基于视频处理工具或模式已经知道比特流已被修改的情况下处理比特流。也就是说,将使用基于决策或确定而启用的视频处理工具或模式来执行从视频的比特流到视频块的转换。
所公开技术的一些实施例包括作出决策或确定以禁用视频处理工具或模式。在示例中,当禁用视频处理工具或模式时,编解码器将在视频块到视频的比特流的转换中不使用该工具或模式。在另一示例中,当禁用视频处理工具或模式时,解码器将在知道尚未使用基于决策或确定启用的视频处理工具或模式修改比特流的情况下处理比特流。
本专利文件中描述的主题和功能操作的实现可以在各种系统、数字电子电路或计算机软件、固件或硬件中实现,包括在本说明书中公开的结构及其等效结构,或者它们的一个或多个的组合。本说明书中描述的主题的实现可以实现为一个或多个计算机程序产品,例如,编码在有形和非暂时性计算机可读介质上的计算机程序指令的一个或多个模块,以供数据处理设备执行或控制其操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或其中多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标志语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
旨在将说明书与附图一起仅视为示例性的,其中示例性意味着示例。如本文所使用的,除非上下文另有明确说明,否则“或”的使用旨在包括“和/或”。
虽然本专利文件包括许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。

Claims (27)

1.一种视频处理方法,包括:
在包括包含视频单元的视频图片的视频和所述视频的比特流之间执行转换,
其中,在所述比特流中包括第一组语法元素,以指示在适用于所述视频单元的边界的滤波处理中是否可以访问跨越所述视频单元的边界的样点,并且其中,所述第一组语法元素被包括在不同的级别中。
2.根据权利要求1所述的方法,其中,所述滤波处理包括去方块滤波处理、样点自适应偏移滤波处理、自适应环路滤波处理、双边滤波处理或哈达玛变换滤波处理。
3.根据权利要求1或2所述的方法,其中,所述视频单元包括条带、砖块、片或子图片。
4.根据权利要求1至3中任一项所述的方法,其中,所述第一组语法元素包括在条带级别或子图片级别的至少一个中。
5.根据权利要求4所述的方法,其中,所述第一组语法元素包括指示跨条带使用环路滤波器的标志、或指示跨子图片使用环路滤波器的标志。
6.根据权利要求1至5中任一项或多项所述的方法,其中,所述视频单元的边界包括条带边界、砖块边界、片边界或360度虚拟边界。
7.根据权利要求6所述的方法,其中,所述第一组语法元素在所述比特流中的条带参数集或图片参数集中。
8.根据权利要求6或7所述的方法,其中,所述第一组语法元素包括针对不同边界类型信令通知的不同语法元素。
9.根据权利要求7或8所述的方法,其中,所述视频单元是条带,并且其中,所述第一组语法元素的第一语法包括在所述比特流中的图片参数集或条带标头中,以指示在所述滤波处理中是否可以访问跨越所述条带边界的样点。
10.根据权利要求7或8所述的方法,其中,所述视频单元是砖块或片,并且其中,所述第一组语法元素的第二语法包括在所述比特流的图片参数集中,以指示在所述滤波处理中是否可以访问跨越所述砖块边界或所述片边界的样点。
11.根据权利要求6或7所述的方法,其中,所述第一组语法元素包括针对所有边界类型信令通知的单个语法元素。
12.根据权利要求6或7所述的方法,其中,所述第一组语法元素包括针对多个边界类型信令通知的语法元素。
13.根据权利要求12所述的方法,其中,针对砖块边界和片边界信令通知所述语法元素。
14.根据权利要求1至13中任一项或多项所述的方法,其中,所述比特流包括序列参数集中的第二组语法元素,其指示用于所述滤波处理的图片参数集级别或条带级别的信息。
15.根据权利要求14所述的方法,其中,所述第二组语法元素包括针对不同边界类型信令通知的不同的语法元素。
16.根据权利要求14所述的方法,其中,所述第二组语法元素包括针对所有边界类型信令通知的单个语法元素。
17.根据权利要求14所述的方法,其中,所述第二组语法元素包括针对多个边界类型信令通知的语法元素。
18.根据权利要求17所述的方法,其中,针对砖块边界和片边界信令通知所述语法元素。
19.根据权利要求14至18中任一项或多项所述的方法,其中,所述第一组语法元素是否存在于所述比特流的图片参数集或条带标头中基于关于所述比特流的序列参数集中的所述第二组语法元素中的语法元素的值的条件。
20.根据权利要求19所述的方法,其中,在所述语法元素的值等于预定值的情况下,所述第一组语法元素存在于所述图片参数集或所述条带标头中。
21.根据权利要求20所述的方法,其中,在所述语法元素的值等于预定值的情况下,在所述图片参数集或所述条带标头中省略所述第一组语法元素。
22.根据权利要求21所述的方法,其中,在所述语法元素的值等于第一预定值的情况下,可以在所述滤波处理中访问所述样点。
23.根据权利要求21所述的方法,其中,在所述语法元素的值等于第二预定值的情况下,在所述滤波处理中不可访问所述样点。
24.根据权利要求1至23中任一项所述的方法,其中,所述转换包括将所述视频编码成所述比特流。
25.根据权利要求1至23中任一项所述的方法,其中,所述转换包括将所述比特流解码成所述视频。
26.一种视频处理装置,包括处理器,所述处理器被配置成实现权利要求1-25中的任一项所述的方法。
27.一种计算机可读介质,其上存储有代码,当处理器执行所述代码时,所述代码使所述处理器实现权利要求1-25中任一项所述的方法。
CN202080051539.3A 2019-07-15 2020-07-15 自适应环路滤波中跨视频单元边界访问样点 Pending CN114128296A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/096059 2019-07-15
CN2019096059 2019-07-15
PCT/CN2020/102040 WO2021008546A1 (en) 2019-07-15 2020-07-15 Accessing samples across video unit boundaries in adaptive loop filtering

Publications (1)

Publication Number Publication Date
CN114128296A true CN114128296A (zh) 2022-03-01

Family

ID=80359514

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080051539.3A Pending CN114128296A (zh) 2019-07-15 2020-07-15 自适应环路滤波中跨视频单元边界访问样点

Country Status (1)

Country Link
CN (1) CN114128296A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013148466A1 (en) * 2012-03-28 2013-10-03 Qualcomm Incorporated Merge signaling and loop filter on/off signaling
US20150016543A1 (en) * 2013-07-12 2015-01-15 Qualcomm Incorporated Bitstream restrictions on picture partitions across layers
WO2015165030A1 (en) * 2014-04-29 2015-11-05 Microsoft Technology Licensing, Llc Encoder-side decisions for sample adaptive offset filtering
CN109996069A (zh) * 2018-01-03 2019-07-09 华为技术有限公司 视频图像编解码方法及设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013148466A1 (en) * 2012-03-28 2013-10-03 Qualcomm Incorporated Merge signaling and loop filter on/off signaling
CN104205829A (zh) * 2012-03-28 2014-12-10 高通股份有限公司 合并信令及环路滤波器开/关信令
US20150016543A1 (en) * 2013-07-12 2015-01-15 Qualcomm Incorporated Bitstream restrictions on picture partitions across layers
WO2015165030A1 (en) * 2014-04-29 2015-11-05 Microsoft Technology Licensing, Llc Encoder-side decisions for sample adaptive offset filtering
CN109996069A (zh) * 2018-01-03 2019-07-09 华为技术有限公司 视频图像编解码方法及设备

Similar Documents

Publication Publication Date Title
CN114128278B (zh) 自适应环路滤波中的样点填充
CN114097225B (zh) 用于自适应环路滤波的样点确定
CN113994671B (zh) 基于颜色格式处理视频单元边界和虚拟边界
JP7433346B2 (ja) ビデオ単位境界および仮想境界の処理
CN114503594B (zh) 自适应环路滤波中样点填充的选择性应用
CN114450954B (zh) 不同视频单元之间的自适应环路滤波
JP7454042B2 (ja) 適応ループ・フィルタリングにおける利用可能でないサンプル位置でのパディング・プロセス
CN114175637B (zh) 自适应环路滤波中的分类
CN114424539B (zh) 处理视频单元边界和虚拟边界
CN114128296A (zh) 自适应环路滤波中跨视频单元边界访问样点
RU2815441C2 (ru) Способ заполнения отсчетов при адаптивной контурной фильтрации

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination