1、SAO的意义
在图像中像素值剧烈变化的边界区,经过编码-解码重建之后通常会出现波纹状的失真现象,这种失真称作振铃效应。振铃效应产生的根本原因在于边界区高频分量在编码过程中丢失。为了减少高频分量的损失,同时不降低编码的效率,HEVC引入了SAO技术,从像素域入手对振铃区域进行补偿。
2、基本原理
SAO对重建图像在deblocking之后操作,操作对象为重建完成的一帧,以一个CTB为一个基本单位。SAO所采用的方式主要有三类:边界补偿(BO)、边带补偿(EO)和参数融合(Merge)。
(1)边带补偿:
带状补偿将像素值强度等级划分为若干个条带,每个条带内的像素拥有相同的补偿值。进行补偿时根据重构像素点所处的条带,选择相应的带状补偿值进行补偿。
(2)边界补偿:
边界补偿通过比较当前像素和相邻像素的大小对当前像素分类。相邻像素的位置分为四种模式:水平、垂直、左上、右上:
针对这四种方向,在任意模式下当前像素c按照与a和b的关系划分为以下5类之一:
分类 | 条件 |
1 | c<a && c<b |
2 | c<a或b && c==b或a |
3 | c>a或b && c==b或a |
4 | c>a && c>b |
0 | 其他 |
在以上5种情况中,分类5的情况不做补偿,其他4中分类均对像素c进行补偿。在一个CTB中补充分类的像素可以采用不同的补偿值,但相同分类的像素必须采用相同的补偿值。
(3)参数融合
参数融合模式表示某一个CTB,其SAO的参数可以直接使用某个相邻CTB的参数,只需要指定是哪个相邻块(左方还是上方)。
需注意,在参数融合模式下,一个CTB的亮度CTB和色度CTB必须都采用融合相邻块(左或上)的参数。否则如果亮度和色度没同时采用某相邻块的参数,则是非融合模式。