我一直在研究算术编码,特别是如何处理有限精度,例如,当范围在区间(0,0.5)或(0.5,1)内时,可以输出0分别为1或1,然后加倍范围。我不明白的是,如果采用这个过程,如何解码生成的代码?
答案 0 :(得分:2)
解码器运行编码器的精确复制品(必须相对于原件延迟),包括其编码间隔模型。
解码器还跟踪编码器的已知输出间隔,直到它已读取压缩数据流的点。当此间隔适合编码模型的其中一个间隔时,它知道它可以解码相应的符号。
请注意,在读取压缩数据流时,输出间隔可以快速减小到1(有限精度编码器可以表示的最小步长)。由于编码间隔都是离散化的,因此保证该单位输出间隔适合某些编码间隔,因此解码器永远不会落后于编码器。然而,压缩流的结束可能需要“刷新”解码状态 - 通过某些辅助信号(如文件长度),或者通过编码器发送足够的额外比特以确保解码器找到其终止符号。