HEVC 样点自适应补偿(SAO)原理详解
代码版本:HM-16.2+SCM-3.0rc1
时间: 2015/07/20
作者:LB
SAO应用于去方块滤波之后,首先将Frame划分成若干个LCU,SAO对处于不同图像区域的LCU进行局部信息补偿,以减少源图像与重构图像之间的失真。HEVC中根本上说只有两种SAO类型:边缘补偿(EO,Edge Offset),带状补偿(BO,Band Offset),在实际操作过程中还引入了参数融合模式(Merge)。
对于每一个LCU都有三种SAO模式进行选择,BO,EO,OFF(不采用SAO)。如下图所示,虚线为LCU的边界。可以直观的看出相邻的LCU往往会采用相同的的SAO模式,此时采用Merge模式,对应的SAO采用相邻块的SAO参数,可以降低码率。
重点内容带状补偿与边缘补偿分布示意图
因为SAO实在整个帧编码完成得到重建帧之后进行的,因此它属于Slice级别,在实际的操作过程中,若采用了Merge模式,需要判断相邻块是否在同一个Slice,同一个Tile,以及是否可以跨越Slice,跨越Tile。
Merge模式:
C的SAO参数有以下三种选择:
① 直接使用A块的参数;
② 直接使用B块的参数;
③ 通过分析自身的像素块特点,选择不同的参数。
前两种选择属于Merge模式。对于这两种情况,C块仅需要传送融合标志位即可。在使用Merge模式时,同一个LCU的亮度块与色度块均要同时使用相同块的SAO参数。
若不使用Merge模式,则亮度块与色度块分开考虑计算, 计算亮度块,再计算色度块。如下图所示:
边界补偿(EO):
边界补偿模式是通过比较当前像素值与相邻像素值的大小进行分类,然后根据类别对属于同一类别的像素值补偿相同的数值。
边界补偿具体可分为四种模式,分别是:水平方向(E0_0)、垂直方向(E0_1)、135°方向(E0_2)和45°方向(E0_3)。如下图所示:
对于上图所示的任意一种模式,根据以下表格可以将去方块滤波之后的重构像素分为5个不同的类别。
以图的形式表示,如下图:
Category 1 category 2 属于Positive offset,补偿值要大于等于0;Category 3 category 4 属于Negative offset,补偿值要小于等于0;从而滤波器达到平滑的效果。
对于不属于以上四个类别的像素值不进行补偿,。编码器只需要传输补偿值的绝对值,在解码端会根据当前像素点属于什么类别,给补偿值加正负符号。
带状补偿:
带状补偿将像素范围内等分为32个相同大小的条带,对属于同一个条带内的像素值,它们的像素补偿值均相同。例如对于8位像素点,有效像素值为[0,255],将其划分为32个条带,每个条带的有效像素范围为[k,8k]。
在解码端进行补偿时,根据当前像素点所属的条带,选择对应的带状补偿值进行补偿。一般情况下,同一个CTB的像素值的波动不会特别大,这些像素值会集中属于相邻的若干个条带中。HEVC规定一个CTB(亮度或者色度)只能选择4条连续的边带,并只对这4个边带的像素进行补偿。
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>
上一篇: deriveLeftRightTopIdxGeneral函数
下一篇: H.264编解码