本节摘要:变换的任务是把残差能量集中到少数低频系数,好让量化一刀切掉大头。VVC在这步上做了两件事:MTS(多变换选择)在DCT-2、DCT-8、DST-7三核之间按内容择优;LFNST(低频不可分变换)对帧内残差的低频系数再做一次不可分的二次聚能。本节讲清"为什么要换核"与"为什么只变换低频",并还原本节吸收进来的原LFNST独立小节内容。
第5章开篇。预测(第3、4章)越准,残差越小越"碎"——碎残差的统计特性多变,单一DCT-2核不再处处最优,这就是变换环节升级的动机。
几十年来的默认选择是DCT-2(经典离散余弦变换):对"平滑渐变+少量边缘"的残差能量集中度极好。但VVC的残差来源变了——65方向预测、MIP、仿射补偿之后,剩下的残差呈现新的统计面貌:
**MTS(Multiple Transform Selection)**的答案:给水平、垂直两个方向各自提供DCT-2、DCT-8、DST-7三种核,按块独立选择组合(编码器RD搜索决定,码流传索引)。它延续第2章以来的主线——自由度跟着内容走。
| 变换核 | 基函数形状直觉 | 擅长的残差类型 |
|---|---|---|
| DCT-2 | 经典余弦,两端缓 | 平滑渐变、一般纹理 |
| DCT-8 | 端点斜率更陡 | 边缘陡峭、方向性强 |
| DST-7 | 端点不为零的奇对称感 | 帧内角度预测后的陡峭残差 |
隐式MTS与显式MTS是两档用法:帧内残差在很多情况下由预测模式隐式决定变换核(模式即索引,省掉信令);需要精确控制时用显式MTS传一个索引。又是"能推导就不传"的信令哲学(呼应4.2节SMVD)。
MTS是可分变换——水平一个核、垂直一个核,行列分开做,计算省、硬件熟。但帧内残差有个残留问题:主变换后低频区仍有残余相关(帧内预测的特性决定残差不是理想白噪声)。**LFNST(Low-Frequency Non-Separable Transform)**补这一刀:
只取低频角落。把主变换后左上角最多4×4或2×8/8×2的低频系数取出来,其余系数原样保留;
做一次不可分变换。"不可分"意味着不能拆成行列两次一维变换——它是一个真正的二维联合映射,用一个预训练矩阵(是的,MIP同款设计:离线训练、烧进标准表格)把16个低频系数整体旋转到新基下,进一步聚能;
系数数不增。变换后仍是同样个数(或截断为零)的系数,码流结构不变,只是能量更集中、高频更稀疏。

LFNST不是想开就开,标准设了多重门(每一种都值得琢磨其工程动机):
💡 为什么"不可分"这么晚才进标准:可分变换行列解耦,计算量随尺寸线性增长,硬件实现成熟;不可分变换是全系数联合映射,计算与访存都贵。LFNST的聪明在于只在4×4这么小的低频角上做不可分——把"贵"的算法锁在"小"的面积里,成本可控而收益兑现。这个"以小搏大"的定价思路在标准设计里屡试不爽。
残差变换解码流程(帧内块示意): 1 res = 重建块 - 预测块 # 残差来自反量化后的系数(先看5.2) 2 coef = InvMTS(res, mts_index) # 行列可分反变换,核由索引或模式隐式定 3 if lfnst_idx != 0: 4 low = InvLFNST(coef 左上角, lfnst_idx) # 小矩阵乘加 5 coef 左上角 = low 6 残差重建完成 → 进入第6章环路滤波 实现提醒: - LFNST 矩阵是 16x16 级别的小矩阵,但取角位置随块形状变化, 索引边界错位是解码器对齐测试的高频错误点; - MTS 的隐式选择规则(由帧内模式推导)必须逐条对照标准实现, 猜错核会全块漂移,症状是特定模式下的周期性花屏。
问:MTS的显式索引要付多少比特,何时隐式更划算?
显式索引走CABAC只需几比特,但乘以每帧数万块就不是小数——所以标准让帧内残差在多数情况下由模式隐式定核(角度模式与变换核的统计关联是训练出来的映射),显式索引留给"隐式映射失手"的少数块。信令哲学照旧:能推导的不传,推导错了才买单。
问:LFNST与MIP都是"训练矩阵进标准",训练目标一样吗?
不一样。MIP的矩阵学的是"参考像素到预测块"的映射(替预测器);LFNST的矩阵学的是"主变换后低频系数的再聚能基"(替变换基)。一个作用于预测域、一个作用于频域,但共享同一套工程范式:离线训练、小规模矩阵、烧进标准表格——这条范式正是第10.4节"标准内AI"路线的基石。
调参直觉:观察编码统计里"MTS显式启用率"与"LFNST命中率"两个指标——前者持续偏高说明隐式映射与你的内容不匹配(考虑档位调整),后者在屏幕内容桶里异常低属正常(屏幕内容残差稀疏,二次变换无用武之地)。把这两个指标纳入编码回归看板,是调优第5章工具的起点。