视频编码(2):H.265 如何比 H.264 提升 40%
vx 搜索『gjzkeyframe』 关注『关键帧Keyframe』来及时获得最新的音视频技术文章。
我们在前文《视频编码(1)》中探讨了 H.264 视频编码的基本概念、编码工具、编码流程及码流结构等基础知识,接下来我们来继续探讨在 H.264 基础上迭代而生的 H.265 有哪些改进,看看它是如何在同样的画面质量下将编码码率降下来的。本文内容包括如下章节:
- H.265 编码工具
-
- 帧内预测
- 帧间预测
- 变换和量化
- 去方块滤波
- 样点自适应补偿滤波
- 熵编码
- H.265 特色编码技术
-
- 新的编码单元划分方式
- 改进的帧内预测技术
- 先进的帧间预测技术
- RQT 技术
- ACS 技术
- SAO 技术
- IBDI 技术
2、H.265 编码
2.1、编码工具
H.265 的标准编码框架如图所示:
从根本上讲,H.265 视频编码标准的编码框架并没有革命性的改变,仍旧采用混合编码框架,包括帧内预测、帧间预测、变换量化、环路滤波、熵编码等模块。但是,H.265 几乎在每个模块都引入了新的编码技术。
2.1.1、帧内预测
该模块主要用于去除图像的空间相关性。通过编码后的重构信息来预测当前像素块以去除空间冗余信息,提高图像的压缩效率。与以往的标准相比,H.265 支持更多的帧内预测模式。
2.1.2、帧间预测
该模块主要用户去除图像的时间相关性。帧间预测通过将已编码的图像作为当前帧的参考图像,来获取各个块的运动信息,从而去除时间冗余,提高压缩效率。在 H.265 中,帧间预测可采用单向和双向的参考图像来进行预测,包括类似 H.264 中分层 B 帧的预测结构。
2.1.3、变换和量化
该模块通过对残差数据进行变换量化以去除频域相关性,对数据进行有损压缩。变换编码将图像从时域信号变换至频域,将能量集中至低频区域。量化模块可以减小图像编码的动态范围。变换编码和量化模块从原理上属于两个相互独立的过程,但是在 H.265 中,两个过程相互结合,减少了计算复杂度。量化部分整体和 H.264 相似,支持加权量化矩阵(自定义量化矩阵) 。
2.1.4、环路滤波/去方块滤波(Deblocking)
去方块滤波(Deblocking)在基于块的视频编码中,形成的重构图像会出现方块效应,采用去方块滤波可达到削弱甚至消除方块效应的目的,提高图像的主观质量和压缩效率。H.265 仍然是基于块的视频编码,因此延续了环内去方块滤波的思路。在 TU/PU 块边界进行滤波,根据 MV、QP 等决定不同滤波强度。
2.1.5、环路滤波/样点自适应补偿滤波(SAO)
样点自适应补偿滤波(Sample Adaptive Offset,SAO)处于去方块滤波之后,通过解析去方块滤波后的像素的统计特性,为像素添加相应的偏移值,可以在一定程度上削弱振铃效应,提高图像的主观质量和压缩效率。SAO 是 H.265 新增的一项编码方式。
2.1.6、熵编码
该模块将编码控制数据、量化变换系数、帧内预测数据以及运动数据等编码为二进制流进行存储或传输。熵编码模块的输出数据即原始视频压缩后的码流。H.265 中采用先进的基于上下文的自适应二进制算术编码(CABAC)进行熵编码,引入了并行处理架构(Slice/Tile、WPP),在速度、压缩率和内存占用等方面均得到了大幅改善。
2.2、特色编码技术
相比以往的视频编码标准,H.265 的编码性能有了很大的提升,这源于新编码工具的使用以及自身具有特色的核心技术:
2.2.1、编码单元
H.264 标准中的核心编码单元是『宏块』,包含一个 16x16 的亮度块采样,对于一般的视频信源(如 YUV 4:2:0)而言,会伴随两个 8x8 的色度块采样。由于高分辨率视频业务的自身特性,基于传统宏块的编码方式具有很大的局限性。因此,H.265 采用了编码树单元(Coding Tree Unit,CTU)和编码树块(Coding Tree Block,CTB)。H.265 中的 CTU 的概念类似于传统的宏块,但它的大小是可以由编码器设定的,并且可以超越 16x16。一个 CTU 由一个亮度 CTB、两个色度 CTB 和一些关联的语法元素组成。
为了更灵活有效地表示视频内容,H.265 为图像的划分定义了一套全新的分割模式:灵活的四叉树划分结构,包括编码单元(Coding Unit,CU)、预测单元(Prediction Unit,PU)和变换单元(Transform Unit,TU)。这种特性有助于编码器根据视频内容特性、视频应用和终端特性来自适应地选择编码模式。
编码单元的划分:
- 首先可以将图像均等划分为编码树单元(CTU),最大 64x64;
- CTU 可以根据实际编码决策,按照四叉树划分为更小的编码单元(CU);
- 每一个叶节点的 CU 可以选择帧内编码或者帧间编码。
预测单元的划分:
- 每个 CU 可以划分为 1 个、2 个、4 个预测单元(PU);
- 预测单元 PU 是帧内预测、帧间预测的基本单元;
- PU 的划分包括 4 中对称结构和 4 种非对称结构。
变换单元的划分:
- 每个 CU 可以按四叉树划分为变换单元 TU(最大 32x32,最小 4x4);
- 变换单元 TU 可采用 4x4 ~ 32x32 大小的离散余弦变换,此外还能支持 4x4 的离散正弦变换。
大尺寸离散余弦变换是 H.265 视频编码标准中提升编码效率的重要技术之一。在 H.264 中仅采用了 4x4/8x8 的 DCT 变换。而在 H.265 中 DCT 变换的最大尺寸为 32x32,这种大尺寸变换单元的选择可以使编码器在处理高分辨率画面中经常出现平坦区域时能够更好地提高压缩率。
2.2.2、改进的帧内预测技术
H.264 基于 4x4 大小的编码块采用 9 种预测模式,基于 16x16 大小的编码块采用 4 种预测模式。考虑高清视频纹理的多样性,只采用 H.264 中提供的几种帧内预测模式是远远不够的。为了更准确地反映纹理特性,降低预测误差,H.265 共提供了 35 种帧内预测模式,包括 33 种角度预测以及 DC 预测模式和 Planar 预测模式。增加的预测模式可以更好地匹配视频中复杂的纹理,得到更好的预测效果,更加有效地去除空间冗余。
2.2.3、先进的帧间预测技术
为了提升帧间预测性能,H.265 引入了新的帧间预测技术,包括运动信息融合技术(Merge)、先进的运动矢量预测技术(Advanced Motion Vector Predictor,AMVP)以及基于 Merge 的 Skip 模式。
- Merge 技术利用空域相关性和时域相关性来减少相邻块之间的运动参数冗余,具体来说,就是取其相邻 PU 的运动参数作为当前 PU 的运动参数。
- AMVP 技术的作用与 Merge 技术类似,也是利用空域相关性和时域相关性来减少运动参数的冗余。AMVP 技术得到的运动矢量一方面为运动估计提供搜索起点,另一方面作为预测运动矢量使用。AMVP 根据周围块预测运动矢量,MV = MVP(预测矢量) + MVD(矢量差值)。
2.2.4、RQT 技术
RQT(Residual Quad-tree Transform)技术是一种基于四叉树结构的自适应变换技术,它为最优 TU 模式选择提供了很高的灵活性。 大块的 TU 模式能够将能量更好地集中,小块的 TU 模式能够保存更多的图像细节。根据当前 CU 内残差特性,自适应选择变换块大小,可以在能量集中和细节保留两者做最优的折中。与传统的固定块大小变换相比,RQT 对编码效率贡献更大。
2.2.5、ACS 技术
ACS(Adaptive Coefficient Scanning)包括三类:对角扫描、水平扫描和垂直扫描。 ACS 技术是基于 4x4 块单元进行的,将一个 TU 划分为多个 4x4 块单元,每个 4x4 块单元内部以及各个 4x4 块单元之间都按照相同的扫描顺序进行扫描。对于帧内预测区域的 4x4 和 8x8 尺寸的 TU,其根据所采用的帧内预测方向来选择扫描方法:当预测方向接近水平方向时就选择用垂直扫描,当预测方向接近垂直方向时就选用水平扫描,对于其他预测方向使用对角扫描。对于帧间预测区域,无论 TU 尺寸多大都使用对角扫描方式。
2.2.6、SAO 技术
图像经过编码后,重构图像的失真不仅存在方块效应,还存在振铃效应。H.265 引入了一种新的滤波方法:样点自适应补偿技术(SAO)。SAO 位于去块效应滤波器之后,用于补偿重构像素值,达到减少振铃效应失真目的。 SAO 分为边缘补偿(EO)和带状补偿(BO)两种方式。
2.2.7、IBDI 技术
IBDI(Internal Bit Depth Increase)技术是指在编码器的输入端将未压缩图像像素深度由 P 比特增加到 Q 比特(Q > P),在解码器的输出端又将解压缩图像像素深度从 Q 比特恢复到 P 比特。IBDI 技术提高了编码器的编码精度,降低了帧内/帧间预测误差。 但由于要建立参考队列,像素深度为 Q 比特的重构图像需占较大的内存空间。此外,在进行帧间运动估计和补偿时,需要较多的内存访问带宽,这样会给内存受限的系统带来不便。解决的办法是引入参考帧压缩算法,来减小重构图像的数据量。
(通过上文的介绍,我们了解了 H.265 视频编码的编码工具及相对 H.264 的改进。对于 H.266 我们将在后面继续探讨,敬请期待)
- 完 -
推荐阅读
《视频编码(1):H.264》《图像的表示(1):图像的定义和成像原理》
#0offer是寒冬太冷还是我太菜##如何看待2023届秋招##我的求职思考##你的秋招进展怎么样了##你觉得今年秋招难吗#