一句话说透计算机视频编码里面的如何减少空间冗余?

141 阅读3分钟

减少视频编码中的空间冗余,就像把一张重复图案的壁纸压缩成说明书——找出重复规律,只记一次,其余靠复制!具体方法如下:


一、帧内预测:用邻居猜你的颜色

  1. 原理
    同一帧内,利用周围像素预测当前块的颜色,只存储预测误差。

    • 举个栗子
      如果当前块右边和左边都是蓝色,预测它也是蓝色,只记录实际颜色与蓝色的微小差异。
  2. 预测方向

    • 水平预测:假设颜色从左到右渐变(如水平条纹)。
    • 垂直预测:假设颜色从上到下渐变(如垂直条纹)。
    • DC预测:取周围像素平均值(适合纯色块)。
  3. 效果

    • 纯色区域(如蓝天)预测误差接近0,大幅压缩数据量。
    • 复杂纹理(如树叶)预测误差较大,但后续步骤进一步压缩。

二、变换编码:把图像变「数学公式」

  1. DCT(离散余弦变换)

    • 将图像块(如8x8像素)转换为频率系数。
    • 低频:大块颜色(如背景)→ 重要,保留。
    • 高频:细节和边缘(如头发)→ 次要,可丢弃。
  2. 能量集中

    • 自然图像中,大部分能量集中在低频,高频系数趋近于0。
    • 举个栗子
      一张人脸图,DCT后大部分系数集中在左上角(低频),右下角高频系数接近0。
  3. 压缩方式

    • 对高频系数进行更激进的量化(缩小数值或归零)。

三、量化:选择性「模糊」细节

  1. 量化表控制

    • 对每个频率系数设定不同的“压缩力度”(量化步长)。
    • 低频量化步长小:保留更多信息(如肤色渐变)。
    • 高频量化步长大:丢弃更多细节(如噪点)。
  2. QP(量化参数)调节

    • QP值越大,量化越狠,空间冗余减少越多,但画质越低。
    • 动态调整:简单区域用高QP(如墙面),复杂区域用低QP(如人脸)。

四、熵编码:用「缩写术」压缩数据

  1. 哈夫曼编码

    • 高频出现的数值用短码(如0),低频用长码(如1110)。
    • 举个栗子
      数据序列 0,0,0,5,5,100 → 编码为 0:00 5:01 100:10 → 二进制流 0000010110
  2. 算术编码

    • 更高效地将整个数据流映射为一个0~1之间的分数,逼近理论压缩极限。

五、实战技巧(以H.264为例)

  1. 选择高效预测模式

    • 对平滑区域用 DC预测,对纹理区域用 角度预测
  2. 调整QP值平衡质量与压缩

    • 高清视频:QP=18~24
    • 普通视频:QP=24~30
  3. 开启自适应量化(AQ)

    • 让编码器自动根据区域复杂度调整量化强度。

六、总结口诀

“空间冗余哪里找?帧内预测来帮忙。
DCT变换能量聚,量化砍掉高频光。
熵编码用短符号,数据瘦身效果强!”