如何为1D数据(例如一行)使用JPEG压缩算法?

时间:2019-03-21 14:41:15

标签: java compression jpeg dct lossy-compression

我有一个看起来像{21,21,22,23,24,23,....}的(时间序列)数据,我正在尝试在JAVA中实现jpeg算法,以了解jpeg压缩的方式可以处理此类一维数据(我的计划是比较各种压缩算法)。

我知道在文本数据上使用JPEG(或通常在文本数据中进行有损压缩)没有多大意义,但我的目标是查看生成哪种中间模式(例如,“汽车”变为“ qwses”)在增加压缩率的过程中,有多少中间模式类似于原始单词。所以这个想法是这样的:https://www.youtube.com/watch?v=meovx9OqWJc&t=1s

如上所述,我的输入文件是1x458矩阵,包含10到300之间的数字;例如{10,13,14,14,15,15,12,....,247,247,249,..,284,283}

我的主要问题是我不确定在理论上应该如何转换JPEG算法(将8x8图像乘以8x8 DCT系数矩阵等适用于1xN数据(一行)以及应该更改实现的哪一部分) JPEG(例如,我应该如何为此类数据提供dct系数等)?如果有人可以用伪代码解释它,那也将非常好。

1 个答案:

答案 0 :(得分:0)

您需要提供有关1D数据的性质以及为什么它可压缩的更多信息。您希望看到什么图案?

例如,如果确实看起来像您显示的序列(21,21,22,23,24,23),则使用连续值之差的简单模型将导致数据可以通过标准高度压缩无损压缩器,例如gzip。例如。 (21,0,1,1,1,-1)。

要利用高阶相关性,您可能想要的是FFT。您可以高效地对2 n 个样本的任何序列进行FFT(像JPEG DCT一样,不仅可以采样八个样本)。那里有可以执行无损整数FFT的库,也可以尝试其他转换(例如小波)。