引言:帧内预测是VVC压缩效率的基石
在视频编码中,帧内预测利用空间相关性消除单帧内的冗余信息。H.266/VVC将帧内预测从HEVC的35种模式扩展至67种,并引入ISP(Intra Sub-Partitions)、MRL(Multi-Reference Line)、PDPC(Position Dependent Intra Prediction Combination)等一系列新工具,使帧内编码效率较HEVC提升约15-20% 。
然而,模式数量的爆炸式增长也带来了计算复杂度的严峻挑战。若采用全搜索策略,帧内RDO耗时将占据编码总时间的40%以上,对于实时编码器而言几乎不可接受。如何在保证压缩效率的前提下加速帧内决策,是每个VVC编码器必须面对的核心问题。
本文从算法原理到工程实现,系统梳理VVC帧内预测的关键技术点,并给出可复用的优化策略。
67种角度模式:从HEVC的扩展与重构
模式编号与角度映射
VVC帧内预测模式编号0-66,对应关系如下:
| 模式编号 | 模式名称 | 说明 |
|---|---|---|
| 0 | INTRA_PLANAR | 平面模式,适合平滑区域 |
| 1 | INTRA_DC | 直流模式,适合纹理均匀区域 |
| 2-66 | INTRA_ANGULAR | 65种角度模式,覆盖-45°至+135°范围 |
相比HEVC的33种角度模式,VVC增加了广角模式(Wide Angle Modes),将角度覆盖范围从-45°, 135°扩展至-135°, 45°的镜像方向。广角模式的核心价值在于:当块为非正方形(如2:1或1:2矩形)时,传统角度预测的参考像素投影会出现严重偏差,广角模式通过角度镜像修正这一问题 。
角度插值的精度提升
VVC将角度预测的参考像素插值精度从HEVC的1/32像素提升至1/64像素,并采用4抽头高斯滤波器替代双线性插值。具体流程为:
- 根据模式编号计算角度偏移量
offset = (mode - 对应基准角度) × 精度因子 - 以offset为索引,在参考像素行/列上进行1/64精度采样
- 使用4抽头高斯滤波器对采样点进行平滑插值
工程提示 :1/64精度插值使预测精度提升约0.15dB BD-rate,但计算量增加约30%。在实时编码器中,可考虑对非关键CU降级为1/32精度以节省算力。
ISP子块划分:帧内预测的"分而治之"
ISP的核心思想
ISP(Intra Sub-Partitions)将一个大尺寸CU水平或垂直划分为2或4个子块,每个子块独立进行帧内预测,但共享同一套模式与参考像素。其工作流程为:
- 对当前CU进行全像素重建,作为后续子块的参考
- 按水平/垂直方向划分为2或4个子块
- 对每个子块独立进行变换、量化、反量化、逆变换与重建
- 子块重建结果立即更新参考像素,供下一子块使用
ISP的压缩增益与代价
VTM测试数据显示,ISP在Class E(1080p)序列上可获得约1.2%的BD-rate增益,在屏幕内容序列上增益可达3-4%。增益来源主要有两点 :
- 子块划分使预测更贴合局部纹理,尤其适合边缘区域
- 子块独立变换使残差能量更集中,提升变换编码效率
但ISP的代价同样显著:
- RDO搜索空间扩大约3倍(需额外测试水平/垂直/2/4划分组合)
- 解码端需维护子块级参考像素更新逻辑,增加实现复杂度
- 流水线解码时子块依赖关系破坏并行度
ISP快速决策策略
在x266中,ISP搜索采用以下剪枝策略以控制复杂度:
- 尺寸约束 :仅对宽度或高度≥8的CU启用ISP,4×4/4×8/8×4等小尺寸跳过
- 模式预筛选 :先用粗糙RDO选出Top-3模式,仅对这3种模式测试ISP
- 划分方向早停 :若水平划分首轮子块SATD已超过全CU代价的1.5倍,立即终止该方向搜索
- 色度禁用 :ISP仅用于亮度分量,色度分量不启用
实测表明,上述策略使ISP搜索耗时降低约65%,BD-rate损失控制在0.05%以内,工程性价比极高。
MRL与PDPC:参考像素的精细化利用
MRL多参考行机制
HEVC仅使用距离CU边界最近的一行/一列参考像素(reference line 0)。VVC引入MRL,允许编码器从reference line 0-3中选择最优参考行进行预测。
MRL的价值场景 :
- 当边界附近存在噪声或压缩伪影时,使用更远的参考行可获得更干净的预测
- 对于某些纹理方向,较远参考行的投影角度更准确
MRL在VTM中带来约0.5% BD-rate增益,但需额外传输2bit参考行索引。在实时编码器中,可仅对亮度分量启用MRL,且限制搜索范围为line 0和line 1,以平衡增益与复杂度。
PDPC位置依赖校正
PDPC对传统角度预测的结果进行位置相关的加权修正,公式为:
Ppdpc(x,y)=clip(wT⋅PT+wL⋅PL−wTL⋅PTL+(64−wT−wL+wTL)⋅P+3264)Ppdpc(x,y)=clip(64wT⋅PT+wL⋅PL−wTL⋅PTL+(64−wT−wL+wTL)⋅P+32)
其中 PTPT 、 PLPL 、 PTLPTL 分别为上方、左方、左上方的参考像素, wTwT 、 wLwL 、 wTLwTL 为位置依赖权重。
PDPC的适用条件 :
- 仅对Planar、DC、角度模式0/1/18/50(即水平/垂直/对角)启用
- 对ISP子块禁用(子块边界参考像素已足够精确)
- 权重表预计算存储,避免运行时除法运算
PDPC在VTM中贡献约0.3% BD-rate增益,计算开销极小,建议在所有场景中无条件启用 。
RDO搜索加速:帧内编码的工程核心
传统全搜索的不可行性
VVC帧内RDO若对所有67种模式×4种MRL×3种ISP划分×2种色度模式进行全搜索,单CU的候选组合数可达数千量级。即使对64×64 CU,全搜索耗时也在毫秒级,4K@60fps实时编码完全不可行。
分层粗选-精选策略
工业级编码器普遍采用两阶段搜索:
Stage 1 - 粗选(HAD代价) :
- 对所有67种角度模式计算HAD(Hadamard变换绝对差和)代价
- HAD计算跳过变换量化,仅用整数Hadamard近似
- 选出Top-N(通常N=8-12)候选模式
Stage 2 - 精选(完整RDO) :
- 对Top-N模式进行完整RDO,包括变换、量化、熵编码比特估计
- 同时测试Planar和DC模式(不经过粗选,直接加入精选)
- 若启用ISP/MRL,仅对精选后的模式测试这些工具
SATD与HAD的工程取舍
- SATD(Sum of Absolute Transformed Differences) :对残差进行Hadamard变换后取绝对值求和,比SAD更接近真实RD代价,计算量适中
- HAD :通常指对原始像素差直接做Hadamard,不经过预测,速度更快但精度略低
在x266中,粗选阶段使用SATD,精选阶段使用完整RD代价。实测表明,SATD粗选比HAD粗选的命中率提升约8%,耗时仅增加15% ,性价比更高。
色度模式推导
VVC色度模式共6种:PLANAR(0)、DC(1)、LM_L(2)、LM_T(3)、LM_LT(4)、DM(5)。其中DM(Derived Mode)直接复制对应亮度CU的模式。
工程实践 :
- 先完成亮度CU编码,获取最优亮度模式
- 色度RDO时,DM模式直接继承亮度模式,无需额外搜索
- LM系列(线性模型)模式仅当色度 subsampling 为4:2:0时启用
- 对实时编码器,可仅测试DM+PLANAR+DC三种模式,跳过LM系列
VTM与x266帧内实现对比
| 特性 | VTM(参考软件) | x266(实时编码器) |
|---|---|---|
| 角度模式搜索 | 全67种 | 粗选Top-8 + 精选 |
| ISP搜索 | 全划分组合 | 仅对Top-3模式测试 |
| MRL | 4条参考行全搜索 | 仅line 0/1 |
| PDPC | 无条件启用 | 无条件启用 |
| 色度RDO | 全6种模式 | DM+PLANAR+DC |
| 4K@60fps | 不可行 | 可达(需GPU加速) |
关键洞察 :VTM追求压缩效率极限,x266追求实时性与效率的平衡。两者并非对立,而是同一技术谱系上的不同取舍点。理解VTM的设计逻辑,才能做出正确的工程裁剪。
结语:帧内预测优化是持续的精调过程
VVC帧内预测的工具箱已经非常丰富,但没有银弹。每一种工具在不同场景下的增益差异巨大:ISP对屏幕内容效果显著,对自然视频收益有限;MRL在噪声场景下表现突出,在干净源上几乎无用。
建议建立"帧内工具增益画像",针对不同内容类型(自然视频/屏幕内容/动画/会议)配置不同的工具启用策略与搜索强度。让编码器理解内容,而非盲目全开 。
帧内预测是编码器的第一道防线,它的效率直接决定了后续帧间预测与变换编码的工作难度。愿每一位视频编码工程师,都能在67种角度中找到属于自己的最优方向。