【问题标题】:Ways to assit the compression of large custom data files协助压缩大型自定义数据文件的方法
【发布时间】:2013-02-08 21:16:25
【问题描述】:

我正在寻求有关如何更好地帮助压缩工具获得更好的无损压缩的建议。

我有许多大文件 (>100meg),其中包含来自各种传感器的传感器读数。来自各种传感器的样本具有不同的位大小(16 位、24 位、32 位)和不同的频率(70Hz 到 250Hz)。使用我知道的常用压缩器(zip、gzip、bzip2),我可以获得大约 70% 的原始文件大小的压缩文件。在我看来,如果我可以告诉压缩工具这些字节是这种类型的样本,而这些字节是另一种样本类型,可能会有压缩增益,但我不知道有什么可以让我这样做。

【问题讨论】:

  • zip 系列算法是通用的,最适合检测输入中何时重复字节序列。在您的情况下,利用您对数据的先验知识的自定义压缩算法可能会大大优于此类通用算法。

标签: compression data-compression lossless-compression


【解决方案1】:

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

第 1 步是使用差异。根据您的描述,我敢打赌,连续的值变化不大。因此差异很小并且有许多前导零位。尝试一下,然后使用通用压缩器。

第 2 步是使用可变长度整数编码。每个字节的高位决定了每个整数的跨度。整数的第一个字节的高位始终为零。同一整数的所有后续字节的高位为 1。从每个字节的低七位构建整数。 (我将第一个字节设为最低有效位,但您也可以按照最高有效位顺序进行。)这会将您的微小差异编码在一个字节中。此外,此编码将处理样本中的任意数量的位,这在您的应用程序中很方便。试试这个,然后是通用压缩器。

第 3 步可能会更详细地分析波形以获得更好的预测器。第 1 步只是使用最后一个值作为预测变量。您可以将前一个 n 值的更复杂函数用作下一个值的预测器。这是否有帮助在很大程度上取决于您的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多