📄 提案名称:
EE2-2.19a: Multi-model Extrapolation-based Intra Prediction (MM-EIP)
多模型外推滤波帧内预测
提案编号:
- JVET-AJ0082-v2
- 作者单位:OPPO
- 基础平台:ECM-14.0(VVC 实验参考软件)
- 所属会议:36th JVET Meeting, Kemer, TR, Nov 2024
一、背景回顾:什么是 EIP?
在进入 MM-EIP 之前,先简要回顾原始的 EIP(Extrapolation filter-based Intra Prediction) 模式:
- 使用一个 15-tap 线性滤波器对邻近已重建像素加权求和
- 滤波器系数通过最小二乘法拟合得到
- 预测按对角线顺序生成
- 支持两种模式:
- 本地推导:基于当前块周围样本训练滤波器
- EIP Merge 模式:复用前序块的滤波器参数
虽然 EIP 能有效建模局部纹理,但使用单一滤波器难以适应复杂多变的图像结构(如边缘与平坦区域共存)。为此,本提案提出 MM-EIP:为不同上下文动态选择不同的滤波器模型。
二、核心思想:为什么要引入"多模型"?
❓ 问题分析
传统 EIP 使用统一的滤波器模板去拟合所有类型的区域:
| 区域类型 | 是否适合单个滤波器 |
|---|---|
| 平滑渐变区 | ✅ 可以较好建模 |
| 强边缘区 | ✅ 可以捕捉跳变 |
| 混合区域(平滑+锐边相邻) | ❌ 单一滤波器无法兼顾 |
例如:一个块中左侧是天空(缓变),右侧是建筑轮廓(陡变),若用同一组系数预测整个块,会导致部分区域失配。
✅ 解决方案:根据输入信号自适应切换两个独立滤波器
MM-EIP 将训练样本划分为两类,分别训练两个专用滤波器:
- Filter 1(Group1):适用于低强度/平滑区域
- Filter 2(Group2):适用于高强度/边缘区域
然后根据当前预测位置的"参考值"决定使用哪一个模型。
三、MM-EIP 方法详解
🔧 整体流程概览
text
开始
↓
当前 CU 启用 EIP 模式?
↓ 是
EIP-Merge 模式启用?
↓ 否 → 进入 MM-EIP 分支
↓
提取训练样本(来自上方/左侧邻域)
↓
对每个样本计算"reference value"
↓
与阈值 threshold 比较
↓
≤ threshold → 归入 Group1
> threshold → 归入 Group2
↓
分别构建两组自相关矩阵 R 和互相关向量 r
↓
解方程得两套滤波器系数:C1[] 和 C2[]
↓
预测阶段:根据当前位置的 reference 值选择对应滤波器
↓
生成最终预测块
四、关键技术步骤详解
步骤 1:定义"Reference Value"作为分类依据
什么是 Reference Value?
它是一个代表当前预测上下文特征的标量值,用于判断该位置属于哪种纹理类型。
提案中未明确说明具体形式,但通常可采用以下之一:
| 类型 | 说明 |
|---|---|
| 邻域平均亮度 | 如取左上 3×3 区域均值 |
| 梯度幅值 | 计算 Sobel 或 Prewitt 梯度大小 |
| Laplacian 响应 | 检测是否为边缘点 |
| 直接用参考像素本身 | 如 TL、T[0]、L[0] 等 |
示例:
reference = clip((T[-1]+T[0]+L[0])/3, minVal, maxVal)
步骤 2:设置分类阈值 threshold
- 阈值可以是固定常数(如 128 for 8bit)
- 或动态设定(如基于全局均值或中位数)
作用:将训练样本划分为两类:
- Group1:
reference ≤ threshold - Group2:
reference > threshold
步骤 3:分组训练两个独立滤波器
对于每一组样本,单独执行标准 EIP 训练流程:
对于 Group1:
构建:
- 自相关矩阵 \\mathbf{R}*1 = \\sum \\mathbf{t}*{1,i} \\cdot \\mathbf{t}_{1,i}\^T
- 互相关向量 \\mathbf{r}*1 = \\sum \\mathbf{t}*{1,i} \\cdot d_i
求解:
c1=R1−1r1 \mathbf{c}_1 = \mathbf{R}_1^{-1} \mathbf{r}_1 c1=R1−1r1
得到第一套滤波器系数 C1_0, C1_1, ..., C1_{14}
对于 Group2:
同理:
c2=R2−1r2 \mathbf{c}_2 = \mathbf{R}_2^{-1} \mathbf{r}_2 c2=R2−1r2
得到第二套系数 C2_0, C2_1, ..., C2_{14}
⚠️ 注意:两个滤波器可以有不同的模板形状(offsetX, offsetY),也可相同
步骤 4:预测阶段动态选择模型
当对当前像素 (x, y) 进行预测时:
-
计算其对应的
reference_value -
判断:
- 若
reference_value ≤ threshold→ 使用 Filter 1 - 否则 → 使用 Filter 2
- 若
-
应用对应公式:
pred(x,y)={∑i=014C1i⋅t(x−dx1i,y−dy1i)+C114×2bitDepth−1,if ref≤threshold∑i=014C2i⋅t(x−dx2i,y−dy2i)+C214×2bitDepth−1,otherwise \text{pred}(x, y) = \begin{cases} \displaystyle \sum_{i=0}^{14} C1_i \cdot t(x-\text{dx1}i, y-\text{dy1}i) + C1{14} \times 2^{\text{bitDepth}-1}, & \text{if } \text{ref} \leq \text{threshold} \\ \displaystyle \sum{i=0}^{14} C2_i \cdot t(x-\text{dx2}_i, y-\text{dy2}i) + C2{14} \times 2^{\text{bitDepth}-1}, & \text{otherwise} \end{cases} pred(x,y)=⎩ ⎨ ⎧i=0∑14C1i⋅t(x−dx1i,y−dy1i)+C114×2bitDepth−1,i=0∑14C2i⋅t(x−dx2i,y−dy2i)+C214×2bitDepth−1,if ref≤thresholdotherwise
注:末尾项 C_{14} \\times 2\^{\\text{bitDepth}-1} 可能表示偏置补偿(需结合代码确认)
五、语法与编码控制
✅ 新增语法元素
| 语法 | 含义 |
|---|---|
eip_flag |
是否启用 EIP 模式(原有) |
eip_merge_flag |
是否使用继承模式(原有) |
mm_eip_flag |
(隐含)仅当 EIP 开启且非 merge 模式时自动启用 MM-EIP |
当前提案未显式传输
mm_eip_flag,而是将其作为 EIP 推导模式下的子分支处理
✅ 候选数量调整机制
为了不增加整体复杂度,提案规定:
"The number of derived EIP filter candidates are modified so that the total number of derived EIP filter candidates (including both EIP and MM-EIP) doesn't exceed the previous number."
即:
- 原本可能生成 N 个传统 EIP 滤波器候选
- 现在改为生成若干个普通 EIP + 若干个 MM-EIP 候选
- 总数仍限制为 N
✅ 目的:保持编码器决策负担不变
✅ 滤波器模板尺寸限制
- 最大模板大小设为 8×8
- 控制训练复杂度,避免过大的支持区域影响效率
六、图示还原:MM-EIP 分类与预测机制
由于原文未提供清晰图示,我们根据描述还原关键示意图。
图 1:训练样本分类示意图
text
Current Coding Unit (CU)
+-------------------------------------------+
| |
| Predicted Area |
| |
| +--------------------+ |
| | Training | |
| | Samples | ← From above/left
| +--------------------+ |
| |
+-------------------------------------------+
↑
Each training sample has a "reference value"
Classification:
┌──────────────────────┐ ┌──────────────────────┐
│ Group 1 │ │ Group 2 │
│ Low Intensity │ │ High Intensity │
│ ref ≤ threshold │ │ ref > threshold │
│ │ │ │
│ Use common pattern │ │ Capture edge change │
└────────────────────────┘ └────────────────────────┘
→ Train separate filters: Filter1 vs Filter2
图 2:预测阶段模型选择流程
text
Predicting pixel at (x,y)
↓
Extract reference value (e.g., avg of neighbors)
↓
Compare with threshold
↓
+-------------+
↓ ↓
≤ threshold > threshold
↓ ↓
Use Filter 1 Use Filter 2
(C1 coefficients) (C2 coefficients)
↓ ↓
Apply extrapolation formula
↓
Generate pred(x,y)
七、解码端如何同步?
由于所有操作都基于公开规则(分类阈值、训练方法、滤波器结构),解码端可完全复现:
- 使用相同的参考值计算方式
- 使用相同的
threshold - 在相同区域内提取训练样本并分类
- 分别训练两个滤波器
- 根据当前像素的 reference 决定使用哪个模型
✅ 不需要额外传输任何语法元素(如 use_filter_1_flag)
八、总结:MM-EIP 的核心技术亮点
| 特性 | 说明 |
|---|---|
| 双模型架构 | 定义两个独立滤波器,分别适配不同纹理特性 |
| 上下文感知分类 | 基于"reference value"将样本划分为两组 |
| 分组训练 | 每组独立构建 R 矩阵和 r 向量,提升拟合精度 |
| 动态预测选择 | 每个像素根据上下文选择最优滤波器 |
| 零信令开销 | 无需新增标志位,复用 EIP 推导流程 |
| 兼容性强 | 可与 EIP Merge 模式共存,不影响其他工具 |
✅ 结论
本提案提出的 Multi-model EIP (MM-EIP) 方法是一种轻量级、高效益的增强型帧内预测技术。其核心做法是:
在传统 EIP 框架下,引入基于上下文的双模型机制:
- 将训练样本按"reference value"分为两类
- 分别训练两个专用滤波器(Filter1 / Filter2)
- 预测时根据当前像素的 context 动态选择合适的模型
这种方法显著提升了 EIP 对混合纹理区域的建模能力,同时保持了编解码一致性与低复杂度特性。