
DPCM 编解码信息不对等与误差根治原理
量化误差会不断累积。理论上,如果量化误差是零均值随机过程,长期来看误差会相互抵消。但工程实际中,远未等到误差抵消,有限字长的运算就会造成重建值溢出。 注意到编码器和解码器使用的信息并不对等:编码器基于原始采样值计算差值,而解码器是在已经失真的重建信号基础上叠加量化差值。 解决该问题的思路:强制编码器、解码器在求差和重建运算中使用完全相同的信息。接收端仅能获取重建序列
,编码器侧也可以得到该重建序列。因此修改求差规则:不再使用原始前一采样
,而是使用前一时刻的重建值
。
二、理论无误差分析
1. 理论假设
量化误差
是零均值白噪声,正负随机出现。 数学上,无穷长时间累加:
也就是:长期正负误差抵消,整体无偏。
2. 实际工程现实
👉 结论:理论收敛,工程发散,朴素差分编码完全无法落地。
三、编解码信息不对等根源
1. 朴素差分编码的旧公式(错误结构)

2. 两端信息完全割裂
- 编码器(发送端) 手握纯净原始信号
用真实差值做编码,基准绝对准确。 - 解码器(接收端) 永远看不到原始信号! 只能在已经失真、带误差的重建信号
基础上累加。
3. 不对称的本质
- 编码器:在真实轨道运算
- 解码器:在失真轨道迭代
两条轨道不重合,每一次量化误差都会被继承,永远累积。
这就是教材所说的:信息不对等。
四、根治方案详细展开:同步编解码状态(DPCM 核心革新)
1. 解题核心思想
想要消除误差累积,必须让编码器和解码器的「历史运行状态完全一模一样」。
解码器唯一能使用的历史数据:重建值
因此编码器必须主动自降精度、自我模拟失真,抛弃真实样本。
2. 新旧公式对比
- 旧(错误、无损结构):
(真值 − 真值) - 新(正确、DPCM 结构):
(真值 − 重建失真值)
3. 为什么改完就没有累积?
- 编码器现在用的是 和解码器一模一样的历史数据
- 两端轨道彻底对齐、状态完全同步
- 每一步误差只停留在当前帧,不继承历史误差
最终迭代结果:
无求和、无累加、无漂移、无溢出
五、朴素差分编码(旧方案) vs DPCM(修正方案)原理 + 数值实例对比
设定条件:
原始信号序列:
量化规则:差值量化后引入量化误差 
初始同步:
,两端起点一致
方案 A:朴素差分编码(沿用无损差分公式,有损场景,会产生误差累积)
差分定义:
编码器用原始真值计算差值;解码器使用重建值累加量化后的差值
,重建式:

逐点演算

结论(朴素差分)
重建误差:
✅ 误差 = 全部历史量化误差累加;误差不断继承传递。编码器在真实信号轨道算差分,解码器在失真轨道重建,编解码历史状态不一致(信息不对等),误差持续累积。
方案 B:DPCM(修正方案,编码器内置本地重建,消除累积)
差分定义改为:

编码器不再使用原始前一采样
,改用本地重建得到的
(和解码器使用的历史值完全一样) 量化后
,解码器重建公式不变:

逐点演算(同一原始序列、同一组量化误差)

结论(DPCM 修正方案)
重建误差:
✅ 每一个时刻的重建误差只等于当前这一步的量化误差,不继承前面的历史误差。编码器在内部复刻了解码器重建链路,编码器和解码器共享同一套历史重建状态,两条轨道完全对齐,量化噪声不再累积。
对比汇总表
| 差值公式 | ,用原始真值做预测 |
,用重建失真值做预测 |
| 编码器历史数据源 | 原始无失真样本![]() |
编码器本地重建出的失真样本![]() |
| 解码器历史数据源 | 重建失真样本![]() |
重建失真样本![]() |
| 误差表达式 | ,历史误差累加 |
,仅当前量化误差 |
| 编解码状态 | 不一致,两条独立轨道 | 完全同步,共用同一失真轨道 |
| 现象 | 误差逐点累积,序列长时发生漂移溢出 | 误差单点独立,无累积漂移 |
| 适用场景 | 仅无损编码;有损场景不可用 | 有损预测编码,语音 / 图像压缩标准采用 |
核心原理一句话总结
朴素差分编码中编码器拿原始真值算差分,解码器在失真序列上重建,两端状态不一致,误差代代累加;DPCM 让编码器在本地模拟解码器重建过程,用重建值代替原始真值做预测,强制两端历史状态完全相同,切断了历史误差的传递链路,消除误差累积。
网硕互联帮助中心
,用原始真值做预测
,用重建失真值做预测
,历史误差累加
,仅当前量化误差






评论前必须登录!
注册