【问题标题】:Ultrafast 2x lossy audio/image compression algorithm?超快 2 倍有损音频/图像压缩算法?
【发布时间】:2019-06-26 20:52:29
【问题描述】:

我正在寻找一种可以压缩 16 位样本种子的音频或图像压缩算法

  • 相当可预测的数量 (2-3x)
  • 以非常高的速度(例如,每个样本最多 60 个周期:>100MB/s)
  • 有损耗是可以接受的,但当然是不可取的

我的数据具有图像和音频的特征(二维,两维相关,一维类似音频),因此音频或图像的算法可能都适用。

一个显而易见的尝试是这个一维算法:

  • 将数据分成 64 个样本的片段
  • 测量这些样本之间的值范围(例如,样本可能在一个片段中介于 3101 和 9779 之间,差异为 6678)
  • 使用 2 到 4 个额外字节来编码范围
  • 将每个 16 位样本线性下采样到该段中的 8 位。

例如,我可以将 3101 存储在 16 位中,并将缩放因子 ceil(6678/256) = 27 存储在 8 位中,然后将每个 16 位样本转换为 8 位为s8 = (s16 - base) / scale 其中base = 3101 + 27>>1, scale = 27,具有明显的解压效果s16 = s8 * 27 + 3101 的“算法”。)压缩比:128/67 = 1.91。

我已经尝试了一些避免除法运算的想法,但是现在没有人发明了一种可以比这个更好地保持保真度的超快算法吗?

注意:this page 表示 FLAC 在-q6 以每秒 2200 万个样本 (44MB/s) 进行压缩,这非常好(假设它的实现仍然是单线程的),如果对我的申请还不够。 Another page 表示 FLAC 具有与其他 3 种编解码器类似的性能(在 3.4GHz i3-3240 上为 40MB/s,-q5),具体取决于质量水平。

【问题讨论】:

    标签: compression image-compression


    【解决方案1】:

    查看PNG filters,了解如何梳理相关性的示例。最明显的过滤器是“sub”,它只是减去连续的样本。差异应该更多地集中在零附近。然后你可以通过像lz4 这样的快速压缩器来运行它。如果其他过滤器选择可以在您的其他维度的相关性中找到优势,它们可能会在零附近产生更好的聚类。

    对于有损压缩,您可以在压缩之前抽取差异,丢弃一些低位直到获得所需的压缩,并且仍然保留您想要保留的数据的字符。

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多