我正在寻求有关如何更好地协助压缩工具获得更好的无损压缩的建议。
我有许多大文件(> 100meg),包含来自各种传感器的传感器读数。来自各种传感器的样本具有不同的比特大小(16位,24位,32位)和不同的频率(70Hz至250Hz)。使用我知道的常见压缩器(zip,gzip,bzip2),我可以获得大约70%原始文件大小的压缩文件。在我看来,如果我能告诉压缩工具这些字节是这种类型的样本,那些字节是另一种样本类型,可能会有压缩增益,但我不知道任何可以让我这样做。
答案 0 :(得分:1)
步骤0将以二进制编码数据。 (两个字节的16位,三个字节的24位等)我希望你已经这样做了。
第1步是使用差异。根据您的描述,我敢打赌,连续的值不会发生太大变化。因此,差异将很小并且具有许多前导零位。试试这个,然后是通用压缩机。
步骤2将使用可变长度整数编码。每个字节的高位决定每个整数的跨度。整数的第一个字节始终具有高位零。同一整数的所有后续字节都具有高位1。从每个字节的低七位构建整数。 (我把第一个字节带到最低有效位,但你也可以做最重要的位顺序。)这将在一个字节中编码你的小差异。此编码还可处理样本中的任意位数,这在您的应用中非常方便。试试这个,然后是通用压缩机。
步骤3可能是更详细的波形分析,以获得更好的预测值。步骤1只使用最后一个值作为预测变量。您可以使用先前 n 值的更复杂函数作为下一个值的预测变量。这是否有帮助在很大程度上取决于您的数据。