1

我一直在阅读算术编码,特别是如何处理有限精度,例如,当范围在区间 (0, 0.5) 或 (0.5, 1) 内时,可以分别输出 0 或 1 ,然后将范围加倍。我不明白的是,如果采用此过程,如何解码生成的代码?

4

1 回答 1

2

解码器运行编码器的完全相同的副本(相对于原始编码器必然延迟),包括其编码间隔模型。

解码器还跟踪编码器的已知输出间隔,直到它读取压缩数据流为止。当这个区间适合编码模型的区间之一时,它知道它可以解码相应的符号。


请注意,在读取压缩数据流时,输出间隔可以快速减小到 1 的大小(有限精度编码器可以表示的最小步长)。由于编码区间都是离散化的,保证了这个单位输出区间适合某个编码区间,所以解码器永远不会落后于编码器太远。然而,压缩流的结束可能需要解码状态的“刷新”——要么通过一些辅助信号(如文件长度),要么通过编码器发送足够的额外位以确保解码器找到其终止符号。

于 2012-05-10T17:45:27.427 回答