游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4142|回复: 11

压缩算法集合,老旧的都来,希望保持更新,高手们谁有

[复制链接]

82

主题

331

帖子

340

积分

中级会员

Rank: 3Rank: 3

积分
340
QQ
发表于 2005-9-23 23:17:00 | 显示全部楼层 |阅读模式
Last at : 2005-9-23 [ Deen ] ( QQ : 66439797 ) ( MSN : Deen000@hotmail.com )
PS : 本人一直都对数据压缩有兴趣,最近整理了一下以前学习到的东西,继续有更新哦 ~~~ 大家多多交流分享。
     高手们多多指点 !!大家共同进步 !!!
------------------------------
[一] 直观压缩 :
        1. 日常生活中的缩写或者是简写都是减少重复信息量的工作。
        2. 不可逆文本压缩 :
                - 比如去除了一些重复的空格和一些不常使用的字符,但是却可能对整个数据源带来不可恢复的灾难。
        3. 特定的文本压缩
                - Baudot 码 :
                        使用一个键 ( 状态转换键,类似 Shift 键 ) 来切换数字和英文输入,从而得到更加多的编码范围。
        4. 游程编码 :
                - RLE 文本压缩
                        - 其 Len 可以比较灵活的变动,0 可以从起始值 3 开始,应此得到 255 = 258 更长的行程编码
                - MNP5 [ Microcom Network Protocol ]
                        - 采用 3 个重复字符则进行编码处理,其缺点是单 3 个字符重复的时候扩展了,4 个重复则没有压缩。
                - 字符对编码 ( digram encoding )
                        - 使用一些特定的符号来表示经常出现的数据,如 @a 来代替 "printf"
                - 相关编码 :
                        - 使用差分来存放数据关系,如 : 温度 70, 71, 72, 73, 70 -> 71, 1, 2, 3, - 3
                          有时候差分过大,则会用原数据 ( 不用差分 ) 来表示,必须有标识来区别两者。
                - RLE 图像压缩
                        - 通常会对颜色通道 ( R, G, B, A ) 进行分离,来获取更好的压缩率。
                        - 图形可以单个游程进行解码 ( 比如加入 eof 标识 ),让用户尽快的得到图像数据。
                          在合并图像的时候也不用进行解码就可以直接合并了。
                        - 最好能采用不同的行程遍历方法,线性的,非线性的,Z 字型的,这样来挑选最优的压缩方案。
                        - 可以对一些游程进行合并处理,比如 1,2,3,7,1,11,2 的游程,用户指定合并 <= 3 的编码
                          则最终如下 : 6, 7, 14 。而效果则只能由人眼来分辨了。
                - ASCII 高位可以作为 CRC 码
                - 前移编码 :
                        - 维护一个 A 表,将被使用都放入 A 表中,计数器自行维护,这样可以将常用的都编码到最小字节。
                          有时候不前移的效果更好,这个要自行判断,平均数( C ) 越小越好。
                        - 移动的长度是可以改变的,不一定都要移动到头部。
                - 标量量化 :
                        - 可以使用截尾或者近似值来取代 ( 个人感觉像调色板来逼取近似值 )
                      ( 如 : [ 0, 3, 6, 9 ] 7 就编码成 6,因为 6 比 9 更接近于 7 )

[一] 统计方法 :
        1. 信息论思想 :
                完全压缩 = log2(N) [ PS: 要得到可不容易也,最近用 RAR 作了比较,RAR 有的时候能 90% 的接近,真是强 !]
        2. 变长码 :
                - 前缀性 : 别的编码的前部不能等于某个编码。
                  如 : 1, 01, 001, 010 就没有前缀性 ( 01 和 010 ) [ 解码中碰到 01 字段就不知道是谁的了 ]
                  而 : 1, 01, 001, 000 就有前缀性
                  原因是线性解码的时候无法识别是谁的编码,因此无法正确解压。
        3. 前缀码 :
                - 一元码 :
                        0 或者     1
                    10              01
                    110      001
                    1110    0001 ( 就是重复的 0 或者 1 最后再加入一个非 :P )
                - 数字基 :
                        - Fibonacci 基 : 1, 2, 3, 5, 8, 13, 21 ...
                          比如 : 3 (    01 )
                                     8 (  0011 )
                                 12 ( 10101 )
                                       10 (  0111 )
                - Golomb 码 :
                        - b = 2^m; q = int( ( n - 1 ) / b ); r = n - q * b; [ 注意 : 0 元素就一个编码 1 完事了 ]
                        - 第一部分 : q + 1 个一元编码 ,第二部分 : m 位二进制 ( r 值 )
                          ( m 的值经验来说最好取 3 或者 4 ) [ From Benben 教程 :P ]
                        - 如 :
                                m = 3; n = 9;  (             01 | 000 )
                                m = 3; n = 10; (             01 | 001 )
                                m = 3; n = 99; ( 0000000000001 | 011 ) ( 好长 :P )
                - Kraft-MacMilan 不等式 :
                        - [ Deen : 此不等式比较复杂,请其他高手填充此栏目,本人能力有限,谢谢 !]
                        - [ Deen : 对此有研究的人在回复中解释此不等式作用,谢谢 !]

// to be continue ...

[ 参考书目 ]
        1. Data Compression ( The Complete Reference, Second Edition ) [ 美 ] David Salomon [ 译 ] 吴乐南
        2. 《笨笨数据压缩教程》 [ China ] 王咏刚

82

主题

331

帖子

340

积分

中级会员

Rank: 3Rank: 3

积分
340
QQ
 楼主| 发表于 2005-9-23 23:19:00 | 显示全部楼层

Re:压缩算法集合,老旧的都来,希望保持更新,高手们谁

这里很难排版,各位忍耐忍耐~~~
有研究都请跟贴,这里的算法和想法越多越好~~~
推荐书目的请尽量一次写完,这样能省版面空间,让更多的人交流。
Free open source 也是一样,尽量一次写完.

lingjingqiu 有好的想法不要吝啬,尽量说说。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-23 23:27:00 | 显示全部楼层

Re:压缩算法集合,老旧的都来,希望保持更新,高手们谁

我推荐你一本书吧,Free-The Data Compression Book 2e

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-23 23:30:00 | 显示全部楼层

Re:压缩算法集合,老旧的都来,希望保持更新,高手们谁

看看那个啥,zlib,gzip2一类的。

82

主题

331

帖子

340

积分

中级会员

Rank: 3Rank: 3

积分
340
QQ
 楼主| 发表于 2005-9-24 18:46:00 | 显示全部楼层

Re:压缩算法集合,老旧的都来,希望保持更新,高手们谁

天啊~~我还是不要献丑了。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-24 19:04:00 | 显示全部楼层

Re:压缩算法集合,老旧的都来,希望保持更新,高手们谁

Deen一定是认错人的说。。。。呵呵。。。我现在用的压缩都是直接用zlib的。。。。压缩算法仅供研究。。。。不打算在程序里面用自己的压缩算法。。。。

82

主题

331

帖子

340

积分

中级会员

Rank: 3Rank: 3

积分
340
QQ
 楼主| 发表于 2005-9-24 19:55:00 | 显示全部楼层

Re:压缩算法集合,老旧的都来,希望保持更新,高手们谁

刚刚下载了你的 FDE, 是你的吧,刚刚认错作者了。
你的 QQ 不开的吗 ? 有 MSN 吗 ? 大家交流交流~~~~ ( 我的 MSN : Deen000@hotmail.com )

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-24 23:33:00 | 显示全部楼层

Re:压缩算法集合,老旧的都来,希望保持更新,高手们谁

倒,FDE作者要来砍我了。。。

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-9-25 10:18:00 | 显示全部楼层

Re:压缩算法集合,老旧的都来,希望保持更新,高手们谁

大虾,有关于图形图像的算法不,苦恼中。。。

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-25 12:39:00 | 显示全部楼层

Re: Re:压缩算法集合,老旧的都来,希望保持更新,高手

lingjingqiu: Re:压缩算法集合,老旧的都来,希望保持更新,高手们谁有研究的来跟贴,在此谢谢 !

倒,FDE作者要来砍我了。。。

楼主什么眼神啊~~
无语了~~ [em22]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-27 23:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表