打印

准备做个数据压缩小模块,欢迎提供数据样本

[复制链接]
3391|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
drentsi|  楼主 | 2012-8-28 20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
准备做个数据无损压缩的小模块,算法经简单测试,对于数值压缩,压缩比高出rar25%左右。由于样本有限,仅测试了以下几种数据,欢迎提供其他各种各样的现场实际采集的数据样本。
样本------压缩比------ rar压缩比------ 说明
1--------108:1-------309:1------函数生成的纯净正弦波
2--------2.9:1-------2.1:1-------正弦波叠加1%幅值随机噪声
3--------1.6:1-------1.3:1-------正弦波叠加6%幅值随机噪声
4--------2.6:1-------2.3:1-------采集的市电信号4K采样率

相关帖子

沙发
PowerAnts| | 2012-8-28 20:52 | 只看该作者
你用你的软件再把rar压一遍不就得了?

使用特权

评论回复
板凳
PowerAnts| | 2012-8-28 20:54 | 只看该作者
再反过来,你压过了再给rar压,交错对比。如果第二个还能压缩,那就说明第一个输了

使用特权

评论回复
地板
drentsi|  楼主 | 2012-8-28 20:57 | 只看该作者
数据压缩是一次性的,理论上压缩之后的数据是无法再压缩的

使用特权

评论回复
5
shell.albert| | 2012-8-28 21:14 | 只看该作者
数据压缩是针对具有一定规律性的大批量数据,如果是一般的,没有规律性的,那根本不可能压缩的!

使用特权

评论回复
6
PowerAnts| | 2012-8-28 21:23 | 只看该作者
不至于吧,下面这三个rar, 是同一个PDF分别以最快、标准、最佳压缩率三种方式压缩的,压缩前为915807Byte,压缩后分别为838506Byte/833900Byte/833872Byte. 你试一下把这三个rar压一下,是否得到相同的大小?我不懂编程,但我觉得我的测试方法是合理的。
a.rar (818.85 KB)
b.rar (814.36 KB)
c.rar (814.33 KB)

使用特权

评论回复
7
PowerAnts| | 2012-8-28 21:29 | 只看该作者
我搞错了,我把a.rar改名为a.a, 以最佳压缩方式再压一次得到a.a.rar, 结果得到838574, 更大了:L

使用特权

评论回复
8
PowerAnts| | 2012-8-28 21:35 | 只看该作者
我投降!!!

使用特权

评论回复
9
drentsi|  楼主 | 2012-8-28 21:59 | 只看该作者
这个算法的模型只适合有点规律的包含有周期分量的采集的数据,不适合pdf这样的数据,给的样本无法压缩。
zip和rar压缩的思想在于把数据中的重复部分用指针来代替,在对指针采取某种编码来达到压缩的效果,需要连续3个以上字节在以前出现过才能压缩。这是典型的字典压缩,所有的lz系列算法都属于这个范畴。
字典压缩对于采集的带噪声的数据是难以应付的,因为连续3个以上字节重复是很少出现的。
我这个算法呢,适合采集的数据,不是看重复的数据,而是根据已有的数据来预测下一个数据,来去掉数据之间的数值相关,那剩下的就是对不相关的噪声进行编码了。对于文本这样的数据,压缩效率反而不好,文本数据重复多,但每两个字节却没有数值上的相关性。
举个简单例子。
1,3,5,7,,,从前面4个数值可以推断下一个数据很可能是9,如果真是9,那这个9就可以删掉,数据就压缩了。同理从1,3可以推断下一个数是5,如果真是5,那下一个数就是7,因此描述1,3,5,7,9只需要1,3,以及3个删除符号就可以了,大概2.5字节。
字典压缩却无法处理,因为数据没有重复。必须等到下一次出现1,3,5时才可以压缩。
文本、单词等无法用这样的方式进行预测。

使用特权

评论回复
10
PowerAnts| | 2012-8-28 22:05 | 只看该作者
那么,对于你主贴中的1,算法上判断它是正弦波,只记录起始相位和幅度,周期数,压缩率不是极高?一亿个周期的话,也只不过多几个零:lol

使用特权

评论回复
11
drentsi|  楼主 | 2012-8-28 22:37 | 只看该作者
正弦波的例子,每隔一个周期,数据就会重复一次,rar就可以高效压缩了。这样理想的数据实际是碰不到的。
如果包含了多个周期分量,那就麻烦了,用FFT变换求参数?理论上来讲,对FFT变换后的参数进行压缩反而不如直接对数据压缩,因为变换引入的量化误差将以噪声方式附加到数据上。

使用特权

评论回复
12
sinanjj| | 2012-8-29 12:28 | 只看该作者
lz到底在哪呢?

有空见面聊聊啊。

想去拜莫。

使用特权

评论回复
13
原野之狼| | 2012-8-29 12:46 | 只看该作者
我提供个数据样本
to_drentsi.tar.gz (316.61 KB)

使用特权

评论回复
14
原野之狼| | 2012-8-29 12:51 | 只看该作者
这个是我这边的比较数据。

使用特权

评论回复
15
原野之狼| | 2012-8-29 12:52 | 只看该作者
md5一下:
10a7b256c97514f77f32fed581876430  to_drentsi.dat

使用特权

评论回复
16
drentsi|  楼主 | 2012-8-29 13:27 | 只看该作者
我提供个数据样本
121049
原野之狼 发表于 2012-8-29 12:46


测试了一下,使用带预测模型的N模式,无法压缩。
改用不带预测功能S模式自适应压缩结果如下:
Open File:C:\to_drentsi.dat
188 ms Code Speed 1749KB/s
原始大小=328885 压缩后大小=324827 压缩比=1.012

你这给的是什么数据,是实际采集的吗?

使用特权

评论回复
17
原野之狼| | 2012-8-29 13:43 | 只看该作者
这个是视频数据

使用特权

评论回复
18
gxs64| | 2012-8-29 14:14 | 只看该作者
数据样本

40T 5Km.rar

391.75 KB

使用特权

评论回复
19
drentsi|  楼主 | 2012-8-29 15:21 | 只看该作者
数据样本
gxs64 发表于 2012-8-29 14:14

看了一下,这是典型的结构化数据,为满足NACU压缩的对齐要求,将文本中的tab字符替换成了空格,数据从5.6MB增加到了15MB,再使用NACU压缩,结果如下:
压缩后大小=  203643 原始大小=15371572 压缩比=75.48
对于这种结构化数据,还有更好的存储和压缩方法。
如果使用NACU,那么这些数据在CPU里面根本就不必转换成文本格式,而是直接以结构体的方式存储,再使用NACU压缩的话,相同的信息量估计可以压缩到150KB左右。

使用特权

评论回复
20
drentsi|  楼主 | 2012-8-29 15:51 | 只看该作者
补充说明一下:
数据能压缩到多大,取决于数据的熵,无论用什么算法都有一个压缩的极限。
对信息进行预测可以消除信息之间的相关熵,如果预测模型与实际不符的话将会受到惩罚。
本帖中的预测模型只适合于带有周期分量的采集数据以及各种缓变数据,不适合其他场合。
目前准备做的压缩设备有两种:
1.NACU,N模式自适应压缩。数据处理过程为:变换,预测,编码。适合于结构化数据压缩,压缩比通常可达8~200比1,比rar高2倍以上。用于处理要求在100MB/s以上的系统。
2.本题目所说的小模块。数据处理过程为:预测,编码。适合于单路采集数据压缩,压缩比通常在2~10比1,比rar高25%左右。模块很小,处理能力在2~3MB/,使用SPI接口,可用于单片机。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:学习,思考。

144

主题

1718

帖子

43

粉丝