我正在寻找一种可以压缩16位样本的音频或图像压缩算法
我的数据具有图像和音频的特征(二维,二维相关和一维音响),因此音频或图像的算法可能都是合适的。
一个显而易见的尝试是这个一维算法:
例如,我可以以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),具体取决于质量等级。
请查看PNG filters,了解如何梳理相关性的示例。最明显的过滤器是“sub”,它只是简单地减去连续的样本。差异应该更加集中在零附近。然后你可以通过像lz4这样的快速压缩器来运行它。如果其他过滤器选择可以在其他维度的相关性中找到优势,则可以在零附近进行更好的聚类。
对于有损压缩,您可以在压缩它们之前对这些差异进行抽取,删除几个低位直到获得所需的压缩,并仍然保留您想要保留的数据的字符。