和H.265相比,H.266里的环路滤波模块新增了ALF,CC-ALF和LMCS工具。DBK去块滤波可以认为是H.265的增强版,其处理过程大致上和H.265一样,引入了长抽头滤波器和更加灵活的滤波控制,而SAO滤波和H.265里面没有什么差异。
LMCS工具在前文已经介绍过了,今天来简单介绍下Adaptive Loop Filter, ALF。如果要细分的话,它包括亮度ALF、色度ALF和分量间ALF。
ALF基于维纳滤波来减小原始图像像素和重建图像像素之间的MSE值。它会对图像里非重叠的4×4块基于局部像素梯度值进行分类,每个类使用一个滤波器(系数)进行滤波处理。
ALF的输入是经过SAO滤波的像素值,对亮度分量和色度分量它有两个不同滤波器模板。为了减少传输滤波器系数的bit以及降低滤波的计算复杂度,分别用中心对称的7×7菱形和5×5菱形模板。
上图中ci表示滤波器系数,编码器端ALF的任务就是确定出滤波器模板中的滤波系数并对像素进行滤波处理。
1.确定滤波器系数
在H.266中,ALF会根据视频内容自适应地在有限个滤波系数集中选择一组波器系数。这个滤波器系数集包含了M个滤波器子集,而每个滤波器子集又包含了和视频内容相关的N类滤波器(对亮度分量N=25,色度分量N=1),即MxN个滤波器系数。如下图所示:
编码端首先会根据像素块(4×4)的内容确定滤波器类,然后再利用率失真优化RDO确定最优滤波器子集,并对子集索引进行编码,对像素进行滤波处理。
解码端则对每个CTU,首先根据码流里的子集索引确定滤波器子集,然后根据像素块(4×4)的内容确定滤波器类,即可确定像素块使用的滤波器系数,对像素进行滤波处理。
也就是说,H.266的编码端和解码端都需要进行确定滤波器子集和确定滤波器类以及进行滤波的处理过程。
先说滤波器子集的确定。
在ALF滤波系数集中,包含固定子集和APS子集两种。固定子集是通过预训练得到的滤波器系数子集,固定子集已由标准指定,不需要编码器写进码流传输。而APS子集是根据当前视频重建图像,利用维纳滤波原理生成的滤波系数子集,需要写进码流标识。
在编码端,每个Slice可生成一个APS子集,每个APS会有一个ID号。且每个Slice可以选择使用ALF滤波系数集中的全部或部分子集,这个由PH层或SH层确定。
对于亮度ALF,滤波系数集包含了16个固定子集和最多8个APS子集,每个子集包含最多25组滤波器类。是否使用及使用哪个APS子集,是由Slice层的sh_num_alf_aps_ids_luma和
sh_alf_aps_id_luma决定。每个CTU使用哪个滤波系数子集由alf_luma_prev_filter_idx和alf_luma_fixed_filter_idx确定。
而色度ALF比较简单,它只使用APS子集。每个Slice只使用一个APS子集,且Cb分量和Cr分量共用一个APS子集,由SH层的语法元素sh_alf_aps_id_chroma标识。
再说(解码器端)滤波器类的确定。
对于已经确定滤波系数子集的CTU,亮度ALF会将其划分成大小为4×4的像素块,根据4×4像素块的内容特性,自适应地选择滤波器类。
其过程是,对于每个4×4亮度块,首先计算以该块为中心的8×8像素块中的每个像素在0°(水平)、90°(垂直)、135°和45°(对角)方向上的一维拉普拉斯算子梯度。
然后计算表征梯度方向的方向性因子D。具体是先计算水平方向和垂直方向的梯度最大值和最小值的比值,以及对角方向的梯度最大值和最小值的比值。然后和阈值t1=2,t2=4.5比较,得到方向性因子D。
再以查表的方式获得表征梯度强弱的活动性因子A。最后得到滤波器类filtIdx=5D+A。
根据子集索引和类索引,查H.266标准白皮书中AlfClassToFiltMap便可得到滤波器编号,再根据滤波器编号,查H.266的标准文档中的AlfFixFiltCoeff值,可得到相应滤波器系数。
2.滤波处理
以上处理之后,为每个4×4的亮度块确定了一个7×7的滤波器模板(包括变换方式),然后可以对4×4亮度块中的每个像素进行滤波处理。
R(i,j)为滤波前的重建值,滤波后的值R′(i,j)为
其中f(k,l)为滤波系数,K(x,y)为钳位函数,c(k,l)表示每个位置对应的钳位门限值,AlfS=1<<(alfShiftY-1),S=alfShiftY,alfShiftY的值通过标准文档中的表45可以得到。
此外,ALF还需要考虑对虚拟边界的处理,虚拟边界确定方法是:亮度分量CTB的倒数第4行为虚拟边界,色度分量CTB的倒数第2行为虚拟边界。具体方案参见提案JVET-Q0150。
3.小结
ALF主要步骤有基于梯度的亮度分量的分类,滤波亮度分量像素,滤波色度分量像素。用VTM9.0测试的ALF性能如下表所示:
ALF开启后解码时间大约增加了10%,但编码性能的增益也是可观的。而这个收益主要依靠的是对像素块的精准分类以及每个类下像素调整。
来源:手撕编解码(专注于视频编解码算法的优化和实现)
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。