【发布时间】: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