我一直在阅读算术编码,特别是如何处理有限精度,例如,当范围在区间(0,0.5)或(0.5,1)内时,可以分别输出0或1,然后将范围加倍。我不明白的是,如果采用这个过程,如何解码产生的代码?
发布于 2012-05-10 17:45:27
解码器运行编码器的精确副本(必然是相对于原始的延迟),包括其编码间隔模型。
解码器还跟踪编码器的已知输出间隔,直到它读取压缩数据的点为止。当这个间隔在编码模型的一个区间内时,它知道它可以解码相应的符号。
注意,在读取压缩数据时,输出间隔可以迅速缩小为1(有限精度编码器可以表示的最小步长)。由于编码间隔都是离散化的,因此保证了该单位输出间隔能适应一定的编码间隔,因此解码器不会太落后于编码器。然而,压缩流的结束可能需要解码状态的“刷新”--要么通过某种辅助信号(如文件长度),要么由编码器发送足够多的比特,以确保解码器找到其终止符号。
https://stackoverflow.com/questions/10539331
复制相似问题