在 H.264 编码中,视频的第一帧是 I 帧(关键帧) ,而第一个块(即第一个宏块,通常位于图像左上角)的预测模式选择遵循以下逻辑:
一、核心原则:边界条件下的预测模式
由于第一个宏块位于图像左上角(坐标 (0,0)),左侧和上方没有已编码的像素,因此:
- 无法使用左侧和上方的参考像素(因为图像边界外无数据)。
- 编码器会通过 默认值填充 或 限制预测模式 来处理。
二、具体预测模式选择
1. 亮度分量(Luma)的预测模式
-
Intra_16x16 模式(适用于平坦区域):
-
可选模式:
- DC 预测(所有像素取平均值,默认选择)。
- 垂直预测(若上方无像素,默认填充为边界值)。
- 水平预测(若左侧无像素,默认填充为边界值)。
- 平面预测(需要上下左右像素,不适用)。
-
实际选择:
由于上方和左侧无参考像素,通常选择 DC 预测(计算效率高,残差小)。
-
-
Intra_4x4 模式(适用于细节区域):
- 若启用 Intra_4x4,每个 4x4 块需单独预测。
- 由于左上角块无参考像素,所有 4x4 子块默认选择 DC 预测。
2. 色度分量(Chroma)的预测模式
-
Intra_8x8 模式:
- 同样受限于无参考像素,通常选择 DC 预测 或 垂直/水平预测(填充边界值)。
三、编码器的实际处理
-
边界填充:
- 对于缺失的左侧和上方像素,编码器用 图像边界的像素值 或 固定值(如 128) 填充。
- 例如:若第一个宏块上方无像素,则用当前宏块的第一行像素向上复制填充。
-
模式决策:
- 编码器会计算所有可能模式的残差(预测误差),选择 残差最小的模式。
- 但由于无参考像素,大多数模式无法有效预测,最终可能强制使用 DC 预测。
四、示例:H.264 的第一个宏块处理
假设编码一个 1920x1080 的视频,第一个宏块(16x16)的左上角坐标为 (0,0):
-
参考像素填充:
- 左侧和上方无数据 → 填充为默认值(如 128,对应灰度中值)。
-
模式选择:
- 计算 DC 预测(所有像素取填充值的平均)。
- 计算垂直预测(填充上方为当前宏块第一行)。
- 选择残差较小的模式(通常 DC 预测更优)。
五、总结
-
第一帧第一个宏块的预测模式:
- 亮度(Intra_16x16):默认选 DC 预测(最保守且高效)。
- 色度(Intra_8x8):同亮度逻辑。
-
核心原因:
- 边界无参考像素 → 预测模式受限。
- DC 预测鲁棒性强,适合无参考场景。
口诀:
“第一帧首块左上角,无依无靠无参考。
垂直水平皆受限,DC预测是王道!”