Compression 超快2x有损音频/图像压缩算法?

Compression 超快2x有损音频/图像压缩算法?,compression,image-compression,Compression,Image Compression,我正在寻找一个音频或图像压缩算法,可以压缩16位样本洪流 相当可预测的数量(2-3倍) 在非常高的速度下(例如,每个样本最多60个周期:>100MB/s) 损失是可以接受的,但当然是不可取的 我的数据具有图像和音频的特征(二维,在两个维度上相关,在一个维度上类似音频),因此音频或图像的算法可能都是合适的 一个显而易见的尝试是这种一维算法: 将数据分成64个样本的段 测量这些样本之间的值范围(例如,一段中的样本可能在3101和9779之间,差值为6678) 使用2到4个额外字节对范围进行编码

我正在寻找一个音频或图像压缩算法,可以压缩16位样本洪流

  • 相当可预测的数量(2-3倍)
  • 在非常高的速度下(例如,每个样本最多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
,使用明显的解压“算法”压缩比:128/67=1.91

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

注意:说FLAC在
-q6
时每秒压缩2200万个样本(44MB/s),这非常好(假设它的实现仍然是单线程的),如果对我的应用程序来说还不够的话。表示FLAC的性能(在3.4GHz i3-3240,-q5上为40MB/s)与其他3种编解码器类似,具体取决于质量级别。

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

对于有损压缩,您可以在压缩之前消除差异,降低一些低位,直到获得所需的压缩,并且仍然保留希望保留的数据的特征