CN114424539B - 处理视频单元边界和虚拟边界 - Google Patents
处理视频单元边界和虚拟边界 Download PDFInfo
- Publication number
- CN114424539B CN114424539B CN202080043857.5A CN202080043857A CN114424539B CN 114424539 B CN114424539 B CN 114424539B CN 202080043857 A CN202080043857 A CN 202080043857A CN 114424539 B CN114424539 B CN 114424539B
- Authority
- CN
- China
- Prior art keywords
- boundary
- picture
- boundaries
- video
- samples
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 99
- 238000000034 method Methods 0.000 claims abstract description 404
- 238000001914 filtration Methods 0.000 claims abstract description 240
- 230000007704 transition Effects 0.000 claims abstract description 51
- 238000006243 chemical reaction Methods 0.000 claims abstract description 46
- 230000008569 process Effects 0.000 claims description 180
- 230000003044 adaptive effect Effects 0.000 claims description 58
- 239000000872 buffer Substances 0.000 claims description 42
- 238000005429 filling process Methods 0.000 claims description 10
- 230000015654 memory Effects 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 8
- 238000003672 processing method Methods 0.000 abstract description 28
- 239000000523 sample Substances 0.000 description 225
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 40
- 241000023320 Luma <angiosperm> Species 0.000 description 37
- 238000009795 derivation Methods 0.000 description 22
- 238000005070 sampling Methods 0.000 description 18
- 229910003460 diamond Inorganic materials 0.000 description 13
- 239000010432 diamond Substances 0.000 description 13
- 230000011664 signaling Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000002123 temporal effect Effects 0.000 description 8
- 230000009466 transformation Effects 0.000 description 8
- 101150114515 CTBS gene Proteins 0.000 description 7
- 238000013459 approach Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 239000000945 filler Substances 0.000 description 6
- 238000010008 shearing Methods 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 6
- 239000011449 brick Substances 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000010187 selection method Methods 0.000 description 5
- 238000000844 transformation Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012856 packing Methods 0.000 description 4
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 208000028167 Southeast Asian ovalocytosis Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000001881 scanning electron acoustic microscopy Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Abstract
一种视频处理方法,包括:对于包括一个或多个块的视频的图片与所述视频的比特流表示之间的转换,基于与所述块的底部边界和所述图片之间的关系有关的规则,确定是否为所述图片内的块启用虚拟边界,以进行滤波处理。该方法还包括基于所述确定执行所述转换。
Description
相关申请的交叉引用
本申请基于2020年6月15日提交的国际专利申请No.PCT/CN2020/096044,其要求2019年6月14日提交的国际专利申请No.PCT/CN2019/091324、2019年6月25日提交的国际专利申请No.PCT/CN2019/092861、2019年7月8日提交的国际专利申请No.PCT/CN2019/095157的优先权和权益。上述所有专利申请全部通过引用结合在本文中。
技术领域
该专利文档总体上涉及视频编码和解码技术。
背景技术
视频编解码标准主要是通过众所周知的ITU-T和ISO/IEC标准的发展而发展起来的。ITU-T制作了H.261和H.263,ISO/IEC制作了MPEG-1和MPEG-4 Visual,这两个组织共同制作了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(联合视频专家团队)成立,以致力于目标是与HEVC相比其降低50%比特率的下一代多功能视频编解码(VVC)标准。
发明内容
使用本公开的视频编码、代码转换或解码技术,视频编码器或解码器的实施例可以处理编解码树块的虚拟边界,以提供更好的压缩效率和编码或解码工具的更简单实现。
在一个示例方面,公开了一种视频处理方法。该方法包括:对于包括一个或多个块的视频的图片与所述视频的比特流表示之间的转换,基于与所述块的底部边界和所述图片之间的关系有关的规则,确定是否为所述图片内的块启用虚拟边界,以进行滤波处理。该方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:针对包括一个或多个块的视频的图片与所述视频的比特流表示之间的转换,基于与块的维度有关的规则,确定基于与图片内的块的滤波处理相关联的填充处理而生成的虚拟样点的使用。该方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:针对包括一个或多个视频单元的视频的图片与所述视频的比特流表示之间的转换,确定在滤波处理中禁用跨所述一个或多个视频单元的边界的样点的使用。所述比特流表示被配置有指示启用了所述使用的语法标志。该方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的块和所述视频的比特流表示之间的转换,确定根据规则将填充处理应用于滤波处理的统一的方式。应用所述填充处理,为位于不同视频单元边界附近的块的样点生成一个或多个虚拟样点。该方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的块和所述视频的比特流表示之间的转换,根据规则确定在滤波处理中对其应用了填充处理的行数。应用所述填充处理为位于至少两个边界附近的所述块的样点生成一个或多个虚拟样点,所述至少两个边界包括虚拟边界和至少一个其他边界。所述规则与所述样点和所述至少两个边界之间的距离有关。方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于在视频单元的视频的块和所述视频的比特流表示之间的转换,确定(1)在应用一个或多个环路滤波处理之前,选择第一样点的第一方式,以及(2)在应用一个或多个环路滤波处理之后并且在应用自适应滤波处理之前,选择第二样点的第二方式。方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于在视频单元的视频的块和所述视频的比特流表示之间的转换,确定应用多个填充处理以生成用于所述块的样点的一个或多个虚拟样点以进行滤波处理的顺序。方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的块和所述视频的比特流表示之间的转换,根据与所述块的分量标识相关联的规则,确定是否将所述块的样点放置在距所述块的边界一距离内以作为滤波处理的边界样点。方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的块与所述视频的比特流表示之间的转换,确定对滤波处理禁用跨视频的视频单元的边界的样点的使用。所述视频包括一个或多个视频单元,并且所述一个或多个视频单元中的每个包括一个或多个块。方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于在视频的块和所述视频的比特流表示之间的转换,确定在不使用填充样点的情况下对所述块进行滤波处理的方式。方法还包括,基于所述确定执行所述转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:在视频图片的视频块及其比特流表示之间执行转换。这里,使用编解码树块的逻辑分组来处理视频块,并且基于底部编解码树块的底部边界是否在视频图片的底部边界之外来对编解码树块进行处理。
在另一个示例方面,公开了另一种视频处理方法。该方法包括:基于当前视频块的编解码树块的条件,确定环路滤波期间虚拟样点的使用状态,以及在视频块和与虚拟样点的使用状态一致的视频块的比特流表示之间执行转换。
在又一个示例方面,公开了另一种视频处理方法。该方法包括:在逻辑上分组为一个或多个视频条带或视频砖的视频图片、与所述视频图片的比特流表示之间的转换期间,确定禁用在自适应环路滤波处理中在另一个条带或砖中的样点的使用,以及执行与确定一致的转换。
在又一个示例方面,公开了另一种视频处理方法。该方法包括:在视频图片的当前视频块与当前视频块的比特流表示之间的转换期间,确定当前视频块包括位于视频图片的视频单元的边界处的样点,以及基于所述确定执行转换,其中,执行所述转换包括使用对于视频图片中的所有边界类型都相同的统一方法,生成用于环路滤波处理的虚拟样点。
在又一个示例方面,公开了另一种视频处理方法。该方法包括:在视频图片的当前视频块及其比特流表示之间的转换期间,确定在转换期间,应用可用于所述视频图片的多个自适应环路滤波器(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示出了四个1-D定向图案。
图9示出了几何自适应环路滤波(GALF)滤波器形状的示例(左:5×5菱形,中间:7×7菱形,右:9×9菱形)。
图10示出了用于5×5菱形滤波器支持的相对坐标。
图11示出了用于5×5菱形滤波器支持的相对坐标的示例。
图12A示出了用于子采样的拉普拉斯计算的示例布置。
图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示出了3×2布局的HEC图像的示例。
图25示出了用于两种边界的样点的填充线的数量的示例。
图26示出了图片中的CTU的处理的示例。
图27示出了图片中的CTU的处理的另一示例。
图28是其中可以实现所公开的技术的示例视频处理系统的框图。
图29是表示根据本技术的用于视频处理的方法的流程图。
图30是表示根据本技术的用于视频处理的方法的另一流程图。
图31是表示根据本技术的用于视频处理的方法的另一流程图。
图32是表示根据本技术的用于视频处理的方法的另一流程图。
图33是表示根据本技术的用于视频处理的方法的另一流程图。
图34是表示根据本技术的用于视频处理的方法的另一流程图。
图35是表示根据本技术的用于视频处理的方法的另一流程图。
图36是表示根据本技术的用于视频处理的方法的另一流程图。
图37是表示根据本技术的用于视频处理的方法的另一流程图。
图38是表示根据本技术的用于视频处理的方法的另一流程图。
具体实施方式
在本文档中使用章节标题是为了易于理解,并且并不将部分中公开的实施例仅限于该部分。此外,尽管参考通用视频编解码或其他特定视频编解码器描述了某些实施例,但是所公开的技术也适用于其他视频编解码技术。此外,尽管一些实施例详细描述了视频编码步骤,但是将理解的是,将通过解码器来实现撤销编码的对应步骤解码。此外,术语视频处理涵盖视频编码或压缩、视频解码或解压缩以及视频转码,其中,视频像素从一种压缩格式表示为另一种压缩格式或以不同的压缩比特率表示。
1.简要总结
该文档涉及视频编解码技术。具体地,它涉及图片/条带/片/砖边界和虚拟边界编解码,特别是对于非线性自适应环路滤波器。其可以应用于现有的视频编解码标准(例如HEVC),或者最终确定的标准(通用视频编解码)。其也可能适用于未来的视频编解码标准或视频编解码器。
2.初步讨论
视频编解码标准主要通过公知的ITU-T和ISO/IEC标准的发展而发展。ITU-T制作了H.261和H.263,ISO/IEC制作了MPEG-1和MPEG-4 Visual,这两个组织共同制作了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(联合视频专家团队)成立,以致力于目标是与HEVC相比降低50%比特率的多功能视频编解码(VVC)标准。
2.1颜色空间和色度子采样
颜色空间,也称为颜色模型(或颜色系统),是一种抽象数学模型,其将颜色范围简单地描述为数字元组,通常为3或4个值或颜色分量(例如RGB)。基本上,颜色空间是对坐标系和子空间的详细说明。
对于视频压缩,最常用的颜色空间是YCbCr和RGB。
YcbCr、Y'CbCr或Y Pb/Cb Pr/Cr,也称为YCBCR或Y'CBCR,是用作视频和数字摄影系统中彩色图像流水线的一部分的一系列颜色空间。Y'是亮度分量,CB和CR是蓝差(blue-difference)和红差(red-difference)色度分量。Y′(带有原色(prime))与Y(亮度)相区分,表示光强度是基于经过伽玛校正的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尺寸可以小到4×4。
7.3.2.3序列参数集RBSP语法
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
假设由M×N表示的CTB/LCU尺寸(典型地,M等于N,如HEVC/VVC中所定义),并且对于位于图片(或片或条带或其他类型,图片边界作为示例)边界上的CTB,K×L样点在图片边界内,其中K<M或L<N。对于如图4A-4C所示的那些CTB,CTB的尺寸仍然等于M×N,但是,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边界决策
滤波被应用于8×8的块边界。另外,它必须是变换块边界或编解码子块边界(例如,由于使用仿射运动预测(Affine motion prediction,ATMVP))。对于那些没有这种边界的将禁用滤波器。
2.4.2边界强度计算
对于变换块边界/编解码子块边界,如果其位于8×8网格中,则可以对其进行滤波并且将对该边缘的bS[xDi][yDj](其中[xDi][yDj]表示坐标)的设置分别定义在表1和表2中。
表1.边界强度(当禁用SPS IBC时)
表2.边界强度(当启用SPS IBC时)
2.4.3用于亮度分量的去方块决策
在本小节中描述了去方块决策处理。
图7示出了涉及滤波器开/关决策和强/弱滤波器选择的像素的示例。
更宽更强的亮度滤波器是仅当条件1、条件2和条件3都为TRUE时才使用的滤波器。
条件1是“大块条件”。该条件检测P边和Q边的样点是否属于大块,分别由变量bSidePisLargeBlk和bSideQisLargeBlk表示。bSidePisLargeBlk和bSideQisLargeBlk定义如下。
bSidePisLargeBlk=((边缘类型为垂直并且p0属于宽度>=32的CU)||(边缘类型为水平并且p0属于高度>=32的CU))?TRUE:FALSE
bSideQisLargeBlk=((边缘类型为垂直并且q0属于宽度>=32的CU)||(边缘类型为水平并且q0属于高度>=32的CU))?TRUE:FALSE
基于bSidePisLargeBlk和bSideQisLargeBlk,条件1定义如下。
条件1=(bSidePisLargeBlk||bSidePisLargeBlk)?TRUE:FALSE
接下来,如果条件1为真,则将进一步检查条件2。首先,推导以下变量:
–如在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
条件2=(d<β)?TRUE:FALSE
其中d=dp0+dq0+dp3+dq3。
如果Condition1和Condition2有效,则进一步检查是否有任何块使用了子块:
最后,如果条件1和条件2均有效,则所提出的去方块方法将检查条件3(大块强滤波条件),其定义如下。
在条件3 StrongFilterCondition中,推导以下变量:
如在HEVC中一样推导dpq。
sp3=Abs(p3-p0),如在HEVC中一样推导
如果p边大于或等于32
sq3=Abs(q0-q3),如在HEVC中一样推导
如果q边大于或等于32
如在HEVC中一样,StrongFilterCondition=(dpq小于(β>>2),sp3+sq3小于(3*β>>5),且Abs(p0-q0)小于(5*tC+1)>>1)?TRUE:FALSE。
2.4.4用于亮度的更强的去方块滤波器(为更大的块设计)
当边界任一边的样点属于大块时,使用双线性滤波器。属于大块的样点定义为:垂直边缘的宽度>=32,并且水平边缘的高度>=32。
双线性滤波器在下面列出。
在上述HEVC去方块中,对于i=0到Sp-1的块边界样点pi和对于j=0到Sq-1的块边界样点qj(pi和qi是用于对垂直边缘进行滤波的行中的第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小于β时,第二个条件为TRUE。
在第三个条件中,StrongFilterCondition推导如下:
如在HEVC中一样推导dpq。
sp3=Abs(p3-p0),如在HEVC中一样推导
sq3=Abs(q0-q3),如在HEVC中一样推导
如在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
所提出的色度滤波器对4×4色度样点网格执行去方块。
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–tcQj,q’j);
其中,p’i和q’i是滤波的样点值,p”i和q”j是剪切之后的输出样点值,tcPi tcPi是从VVC tc参数以及tcPD和tcQD推导的剪切阈值。函数Clip3是如在VVC中指定的剪切函数。
2.4.8子块去方块调整
为了能够使用长滤波器和子块去方块来并行友好地去方块,如在对长滤波器的亮度控制中所示,将长滤波器限制为在使用子块去方块(AFFINE或ATMVP或DMVR)的边最多修改5个样点。另外,调整子块去方块,使得在8×8网格上接近CU或隐式TU边界的子块边界被限制为在每侧最多修改两个样点。
以下适用于与CU边界不对齐的子块边界。
其中等于0的边缘对应于CU边界,等于2或等于orthogonalLength-2的边对应于来自CU边界等的子块边界8个样点等。如果使用TU的隐式划分,则隐式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”的当前样点值与其沿选定的1-D模式的两个邻居进行比较。表I总结了每个样点的分类规则。类别1和4分别与沿选定的1-D模式的局部谷和局部峰相关。类别2和3分别与沿选定的1-D模式的凹角和凸角关联。如果当前样点不属于EO类别1-4,则它是类别0,并且不应用SAO。
表3:边缘偏移的样点分类规则
类别 | 条件 |
1 | c<a and 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为(左),(中),(右))表示要应用于样点的系数。对于图片中的色度分量,始终使用5×5菱形形状。
2.6.2块分类
将每个2×2块分类为25个类中的一个。分类索引C基于其方向性D和活动的量化值进行推导,如下:
为了计算D和首先使用一维拉普拉斯变换计算水平、垂直和两个对角线方向的梯度:
索引i和j指代2×2块中左上样点的坐标,并且R(i,j)指示在坐标(i,j)处的重构样点。
然后将水平和垂直方向的梯度的D个最大值和最小值设置为:
将两个对角线方向的梯度的最大值和最小值设置为:
为了推导方向性D的值,将这些值使用两个阈值t1和t2相互比较:
步骤1.如果且均为真,则将D设置为0。
步骤2.如果则从步骤3继续,否则从步骤4继续。
步骤3.如果则将D设置为2;否则将D设置为1。
步骤4.如果则将D设置为4;否则将D设置为3。
将活动值A计算为:
将A进一步量化到0到4的范围(包括0和4),并且将量化值表示为
对于图片中的色度分量,不应用分类方法,例如,对每个色度分量应用单个ALF系数集。
2.6.1.2滤波器系数的几何变换
图10示出了5×5菱形滤波器支持的相对协调器:左:对角线,中心:垂直翻转,右:旋转。
在对每个2×2块进行滤波之前,取决于为该块计算的梯度值,将诸如旋转或对角线和垂直翻转的几何变换应用于滤波器系数f(k,l),滤波器系数f(k,l)与坐标(k,l)相关联。这等效于将这些变换应用于滤波器支持区域中的样点。思想是通过对齐它们的方向性来使应用了ALF的不同块更加相似。
引入了三种几何变换,包括对角线、垂直翻转和旋转:
对角线:fD(k,l)=f(l,k),
垂直翻转:fV(k,l)=f(k,K-l-1), (9)
旋转:fR(k,l)=f(K-l-1,k).
其中K是滤波器的尺寸,并且0≤k,l≤K-1是系数坐标,使得位置(0,0)在左上角,并且位置(K-1,K-1)在右下角。取决于为该块计算的梯度值,将变换应用于滤波器系数f(k,l)。表4总结了变换与四个方向的四个梯度之间的关系。图9示出了基于5×5菱形的每个位置的变换系数。
表4:为一个块计算的梯度和变换之间的映射
梯度值 | 变换 |
gd2<gd1 and gh<gv | 无变换 |
gd2<gd1 and gv<gh | 对角线 |
gd1<gd2 and gh<gv | 垂直翻转 |
gd1<gd2 and gv<gh | 旋转 |
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)表示解码的滤波器系数。
图11示出了用于5×5菱形滤波器支持的相对坐标的示例,假设当前样点的坐标(i,j)为(0,0)。不同坐标中以相同颜色填充的样点将乘以相同的滤波器系数。
2.7基于几何变换的自适应环路滤波器(GALF)
2.7.1 GALF示例
在一些实施例中,自适应环路滤波器的滤波处理执行如下:
(x,y)=∑(i,j)w(i,j).I(x+i,y+j), (11)
其中样点I(x+i,y+j)是输入样点,O(x,y)是滤波的输出样点(例如,滤波结果),而w(i,j)表示滤波系数。实际上,在VTM4.0中,它是使用整数算法实现定点精度计算的:
其中L表示滤波器长度,而w(i,j)是定点精度的滤波器系数。
VVC中GALF的当前设计具有以下主要更改:
(1)去除自适应滤波器形状。亮度分量仅允许7×7滤波器形状,色度分量仅允许5×5滤波器形状。
(2)从条带/图片级到CTU级去除了ALF参数的信令。
(3)类别索引的计算以4×4级别而不是2×2执行。另外,在一些实施例中,利用了用于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)的滤波器公式,可以通过使用简单的剪切函数来引入非线性以提高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个剪切值。
为了限制信令成本和编码器复杂度,只能使用与INTER和INTRA条带相同的4个固定值。
由于亮度的局部差异的方差通常比色度的高,因此对于亮度和色度滤波器应用两个不同集合。也介绍了每个集合中的最大样点值(这里对于10比特深度为1024),以便在不必要时可以禁用剪切。
在表5中提供了在一些实施例中使用的剪切值的集合。通过在对数域中将亮度的样点值的全范围(以10比特进行编解码)以及色度从4到1024的范围进行大致相等地划分,选择了4个值。
更精确地,剪切值的亮度表已通过以下公式获得:
其中M=210且N=4。(15)
类似地,剪切值的色度表根据以下公式获得:
其中M=210,N=4且A=4. (16)
表5:授权的剪切值
通过使用与上表5中的剪切值的索引相对应的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行和底部CTU的O、P行,因此无法执行与CTU边缘重叠的水平边缘的去方块。因此,将与CTU边界重叠的水平边缘的去方块推迟到直到下层CTU到来。因此,对于K、L、M、N行,必须将重构的亮度样点存储在行缓冲器(4行)中。然后可以对A行到J行执行SAO滤波。由于去方块不会更改K行中的样点,因此可以对J行进行SAO滤波。对于K行的SAO滤波,边缘偏移分类决策仅存储在行缓冲器中(即0.25亮度行)。只能对A-F行执行ALF滤波。如图13所示,对每个4×4块执行ALF分类。每个4×4的块分类都需要尺寸为8×8的活动窗口,而活动窗口又需要9×9的窗口来计算1d拉普拉斯以确定梯度。
因此,对于与G、H、I、J行重叠的4×4块的块分类,需要虚拟边界以下的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被向上移动水平LCU边界N个像素。对于每个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行开始的4×4块,块分类仅使用E行到J行。但是,对于属于J行的样点的拉普拉斯梯度计算需要下面的一行或多行(K行)。因此,用J行填充K行。
类似地,如图15B所示,对于从K行开始的4×4块,块分类仅使用K行到P行。但是,对于属于K行的样点的拉普拉斯梯度计算需要上方的一行或多行(J行)。因此,用K行填充J行。
2.9.2跨虚拟边界的样点的两侧填充
如图16A-16C所示,滤波器的截断形式用于对属于接近虚拟边界的行的亮度样点进行滤波。以图16A为例,当对M行进行滤波时,如图13所示,例如7×7菱形支撑的中心样点在M行中。它需要访问VB上方的一行(以粗线表示)。在这种情况下,VB上方的样点是从VB下方的样点的右下方复制的,诸如实线中的P0样点被复制到上方的虚线位置。对称地,即使该位置的样点可用,实线中的P3样点也被复制到虚线位置的右下方。复制的样点仅在亮度滤波处理中使用。
用于ALF虚拟边界的填充方法可以表示为“两侧填充”,其中如果填充位于(i,j)处的一个样点(例如,图16B中带有虚线的P0A),则也填充共享相同滤波器系数的、位于(m,n)处的相应样点(例如,图16B中带有虚线的P3B),即使该样点可用,如图16A-16C以及图17A-17B所示。在图16A-16C中,7×7菱形滤波器支持,中心是要被滤波的当前样点。图16A示出了需要被填充的VB上方/下方的1条所需行。图16B示出了需要被填充的VB上方/下方的2条所需行。图16C示出了需要被填充的VB上方/下方的3个所需行。
类似地,如图17A-17B所示,两侧填充方法也用于色度ALF滤波。图17A-17B示出了在虚拟边界处的修改的色度ALF滤波(5×5菱形滤波器支持,中心是要被滤波的当前样点)。图17A示出了需要被填充的VB上方/下方的1条所需行。图17B示出了需要被填充的VB上方/下方的2条所需行。
2.9.3当禁用非线性ALF时,实现双侧填充的替代方法
当对CTB禁用非线性ALF时,例如,式(14)中的剪切参数k(i,j)等于(1<<Bitdepth),可以通过修改滤波系数(又称为基于修改的系数(modified-coeff)的ALF、MALF)来代替填充处理。例如,当对L/I行中的样点进行滤波时,将滤波系数c5修改为c5',在这种情况下,不需要将亮度样点从实线P0A复制到虚线P0A,从实线P3B复制到虚线P3B,如图18A所示。在这种情况下,假设要滤波的当前样点位于(x,y)处,双侧填充和MALF将产生相同的结果。因为K(d,b)=d,且由于填充,I(x-1,y-1)=I(x-1,y-2),
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)
但是,当启用非线性ALF时,MALF和两侧填充可能会产生不同的滤波结果,因为非线性参数是与每个系数相关联的,诸如对于滤波器系数c5和c1,剪切参数是不同的。因此,因为K(d,b)!=d,即使由于填充,I(x-1,y-1)=I(x-1,y-2),
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)
2.10 ALF滤波规范
新增加的部分用粗体斜体下划线表示。删除的部分用[[]]表示。
7.3.2.4图片参数集RBSP语法
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_slice_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作为输入,以及使用x,y=0..CtbSizeY-1的filtIdx[x][y]和transposeIdx[x][y]作为输出,调用滤波器索引第8.8.5.3节的推导处理。
对于滤波重构的亮度样点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-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)
-根据transposeIdx[x][y]推导的亮度滤波器系数和剪切值索引dx如下所示:
-如果transposeIndex[x][y]等于1,则适用以下:
idx[]={9,4,10,8,1,5,11,7,3,0,2,6} (8-1178)
-否则,如果transposeIndex[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(其中i,j=-3...3)内的每一个对应的亮度样点的位置(hx+i,vy+j)推导如下:
-如果对于任何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_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-1185)
-否则,如果对于任何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-1186)
-否则,适用以下:
vy+j=Clip3(0,pic_height_in_luma_samples-1,yCtb+y+j)(8-1187)
-根据水平亮度样点位置y和applyVirtualBoundary,在表8-22中规定了重构的样点偏移r1、r2和r3。
-变量curr的推导如下:
curr=recPictureL[hx,vy] (8-1188)
-变量sum的推导如下:
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的规定
条件 | r1 | r2 | r3 |
(y==CtbSizeY-5||y==CtbSizeY-4)&&(applyVirtualBoundary==1) | 0 | 0 | 0 |
(y==CtbSizeY-6||y==CtbSizeY-3)&&(applyVirtualBoundary==1) | 1 | 1 | 1 |
(y==CtbSizeY-7||y==CtbSizeY-2)&&(applyVirtualBoundary==1) | 1 | 2 | 2 |
其它 | 1 | 2 | 3 |
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(其中i,j=-2...2)中,每一个对应的色度样点(x,y)的位置(hx+i,vy+j)的推导如下:
-如果对于任何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,
pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i) (8-1232)
-否则,如果对于任何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,pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j) (8-1235)
-否则,如果对于任何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-1236)
-否则,适用以下:
vy+j=Clip3(0,pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j)
(8-1237)
-变量applyVirtualBoundary的推导如下:
-根据水平亮度样点位置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)
-变量sum的推导如下:
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尺寸为M×M(例如M=64),则根据虚拟边界定义,将CTB内的最后4行处理为虚拟边界以下。在硬件实现中,以下条件适用:
-如果CTB的底部边界是图片(例如CTU-D)的底部边界,它将处理包括来自CTU行上方的4行和当前CTU中的所有行的(M+4)×M块。
-否则,如果CTB的底部边界是条带(或砖)(例如CTU-C)的底部边界,并且loop_filter_across_slice_enabled_flag(或loop_filter_across_bricks_enabled_flag)等于0,则处理包括来自CTU行上方的4行和当前CTU中的所有行的(M+4)×M块。
-否则,如果CTU/CTB位于条带/砖/片的第一CTU行中(例如,CTU-A),则处理不包括最后4行的M×(M-4)块。
-否则,如果CTU/CTB不在条带/砖/片的第一CTU行中(例如CTU-B),也不在条带/砖/片的最后CTU行中,则处理包括CTU行上方的4行、但不包括当前CTU的最后4行的M×M块。
图19示出了图片中的CTU的处理的示例。
2.12 360度视频编解码
VTM5中的水平环绕运动补偿是360特定编解码工具,旨在提高等矩形(ERP)投影格式中重构的360度视频的视觉质量。在传统的运动补偿中,当运动矢量指的是参考图片的图片边界以外的样点时,会应用重复填充,以通过复制相应图片边界上最近的邻居来得出边界外样点的值。对于360度视频来说,这种重复填充的方法并不适合,可能会在重构的视口视频中造成被称为“接缝伪像(seam artefacts)”的视觉伪像。由于360度视频是在球体上捕获的且本身没有“边界”,所以在投影域中超出参考图片边界的参考样点总是可以从球体域中的相邻样点中获得。对于一般的投影格式,由于涉及到2D到3D和3D到2D的坐标转换,以及分数样点位置的样点插值,因此在球域中推导相应的相邻样点可能比较困难。对于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)通过稍微更新coding_tree_unit()语法来指定:在解码处理中(不包括环路滤波操作)将子图片作为图片处理,并对以下解码处理进行更新。
ο(高级)时域亮度运动矢量预测的推导处理。
ο亮度样点双线性插值处理。
ο亮度样点8抽头插值滤波处理。
ο色度样点插值处理。
7)在SPS中明确指定子图片ID,并且子图片ID包含在片组标头中,以实现子图片序列的提取,而不需要改变VCL NAL单元。
提出了输出子图片组(OSPS),以指定子图片及其组的规范提取和符合点。
3.本文档提供的解决方案所解决的技术问题。
当前VVC设计存在以下问题。
1.当前启用ALF虚拟边界的设置取决于CTB的底部边界是否为图片的底部边界。如果是真(true),则禁用ALF虚拟边界,诸如图19中的CTU-D。但是,有可能CTB的底部边界在图片的底部边界之外,诸如256×240图片被划分成4个128×128的CTU,在这种情况下,对于样点在图片底部边界之外的最后2个CTU,ALF虚拟边界可能会被错误地设置为真。
2.在底部图片边界和条带/片/砖边界禁用ALF虚拟边界的处理方式。沿条带/砖边界禁用VB可能会产生流水线气泡(pipeline bubble),或者对于每条虚拟流水线数据单元(VPDU,VVC中为64×64)需要处理68行,假设LCU尺寸为64×64。例如:
a.对于前期不知道条带/砖/片边界的解码器(如低延迟应用),需要恢复ALF行缓冲器。行缓冲器中的内容是否被ALF滤波使用,取决于当前CTU是否也是条带/砖/片边界CTU,然而,在下一个条带/砖/片被解码之前,这个信息是未知的。
b.对于前期知道条带/砖/片边界的解码器来说,要么解码器需要忍受流水线气泡(非常不可能),要么以每64×64 VDPU一直68行的速度运行ALF(超供),以避免使用ALF行缓冲器。
3.对虚拟边界和视频单元边界的不同处理方式,例如,存在不同的填充方法。同时,当行处于多个边界时,可以对其执行一种以上的填充方法。
a.在一个示例中,如果块的底部边界为360度虚拟边界,且ALF虚拟边界也应用于该块,在这种情况下,可以首先应用360度虚拟边界的填充方法,以生成360度虚拟边界下方的虚拟样点。之后,将这些位于360度虚拟边界以下的虚拟样点视为可用。而根据图16A-C,可以进一步应用ALF两侧填充方法。图25中描述了示例。
4.处理虚拟边界的方式可能是次优的,因为利用了填充样点,这可能会降低效率。
5.当禁用非线性ALF时,MALF和两侧填充方法将能够产生相同的结果,来滤波需要跨越虚拟边界来访问样点的样点。然而,当启用非线性ALF时,这两种方法将带来不同的结果。将这两种情况统一起来将是有益的。
4.技术和实施例的示例
下文所列应视为示例来解释一般概念。列出的技术不应狭义地解释。此外,可以以任何方式组合这些技术。
用于ALF虚拟边界的填充方法可以表示为“两侧填充”,其中,如果填充位于(i,j)的一个样点,如图12-13所示,则位于(m,n)的、共享相同滤波器系数的相应样点也被填充,即使该样点是可用的。
用于图片边界/360度视频虚拟边界、法线边界(例如顶部和底部边界)的填充方法可以表示为“单侧填充”,其中,如果要使用的一个样点在边界之外,则从图片内的可用样点中复制该样点。
用于360度视频左和右边界的填充方法可以表示为“包装基础填充(wrapping-base Padding)”,其中,如果要使用的一个样点在边界之外,则使用运动补偿结果对其进行复制。
在下面的讨论中,样点“在视频单元的边界处”可以表示样点与视频单元的边界之间的距离小于或不大于阈值。“行”可以指在同一水平位置处的样点或在同一垂直位置处的样点。(例如,同一行中的样点和/或同一列中的样点)。函数Abs(x)定义如下:
在下面的讨论中,“虚拟样点”是指生成的样点,该样点可能与重构的样点不同(可以通过去方块和/或SAO处理)。虚拟样点可用于对另一个样点进行ALF。可以通过填充来生成虚拟样点。
“为一个块启用了ALF虚拟边界处理方法”可以表示规范中的applyVirtualBoundary被设置为真。“启用虚拟边界”可能指示当前块被虚拟边界划分为至少两部分,并且位于一个部分的样点在滤波处理中(例如ALF)不允许在另一部分中利用样点。虚拟边界可以是一个块的底部边界上方的K行。
在以下描述中,相邻样点可以是滤波器分类和/或滤波处理所需的那些。
在本公开中,如果相邻样点在当前图片、当前子图片、当前片、当前条带、或当前砖、或当前CTU或当前处理单元(诸如,ALF处理单元或窄ALF处理单元)或任何其他当前视频单元之外时,相邻样点是“不可用的”。
1.将“当前编解码树块的底部边界是图片的底部边界”的确定替换为“当前编解码树块的底部边界是图片或图片外的底部边界”。
a.可替代地,在这种情况下,可以禁用ALF虚拟边界处理方法。
2.在环路滤波处理中是否启用虚拟样点的使用(例如,是否启用虚拟边界(例如,将applyVirtualBoundary设置为真(true)或假(false))可能取决于CTB尺寸。
a.在一个示例中,对于给定的CTU/CTB尺寸,例如对于等于K×L(例如,K=L=4)的CTU/CTB尺寸,总是将applyVirtualBoundary设置为假。
b.在一个示例中,对于某些不大于或小于K×L(例如,K=L=8)的CTU/CTB尺寸,总是将applyVirtualBoundary设置为假。
c.可替代地,对于某些CTU/CTB尺寸(诸如4×4、8×8)禁用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行并且排除虚拟边界下方的K行对M×M个样点进行滤波。
4.即使在越砖/条带边界的环路滤波器的信令通知的控制使用标记(例如,loop_filter_across_bricks_enabled_flag/loop_filter_across_slices_enabled_flag)为真时,也建议在滤波处理(例如,ALF)中禁用跨越砖/条带边界的样点的使用。
a.可替代地,此外,信令通知的loop_filter_across_bricks_enabled_flag/loop_filter_across_slices_enabled_flag可以仅控制去方块滤波器和除AOF之外的SAO的滤波处理。
b.在一个示例中,可以使用虚拟样点代替在相应位置处的重构样点来对另一样点进行ALF。
5.当一个块(例如CTB)包含位于视频单元边界(诸如,条带/砖/片块/360度视频虚拟或法线边界/图片边界)的样点时,对于不同种类的边界,可以统一如何在视频单元内部或外部生成虚拟样点(例如,填充方法)以进行诸如ALF之类的环路滤波。
a.可替代地,此外,虚拟边界的方法(例如,两侧填充方法)可以被应用于该块以处理边界处的样点以用于环路滤波。
b.可替代地,此外,当块包含位于视频单元的底部边界处的样点时,可以应用上述方法。
c.在一个示例中,当解码一个块的K行时,如果在该块的虚拟边界以下的K行(例如,图17A-17B的CTU-B中的最后K行)和该块的底部边界是视频单元的底部边界时,可以在ALF分类/滤波处理中生成虚拟样点,以避免使用这些K行以外的其他样点,例如,可以应用“双侧填充”方法。
i.可替代地,可以针对那些最后的K行禁用ALF。
d.在一个示例中,当一行位于多个边界处(例如,该行到边界之间的距离小于阈值)时,仅执行一次填充处理,而不管其可能属于多少个边界。
i.可替代地,此外,应填充多少相邻行可以取决于当前行相对于所有边界的位置。
ii.例如,可以由当前行和两个边界之间的距离来确定应填充多少相邻行,诸如在当前行在两个边界内且两个边界在上下时。
iii.例如,可以由当前行和最近的边界之间的距离来确定应填充多少相邻行,诸如在当前行在两个边界内且两个边界在上下时。
iv.例如,可以为每个边界独立地计算要填充多少相邻行,并且选择最大的一个作为最终的填充行数。
v.在一个示例中,可以为该行的每一侧(例如,上侧和下侧)确定要填充多少相邻行。
vi.在一个示例中,对于两侧填充方法,可以共同确定两侧应填充多少相邻行。
vii.可替代地,此外,应用ALF使用的两侧填充方法。
e.在一个示例中,当一行位于多个边界处并且在该行的每一侧(例如,上侧和下侧)中存在至少一个边界时,可以对其禁用ALF。
f.在一个示例中,在当前行所需的填充行的数量大于阈值时,可以为当前行禁用ALF。
i.在一个示例中,当任一侧中的填充线的数量大于阈值时,可以为当前行禁用ALF。
ii.在一个示例中,当两侧的填充行的总数大于阈值时,可以为当前行禁用ALF。
g.可替代地,此外,当块包含位于视频单元的底部边界处的样点并且对该块启用诸如ALF的环路滤波时,可以应用以上方法。
h.可替代地,此外,可以在某些条件下应用上述方法,诸如当该块包含位于视频单元的底部边界的样点并且不允许跨边界的滤波时(例如,pps_loop_filter_across_virtual_boundaries_disabled_flag/loop_filter_across_slices_enabled_flag/loop_filter_across_slices为真)。
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.在一个示例中,当视频单元(诸如CTB)底部边界处的样点在ALF中用于另一个样点时,可以使用第一种方法进行选择。否则(不在边界处),选择第二种方法。
8.建议在滤波处理中禁用跨VPDU边界(例如64×64区域)的样点。
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的相同规则(例如,图16)。
14.所提出的方法可以应用于两个子图片之间的一个或多个边界。
a.应用提出的方法的边界可以是水平边界。
b.应用提出的方法的边界可以是垂直边界。
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_slice_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作为输入,以及使用x,y=0..CtbSizeY-1的filtIdx[x][y]和transposeIdx[x][y]作为输出,调用滤波器索引第8.8.5.3节的推导处理。
对于滤波重构的亮度样点alfPictureL[x][y]的推导,当前亮度编解码树块recPictureL[x][y]内的每一个重构亮度样点都进行如下滤波(x,y=0..CtbSizeY-1)。
-由filtIdx[x][y]指定的滤波器所对应的亮度滤波系数阵列f[j]和亮度剪切值阵列c[j]推导如下,j=0...11:
-…
-根据transposeIdx[x][y]推导的亮度滤波器系数和剪切值索引dx如下所示:
-…
-在给定的亮度样点阵列recPicture(其中i,j=-3...3)内的每一个对应的亮度样点的位置(hx+i,vy+j)推导如下:
-…
-变量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(其中i,j=-2...2)中,每一个对应的色度样点(x,y)的位置(hx+i,vy+j)的推导如下:
-如果对于任何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,pic_width_in_luma_samples/SubWidthC-1,xCtbC+x+i) (8-1232)
-否则,如果对于任何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,pic_height_in_luma_samples/SubHeightC-1,yCtbC+y+j) (8-1235)
-否则,如果对于任何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-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。
具有i,j=-2..5的、亮度样点的给定阵列recPicture中每个相应亮度样点(x,y)的位置(hx+i,vy+j)如下得出:
–如果对于任何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)等于[[(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。
–否则,将minY设置为等于-2,将maxY设置为等于5,将ac设置为等于64。
3.具有x,y=0..(CtbSizeY-1)>>2的、变量varTempH1[x][y]、varTempV1[x][y]、varTempD01[x][y]、varTempD11[x][y]和varTemp[x][y]的推导如下:
sumH[x][y]=∑i∑j filtH[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb],其中i=-2..5,j=minY..maxY (8-1205)
sumV[x][y]=∑i∑j filtV[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb],其中i=-2..5,j=minY..maxY (8-1206)
sumD0[x][y]=∑i∑j filtD0[h(x<<2)+i-xCtb][v(y<<2)+j-yCtb],其中i=-2..5,j=minY..maxY (8-1207)
sumD1[x][y]=∑i∑j 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.具有x,y=0..CtbSizeY–1的、变量dir1[x][y]、dir2[x][y]和dirS[x][y]的推导如下:
–变量hv1、hv0和dirHV的推导如下:
…
–变量d1、d0和dirD的推导如下:
…
5.具有x,y=0..CtbSizeY-1的变量avgVar[x][y]的推导如下:
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.具有x=y=0..CtbSizeY–1的、分类滤波器索引阵列filtIdx[x][y]和转置索引阵列transposeIdx[x][y]推导如下:
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度虚拟边界。
图22是视频处理装置2200的框图。装置2200可以用于实现本文描述的一种或多种方法。装置2200可以体现在智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置2200可以包括一个或多个处理器2202、一个或多个存储器2204和视频处理硬件2206。处理器2202可以被配置为实现本文档中描述的一种或多种方法。(一个或多个)存储器2204可以用于存储用于实现本文描述的方法和技术的数据和代码。视频处理硬件2206可以用于在硬件电路中实现本文档中描述的一些技术。
在一些实施例中,视频编解码方法可以使用如关于图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中的任何一个或多个所述的方法。
图28是示出其中可实现本文中所公开的各种技术的示例视频处理系统2800的框图。各种实施方式可以包括系统2800的一些或全部组件。系统2800可以包括用于接收视频内容的输入2802。视频内容可以以原始或未压缩的格式(例如8或10位多分量像素值)接收,或者可以以压缩或编码的格式接收。输入2802可以代表网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口(诸如以太网、无源光网络(PON)等)和无线接口(诸如Wi-Fi或蜂窝接口)。
系统2800可以包括可以实现本文中描述的各种编解码或编码方法的编解码组件2804。编解码组件2804可以减少从编解码组件2804的输入2802到输出的视频的平均比特率,以生成视频的编解码表示。因此,编解码技术有时称为视频压缩或视频转码技术。如组件2806所表示的,编解码组件2804的输出可以被存储或经由所连接的通信来发送。在输入2802处接收的视频的存储或传送的比特流(或编解码)表示可以被组件2808使用,以生成被发送到显示接口2810的像素值或可显示视频。从比特流表示中生成用户可见视频的处理有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编解码”操作或工具,但是应当理解,在编码器处使用编码工具或操作,并且将由解码器执行反向编码结果的相应解码工具或操作。
外围总线接口或显示接口的示例可以包括通用串行总线(USB)或高清多媒体接口(HDMI)或Displayport等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型计算机、智能电话或其他能够执行数字数据处理和/或视频显示的设备。
图29是表示根据本技术的用于视频处理的方法2900的流程图。方法2900包括,在操作2910处,对于包括一个或多个块的视频的图片与所述视频的比特流表示之间的转换,基于与所述块的底部边界和所述图片之间的关系有关的规则,确定是否为所述图片内的块启用虚拟边界,以进行滤波处理。该方法2900还包括,在操作2920处,基于所述确定执行所述转换。
在一些实施例中,所述规则定义所述块的底部边界与所述图片之间的关系对于所述确定是足够的。在一些实施例中,所述滤波处理包括自适应环路滤波处理或环路滤波处理。在一些实施例中,所述规则指定在所述块的底部边界不是所述图片的底部边界的情况下,启用所述虚拟边界。
在一些实施例中,所述规则指定在所述块的底部边界是所述图片的底部边界或者位于所述图片的外部的情况下,禁用所述虚拟边界。在一些实施例中,所述规则指定在所述图片内的所述块的底部边界不是所述图片的底部边界的情况下,启用所述虚拟边界。在一些实施例中,所述规则指定在所述块的底部边界不是小于所述图片的视频单元的边界的情况下,启用所述虚拟边界。在一些实施例中,所述视频单元包括条带、片或砖。
在一些实施例中,所述规则指定在所述块的底部边界是虚拟边界的情况下,启用所述虚拟边界。在一些实施例中,尽管所述图片级别的语法标志指示虚拟边界使用被禁用,但是所述规则指定为滤波处理启用所述虚拟边界。在一些实施例中,所述语法标志包括pps_loop_filter_across_virtual_boundaries_disabled_flag。在一些实施例中,尽管所述块的底部边界与所述图片的底部边界相同,但是所述规则指定为滤波处理启用所述虚拟边界。在一些实施例中,在为所述编解码树块启用了所述虚拟边界的情况下,所述滤波处理仅从所述块的虚拟边界上方滤波样点。
图30是表示根据本技术的用于视频处理的方法3000的流程图。方法3000包括,在操作3010处,针对包括一个或多个块的视频的图片与所述视频的比特流表示之间的转换,基于与块的维度有关的规则,确定基于与图片内的块的滤波处理相关联的填充处理而生成的虚拟样点的使用。该方法3000还包括,在操作3020处,基于所述确定执行所述转换。
在一些实施例中,所述虚拟样点的使用与是否为所述块启用虚拟边界有关。在一些实施例中,所述滤波处理包括自适应环路滤波处理或环路滤波处理。
在一些实施例中,所述规则指定在所述块的维度为K×L,K和L为正整数的情况下,始终禁用所述虚拟边界。在一些实施例中,K=L=4。在一些实施例中,所述规则指定在所述块的维度等于或小于K×L,K和L为正整数的情况下,始终禁用所述虚拟边界。在一些实施例中,K=L=8。
在一些实施例中,所述规则指定在所述块的维度为M×N,M和N为正整数的情况下,禁用所述虚拟边界。在一些实施例中,M=N=4或M=N=8。
图31是表示根据本技术的用于视频处理的方法3100的流程图。方法3100包括,在操作3110处,针对包括一个或多个视频单元的视频的图片与所述视频的比特流表示之间的转换,确定在滤波处理中禁用跨所述一个或多个视频单元的边界的样点的使用。所述比特流表示被配置有指示启用了所述使用的语法标志。该方法3100还包括,在操作3120处,基于所述确定执行所述转换。
在一些实施例中,所述一个或多个视频单元包括砖或条带。在一些实施例中,所述滤波处理包括自适应环路滤波处理或环路滤波处理。在一些实施例中,所述语法标志不适用于所述自适应环路滤波处理。在一些实施例中,所述语法标志包括loop_filter_across_bricks_enabled_flag或loop_filter_across_slices_enabled_flag。在一些实施例中,所述语法标志可适用于去方块滤波器处理或样点自适应偏移SAO处理。在一些实施例中,样点的使用包括基于填充处理生成的虚拟样点的使用。
图32是表示根据本技术的用于视频处理的方法3200的流程图。方法3200包括,在操作3210处,对于视频的块和所述视频的比特流表示之间的转换,确定统一的方式,其中根据规则将填充处理应用于滤波处理。将应用所述填充处理,以为位于不同视频单元边界附近的块的样点生成一个或多个虚拟样点。该方法3200还包括,在3220处,基于所述确定执行所述转换。
在一些实施例中,所述不同的视频单元包括条带、砖、片、图片或360度视频单元。在一些实施例中,不同视频单元的边界包括虚拟边界或实际边界。在一些实施例中,所述滤波处理包括自适应环路滤波处理或环路滤波处理。
在一些实施例中,所述规则指定对于所述滤波处理仅调用一次所述填充处理。在一些实施例中,所述规则指定基于所述环路滤波处理的对称填充方式来生成所述一个或多个虚拟样点。在一些实施例中,所述规则指定在所述样点位于所述一个或多个视频单元之一的底部边界的情况下,应用所述填充处理。
在一些实施例中,所述规则指定基于与所述样点相对于所述多个边界中至少一个的位置有关的第二规则,确定所述一个或多个虚拟样点所位于的行数。在一些实施例中,所述第二规则与所述样点相对于所有所述多个边界的位置有关。在一些实施例中,所述样点位于两个边界之间,并且所述第二规则与所述样点与所述两个边界之间的距离有关。在一些实施例中,所述第二规则与所述样点和所述样点的最近边界之间的距离有关。
在一些实施例中,针对所述多个边界中的每一个,确定所述一个或多个虚拟样点所位于的所述行数,并且将最大行数用于所述转换。在一些实施例中,针对所述样点沿着边界的每一侧,确定所述一个或多个虚拟样点所位于的所述行数。在一些实施例中,针对所述样点的沿着边界的两侧,共同确定所述一个或多个虚拟样点所位于的所述行数。
在一些实施例中,所述规则指定在所述一个或多个虚拟样点所位于的所述行数大于阈值的情况下,禁用所述滤波处理。在一些实施例中,在所述样点的一侧上的所述行数大于所述阈值的情况下,禁用所述滤波处理。在一些实施例中,在所述样点的两侧上的所述行数大于所述阈值的情况下,禁用所述滤波处理。
在一些实施例中,所述规则指定在将自适应环路滤波处理应用于所述块的情况下,所述一个或多个虚拟样点位于所述样点的两侧。在一些实施例中,所述规则指定在所述样点位于所述多个边界的第二边界与第三边界之间的第一边界处的情况下,禁用所述自适应环路滤波处理。在一些实施例中,所述规则指定在所述样点位于所述一个或多个视频单元中的一个的底部边界处、且为所述块启用所述环路滤波处理的情况下,应用所述填充处理。
在一些实施例中,所述规则指定在满足条件的情况下应用所述填充处理。在一些实施例中,在所述样点位于所述一个或多个视频单元中的一个的底部边界处、并且语法标志指示在滤波处理中禁用跨所述一个或多个视频单元的边界的样点的使用的情况下,满足所述条件。在一些实施例中,所述语法标志包括pps_loop_filter_across_virtual_boundaries_disabled_flag或loop_filter_across_slices_enabled_flag/loop_filter_across_slices_enabled_flag。
图33是表示根据本技术的用于视频处理的方法3300的流程图。方法3300包括,在操作3310处,对于视频的块和所述视频的比特流表示之间的转换,根据规则确定在滤波处理中对其应用了填充处理的行数。应用所述填充处理以为位于至少两个边界附近的所述块的样点生成一个或多个虚拟样点,所述至少两个边界包括虚拟边界和至少一个其他边界。所述规则与所述样点和所述至少两个边界之间的距离有关。方法3300还包括,在操作3320处,基于所述确定执行所述转换。
在一些实施例中,所述滤波器处理包括自适应环路滤波处理。在一些实施例中,所述规则指定所述样点的每一侧的行数为(M-min(D0,D1)),其中,D0表示所述样点与所述虚拟边界之间的第一距离,且D1表示所述样点与所述至少一个其他边界之间的第二距离。M表示从所述虚拟边界到所述块的底部边界的行数。在一些实施例中,所述规则指定所述样点的每一侧的行数为(M-max(D0,D1))。D0表示所述样点与所述虚拟边界之间的第一距离,且D1表示所述样点与所述至少一个其他边界之间的第二距离。M表示从所述虚拟边界到所述块的底部边界的行数。
图34是表示根据本技术的用于视频处理的方法3400的流程图。方法3400包括,在操作3410处,对于在视频单元的视频的块和所述视频的比特流表示之间的转换,确定(1)在应用一个或多个环路滤波处理之前,选择第一样点的第一方式,以及(2)在应用一个或多个环路滤波处理之后并且在应用自适应滤波处理之前,选择第二样点的第二方式。方法3400还包括,在操作3420处,基于所述确定执行所述转换。
在一些实施例中,所述视频单元包括编解码树块、条带或砖。在一些实施例中,选择所述第一样点的所述第一方式和选择所述第二样点的所述第二方式是基于所述第一样点和所述第二样点的位置。在一些实施例中,在自适应滤波处理中使用了所述样点的情况下,所述第一方式指定将位于所述视频单元的底部边界的样点选择为所述第一样点。在一些实施例中,在自适应滤波处理中使用了所述样点的情况下,所述第二方式指定选择不位于所述视频单元的底部边界的样点作为所述第二样点。
图35是表示根据本技术的用于视频处理的方法3500的流程图。方法3500包括,在操作3510处,对于在视频单元的视频的块和所述视频的比特流表示之间的转换,确定应用多个填充处理以生成用于所述块的样点的一个或多个虚拟样点以进行滤波处理的顺序。方法3500还包括,在操作3520处,基于所述确定执行所述转换。
在一些实施例中,所述块包括编解码树单元或虚拟流水线数据单元。在一些实施例中,所述视频单元包括图片的子区域、条带或砖。在一些实施例中,所述顺序指定在对虚拟边界进行第二填充处理之前,应用所述视频单元的第一填充处理。在一些实施例中,在所述第一填充处理中生成沿着所述块的样点的单侧的第一组虚拟样点。在一些实施例中,在所述第二填充处理中生成沿着所述块的样点的两侧的第二组填充样点。在一些实施例中,在所述第二填充处理中使用所述第一组虚拟样点来生成所述第二组虚拟样点。
在一些实施例中,边界包括所述图片内的两个区域之间的水平边界。在一些实施例中,边界包括所述图片内的两个区域之间的垂直边界。在一些实施例中,所述两个区域包括所述视频的子图片。
图36是表示根据本技术的用于视频处理的方法3600的流程图。方法3600包括,在操作3610处,对于视频的块和所述视频的比特流表示之间的转换,根据与所述块的分量标识相关联的规则,确定是否将所述块的样点放置在距所述块的边界一定距离内以作为滤波处理的边界样点。方法3600还包括,在操作3620处,基于所述确定执行所述转换。
在一些实施例中,所述滤波处理包括环路滤波处理或自适应环路滤波处理。在一些实施例中,在所述样点与底部边界之间的距离小于阈值T1且所述块为亮度块的情况下,所述规则指定所述样点为所述块的底部边界样点。在一些实施例中,在所述样点与底部边界之间的距离小于阈值T2且所述块是色度块的情况下,所述规则指定所述样点是所述块的底部边界样点。在一些实施例中,T1和T2不同。在一些实施例中,在所述视频的颜色格式不是4:4:4的情况下,T1和T2不同。
图37是表示根据本技术的用于视频处理的方法3700的流程图。方法3700包括,在操作3710处,对于视频的块与所述视频的比特流表示之间的转换,确定对滤波处理禁用跨视频的视频单元的边界的样点。所述视频包括一个或多个视频单元,并且所述一个或多个视频单元中的每个包括一个或多个块。方法3700还包括,在操作3720处,基于所述确定执行所述转换。
在一些实施例中,所述视频单元包括虚拟流水线数据单元。在一些实施例中,所述视频单元包括64×64区域。在一些实施例中,所述滤波处理包括环路滤波处理或自适应环路滤波处理。在一些实施例中,所述边界包括垂直边界。在一些实施例中,所述边界包括水平边界。在一些实施例中,在所述块包括位于所述视频单元的所述边界附近的样点的情况下,为所述块启用虚拟边界。在一些实施例中,在所述样点位于所述边界之外或低于所述虚拟边界的情况下,将所述滤波处理所需的样点替换为由基于所述视频单元内的可用样点生成的填充样点。在一些实施例中,在所述样点位于所述边界之外或低于所述虚拟边界的情况下,将自适应环路滤波处理中的分类步骤所需的样点替换为基于所述视频单元内的可用样点确定的分类结果或填充样点。
图38是表示根据本技术的用于视频处理的方法3800的流程图。方法3800包括,在操作3810处,对于在视频的块和所述视频的比特流表示之间的转换,确定在不使用填充样点的情况下对所述块进行滤波处理的方式。方法3800还包括,在操作3820处,基于所述确定执行所述转换。
在一些实施例中,所述滤波处理包括自适应环路滤波处理。在一些实施例中,所述方式指定在所述自适应环路滤波处理中使用在任何环路滤波处理之前确定的重构样点。在一些实施例中,对于所述块中的当前样点,在所述自适应环路滤波处理中使用在任何环路滤波处理之前确定的两个重构样点,其中,所述两个重构样点分别位于所述当前样点的两侧。在一些实施例中,所述两个重构样点的位置相对于所述当前样点对称。在一些实施例中,在当前样点位于(x,y)且第一重构样点位于(x+i,y+j)的情况下,第二重构样点位于(x-i,y-j),其中x和y是非负整数,并且其中i和j是正整数。在一些实施例中,在启用其中缩放所述块的分量的重塑步骤的情况下,从由重塑域转换的域中选择所述重构样点。
在一些实施例中,所述方式指定与所述自适应环路滤波处理相关联的样点或调整参数。在一些实施例中,所述调整包括修改与当前样点相关联的滤波器系数。在一些实施例中,所述修改包括将与所述当前样点相关联的所述滤波器系数设置为零。在一些实施例中,所述修改包括将适用于所述当前样点的滤波器系数设置为((1<<C_BD)-Sum),其中,C_BD表示所述滤波器系数的比特深度,并且其中,Sum表示适用于不需要填充样点的样点的所有系数的总和。
在一些实施例中,所述调整包括排除需要填充样点的样点。在一些实施例中,所述调整包括将第一样点的滤波器系数与第二样点的滤波器系数相加,而与是否启用非线性滤波器无关。在一些实施例中,所述调整还包括导出所述第二样点的剪切参数。在一些实施例中,至少基于所述第二样点的解码的剪切参数来导出所述第二样点的剪切参数。在一些实施例中,基于所述第一样点的第一解码剪切参数和所述第二样点的第二解码剪切参数的函数来导出所述第二样点的剪切参数。
在一些实施例中,所述方式指定和不需要填充样点的第一样点的滤波处理相关联的第一组参数、与使用填充样点的第二样点的第二组参数不同。在一些实施例中,尽管所述第一样点和所述第二样点共享相同的类别索引,但是所述方式指定所述第一组参数和所述第二组参数是不同的。在一些实施例中,与所述滤波处理相关联的参数包括剪切参数、滤波器系数或支持所述滤波处理的其他参数。在一些实施例中,所述方式指定在所述比特流表示中信令通知与所述滤波处理相关联的参数。在一些实施例中,以编解码树单元级、区域级、条带级或片级来信令通知所述参数。在一些实施例中,所述方式指定基于所述第二组参数来确定所述第一组参数。
在一些实施例中,所述方式指定与针对所述当前样点的所述滤波处理相关联的调整参数。在一些实施例中,所述调整包括修改与所述当前样点相关联的滤波器系数。在一些实施例中,所述修改包括将与所述当前样点相关联的所述滤波器系数设置为零。在一些实施例中,所述修改包括将适用于所述当前样点的滤波器系数设置为((1<<C_BD)-Sum),其中,C_BD表示所述滤波器系数的比特深度,并且其中,Sum表示适用于不需要填充样点的样点的所有系数的总和。在一些实施例中,所述调整包括排除需要填充样点的样点。在一些实施例中,所述调整包括将第一样点的滤波器系数与第二样点的滤波器系数相加,而与是否启用非线性滤波器无关。在一些实施例中,所述调整还包括导出所述第二样点的剪切参数。在一些实施例中,至少基于所述第二样点的解码剪切参数来导出所述第二样点的剪切参数。在一些实施例中,基于所述第一样点的第一解码剪切参数和所述第二样点的第二解码剪切参数的函数来导出所述第二样点的剪切参数。
在一些实施例中,所述转换包括将所述视频编码为所述比特流表示。在一些实施例中,所述转换包括将所述比特流表示解码为所述视频。
综上所述,为了说明的目的,本文描述了本公开技术的具体实施例,但是可以在不偏离本发明的范围的情况下进行各种修改。因此,除了所附权利要求外,本公开技术不受限制。
所公开技术的一些实施例包括作出启用视频处理工具或模式的决策或确定。在一个示例中,当视频处理工具或模式被启用时,编码器将在视频块的处理中使用或实现该工具或模式,但不一定基于该工具或模式的使用来修改所产生的比特流。也就是说,当基于决策或确定启用视频处理工具或模式时,从视频块到视频的比特流表示的转换将使用该视频处理工具或模式。在另一示例中,当视频处理工具或模式被启用时,解码器将在知晓已经基于视频处理工具或模式修改比特流的情况下处理比特流。也就是说,将使用基于决策或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频块的转换。
所公开技术的一些实施例包括作出禁用视频处理工具或模式的决策或确定。在一个示例中,当视频处理工具或模式被禁用时,编码器将不在视频块到视频的比特流表示的转换中使用该工具或模式。在另一示例中,当视频处理工具或模式被禁用时,解码器将在知晓未使用基于所述决策或确定而启用的视频处理工具或模式修改比特流的情况下处理比特流。
本文档中描述的主题名称和功能性操作的实现可以在数字电子电路、或计算机软件、固件或硬件中实现,包括本说明书中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明中描述的主题的实现可以实现为一个或多个计算机程序产品,例如,一个或多个编码在有形的且非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信令的物质组成或其中一个或其中多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标志语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
旨在将说明书与附图一起仅视为示例性的,其中示例性的指的是示例。如本文所使用的,“或”的使用旨在包括“和/或”,除非上下文另外明确指出。
虽然本专利文件包括许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特性的描述。本专利文件在单独实施例的上下文描述的某些特性也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特性可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特性,并且权利要求的组合可以指向子组合或子组合的变体。
同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。
Claims (20)
1.一种处理视频数据的方法,包括:
对于包括一个或多个编解码树块的视频的图片与视频的比特流之间的转换,基于所述图片内的编解码树块的底部边界和所述图片的底部边界之间的关系,确定是否为所述编解码树块启用行缓冲器虚拟边界,以用于第一滤波处理;和
基于所述确定执行所述转换,
其中,所述第一滤波处理包括:
确定所述编解码树块的至少一个滤波索引;
基于所述至少一个滤波索引,推导滤波系数集;和
基于所述滤波系数集,执行滤波操作,
其中,在所述编解码树块的底部边界不是包含所述编解码树块的所述图片的底部边界的情况下,启用所述行缓冲器虚拟边界,
其中,所述确定仅取决于所述编解码树块的底部边界和所述图片的底部边界之间的关系,并且独立于所述编解码树块和所述图片的其他边界,以及
其中,所述确定独立于所述编解码树块的底部边界和砖的底部边界之间的关系、所述编解码树块的底部边界和条带的底部边界之间的关系、或者所述编解码树块的底部边界和所述图片的底部虚拟边界之间的关系。
2.根据权利要求1所述的方法,其中所述行缓冲器虚拟边界用于确定所述至少一个滤波索引,并且其中所述行缓冲器虚拟边界之外的样点不被用于确定所述至少一个滤波索引。
3.根据权利要求1所述的方法,其中在所述滤波操作中使用所述行缓冲器虚拟边界,其中所述滤波操作使用钻石形滤波器,其中在所述滤波操作中,在所述虚拟边界的两侧执行对称填充。
4.根据权利要求1所述的方法,还包括:
确定填充处理应用于所述第一滤波处理的统一方式,其中应用所述填充处理为位于多种视频区域的边界附近的编解码树块的样点生成一个或多个虚拟样点,
其中,对于所述第一滤波处理,所述填充处理仅被调用一次。
5.根据权利要求4所述的方法,其中所述多种视频区域的所述边界包括:条带边界、砖边界、片边界、子图片边界或360度边界中的至少一个。
6.根据权利要求4所述的方法,其中所述多种视频区域的所述边界包括虚拟边界或实际边界。
7.根据权利要求4所述的方法,其中,基于样点相对于所述边界中的至少一个的位置来确定应用所述填充处理的线的数量。
8.根据权利要求4所述的方法,其中多种视频区域的所述边界包括水平边界或垂直边界。
9.根据权利要求1所述的方法,其中所述第一滤波处理是自适应环路滤波处理。
10.根据权利要求1-9中任一项所述的方法,其中所述转换包括将所述视频编码成所述比特流。
11.根据权利要求1-9中任一项所述的方法,其中所述转换包括将所述比特流解码为所述视频。
12.一种用于处理视频数据的设备,所述设备包括处理器和其上存储有指令的非暂时性存储器,其中所述指令在被所述处理器执行时使得所述处理器:
对于包括一个或多个编解码树块的视频的图片与视频的比特流之间的转换,基于所述图片内的编解码树块的底部边界和所述图片的底部边界之间的关系,确定是否为所述编解码树块启用行缓冲器虚拟边界,以用于第一滤波处理;和
基于所述确定执行所述转换,
其中,所述第一滤波处理包括:
确定所述编解码树块的至少一个滤波索引;
基于所述至少一个滤波索引,推导滤波系数集;和
基于所述滤波系数集,执行滤波操作,
其中,在所述编解码树块的底部边界不是包含所述编解码树块的所述图片的底部边界的情况下,启用所述行缓冲器虚拟边界,
其中,所述确定仅取决于所述编解码树块的底部边界和所述图片的底部边界之间的关系,并且独立于所述编解码树块和所述图片的其他边界,以及
其中,所述确定独立于所述编解码树块的底部边界和砖的底部边界之间的关系、所述编解码树块的底部边界和条带的底部边界之间的关系、或者所述编解码树块的底部边界和所述图片的底部虚拟边界之间的关系。
13.根据权利要求12所述的设备,其中所述行缓冲器虚拟边界用于确定所述至少一个滤波索引,并且其中所述行缓冲器虚拟边界之外的样点不被用于确定所述至少一个滤波索引;并且
其中在所述滤波操作中使用行缓冲器虚拟边界,所述滤波操作使用钻石形滤波器,在所述滤波操作中,在所述虚拟边界的两侧执行对称填充。
14.根据权利要求12所述的设备,其中所述指令还使得所述处理器:
确定填充处理应用于所述第一滤波处理的统一方式,其中应用所述填充处理为位于多种视频区域的边界附近的编解码树块的样点生成一个或多个虚拟样点,
其中,对于所述第一滤波处理,所述填充处理仅被调用一次;
其中所述多种视频区域的所述边界包括:条带边界、砖边界、片边界、子图片边界或360度边界中的至少一个;
其中所述多种视频区域的所述边界包括虚拟边界或实际边界;
其中,基于样点相对于所述边界中的至少一个的位置来确定应用所述填充处理的线的数量;
其中多种视频区域的所述边界包括水平边界或垂直边界;并且
其中所述第一滤波处理是自适应环路滤波处理。
15.一种存储有指令的非暂时性计算机可读存储介质,其中所述指令使得处理器:
对于包括一个或多个编解码树块的视频的图片与视频的比特流之间的转换,基于所述图片内的编解码树块的底部边界和所述图片的底部边界之间的关系,确定是否为所述编解码树块启用行缓冲器虚拟边界,以用于第一滤波处理;和
基于所述确定执行所述转换,
其中,所述第一滤波处理包括:
确定所述编解码树块的至少一个滤波索引;
基于所述至少一个滤波索引,推导滤波系数集;和
基于所述滤波系数集,执行滤波操作,
其中,在所述编解码树块的底部边界不是包含所述编解码树块的所述图片的底部边界的情况下,启用所述行缓冲器虚拟边界,
其中所述确定仅取决于所述编解码树块的底部边界和所述图片的底部边界之间的关系,并且独立于所述编解码树块和所述图片的其他边界,以及
其中,所述确定独立于所述编解码树块的底部边界和砖的底部边界之间的关系、所述编解码树块的底部边界和条带的底部边界之间的关系、或者所述编解码树块的底部边界和所述图片的底部虚拟边界之间的关系。
16.根据权利要求15所述的存储介质,其中所述行缓冲器虚拟边界用于确定所述至少一个滤波索引,并且其中所述行缓冲器虚拟边界之外的样点不被用于确定所述至少一个滤波索引;并且
其中在所述滤波操作中使用行缓冲器虚拟边界,所述滤波操作使用钻石形滤波器,在所述滤波操作中,在所述虚拟边界的两侧执行对称填充。
17.根据权利要求15所述的存储介质,其中所述指令还使得所述处理器:
确定填充处理应用于所述第一滤波处理的统一方式,其中应用所述填充处理为位于多种视频区域的边界附近的编解码树块的样点生成一个或多个虚拟样点,
其中,对于所述第一滤波处理,所述填充处理仅被调用一次;
其中所述多种视频区域的所述边界包括:条带边界、砖边界、片边界、子图片边界或360度边界中的至少一个;
其中所述多种视频区域的所述边界包括虚拟边界或实际边界;
其中,基于样点相对于所述边界中的至少一个的位置来确定应用所述填充处理的线的数量;
其中多种视频区域的所述边界包括水平边界或垂直边界;并且
其中所述第一滤波处理是自适应环路滤波处理。
18.一种用于存储视频的比特流的方法,包括:
基于视频的图片内的编解码树块的底部边界和所述图片的底部边界之间的关系,确定是否为所述图片内的编解码树块启用行缓冲器虚拟边界,以用于第一滤波处理;
基于所述确定生成所述比特流;和
将所述比特流存储在非暂时性计算机可读记录介质中,
其中,所述第一滤波处理包括:
确定所述编解码树块的至少一个滤波索引;
基于所述至少一个滤波索引,推导滤波系数集;和
基于所述滤波系数集,执行滤波操作,
其中,在所述编解码树块的底部边界不是包含所述编解码树块的所述图片的底部边界的情况下,启用所述行缓冲器虚拟边界,
其中,所述确定仅取决于所述编解码树块的底部边界和所述图片的底部边界之间的关系,并且独立于所述编解码树块和所述图片的其他边界,以及
其中,所述确定独立于所述编解码树块的底部边界和砖的底部边界之间的关系、所述编解码树块的底部边界和条带的底部边界之间的关系、或者所述编解码树块的底部边界和所述图片的底部虚拟边界之间的关系。
19.根据权利要求18所述的方法,其中所述行缓冲器虚拟边界用于确定所述至少一个滤波索引,并且其中所述行缓冲器虚拟边界之外的样点不被用于确定所述至少一个滤波索引;并且
其中在所述滤波操作中使用行缓冲器虚拟边界,所述滤波操作使用钻石形滤波器,在所述滤波操作中,在所述虚拟边界的两侧执行对称填充。
20.根据权利要求18所述的方法,其中所述方法还包括:
确定填充处理应用于所述第一滤波处理的统一方式,其中应用所述填充处理为位于多种视频区域的边界附近的编解码树块的样点生成一个或多个虚拟样点,
其中,对于所述第一滤波处理,所述填充处理仅被调用一次;
其中所述多种视频区域的所述边界包括:条带边界、砖边界、片边界、子图片边界或360度边界中的至少一个;
其中所述多种视频区域的所述边界包括虚拟边界或实际边界;
其中,基于样点相对于所述边界中的至少一个的位置来确定应用所述填充处理的线的数量;
其中多种视频区域的所述边界包括水平边界或垂直边界;并且
其中所述第一滤波处理是自适应环路滤波处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311587522.1A CN118138754A (zh) | 2019-06-14 | 2020-06-15 | 处理视频单元边界和虚拟边界 |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2019/091324 | 2019-06-14 | ||
CN2019091324 | 2019-06-14 | ||
CNPCT/CN2019/092861 | 2019-06-25 | ||
CN2019092861 | 2019-06-25 | ||
CNPCT/CN2019/095157 | 2019-07-08 | ||
CN2019095157 | 2019-07-08 | ||
PCT/CN2020/096044 WO2020249123A1 (en) | 2019-06-14 | 2020-06-15 | Handling video unit boundaries and virtual boundaries |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311587522.1A Division CN118138754A (zh) | 2019-06-14 | 2020-06-15 | 处理视频单元边界和虚拟边界 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114424539A CN114424539A (zh) | 2022-04-29 |
CN114424539B true CN114424539B (zh) | 2024-07-12 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109600611A (zh) * | 2018-11-09 | 2019-04-09 | 北京达佳互联信息技术有限公司 | 环路滤波方法、环路滤波装置、电子设备和可读介质 |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109600611A (zh) * | 2018-11-09 | 2019-04-09 | 北京达佳互联信息技术有限公司 | 环路滤波方法、环路滤波装置、电子设备和可读介质 |
Non-Patent Citations (1)
Title |
---|
"Versatile Video Coding (Draft 5)";Benjamin Bross 等;《Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 14th Meeting: Geneva, CH》;20190327;310-315 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114128278B (zh) | 自适应环路滤波中的样点填充 | |
CN113994671B (zh) | 基于颜色格式处理视频单元边界和虚拟边界 | |
CN114097225B (zh) | 用于自适应环路滤波的样点确定 | |
CN118138754A (zh) | 处理视频单元边界和虚拟边界 | |
CN114503594B (zh) | 自适应环路滤波中样点填充的选择性应用 | |
CN114450954B (zh) | 不同视频单元之间的自适应环路滤波 | |
CN114175637B (zh) | 自适应环路滤波中的分类 | |
CN117956146A (zh) | 自适应环路滤波中不可用样点位置处的填充处理 | |
CN114424539B (zh) | 处理视频单元边界和虚拟边界 | |
CN114128296A (zh) | 自适应环路滤波中跨视频单元边界访问样点 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |