二进制流的熵编码

时间:2009-04-29 09:26:21

标签: binary entropy

我想压缩二进制流。我知道在每个'1'之后找到'0'的概率更高,并且在每'0'之后找到'1'的概率更高。我该怎么编码呢?我正在考虑Rice代码,但我没有到目前为止......提前感谢您的回复。

1 个答案:

答案 0 :(得分:3)

你尝试过一些简单的霍夫曼编码吗?也许它不会节省那么多,但如果其中一个代码'10'和'01'的概率比'00'或'11'高得多,你可以将其重新映射为'0'而将其他代码重新映射为'10' ,'110'和'111'。

当然,这不是最佳选择,因为它将您的流分成2位块并且只优化一个案例。但是,可以通过计算/测量更大输入集(如4或8位,f.e)的概率来改进它。在8位情况下,10101010和01010101将比00000000和11111111更频繁地使用。

使用算术编码或某些压缩可能会获得更好的结果,这些压缩实际上使用的是基于比特延迟的模型。

另一种简单的方法是每秒反转一次。由于您提到的概率将倾向于许多交替流部分,如0101010,这将为您提供许多流部分,如111111,通常可以通过常规压缩算法更好地压缩。但这种方法的成功取决于“概率差距”究竟有多大。