使用算术编码对超过256个符号进行编码

时间:2018-02-14 14:39:53

标签: c++ encoding compression lossless-compression

我正在尝试编码范围为-256< - >的有符号值。 255(即由 short 表示的9位数据)和算术编码器,但是我发现现有的算术编码实现(例如dlibrANS)通常会读取文件以字符串的形式,将数据视为8位。

这种技术的问题在于,以字符串形式分割签名数据(以3显示)会破坏基础直方图(如4所示)。我相信这样的分裂也可能会降低压缩比(但我可能错了)。

我通过使用8位和16位数据实现霍夫曼编码来测试我的假设,发现我是对的,这可能是由于霍夫曼依赖于使用概率制作树。

(EDITED)我的问题是:如何编码/模拟符号(不能包含在传统的8位容器中),以便可以使用传统的算术压缩器实现轻松压缩生成的符号,而不会影响压缩率。

签名直方图:

Signed histogram

分割直方图:

Splitted histogram

0 个答案:

没有答案