我正在寻找一种音频或图像压缩算法,该算法可以压缩16位样本的洪流
我的数据具有图像和音频的特征(二维,在两个维度上都是相关的,并且在一个维度上具有类似音频的特征),因此音频或图像的算法可能都适用。
一个明显的尝试是这种一维算法:
例如,我可以在16位中存储3101,并在8位中存储缩放因子ceil(6678/256) = 27
,然后将每个16位样本转换为s8 = (s16 - base) / scale
的8位,其中{{1} },其明显的解压缩“算法”为base = 3101 + 27>>1, scale = 27
。)压缩率:128/67 = 1.91。
为了避免除法运算,我想出了一些主意,但是现在还没有人发明一种比保真度更好的超快算法吗?
注意: this page表示,FLAC以s16 = s8 * 27 + 3101
的速度每秒压缩2200万个样本(44MB / s),这相当不错(假设其实现仍然是单一的-threaded),如果对于我的应用程序来说还不够的话。 Another page表示,FLAC具有与其他3个编解码器类似的性能(在3.4GHz i3-3240,-q5上为40MB / s),具体取决于质量水平。
答案 0 :(得分:1)
看看PNG filters,以获取如何梳理相关性的示例。最明显的过滤器是“ sub”,它简单地减去连续的样本。差异应更集中在零附近。然后,您可以通过lz4之类的快速压缩程序运行该文件。如果其他过滤器选择可以在其他维度的相关性中找到优势,则可能会导致零附近的聚类更好。
对于有损压缩,您可以先压缩差异,然后再压缩一些低位,直到获得所需的压缩,然后仍然保留要保留的数据的特征。