【发布时间】:2023-03-16 05:55:02
【问题描述】:
在范围编码器中,使用有限精度算术可能会导致无法在不先应用某种刷新或调整以在工作寄存器中打开空间的情况下对下一个符号进行编码。
这样做的结果是,根据调整的方式,合法比特流的集合中可能会留下一些小间隙。
例如,Wikipedia page 建议将输出范围缩小到允许移出更多位的范围,从而使原始范围的某些部分未定义。
在解码器中,有可能到达同一点,然后发现输入比特流本身不符合编码器调整,而是继续向下进入应该被编码器丢弃的间隙。这种比特流没有正确解码。
将此与 Huffman 之类的内容进行对比,后者通常在没有任何模糊输入配置的情况下定义(除非在流的末尾可能存在不完整的符号)。因此可以将任意比特流解码为一条消息,然后再将其重新编码为原始比特流。
我的问题是:是否可以制定某种调整来处理精度限制但不会产生不可解码或模棱两可的比特流的可能性?这样给定一个任意比特流,总是可以将其解码为可以重新编码回原始比特流的一组符号?
直觉上这似乎是不可能的,我不应该对这个问题大发雷霆;但我看着霍夫曼并推断它有一个我应该能够模拟的属性。
【问题讨论】:
-
您描述的属性名称是“双射”。因此,您可以在文献中搜索“双射”和“范围编码”。有人可能已经解决了这个问题。
-
@MarkAdler,这当然有效。看起来主要关注的是EOF(因为在文件中间有EOF会创建任意数量的冗余比特流)。流行的 non-fudge 解决方案似乎是使用延迟进位输出方案的任意精度。
标签: encoding compression entropy range-encoding