2013-02-08 42 views
1

我在寻求如何更好地帮助压缩工具获得更好的无损压缩的建议。帮助大型自定义数据文件压缩的​​方法

我有许多包含来自各种传感器的传感器读数的大文件(> 100meg)。来自各种传感器的样本具有不同的比特尺寸(16比特,24比特,32比特)和不同的频率(70Hz至250Hz)。使用我知道的通用压缩器(zip,gzip,bzip2),我可以获得大约70%原始文件大小的压缩文件。在我看来,如果我可以告诉压缩工具这些字节是这种类型的样本,那些字节是另一种样本类型可能会有压缩增益,但我没有意识到任何事情会让我这样做。

+0

算法的zip家族是通用的,最适合用于检测输入中字节序列何时重复。在您的情况下,利用您对数据的先前知识的自定义压缩算法可能会大幅超越此类通用算法。 – 2013-02-08 21:21:41

回答

1

第0步将编码二进制数据。 (两个字节中的16位,三个字节中的24位等)。我希望你已经这么做了。

第1步将使用差异。从你的描述来看,我认为连续的值不会有太大的变化。因此,差异会很小,并有许多领先的零位。试试看,然后是通用压缩机。

第2步将使用变长整数编​​码。每个字节的高位决定了每个整数的范围。整数的第一个字节总是有一个高位为零。同一个整数的所有后续字节都有一个高位。从每个字节的低7位中构建整数。 (我把第一个字节的最低有效位,但你也可以做到最重要的位顺序。)这将在一个字节中编码你的小差异。此外,这种编码将处理样本中的任意位数,这在您的应用中很方便。试试这个,然后是一个通用压缩机。

步骤3可能是更好的预测器的波形更详细的分析。步骤1仅使用最后一个值作为预测值。您可以将之前的值的更复杂的函数作为下一个值的预测值。这是否有助于高度依赖于您的数据。