同一张蓝底黑字的图片,芯片 1 先进行 hdmi 转 MIPI 信号再进入芯片内部进行 h.264 编码,芯片 2 hdmi 直进芯片内部进行 h.264 编码,结果发现芯片 1 编码出来的视频流,黑字周边很多脏污像素,远没有芯片 2 编码出来的视频文字清晰干净。从信号转换算法和视频编码角度,原因是什么。
这个现象,其实从信号转换算法和视频编码原理两个角度都能找到原因,而且两个因素是叠加的。
1. 信号转换阶段的损伤
HDMI → MIPI 转换 并不是“零损失”的简单搬运,尤其是涉及到视频格式和像素结构的重新打包时,可能会引入以下问题:
- 色彩空间和采样方式变化
- HDMI 原始信号通常可能是 RGB444 或 YCbCr444,而很多 MIPI 摄像头接口内部处理是 YUV422(甚至 YUV420)。
- 这种下采样会降低色度分辨率,尤其是细小的高对比边缘(比如黑字与蓝底交界处),颜色过渡区会被“糊化”,出现彩色毛边或脏像素。
- 颜色量化误差
- 转换过程中,如果色度或亮度通道重新量化(如 10bit → 8bit),会引入量化噪声,在高对比度边缘表现明显。
- 插值或缩放算法的副作用
- 如果分辨率或时钟不完全匹配,HDMI→MIPI 转换芯片可能在内部做了缩放或插值。
- 这种插值在锐利边缘处容易引入“光晕”或混色像素,破坏文字的干净边缘。
- 同步时钟抖动和采样偏移
- HDMI → MIPI 过程中如果采样时序存在微小偏移,像素对齐不精准,就可能导致亚像素级的模糊或颜色串扰。
2. 视频编码对边缘的进一步破坏
H.264 编码本质上是基于块(macroblock)预测 + 变换压缩的过程,尖锐边缘和细节是它的“天敌”:
- 输入已被模糊 → 边缘能量下降
- 如果前面 HDMI → MIPI 已经让边缘不再锐利,H.264 就更容易把它当作低频区域来编码,从而丢掉原有的边缘锐度。
- 颜色噪声 → 宏块量化失真
- 转换引入的脏像素会被编码器当作高频噪声,需要更多码率才能保留。
- 如果码率不足,就会出现马赛克、毛边、脏点等失真。
- 色度子采样叠加效应
- H.264 本身大多数情况下使用 YUV420,这意味着如果前面已经做过一次色度下采样(如 YUV422→YUV420),边缘颜色精度又会再丢一次。
3. 为什么芯片 2 表现好很多
- 芯片 2 HDMI 直进 → 内部编码,省掉了 HDMI → MIPI 这一步,避免了多一次色度采样转换、插值、量化误差。
- 输入到编码器的信号保留了更多锐利边缘信息和干净的像素分布,H.264 编码器有更好的预测精度和边缘保留效果,所以文字更干净。
4. 总结
可以用一句话概括:
HDMI → MIPI 转换引入了额外的色度下采样、插值和量化误差,破坏了锐利的黑字边缘,使得后续 H.264 编码阶段更容易出现脏边和模糊。