本教材主要介绍图像信号的压缩编码原理、静态图像编码方法、视频图像编码方法,以及数字图像与视频压缩编码的国际标准。主要内容包括量化、熵编码、预测编码、变换编码、矢量量化编码、运动补偿等编码技术以及JPEG,JPEG-2000,MPEG-x和H.26x等现行国际编码标准及其应用案例。对于编码标准,重点介绍其中采用的编码方法和应用,技术细节不做重点讲述。
本教材以简明易懂的方式介绍编码技术的同时,注重介绍各项技术产生的背景和思路,并辅以Matlab源码、课后习题、课程设计和应用案例,启发读者明白各项技术的基本原理、应用方法和适用场合。需要指出的是本书各章的课后习题与课程设计不是课本内容的简单重复,而是从实际应用中提炼出的问题,是课本内容必要的补充。
本书最后设计了六个图像压缩实验,目的在于让读者熟悉视频编码的整个过程,并掌握其中关键算法。实验内容的主线是实现一个基本的静态图像编码系统和一个视频编码系统。图像压缩实验与各章课后课程设计互相补充,相得益彰,对加深图像编码理解和做图像压缩相关实际应用系统大有裨益。
本书不仅可作为大学、本专科以及高职学生相关课程的教材,而且可作为从事数字图像压缩研究和开发的工程技术人员的参考资料。
图像信息具有直观、形象、易懂和信息量大的特点,是人类最丰富的视觉来源。百闻不如一见说的就是图像这个特点。但由于图像信号的内容复杂,数据量非常大,成为图像信息交流的主要障碍。如何在保证图像质量的前提下用最少量的数据实现图像信息的存储、记录和传输,达到优质、经济、可靠的要求,这就是本书介绍的数字图像压缩技术要解决的问题。
简明易懂。以浅显的语言和较少的数学知识介绍各种方法的产生背景,从特例逐步推广到一般,启发读者明白各项编码技术的基本原理。
案例教学。以解决具体问题的简化模型为主线,讲解各种编码方法,并给出图像压缩的典型应用案例。每章配有练习和课程设计题目,这些题目主要取自具体项目中的实际问题。
源码丰富。本书讲述的每种编码方法都提供Matlab和C++语言源码,读者可结合算法描述和算法具体实现来深入理解和掌握各种编码方法,并促进读者编程能力的提高。
20世纪80年代以来,图像压缩技术随着多媒体和通信技术的发展,在科学研究、工业生产、医疗卫生、教育、娱乐等方面得到了广泛的应用,如高清晰电视、数字电影、远程医疗、视频监控、视频电话、网络电视、DVD、手机电视以及刚开通的3G手机等。
图像压缩技术的应用已经成为一个产业,社会对这方面的人才需求越来越大。各高职、大专院校为了适应这种需求,相继开设了数字图像压缩相关课程,但由于读者专业背景和基础的不同,对教材的要求也不尽相同。
本书旨在以简明易懂的方式介绍图像压缩技术,并结合算法程序源码、习题和课程设计以及实际案例,介绍各项技术产生的背景和思路,启发读者了解各项技术的基本原理、应用方法和适用场合。力求使数学和信号处理基础较弱的学生在较短的学时内,掌握图像编码技术基本思想,并可根据需要自行研究相关技术应用细节。基于同样的目的,本书没有介绍对数学基础要求相对较高的小波变换、分形等方法。
本书包括如下章节:
第1章介绍图像压缩的必要性、可行性、发展史以及图像压缩应用系统,回答了为什么要进行图像压缩、为什么能够进行压缩和怎么用图像压缩的问题。
第2章介绍图像压缩的基本原理,为第3章图像压缩技术做准备。
第3章介绍图像压缩的基本方法,回答了怎么进行图像压缩的问题。
第4章介绍图像压缩国际标准,回答了图像压缩技术在实际应用中所采用的技术问题。
第5章介绍图像压缩应用案例,回答了图像压缩技术在我们日常生活中有哪些用处以及怎么用的问题。
第6章介绍图像压缩实验,实验内容以实现一个基本的静态图像编码系统和一个视频编码系统为主线,目的在于让读者熟悉视频编码的整个过程,并掌握其中的关键算法。
第7章介绍典型编解码算法的C++实现。
为了便于读者理解和验证所讲述的各个算法,每个算法都配以Matlab和C++源码,这些源码尽量按照算法描述的格式编写,并没有采用相应工具箱函数,也没有刻意进行优化。目的在于:1)希望读者对算法先理解再优化;2)对于熟悉Matlab语言的读者,这些源码可直接上机调试运行,在此基础上优化;对于不熟悉Matlab语言的读者,可将这些源码当做描述算法的伪码,并很容易改成C、C++语言等(在编写源码的过程,作者尽量以类似C语言的形式给出,目的也在于此)。
本书各章的课后习题与课程设计不是课本内容的简单重复,而是从实际应用中提炼出的问题,是课本内容必要的补充。各章课后课程设计与实验互相补充,相得益彰,对加深图像编码理解和做与图像压缩相关的实际应用系统大有裨益。题号前带有*的习题为课程设计。
图像压缩是一门实践性很强的课程,实验与课程设计都要求上机编程实现,这样才能够加深理解。对于编程语言,建议在算法验证阶段最好使用Matlab或Mathematics,待算法验证可行后,再用C++之类的语言转成应用程序,发布出去。这样才可能把更多精力投入算法设计,而不是编程上。
本书是作者在所教授的“数字图像处理”和“图像压缩与传输”两门课程讲义的基础上总结出来的。在本书编写过程中,参考和引用了大量专家和学者的研究成果、著作和论文,以及麻省理工、斯坦福、卡内基梅隆等大学相关课程的课件,还有一部分内容来源于互联网和听课学生的一些建议。在此,向所有文献著作者和资料提供者表示深切的谢意和敬意。
在本书编写过程中,作者始终希望以浅显的语言和较少的数学知识介绍各种方法的产生背景,从特例逐步推广到一般,启发读者理解各项编码技术的基本原理,但有时期望与实际效果有一定差距,在此希望各位读者见谅。
本书的编写对作者来说既是挑战又是学习和提高的机会。由于作者的视野和水平有限,编写时间仓促,书中难免存在错误和不足之处。在此真诚希望各位前辈、专家和读者给予批评指正,并希望通过交流使本书内容得以完善。
梁德群教授、齐国清教授、王海姣老师还有徐鹏在本书编写过程中给予很多帮助,在此表示感谢。
在本书立项及出版过程中, 得到了机械工业出版社华章分社的编辑们的热情鼓励、支持和帮助,在此表示最真诚的感谢。
计算机\图形图像
图像信息具有直观、形象、易懂和信息量大的特点,是人类最丰富的视觉来源。百闻不如一见说的就是图像这个特点。但由于图像信号的内容复杂,数据量非常大,成为图像信息交流的主要障碍。如何在保证图像质量的前提下用最少量的数据实现图像信息的存储、记录和传输,达到优质、经济、可靠的要求,这就是本书介绍的数字图像压缩技术要解决的问题。
本书特色:
简明易懂。以浅显的语言和较少的数学知识介绍各种方法的产生背景,从特例逐步推广到一般,启发读者明白各项编码技术的基本原理。
案例教学。以解决具体问题的简化模型为主线,讲解各种编码方法,并给出图像压缩的典型应用案例。每章配有练习题目和课程设计题目,这些题目主要取自具体项目中的实际问题。
源码丰富。本书讲述的每种编码方法都提供Matlab和C++语言源码,读者可结合算法描述和算法具体实现来深入理解和掌握各种编码方法,并促进读者编程能力的提高。
前言
教学建议
第1章绪论1
11图像压缩的必要性4
12图像压缩的可行性4
13图像压缩的发展史8
14图像压缩应用及案例9
15习题与课程设计11
第2章图像压缩的基本原理13
21信息论基础13
211信源、编码器13
212信息传输模型14
213信息的度量14
214基本编码定理17
22视觉特性17
23图像变换21
231一维离散余弦变换23
232二维离散余弦变换25
233二维离散余弦变换的性质26
24量化和编码28
241量化和编码定义28
242量化误差30
243量化分类31
25图像压缩算法质量评价36
251压缩比36
252视频码率37
253图像保真度37
254算法复杂度39
26习题与课程设计40
第3章图像压缩方法43
31引言43
32熵编码45
321行程编码45
322赫夫曼编码49
323算术编码57
324词典编码62
33预测编码70
34变换编码83
35矢量编码88
36基于下采样与插值的图像压缩93
361空间下采样93
362色度抽样94
363时间采样97
37各种编码方法总结97
38习题与课程设计98
第4章图像压缩国际标准101
41图像压缩国际标准发展史101
42静止图像编码标准104
421JPEG标准105
422JPEG 2000标准108
43视频图像编码标准109
431视频编码技术111
432视频编码标准概述116
44习题与课程设计122
第5章图像压缩应用案例123
51本地数字视频监控系统123
52远程视频监控系统129
53手机彩信133
54数字电视137
55习题与课程设计141
第6章图像压缩实验142
实验一图像压缩实验基础知识142
实验二图像行程编码和赫夫曼编码144
实验三图像二维DCT变换和
量化144
实验四图像DPCM编码145
实验五运动估计145
实验六基本JPEG算法145
实验七基于运动补偿的视频编码146
第7章典型编解码算法的C++实现147
71数据结构147
711信号类声明与定义147
712图像读取与显示类声明与定义153
72编解码算法函数158
73编解码算法函数实现160
参考文献188