样点自适应补偿(Sample Adaptive Offset,SAO)用于消除振铃效应。振铃效应是由于高频交流系数的量化失真,解码后会在边缘周围产生波纹的现象,变换块尺寸越大振铃效应越明显。如下图所示,虚线是原始像素值,实线是重构像素值。

造成振铃效应的根本原因是高频信息的丢失。SAO的基本原理就是对重构曲线中的波峰像素加上负值进行补偿,波谷像素加上正值进行补充。

SAO以CTB为基本单位,包括两大类补偿形式:边界补偿(Edge Offset,EO)和边带补偿(Band Offset,BO),此外还引入了参数融合技术。

边界补偿

边界补偿技术是通过将当前像素和相邻像素进行比较然后归类,然后对同类像素补偿相同数值。为了均衡复杂度和编码效率,EO采用1维3像素分类模式。

根据选取的像素位置差异,EO有4种模式:水平方向EO_0、垂直方向EO_1、135°方向EO_2、45°方向EO_3。如下图所示,c是当前像素,ab是相邻像素。

4类的形状如下图所示:

边界补偿技术首先根据上面的规则将CTB中所有像素分为5类,然后对种类1、2、3、4的像素进行补偿,即增减一定数值,对种类0的像素不进行补偿。不同种类像素补偿值可以不同,但同一类像素补偿值必须相同。

实验表明大部分补偿值的符号与种类相匹配,所以可以根据种类对补偿值进行限制:种类1、2补偿值大于等于0,种类3、4补偿值小于等于0。所以码流中只需传输补偿值的绝对值,解码器可以根据像素所属类别判断符号。

边带补偿

边带补偿根据像素值大小进行分类,它将像素分为32个等长的边带。例如8比特像素,像素值范围0~255,则每个边带包含256/32=8个像素值,即像素值属于[8k,8k+7]范围属于第k个边带,k=0...31。同一边带使用相同补偿值。

一般情况下,在一定区域内像素值波动范围很小,一个CTB中大多数像素属于少数几个边带。H.265/HEVC规定一个CTB只能选择4条连续的边带,且只对属于这4条边带的像素进行补偿。可以通过率失真优化决定选择哪4条边带,然后将最小边带号及4个补偿值传到解码端。

参数融合

参数融合(Merge)是指对于一个CTB,其SAO参数可以直接使用相邻块的SAO参数,这时只需标识采用了哪个相邻块的SAO参数即可。

如上图所示,当对C进行SAO参数决策时,A和B的SAO参数已经确定。此时C的SAO参数有以下3种选择:

  1. 直接使用A块的参数。

  2. 直接使用B块的参数。

  3. 通过分析自身像素的特点,选择不同于A和B的参数。

enum SAOModeMergeTypes
{SAO_MERGE_LEFT =0,SAO_MERGE_ABOVE,NUM_SAO_MERGE_TYPES
};

当一个CTU使用参数融合时,其亮度和色度分量必须同时使用同一个相邻块的对应参数。否则,采用非参数融合技术,亮度和色度可以独立的根据自身像素特点选择划分模式和补偿值,此时两个色度分量共用相同划分模式。

语法结构

H.265/HEVC中规定的SAO的语法结构如下图所示:

感兴趣的请关注微信公众号Video Coding

环路滤波(五):SAO相关推荐

  1. FFmpeg的HEVC解码器源代码简单分析:环路滤波(Loop Filter)

    ===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...

  2. HEVC算法和体系结构:环路滤波技术

    环路滤波(In-Loop Filtering)技术 类似于以往的视频编码标准,HEVC仍采用基于块的混合编码框架,一些失真效应仍然存在,如方块效应.振铃效应.颜色偏差以及图像模糊等等.为了解决这些问题 ...

  3. TIP 2019开源论文:基于深度学习的HEVC多帧环路滤波方法

    作者丨李天一 学校丨北京航空航天大学博士生 研究方向丨视频编码与深度学习 本文概述的是作者近期在 IEEE TIP 期刊上发表的论文:A Deep Learning Approach for Mult ...

  4. 视频千倍压缩背后的技术原理之环路滤波

    随着5G的成熟和广泛商用,带宽越来越高,让传输视频变得更加容易.移动设备算力的提升.存储容量的提升,也使得视频技术的应用越来越广泛.视频相关的技术,特别是视频压缩技术,因其专业性,深入开发的门槛较高, ...

  5. HEVC/H.265面试问题准备(PART 3. 环路滤波+熵编码)

    近期因为要准备暑期实习以及后期的秋招环节,再一次温习了<新一代高效视频编码H.265/HEVC原理.标准与实现>经典书籍,现在记录下有关阅读心得以及可能面试的问题(所有的答案都是我自己思考 ...

  6. VVC/VTM:环路滤波——Luma mapping with chroma scaling (LMCS)

    VTM中环路滤波的顺序:LMCS,deblocking filter,SAO 和ALF.其中deblocking filter和SAO 与HEVC中的相同. Luma mapping with chr ...

  7. DCC2022:环路滤波CCSAO

    本文来自DCC2022论文<Cross-component Sample Adaptive Offset> VVC中的环路滤波工具除了传统的DBF.SAO外,还引入了LMCS.ALF.CC ...

  8. VVC环路滤波(一):ALF

    在VTM5中提供了三种环路滤波技术:去方块滤波(Deblocking filter,DF),样点自适应补偿(Sample adaptive offset,SAO)和自适应环路滤波(adaptive l ...

  9. VVC/VTM: 自适应环路滤波(ALF, Adaptive Loop Filtering)中维纳滤波(Wiener Filtering)的公式推导

    0 前言 自适应环路滤波(ALF)并不是在 H.266/VVC 标准制定过程中才被提出来的技术,实际上其早在 H.265/HEVC 标准制定时就基本确定了现有形式的雏形,只是由于当时硬件算力的限制未能 ...

  10. FFmpeg的H.264解码器源代码简单分析:环路滤波(Loop Filter)部分

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

最新文章

  1. python哪里下载import包-python 如何找到import的包
  2. 魅族魅蓝mirror简单打开usb调试模式的步骤
  3. mybatis通用mapper_全网最全Mapper解析,附实操代码帮你更好理解
  4. 面试题17. 打印从1到最大的n位数
  5. 2 CO配置-企业结构-定义-维护成本控制范围(Controlling Area)
  6. Failed to connect to github.com port 443 after 21505 ms: Timed out
  7. 开发中所使用的渠道(统计分析、分享、第三方登录、短信等)
  8. 私有属性的另类访问方式
  9. ZOJ3953 Intervals
  10. 如何使用Python3连接MySQL
  11. linux SCALA 安装及环境配置
  12. Android跳转小项目-CHANGE页面-Recycylerview、List、Context(二)
  13. Java实现 LeetCode 275 H指数 II
  14. unity 控制对象移动、旋转
  15. php socket accept,使用PHP Socket开发Yar TCP服务
  16. MES系统是什么?如何搭建一个科学高效的MES报表系统?
  17. 4个万兆光口+8个千兆combo光电复用口+16个千兆网口管理型万兆机架式工业级以太网交换机
  18. HDF5数据库和mysql数据库_hdf5文件格式使用攻略
  19. 按键精灵---插件关于窗口的各种操作
  20. 不经意传输协议-密码学

热门文章

  1. Turbo码编码举例计算
  2. 双闭环可逆直流脉宽pwm调速系统设计及matlab仿真验证_,双闭环可逆直流脉宽PWM调速系统的设计最终版(手机版)...
  3. c语言语法大全,oc语言基本语法汇总分析
  4. Unity3d的ShadeSH9环境光的球谐函数的应用
  5. 浅析数据中心交换机芯片,中国自主可控国产化交换机已是历史必然
  6. java坦克加快速度_Java坦克大战 (三) 之可完全控制坦克朝八个方向运动
  7. linux dig命令
  8. MIKE水动力笔记8_冷启动与热启动
  9. 相片审核处理工具步骤_相片
  10. 如何手动配置IP地址