第一部分 基础知识 1
第1章 引言 1
1.1 JPEG标准 1
1.2 MPEG标准 3
第2章 图象信息压缩基础 5
2.1 图象和视频数据的处理 5
2.1.1 图象的数字模型 5
2.1.2 图象和视频信号的表示 6
2.1.3 数字图象处理系统 9
2.2 图象处理技术和基本处理方法 10
2.2.1 图象处理技术 10
2.2.2 基本处理方法 11
2.2.3 图象处理专用硬件 12
2.3 图象编码 12
2.3.1 图象编码方法分类 12
2.3.2 常用编码方法 14
2.3.3 DCT编码 19
2.4 图象压缩标准 20
2.4.1 活动图象压缩标准MPEG 21
2.4.2 H.261视频压缩码标准 21
2.4.3 图象和视频压缩标准专用硬件 22
第二部分 JPEG标准及其实现 24
第3章 JPEG标准的基本内容 24
3.1 定义和缩略词 24
3.2 符号说明 29
3.3 基本内容 34
3.3.1 JPEG标准中定义的元素 34
3.3.2 编码类型 35
3.3.3 基本DCT的编码 36
3.3.4 无失真编码 37
3.3.5 操作模式 38
3.3.8 多分量控制 40
3.3.7 样本精度 40
3.3.6 熵编码 40
3.3.9 压缩数据的结构 41
3.3.10 图象、帧和扫描 42
3.3.11 小结 42
3.4 数字定义 43
3.4.1 源图象 43
3.4.2 源图象数据编码的顺序 45
3.4.3 DCT压缩 46
3.4.4 点变换 49
3.5 无失真和层次操作模式中的算术过程 49
第4章 JPEG操作模式 50
4.1 编码器和解码器的控制过程 50
4.1.1 编码器控制过程 50
4.1.2 解码器控制过程 52
4.2.1 基于DCT的顺序型编码过程 56
4.2 基于DCT的顺序操作模式 56
4.2.2 基于DCT的顺序解码过程 70
4.3 基于DCT的累进操作模式 81
4.3.1 基于DCT的累进型编码过程 81
4.3.2 基于DCT的累进型解码过程 91
4.4 无失真操作模式 91
4.4.1 无失真编码过程 92
4.5 层次操作模式 95
4.4.2 无失真解码过程 95
4.5.1 层次编码 96
4.5.2 层次解码 99
第5章 压缩数据格式 101
5.1 简介 101
5.1.1 组成单元 101
5.1.2 语法 103
5.1.3 语法图约定 103
5.2.1 高层语法 104
5.2 通用顺序和累进语法 104
5.1.4 符号、代码长度和值的约定 104
5.2.2 帧头标语法 105
5.2.3 扫描头标语法 107
5.2.4 表说明和其他标记段语法 109
5.2.5 定义行数目段语法 114
5.3 层次语法 115
5.3.1 高层层次模式语法 115
5.3.2 DHP段语法 115
5.3.3 EXP段语法 115
5.4 压缩图象数据的缩略格式 116
5.5 表说明数据的缩略格式 116
5.6 小结 116
6.1.1 可交换格式 119
6.1.2 编码器 119
6.1.3 解码器 119
6.1 实现要求 119
第6章 JPEG标准的实现原理及建议 119
6.2 量化表 120
6.3 产生指定Huffman代码表的过程 120
6.4 Huffman表说明和典型Huffman表 124
6.4.1 Huffman表说明 124
6.4.2 典型Huffman表 126
6.5.1 算术编码过程 136
6.5 算术编码 136
6.5.2 算术解码过程 148
6.5.3 字节中的位序 153
6.5.4 算术编码器和解码器的测试序列 153
6.6 低通下采样滤波器(层次编码) 166
6.7 DCT和空间编码技术的应用领域 167
6.8 累进编码模式的应用领域 167
6.8.1 DCT系数的累进编码 167
6.8.2 层次累进方式 168
6.9.1 AC预测 169
6.9 消除解码图象中的块--块不连续性 169
6.9.2 量化后的AC预测 170
6.10 逆量化的修改 171
6.11 点变换例子 171
第7章 JPEG实现代码 172
7.1 简介 172
7.2 调用参数 172
7.2.1 编码器调用参数 172
7.2.2 解码器调用参数 175
7.2.3 参数范围 177
7.2.4 返回值 177
7.3 命令解释器 177
7.3.1 术语 177
7.3.2 符合规定的JPEG文件 178
7.3.3 记号 178
7.3.6 结构定义 180
7.3.5 打印状态 180
7.3.4 注解 180
7.3.7 表说明 181
7.3.8 打开和关闭文件 184
7.3.9 对要发送的表进行排队 185
7.3.10 写标记代码 185
7.3.11 Number of Lines的定义 186
7.3.12 统计命令 187
7.3.13 参数定义 187
7.3.14 默认值 188
7.3.15 例子 188
7.3.16 命令解释器的使用 191
7.4 程序说明及代码 191
7.4.1 程序流程 191
7.4.2 C代码及说明 195
8.1 简介 272
第三部分 MPEG标准及其实现 272
第8章 MPEG标准的基本内容 272
8.2 定义 273
8.3 符号和缩略语 279
8.3.1 算术操作符 279
8.3.2 逻辑操作符 280
8.3.3 关系操作符 280
8.3.4 按位操作符 280
8.3.5 赋值操作符 281
8.3.6 助记符 281
8.3.7 常量 281
8.4 描述位流语法的方法 281
8.5 MPEG系统概述 283
8.5.1 多路复合操作(单元层) 284
8.5.2 单独流操作(包层) 285
8.5.3 系统参考解码器 285
8.6.2 算法概述 286
8.6 MPEG视频概述 286
8.6.1 用途 286
8.6.3 编码 288
8.6.4 解码 290
8.6.5 编码视频位流的结构 290
8.6.6 算法支持的特征 290
8.7 MPEG音频概述 291
8.7.1 编码 291
8.7.2 层 292
8.7.3 存储 292
8.7.4 解码 293
第9章 MPEG系统 294
9.1 需求说明 294
9.1.1 编码结构和参数 294
9.1.2 系统目标解码器 294
9.1.3 系统流语法说明 297
9.1.4 语法域的语义定义 299
9.1.5 多路复合流语法 304
9.1.6 受阻系统参数流 305
9.2 系统编码层概述 306
9.3 编码器操作 307
9.3.1 自由度 307
9.3.2 同步 307
9.3.3 多路复合 309
9.3.4 由解码器缓冲引起的编码器约束 309
9.3.5 流特征 310
9.3.6 填补流 311
9.3.7 插入私有数据 311
9.4 解码器操作 311
9.4.1 解码器同步 312
9.4.2 解码器启动同步 313
9.4.4 时间标识 315
9.4.3 解码器中的缓冲区管理和维护 315
9.5 CD-ROM多路复合参数 316
9.6 ISO/IEC 11172多路复合流例子 317
9.6.1 音频 317
9.6.2 视频 317
9.6.3 多路复合策略 317
9.6.4 系统时钟参照(SCR) 318
9.6.5 表示时间戳(PTS) 319
9.6.6 解码时间戳(DTS) 320
9.6.7 缓冲区大小 320
9.6.8 遵守系统目标解码器(STD)规定 320
9.6.9 数据流例子 322
第10章 MPEG视频 329
10.1 需求说明 329
10.1.1 编码结构和参数 329
10.1.2 编码视频位流语法说明 331
10.1.3 视频位流语法 336
10.1.4 视频编码过程 344
10.2 8×8逆向DCT 351
10.3 可变长代码表 351
10.3.1 宏块寻址 351
10.3.2 宏块类型 352
10.3.3 宏块图案 353
10.3.4 运动向量 354
10.3.5 DCT系数 355
10.4 视频缓冲检验器(VBV:Video Buffering Verifier) 359
10.5 视频编码 361
10.5.1 引言 361
10.5.2 概述 361
10.5.3 预处理 366
10.5.4 模型编码器 370
10.5.5 MPEG视频位流语法 371
10.5.6 MPEG视频的编码 385
10.5.7 编码MPEG视频 411
10.5.8 后处理 413
第11章 MPEG音频 415
11.1 需求说明 415
11.1.1 编码音频位流语法说明 415
11.1.2 音频位流语法的语义 420
11.1.3 音频解码过程 432
11.2 流程图和结构图 440
11.3 编码过程 445
11.3.1 编码器 445
11.4 错误敏感性(sensitivity) 472
11.4.1 简介 472
11.4.2 层Ⅰ和层Ⅱ 472
11.4.3 层Ⅲ 472
11.5 错误隐蔽 473
11.6.2 ms_stereo和强度立体声编码层Ⅲ 474
11.6 联合立体声编码 474
11.6.1 强度立体声编码层Ⅰ和层Ⅱ 474
第12章 MPEG实现代码 477
12.1 简介 477
12.2 调用参数 477
12.2.1 编码器 477
12.2.2 编码器 481
12.2.3 程序跟踪 481
12.2.4 返回值 485
12.3 程序解释器 485
12.3.1 术语 485
12.3.2 记号 486
12.3.3 注解 487
12.3.4 退出 487
12.3.5 结构定义 487
12.3.6 无效命令 488
12.3.8 算术命令 489
12.3.7 打印命令 489
12.3.9 堆栈命令 490
12.3.10 内存访问命令 490
12.3.11 程序访问命令 490
12.3.12 标号和等价符 491
12.3.13 分支命令 491
12.3.14 保留的存储器位置 491
12.3.15 保留的程序位置 493
12.3.16 命令列表 493
12.3.17 例子 494
12.3.18 使程序解释器起作用:1个例子 496
12.4 程序说明及代码 497
12.4.1 程序功能 497
12.4.2 功能描述和C程序代码 498
参考文献 558