Sample Adaptive Offset 1 (SAO 样例自适应补偿)
2013-09-16 09:56
417 查看
题外话:SAO作为 HEVC少数几个 highlights 提出之后就得到了大家的广泛关注,本文就粗略整理一下SAO的工作原理,以及HM 10.0以后版本的实现代码。
主要参考JCV-VC文档
VCEG-AL27
JCTVC-A124
JCTVC-B077
JCTVC-C147
JCTVC-D122
JCTVC-E049
问题提出:
HEVC 大量采用了各种大小的变换块 (4 × 4 到 32 × 32), 这使得量化系数引入更多的ring artifacts, block artifacts. 此外, HEVC 采用 8-tap 帧内亮度插值, 这样加重了ring artifacts的效应。 为了避免由于新技术产生的 artifacts, HEVC引入了新的 去方块滤波(DF),环路滤波(LF),以及 样例自适应补偿(SAO)
技术。 如图1所示, 样例自适应补偿 位于DF之后(处于LP之中)。 引入SAO的目的是要减小块平均误差, 通过引入SAO,可以把整个帧分成不同的部分,加上不同的补偿类型来减小误差。
图1
首先帧被划分为若干LCU (一般为64×64), 然后对LCU中每个像素进行SAO操作。 根据LCU像素特征选择像素补偿以减少源图像与重构图像之间的失真。SAO 可根据图像块特性分为 边缘补偿(EO)和 带状补偿(BO)两个大类。
边缘补偿(EO)
图2
边缘补偿主要用于对图像的轮廓进行补偿,边缘补偿的意义在于平缓由于量化所带来的误差。由于人眼视觉对平滑区域特别敏感,边缘补偿很好的符合人眼的特性,所以SAO可以说在某种程度上提高了视觉质量效果而不仅仅体现在PSNR的提高。 如图2 所示,箭头部分用来表示将要补偿的方向。为了降低编编码端复杂度,HEVC采用了4种不同的EO模式 (如图3 )。EO 将当前像素点值与周围的2个像素值进行对比,用于比较的2个相邻像素可以在下图中所示的4种模板中选择,从而得到该像素点的类型。
图3
图3中的模板根据一下图表来确定所属类型.
带状补偿(BO)
图4
带状补偿可以有效地弥补由于运动补偿和量化带来的误差。如图4所示,圈代表原始像素点,曲线段代表重构以后的像素点。可以观察出,量化后整个像素点都向右偏移,如果我们加上一个向左的补偿,那么就可以有效地提高重构像素点的精度。 带状补偿将像素值强度等级划分为若干个条带(
k, k + 1, k + 2, 和 k + 3.)对于每个条带采用不同的补偿值(offset)进行校正。
图5
为了节省码率,HEVC采用了将像素值归类的做法,(0~255)的像素值被划分为32个子带,其中连续的四个子带被用来做补偿。如图5所示,需要传递第一子带和补偿值就可以完成补偿。
下个blog将分析代码。
主要参考JCV-VC文档
VCEG-AL27
JCTVC-A124
JCTVC-B077
JCTVC-C147
JCTVC-D122
JCTVC-E049
问题提出:
HEVC 大量采用了各种大小的变换块 (4 × 4 到 32 × 32), 这使得量化系数引入更多的ring artifacts, block artifacts. 此外, HEVC 采用 8-tap 帧内亮度插值, 这样加重了ring artifacts的效应。 为了避免由于新技术产生的 artifacts, HEVC引入了新的 去方块滤波(DF),环路滤波(LF),以及 样例自适应补偿(SAO)
技术。 如图1所示, 样例自适应补偿 位于DF之后(处于LP之中)。 引入SAO的目的是要减小块平均误差, 通过引入SAO,可以把整个帧分成不同的部分,加上不同的补偿类型来减小误差。
图1
首先帧被划分为若干LCU (一般为64×64), 然后对LCU中每个像素进行SAO操作。 根据LCU像素特征选择像素补偿以减少源图像与重构图像之间的失真。SAO 可根据图像块特性分为 边缘补偿(EO)和 带状补偿(BO)两个大类。
边缘补偿(EO)
图2
边缘补偿主要用于对图像的轮廓进行补偿,边缘补偿的意义在于平缓由于量化所带来的误差。由于人眼视觉对平滑区域特别敏感,边缘补偿很好的符合人眼的特性,所以SAO可以说在某种程度上提高了视觉质量效果而不仅仅体现在PSNR的提高。 如图2 所示,箭头部分用来表示将要补偿的方向。为了降低编编码端复杂度,HEVC采用了4种不同的EO模式 (如图3 )。EO 将当前像素点值与周围的2个像素值进行对比,用于比较的2个相邻像素可以在下图中所示的4种模板中选择,从而得到该像素点的类型。
图3
图3中的模板根据一下图表来确定所属类型.
带状补偿(BO)
图4
带状补偿可以有效地弥补由于运动补偿和量化带来的误差。如图4所示,圈代表原始像素点,曲线段代表重构以后的像素点。可以观察出,量化后整个像素点都向右偏移,如果我们加上一个向左的补偿,那么就可以有效地提高重构像素点的精度。 带状补偿将像素值强度等级划分为若干个条带(
k, k + 1, k + 2, 和 k + 3.)对于每个条带采用不同的补偿值(offset)进行校正。
图5
为了节省码率,HEVC采用了将像素值归类的做法,(0~255)的像素值被划分为32个子带,其中连续的四个子带被用来做补偿。如图5所示,需要传递第一子带和补偿值就可以完成补偿。
下个blog将分析代码。
相关文章推荐
- 【HEVC简介】SAO-Sample Adaptive Offset, 样本自适应偏移量
- HEVC之-------sample adaptive offset(SAO)
- HEVC 样点自适应补偿(SAO)原理详解
- HM编码器代码阅读(45)——样点自适应补偿SAO(四)对重建像素进行补偿
- SAO样点自适应补偿技术实现代码详解(一)
- 【HEVC学习与研究】45、HEVC的自适应采样点补偿SAO
- HM编码器代码阅读(27)——样点自适应补偿SAO(一)SAO介绍以及入口函数
- HM编码器代码阅读(43)——样点自适应补偿SAO(二)收集像素块的统计信息
- 样点自适应补偿(SAO)技术
- HM编码器代码阅读(44)——样点自适应补偿SAO(三)选取最优的SAO模式并确定补偿值
- 自适应阈值 cvAdaptiveThreshold
- JS 关于浏览器之间 scrollHeight offsetHeight (比如 iframe自适应高度时...)
- x264 自适应量化模式 (AQ Adaptive Quantization) 初探
- JS 关于浏览器之间 scrollHeight offsetHeight (比如 iframe自适应高度时...)
- 移动端web自适应解决方案: adaptive.js
- HEVC中SAO--自适应样点补偿 详细分析解读
- 【Oracle 优化器】自适应游标共享(Adaptive Cursor Sharing)功能
- 【Oracle 优化器】自适应执行计划(Adaptive Execution Plans)
- HEVC中SAO--自适应样点补偿 详细分析解读
- NSSplitView控件上下拖动时窗口自适应调整 样例