0

我有一个看起来像 {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, 12, ...., 247,247,249,.., 284, 283}

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

4

1 回答 1

0

您需要提供有关一维数据性质的更多信息,以及为什么您认为它是可压缩的。您希望看到什么模式?

例如,如果它真的看起来像您显示的序列 (21,21,22,23,24,23),那么使用连续值的差异的简单模型将产生可被标准无损压缩器高度压缩的数据,例如压缩包。例如 (21,0,1,1,1,-1)。

为了利用高阶相关性,您可能正在寻找 FFT。您可以对 2 n 个样本的任何序列有效地执行 FFT(不仅仅是 8 个样本,就像 JPEG DCT 所做的那样)。有一些库可以进行无损整数 FFT,以及小波等其他变换,您可以尝试。

于 2019-03-21T23:49:05.603 回答