本文来自DCC2022论文《Cross-component Sample Adaptive Offset》

DCC2022:环路滤波CCSAO_升序

VVC中的环路滤波工具除了传统的DBF、SAO外,还引入了​​LMCS​​​、​​ALF​​、CCALF,对于一些视频内容,色度分量可能包含了冗余的纹理、边界等信息,而现有的技术很难去除不同分量间的冗余,因此论文提出了一种新的环路滤波技术CCSAO(Cross-component Sample Adaptive Offset),CCSAO类似于SAO的边带补偿(BO),CCSAO已经集成进ECM2.0。

简介


CCSAO的处理流程如Fig.1所示,

DCC2022:环路滤波CCSAO_微信公众号_02

CCSAO会生成偏移值offset,并加在环路滤波SAO的输出结果上,从Fig.1可看出CCSAO的输入来自DBF的输出,因此SAO和CCSAO可以并行处理。每个分量计算CCSAO时其输入都包括YUV三个分量,因此可以去除不同分量间的冗余。

CCSAO和SAO类似,需要将每个像素划分到一个类别然后根据类别加上补偿值。计算如下式,给定一个亮度或色度像素首先取其对应的YUV值,然后根据值计算对应的边带{band_Y,band_U,band_V},然后根据边带得到改像素所属的类别i,根据类别i取对应的补偿值加到重建值上得到新的重建值。

DCC2022:环路滤波CCSAO_CCSAO_03

上式中{Ycol,Ucol,Vcol}是像素对应的三个分量,像素取值方法如Fig.2,色度对应的值是固定的,亮度值可以从9个候选值中选择。{NY,NU,NV}是YUV分别对应的边带数量。BD的位深。σ是记录了不同类别对应的offset。

CCSAO和SAO类似,会将像素分为不同类别,因此会在帧级提供一些分类器,每个分类器包含{NY,NU,NV},Ycol和σ数组参数。每个CTB可以选择最优的分类器来进行CCSAO处理。对于每个分类器{NY,NU,NV}最大设为{16,4,4},补偿值范围为[-15,15],每帧至多提供4个分类器。

编码算法


为了降低编码复杂度,计算CCSAO参数时采用分层RDO的方式,包括3个步骤:1)逐步确定最优分类器;2)对每个分类器迭代调整offset;3)对每个CTB高效的选择最优分类器;

早停止快速计算分类器

分类器根据其所含像素数量按升序进行RD计算,先对类别少的分类器进行RD计算,然后根据它的结果决定是否对类别更多的分类器进行计算。当某个分类器的RD性能没有提升时,那比它类别更多的分类器则不进行计算。当分类器满足以下某个条件时也跳过计算:1)亮度类别的数量NY小于色度类别的数量NU或NV;2)分类器中总类别数超过64;

迭代计算offset

计算分类器中每个类别的offset时首先用上面公式对帧内重建像素进行分类,然后按照HEVC SAO中的方法为每个类别计算初始offset,此外对于小于初始offset的offset也进行RD计算最终选择RD cost最小的offset。每个类别的offset计算完后对每个CTB计算其开启CCSAO和关闭CCSAO的RD cost,选择那些开启CCSAO更优的CTB的像素来调整offset,持续以上过程直到RD性能不再改善或达到最大迭代次数。

分类器生成

自适应决定每帧分类器数量,选择完一个分类器后对每个CTB计算开启该分类器的失真并按升序排列,去掉前一半CTB用剩下的一半分类器选择新的分类器。当RD性能不再提升时则不再增加分类器数量。

实验结果


实验平台为ECM1.0,QP={22,27,32,37},结果如表1,

DCC2022:环路滤波CCSAO_迭代_04

感兴趣的请关注微信公众号Video Coding