前言 本书的作用 1
第一章 数据压缩简介 2
1.1 读者 2
1.2 为什么用C 2
1.3 用哪种C 3
1.4 现有的记录 5
1.5 全书的结构 6
第二章 数据压缩词汇及其历史 8
2.1 两个领域 8
2.2 数据压缩=建模+编码 8
2.3 萌芽时期 9
2.4 编码 10
2.4.1 改进 11
2.5 建模 12
2.5.1 统计模型 12
2.5.2 字典方案 13
2.6 Ziv和Lempel 14
2.6.1 LZ77 14
2.6.2 LZ78 14
2.7 有损压缩 14
2.8 需要了解的程序 15
第三章 萌芽时期:最小冗余度编码 17
3.1 Shannon-Fano算法 18
3.2 Huffman算法 20
3.3 用C语言实现Huffman算法 22
3.3.1 BITIO C 23
3.4 关于函数原形的说明 29
3.5 MAIN-C,C和MAIN-E,C 30
3.5.1 MAIN-C,C 35
3.5.2 ERRHAND,C 35
3.6 Huffman代码剖析 37
3.6.1 符号计数 37
3.6.2 保存计数 38
3.6.3 建立Huffman树 39
3.6.4 使用Huffman树 39
3.7 压缩代码 40
3.8 合并所有的模块 52
3.8.1 性能 53
4.1 自适应编码 55
第四章 重大改进:自适应Huffman编码 55
4.2 更新Huffman树 56
4.2.1 交换的作用 59
4.2.2 算法 59
4.2.3 一种增强方式 60
4.2.4 转义码 60
4.2.5 溢出问题 61
4.2.6 按比例缩小的优点 64
4.3 代码说明 64
4.3.1 数组的初始化 65
4.3.2 压缩主程序 66
4.3.3 还原主程序 66
4.3.4 对符叫编码 67
4.3.5 更新树 69
4.3.6 解码符号 73
4.4 代码 73
第五章 优于Huffman算术编码 85
5.1 难点 85
5.2 算术编码:前进一步 85
5.2.1 实际情况 88
5.2.2 复杂性 90
5.2.3 解码 91
5.2.4 算术编码的优势 91
5.3.1 压缩程序 92
5.3 代码说明 92
5.3.2 还原程序 93
5.3.3 初始化模型 94
5.3.4 读入模型 96
5.3.5 初始化编码程序 97
5.3.6 编码过程 97
5.3.7 编码程序复位 99
5.3.8 解码过程 99
5.4 概述 101
5.5 代码 101
第六章 统计模型 116
6.1 更高次序的模型 116
6.2 有限上下文模型 116
6.3.1 一个简单例子 117
6.3 自适应模型 117
6.3.2 用转义码表示后退(faltback) 120
6.3.3 改进 122
6.4 最高次序列的模型 122
6.4.1 更新模型 123
6.4.2 转义概率 123
6.4.3 计算板 124
6.4.4 数据结构 125
6.4.5 完成修补:表1和表2 127
6.5 结论 128
6.5.1 增强 128
6.4.7 实现 128
6.4.6 模型刷新 128
6.6 ARITH-N,C清单 129
第七章 基于字典的压缩 155
7.1 一个例子 155
7.2 静态方法与自适应方法 156
7.2.1 自适应方法 156
7.2.2 一个典型例子 157
7.3 起源于以色列 159
7.3.1 历史 159
7.4 ARC:MS-DOS字典压缩的应用领域 160
7.4.1 字典压缩的应用领域 160
7.5 潜在危险——专利 161
7.6 结论 162
8.1 算法 163
第八章 滑动窗口压缩 163
8.1.1 LZ77的问题 166
8.1.2 编码问题 167
8.2 LZSS压缩 167
8.2.1 数据结构 168
8.2.2 平衡操作 170
8.2.3 贪婪与最有可能 171
8.3 代码说明 172
8.3.1 常量和宏 172
8.3.2 全程变量 173
8.4 压缩代码 174
8.4.2 主循环 176
8.4.1 初始化 176
8.4.3 退出代码 178
8.4.4 AssString () 178
8.4.5 DeleteString() 181
8.4.6 二叉树支持函数 182
8.5 还原函数 183
8.5.1 改进 185
8.6 代码 185
第九章 LZ78压缩 194
9.1 LZ77可以改进吗? 194
9.2 进入LZ78 195
9.2.1 LZ78实现 195
9.2.2 LZ78 详述 197
9.3 有效的变体 198
9.4 还原 200
9.4.1 缺陷 201
9.4.2 LZW实现 202
9.4.3 树的维护和搜索 202
9.5 压缩 204
9.6 还原 205
9.7 代码 207
9.8 改进 211
9.9 专利 219
10.1 数字音频的概念 220
10.1.1 基础 220
第十章 语音压缩 220
10.1.2 采样变理 224
10.1.3 基于PC的声音 226
10.2 声音的无损压缩 226
10.2.1 问题和结果 227
10.2.2 有损压缩 229
10.2.3 静止压缩 229
10.3 压扩(cornpanding) 235
10.4 其他技术 242
第十一章 有损的图形压缩 243
11.1 进入压缩 243
11.1.1 统计和字典的压缩方法 244
11.1.2 有损压缩 244
11.1.4 自适应编码 245
11.1.3 差分调制 245
11.2 一个可行的标准JPEG 246
11.2.1 JPEG压缩 246
11.2.2离散作弦变换 247
11.2.3 DCT的详细说明 248
11.3 问题之所在 249
11.4 DCT的实现 250
11.4.1 矩阵相乘 250
11.5 继续改进 252
11.5.1 DCT 的输出 252
11.5.2 量化 253
11.5.3 选择量化矩阵 254
11.6 编码 255
11.6.1 曲徊序列 256
11.6.2 熵编码 257
11.6.3 如何处理颜色 258
11.7 样本程序 258
11.7.1 输入格式 259
11.7.2 代码 259
11.7.3 初始化 260
11.7.4 正向DCT函数 261
11.7.5 WritreDCTData() 262
11.7.6 OutputCode() 263
11.7.7 文件还原 265
11.7.9 输入DCT代码 266
11.7.8 ReadDCTData() 266
11.7.10 逆DCT 267
11.8 完整的代码清单 268
11.9 支持程序 280
11.10 一些压缩结果 284
第二十章 一个归档、软件包 287
12.1 CAR和CARMAN 287
12.1.1 CARMAN命令集 288
12.1.2 CAR文件 289
12.1.3 文件头 289
12.1.4 存贮文件头 290
12.1.5 文件头的CRC 292
12.1.6 命令行的处理 293
12.2 产生文件清单 295
12.2.1 打开归档文件 299
12.3 主处理循环 300
12.3.1 跳过/拷贝输入文件 304
12.3.2 文件插入 305
12.3.3 文件抽取 306
12.3.4 消除 308
12.4 代码 308
附录A 压缩程序的统计 351
附录B 测试程序 355
词汇表 364
参考文献 370
其他资源 371
后记 372