多媒体原理与应用设计
作者: 黄东军
出版社:清华大学出版社 2017年09月
简介:
本书系统而又深入地介绍了现代多媒体核心技术及应用。全书共12章,主要内容有多媒体技术架构、开发平台、无损数据压缩算法、音频编码原理、音频数据处理方法、数字图像原理与格式、图像处理、数字视频原理与格式、视频编码、视频处理(视频播放、特效、捕获、转码)、运动对象检测与跟踪、网络多媒体协议、传输应用设计等。本书把原理阐述与底层应用设计紧密结合在一起,细致、充分地展现核心原理,注重应用能力培养,案例具有综合性、启发性、实用性,有较高的学习价值。本书可作为本科计算机、自动化、电子信息、通信工程、数字媒体、物联网等专业的“多媒体技术”专业课教材,也适合关注和希望深入研究多媒体底层开发的读者阅读,还可供对多媒体有兴趣的读者自学。
【目录】
目录
第1章绪论
1.1基本概念
1.1.1媒体及其分类
1.1.2多媒体
1.2多媒体的应用
1.2.1大众传媒领域
1.2.2消费电子领域
1.2.3现代教育技术领域
1.2.4多媒体通信领域
1.2.5表演与会展
1.2.6Web应用
1.2.7物联网领域
1.2.8军事领域
1.2.9游戏与软件
1.3体系结构
1.3.1硬件平台层
1.3.2操作系统层
1.3.3应用系统层
思考与练习
第2章编程环境与平台
2.1Win32API编程基础
2.1.1概述
2.1.2Windows程序的运行机制
2.1.3*个Win32 API程序
2.1.4编程实践: 在窗口过程函数中添加代码
2.2COM组件编程初步
2.2.1组件
2.2.2COM组件
2.3多媒体应用设计面临的挑战
2.4Microsoft Media Foundation
2.4.1基本概念
2.4.2体系结构
2.4.3音视频管道
2.5本书资源的使用及问题解决办法
思考与练习
第3章数字音频基础
3.1声音及其属性
3.1.1声音的概念
3.1.2声音的基本属性
3.2从模拟到数字
3.2.1采样
3.2.2量化
3.2.3编码
3.3数字音频编码
3.3.1PCM编码
3.3.2增量调制编码
3.3.3自适应差分脉冲编码调制
3.3.4子带自适应差分脉冲编码调制
3.3.5基于参数的语音编码
3.4数字音频编码国际标准
3.5本章小结
思考与练习
第4章音频应用程序设计
4.1波形音频文件分析
4.1.1概述
4.1.2RIFF WAVE Chunk
4.1.3Format Chunk
4.1.4Fact Chunk
4.1.5Data Chunk
4.2音频播放程序
4.2.1利用PlaySound函数播放音频文件
4.2.2基于MF Media Session的音频播放
4.3音频转码程序
4.3.1概述
4.3.2函数分析
4.3.3在转码程序中操作音频数据
4.4本章小结
思考与练习
第5章无损数据压缩算法
5.1信息熵编码
5.1.1预备知识
5.1.2香农?范诺编码
5.1.3赫夫曼编码
5.1.4算术编码
5.2行程编码
5.3词典编码
5.3.1基本思想
5.3.2LZ77算法
5.3.3LZSS算法
5.3.4LZ78算法
5.3.5LZW算法
5.4本章小结
思考与练习
第6章数字图像基础
6.1数字图像的基本概念
6.1.1图像的一般表示
6.1.2采样与量化
6.1.3像素与位深度
6.1.4分辨率
6.2颜色模型
6.2.1RGB模型
6.2.2RGBA模型
6.2.3HSV模型
6.2.4CMYK模型
6.2.5YUV模型
6.3数字图像的像素格式
6.3.1真彩图像
6.3.2伪彩图像
6.4图像文件格式分析
6.4.1BMP图像
6.4.2GIF图像
6.5图像压缩标准JPEG
6.5.1JPEG有损压缩技术概览
6.5.2JPEG算法的具体处理步骤
6.6本章小结
思考与练习
第7章图像处理与应用程序设计
7.1图形图像开发包
7.1.1GDI
7.1.2Direct2D
7.1.3Windows Imaging Component
7.2位图的基本操作
7.2.1数据结构
7.2.2一个显示位图的基本程序
7.3基于像素的位图操作
7.3.1SetPixel函数
7.3.2图像的倒立显示
7.3.3图像的正立显示
7.3.4分量图像的正立显示
7.3.5灰度图像的正立显示
7.4几个典型的图像处理算法
7.4.1图像滤波
7.4.2浮雕滤镜
7.4.3图像融合
7.5水波纹模拟
7.5.1水波纹模拟算法原理
7.5.2水波纹模拟程序的实现
7.6本章小结
思考与练习
第8章数字视频基础
8.1模拟视频
8.1.1扫描
8.1.2电视制式
8.1.3模拟电视信号的类型
8.2模拟视频的数字化
8.2.1概述
8.2.2数字视频的分辨率格式
8.2.3数字视频的采样格式
8.3计算机系统中的数字视频数据
8.3.1YUV的取值问题
8.3.2YUV视频的存储格式
8.3.3颜色空间和色差采样率的变换
8.4编程实践: 一种YUV文件的显示
8.4.1YUV文件格式分析
8.4.2显示YUV文件的基本程序
8.4.3显示YUV文件的改进程序
8.5本章小结
思考与练习
第9章视频应用程序设计
9.1视频播放
9.1.1基于Media Foundation的视频播放应用概述
9.1.2完整视频播放程序设计
9.2视频特效
9.2.1给视频添加字幕和图标
9.2.2淡入淡出
9.3视频捕获
9.3.1基于Media Foundation的视频捕获概述
9.3.2设备枚举模块示例
9.3.3一个完整的视频捕获程序
9.4运动对象检测与跟踪
9.4.1研究背景
9.4.2概念与定义
9.4.3基本原理
9.4.4算法描述
9.4.5系统实现
9.5本章小结
思考与练习
第10章数字视频编码原理与标准
10.1视频编码算法
10.1.1编码原理
10.1.2编码算法的基本框架
10.2运动搜索算法
10.2.1概述
10.2.2搜索起点的选择
10.2.3匹配准则
10.2.4运动搜索算法
10.3视频编码国际标准
10.3.1H.26x系列标准
10.3.2MPEG系列标准
10.3.3视频编码标准的应用和性能比较
10.4本章小结
思考与练习
第11章网络多媒体基础
11.1网络与分布式系统
11.1.1计算机网络
11.1.2分布式系统
11.1.3分布式多媒体系统
11.2多播
11.2.1IP多播概述
11.2.2多播用户模型
11.2.3IGMP协议
11.2.4IP多播路由协议
11.3多媒体传输协议
11.3.1RTP协议
11.3.2RTCP协议
11.4流媒体技术
11.4.1流媒体技术的特点
11.4.2典型流媒体协议分析
11.5流媒体系统及其应用
11.5.1主要流媒体系统简介
11.5.2流媒体应用系统的组成
11.5.3应用举例
11.6Media Foundation的网络媒体源特性
11.6.1网络源的创建
11.6.2网络源的配置
11.7视频会议系统
11.7.1视频会议系统的构成
11.7.2视频会议系统的应用
11.8本章小结
思考与练习
第12章网络多媒体应用程序设计
12.1WinSock编程基础
12.1.1C/S模型
12.1.2客户端设计
12.1.3服务器设计
12.2远程桌面图像的传输
12.2.1屏幕图像捕获
12.2.2桌面图像的网络传输
12.2.3系统应用
12.3本章小结
思考与练习
【免费在线读】
第5章无损数据压缩算法
前面已经指出,多媒体技术面临的挑战之一是数据量特别大。因此,需要从多方面想办法来克服这一困难。数据压缩就是有效的技术途径。数据压缩可分成两种类型,一种是无损压缩(lossless compression),另一种是有损压缩(lossy compression)。无损压缩是指对压缩后的数据进行重构(解压缩)得到的数据与原来的数据完全相同。无损压缩主要用于要求重构的数据与原始数据完全一致的场合,例如数据管理领域。而有损压缩是指对压缩后的数据进行重构得到的数据与原来的数据有所不同,但不会导致对原始数据的误解。有损压缩适用于重构数据不一定非要和原始数据完全相同的场合,例如音频、图像和视频数据的压缩。本章介绍几种广泛应用的无损压缩编码技术,包括赫夫曼编码、算术编码、行程编码和词典编码。有损压缩放在图像、视频处理中介绍。5.1信息熵编码5.1.1预备知识1. 信息量的概念
香农(Shannon)指出,信息量是对不确定性的度量。一个事件越是确定,对人们来说信息量就越小,例如“明天太阳将从东方升起”“中国在太平洋西岸”等等,这些事件对我们来说是完全确定的,所以,没有什么信息量。从数学上讲,某一事件发生的可能性越小,即概率越小,则该事件提供的信息量越大; 反之,一个事件发生的概率越大,则该事件包含的信息量就越小。基于这一原理,就能够得到计算信息量的表达式。设某事件的信息量为Ii,该事件发生的概率等于pi,则该事件的信息量与事件概率之间的关系可由式(5?1)给出:
Ii=log21pi=-log2pi,0<pi<1(5?1)
2. 信源的信息熵信源,从一般意义上讲,就是指信息的来源。在信息论中,信源是指构成一类报文的基本符号的集合。报文当然就是信息的载体,是由基本符号组合而成的,这些基本符号又称为码元。码元意为基本编码单元。每一个码元都有出现的概率,因此,每一个码元都有其对应的信息量。那么,一个信源的所有码元的平均信息量就称为该信源的信息熵(entropy)。显然,码元信息量是一个离散型的*变量,而离散型*变量的平均值等于该*变量的所有可能取值与对应概率之积的和,即*变量的数学期望。所以,信源的信息熵可以通过其码元信息量的数学期望来描述。设S表示信源,含有n个码元,码元si出现的概率为pi,根据上述原理,该信源的信息熵H(S)由式(5?2)给出。
H(S)=∑ni=0piIi=∑ni=0pilog21pi(5?2)
在信息论中,采用式(5?2)计算信息熵时,单位是比特(b),即二进制的位。例如,假设有一幅灰度数字图像(说明: 数字图像是指由像素矩阵表示的图像; 灰度图像是指像素值代表亮度的数字图像,第6章将详细介绍),该图像具有256级的灰度取值,如果每一个像素的灰度值的概率均为1/256,按照式(5?2),该数字图像的码元(像素)的信息熵等于8b。事实上,在多媒体处理系统中,256级灰度图像的每一个像素均占用8b的存储空间,也就是1B的存储空间,整个图像消耗的存储空间等于像素的总数乘以8(单位是b)。3. 熵编码编码是指用比特组合来表示码元的技术或方法。例如,上面的例子中,一个像素用8b表示。不过这个例子比较特别,由于每一个像素的灰度取值的概率是相同的,因此每一个像素都占用8b。但是一般的应用系统中,各个码元出现某种取值的概率往往是不同的,因此不同的码元占用的存储空间应当不同。容易理解,码元占用的存储空间与其概率成反比,也就是说,概率越大,占用的存储空间越小,反之,则占用的存储空间就越大。所谓熵编码,就是指在不丢失任何信息的前提下,基于码元的统计特性,对码元或直接对报文本身进行编码,使得*后存储该报文所需要的平均比特数接近信源的信息熵。熵编码给出了一个无损编码的极限,即任何编码方案*后都不能使码元的平均比特数低于信息熵。现在的问题是如何实现熵编码。假设已经知道了一个信源各个码元的概率(实际应用中可以采用频度来代替,通过统计得到),该信源的信息熵自然也知道了,而且我们知道各个码元分配的比特数与其信息量接近(为什么是接近?因为式(5?1)计算的结果可能含有小数,而在计算机系统中只能分配整数的比特数),但是现在我们还没有阐述如何确定一个码元具体分配一个什么样的比特组合。所以,还需要找到某种有效的计算方法来实现熵编码。所谓熵编码算法,就是一种用于确定码元的比特组合的计算方法。5.1.2香农?范诺编码*早阐述和实现熵编码的是香农和范诺(Fano),他们提出了一种被称为香农?范诺算法(Shannon?Fano Algorithm)的熵编码计算方案。这种方案采用从上到下的方法进行编码。下面通过一个示例来描述香农?范诺编码算法。设给定A、B、C、D和E 5个码元,它们出现的次数和频度如表5?1所示。