范围编码没有模糊或非法输出

时间:2016-12-28 18:51:40

标签: encoding compression entropy range-encoding

在范围编码器中,使用有限精度算法可能会导致在没有首先应用某种刷新或调整来打开工作寄存器中的空间的情况下无法对下一个符号进行编码的情况。

这样做的结果是,根据事情的调整方式,合法比特流中可能会留下一些小差距。

例如,Wikipedia page建议将输出范围缩小到允许更多位移出的位置,将原始范围的某些部分保留为未定义。

在解码器中,可以达到相同的点,然后发现输入比特流本身不符合编码器调整,而是继续向下进入应该被编码器丢弃的间隙。这种比特流没有正确的解码。

将此与Huffman对比,后者通常在没有任何模糊输入配置的情况下定义(除了在流的末尾可能存在不完整的符号)。因此,可以将任意比特流解码为消息,然后可以将其重新编码为原始比特流。

我的问题是:是否有可能制定某种处理精度限制的调整但不会产生不可解码或模糊的比特流的可能性?这样,给定一个任意比特流,总是可以将它解码为一些符号集,这些符号可以重新编码回原始比特流中吗?

直观地看起来它应该是不可能的,我不应该反对这个问题;但我看看赫夫曼,并说它有一个我应该可以模拟的属性。

1 个答案:

答案 0 :(得分:0)

在撰写问题的过程中,我相信我可能找到了解决方案;但我还不确定。我会把它留在这里,任何一个人(可能是我自己)最终会告诉我为什么我错了,或者它是正确的并且可能对其他人有用......

当你指出输出范围对于下一个符号来说太小时,意味着该范围跨越了一个大的2的幂,这就是低和高边界最终会有所不同。

因此,请使用符号频率表并将其分区与您范围内的POT边界大致相同的位置。然后根据符号是第一个还是第二个分区,将高边界或低边界设置为POT;然后刷新新释放的位并对分区进行编码,就好像它是一个完整的符号并继续进行。

尽管如此,也许有一种功能相同的方式可以做到这一点,但不那么啰嗦。