【HEVC学习与研究】45、HEVC的自适应采样点补偿SAO

1、SAO的意义


在图像中像素值剧烈变化的边界区,经过编码-解码重建之后通常会出现波纹状的失真现象,这种失真称作振铃效应。振铃效应产生的根本原因在于边界区高频分量在编码过程中丢失。为了减少高频分量的损失,同时不降低编码的效率,HEVC引入了SAO技术,从像素域入手对振铃区域进行补偿。


2、基本原理


SAO对重建图像在deblocking之后操作,操作对象为重建完成的一帧,以一个CTB为一个基本单位。SAO所采用的方式主要有三类:边界补偿(BO)、边带补偿(EO)和参数融合(Merge)。


(1)边带补偿:

带状补偿将像素值强度等级划分为若干个条带,每个条带内的像素拥有相同的补偿值。进行补偿时根据重构像素点所处的条带,选择相应的带状补偿值进行补偿。


(2)边界补偿:

边界补偿通过比较当前像素和相邻像素的大小对当前像素分类。相邻像素的位置分为四种模式:水平、垂直、左上、右上:

【HEVC学习与研究】45、HEVC的自适应采样点补偿SAO


针对这四种方向,在任意模式下当前像素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必须都采用融合相邻块(左或上)的参数。否则如果亮度和色度没同时采用某相邻块的参数,则是非融合模式。

上一篇:共享内存操作类(C#源码)


下一篇:C++对象模型(一):The Semantics of Constructors The Default Constructor (默认构造函数什么时候会被创建出来)