超快速2倍有损音频/图像压缩算法?

问题描述 投票:1回答:1

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

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

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

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

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

例如,我可以以16位存储3101,并以8位存储缩放因子ceil(6678/256) = 27,然后将每个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个回答
1
投票

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

对于有损压缩,您可以在压缩它们之前对这些差异进行抽取,删除几个低位直到获得所需的压缩,并仍然保留您想要保留的数据的字符。

© www.soinside.com 2019 - 2024. All rights reserved.