4. H265编码原理入门

H.265(HEVC)相比 H.264 的核心提升,并不是简单地把宏块改小或把搜索范围加大,而是重新设计了一套更灵活的“块结构 + 预测 + 变换”体系。理解 H.265 的编码原理,最关键的是抓住四个入口:编码树单元(CTU)、四叉树划分、多角度帧内预测和先进运动矢量预测(AMVP)。它们共同决定了 H.265 在相同画质下能比 H.264 节省约 40%~50% 码率的根本原因。

一、编码树单元:从宏块到树形块结构

H.264 的基本处理单位是 16×16 宏块,宏块内部再分为 16×16、16×8、8×16、8×8 等子块。H.265 则把基本单位提升为编码树单元 CTU,尺寸可以是 16×16、32×32 或 64×64,由编码器配置决定。CTU 不是直接编码的块,而是一棵“编码四叉树”的根节点。它向下递归划分,直到得到适合当前图像内容的编码单元 CU。

可以把 CTU 理解成一块“可裁剪的布料”:平坦区域用大 CU 一次编码,纹理复杂或运动剧烈的区域用小 CU 精细描述。这种“按内容自适应”的块划分,是 H.265 压缩效率提升的第一层来源。

二、四叉树划分:CU、PU、TU 的三级结构

H.265 的块划分不是单一层次,而是 CU、PU、TU 三级协同:

  • CU(Coding Unit):编码单元,决定变换和量化的基本范围,由 CTU 四叉树递归划分得到。
  • PU(Prediction Unit):预测单元,承载帧内或帧间预测信息。帧内 PU 支持 2N×2N、N×N;帧间 PU 支持 2N×2N、2N×N、N×2N、N×N 以及非对称划分 AMP。
  • TU(Transform Unit):变换单元,承载 DCT/DST 变换和量化,尺寸从 4×4 到 32×32,同样支持四叉树递归。

四叉树划分的决策依据是率失真优化(RDO):编码器会尝试不同深度,计算“码率 + 失真”的代价,选择代价最小的划分方式。深度越深,块越小,预测越精细,但头信息和变换开销也越大。

关键理解:CTU 是根,CU 是四叉树叶子,PU 和 TU 是 CU 内部进一步的功能划分。三者不是并列关系,而是“根—枝—叶”的层级关系。

三、多角度帧内预测:35 种模式的方向建模

H.264 帧内预测只有 9 种模式(4×4 亮度),方向分辨率较粗。H.265 把帧内预测扩展到 35 种模式:1 种 Planar、1 种 DC,以及 33 种角度模式(模式 2~34),角度覆盖从约 45° 到 225°,步进更细。这样,斜向纹理、边缘、渐变区域都能找到更贴近真实方向的角度,预测残差更小。

帧内预测的基本流程是:利用当前 PU 左侧和上方的已重建像素作为参考,按选定模式生成预测块,再与原始块相减得到残差。H.265 还引入了参考像素平滑滤波和强/弱滤波切换,在平滑区域减少块效应,在纹理区域保留细节。

帧内预测模式分布(亮度):
模式 0  : Planar(平面)
模式 1  : DC(均值)
模式 2~34: 33 种角度模式
常用角度示例:
模式 10 : 水平方向
模式 18 : 对角线方向
模式 26 : 垂直方向
模式 34 : 对角方向

四、先进运动矢量预测 AMVP:从邻块到候选列表

帧间预测的核心是运动矢量(MV)。H.265 不再像 H.264 那样只依赖中值预测,而是采用 AMVP(Advanced Motion Vector Prediction):从当前 PU 的空域邻块(左、上、右上、左下等)和时域同位块中收集候选 MV,构建一个长度为 2 的候选列表,再通过率失真代价选择最优 MVP,最后只编码运动矢量残差 MVD。

AMVP 的价值在于:候选 MV 更接近真实运动,MVD 更小,运动信息编码开销显著降低。同时,H.265 还引入 Merge 模式,直接复用邻块或同位块的完整运动信息(MV + 参考帧索引),在运动一致区域几乎不传运动信息。

记忆要点:AMVP 解决“MV 从哪来”,Merge 解决“MV 能不能直接抄”。两者共同构成 H.265 帧间预测的运动信息压缩机制。

五、整体流程与参数关系

把上述机制串起来,H.265 编码一帧图像的基本流程是:图像划分为 CTU → CTU 四叉树递归得到 CU → CU 划分 PU 和 TU → PU 做帧内或帧间预测 → TU 做变换量化 → 熵编码。每一步都围绕“用更少的比特描述同样的视觉内容”展开。

机制 H.264 对应 H.265 改进 主要收益
基本块 16×16 宏块 16/32/64 CTU 大平坦区更省头信息
块划分 固定宏块+子宏块 CU/PU/TU 四叉树 内容自适应更精细
帧内预测 9 种模式 35 种模式 方向预测更准,残差更小
运动矢量预测 中值预测 AMVP + Merge MVD 更小,运动开销更低
变换 4×4/8×8 DCT 4~32 TU,DCT/DST 变换更贴合残差分布

六、案例与常见误区

假设一段 1080p 视频中有一片天空和一棵树。天空区域平坦,编码器倾向选择 64×64 CTU 下的大 CU,帧内用 Planar 或 DC 模式,TU 也用大尺寸,码率极低;树叶区域纹理复杂,四叉树会继续向下划分到 8×8 甚至 4×4 CU,帧内选择接近纹理方向的角度模式,残差被大幅压缩。运动部分,树枝摆动区域用 AMVP 找到邻近相似 MV,MVD 很小;背景静止区域用 Merge 模式直接复用 MV,几乎不传运动信息。

常见误区有三个:

  1. 误以为 CTU 越大越好。 64×64 CTU 在平坦区有优势,但在复杂纹理区会导致划分深度增加,RDO 计算量上升,编码速度下降。
  2. 误以为 35 种帧内模式一定比 9 种好。 模式越多,模式决策的搜索开销越大,低复杂度编码器可能只启用部分角度模式。
  3. 误以为 AMVP 就是 Merge。 AMVP 传 MVD,Merge 不传 MVD;前者适合运动不一致区域,后者适合运动一致区域,二者互补。
复盘提示:H.265 的压缩增益来自“更灵活的块 + 更准的预测 + 更省的残差”三者叠加。单独放大 CTU 或单独增加帧内模式,都不能完整解释其性能优势。
H.265 编码核心流程:CTU → 四叉树 → 预测 → 变换 CTU 16/32/64 可选 编码树单元(根节点) 四叉树划分 CU / PU / TU RDO 决定划分深度 预测 帧内 / 帧间 生成预测块 变换量化 DCT / DST 残差压缩 四叉树递归划分示意 CU 0 CU 1 CU 2 CU 3 深度 0 → 深度 1 → 深度 2 … 帧内预测:35 种模式 Planar / DC / 33 角度 AMVP + Merge 左邻 MV 上邻 MV 时域 MV 同位 MV 候选列表 → MVP → MVD 核心关系:块结构决定预测粒度,预测决定残差大小,变换决定残差压缩效率 CTU / CU / PU / TU 灵活块结构 帧内 35 模式 方向预测更准 AMVP + Merge 运动信息更省 变换量化 残差压缩

掌握这四个基本流程后,再去看 H.265 的编码参数(如 CTU 大小、最大划分深度、帧内模式数量、AMVP 候选数)时,就能理解每个参数背后对应的压缩机制。H.265 的性能优势不是某一个单点技术带来的,而是 CTU 四叉树、35 种帧内预测、AMVP/Merge 和 TU 变换共同作用的结果。