1、1,第2章 多媒体数据压缩技术,数据压缩概述 数据压缩理论基础 香农范诺与霍夫曼编码 算术编码 行程编码 词典编码 预测编码 变换编码,2,什么是数据压缩,数据压缩就是在一定的精度损失条件下,以最少的编码表示信源所发出的信号。,2.1数据压缩概述,3,多媒体信源引起了“数据爆炸” 如果不进行数据压缩传输和存储都难以实用化。,数据压缩的必要性,2.1数据压缩概述,4,分钟数字音频信号需要的存储空间,1,5,分钟数字视频信号需要的存储空间,1,6,空间冗余 时间冗余 结构冗余 纹理的统计冗余 图像区域的相同性冗余 知识冗余 视觉冗余 信息熵冗余,多媒体数据的冗余,2.1数据压缩概述,7,空间冗余,
2、一幅图像表面上各采样点的颜色之 间往往存在着空间连贯性,基于离散像 素采样来表示物体表面颜色的像素存储 方式可利用空间连贯性,达到减少数据 量的目的。例如,在静态图像中有一块表面颜 色均匀的区域,在此区域中所有点的光 强和色彩以及饱和度都是相同的,因此 数据有很大的空间冗余。,8,时间冗余,运动图像一般为位于一时间轴区间 的一组连续画面,其中的相邻帧往往包 含相同的背景和移动物体,只不过移动 物体所在的空间位置略有不同,所以后 一帧的数据与前一帧的数据有许多共同 的地方,这种共同性是由于相邻帧记录 了相邻时刻的同一场景画面,所以称为 时间冗余。同理,语音数据中也存在着时间冗 余。,9,视觉冗余
3、,人类的视觉系统对图像场的敏感度 是非均匀的。但是,在记录原始的图像 数据时,通常假定视觉系统近似线性的 和均匀的,对视觉敏感和不敏感的部分 同等对待,从而产生比理想编码(即把 视觉敏感和不敏感的部分区分开来的编 码)更多的数据,这就是视觉冗余。,10,结构冗余,有些图像从大域上看存在着非常强的纹理结构,例如布纹图像和草席图像,我们说它们在结构上存在冗余。,11,知识冗余,有许多图像的理解与某些基础知识有较大的相关性。例如:人脸的图像有固定的结构。嘴的上方有鼻子,鼻子的上方有眼睛,鼻子位于正脸图像的中线上等等。这类规律性的结构可由先验知识和背景知识得到,我们称此类冗余为知识冗余。,12,信息熵
4、冗余,信息熵是指一组数据所携带的信息量。下面通过一个图示演示信息熵冗余或编码冗余:,13,经典的数据压缩技术 信号处理能力迅速提高 基于主观感觉的失真衡量体系 压缩编码标准的建立 新的需要并提高了接受程度,数据压缩的可行性,2.1数据压缩概述,14,时间域压缩迅速传输媒体信源 频率域压缩并行开通更多业务 空间域压缩降低存储费用 能量域压缩降低发射功率,数据压缩的好处,2.1数据压缩概述,15,数据压缩方法的分类,(1)从信息论角度出发可分为两大类: 冗余度压缩方法:也称无损压缩,信息保持编码或熵编码。 信息量压缩方法:也称有损压缩,失真度编码或熵压缩编码。,2.1数据压缩概述,16,冗余度压缩
5、方法,就是解码数据和压缩编码前的数据严格相同,没有失真,从数学上讲是一种可逆运算。利用多媒体数据包含的冗余信息的特点,去掉或减少冗余值。 基于统计编码方案的一些方法,如LZW编码、哈夫曼编码、算术编码、行程编码等。 压缩比较低,一般在2:1 5:1之间,常用于文本和数据的压缩。,2.1数据压缩概述,从信息论角度:,17,信息量压缩方法,解码数据和原始数据是有差别的,允许有一定的失真。利用多媒体数据包含的冗余信息的特点,去掉或减少冗余值,以及一些人眼或人耳不易感知的信息。 常见的有预测编码、变换编码、参数编码等 由于允许一定程度的失真,可以达到很高的压缩比,如几十分之一甚至几百分之一。,从信息论
6、角度:,2.1数据压缩概述,18,(2)按压缩算法分类,从数据压缩方法角度,2.1数据压缩概述,19,压缩比要大 恢复后的失真小 压缩算法要简单、速度快(压缩能否用硬件实现),数据压缩技术的衡量标准,2.1数据压缩概述,20,数据压缩理论基础,信息论中的信源编码理论解决的主要问题: (1)数据压缩的理论极限(2)数据压缩的基本途径,2.1数据压缩概述,21,信息熵的概念 最大信息熵定理 数据压缩的理论极限 统计编码算法的设计 变字长定理 哈夫曼编码、算术编码,2.2 统计编码,22,1.信息:是用不确定性的量度定义的。2.信息量:从N个相等可能事件中选出一个事件所需要的信息含量。3.信息熵:如
7、果将信源所有可能事件信息 量进行平均就得到信息的熵 (熵就是平均信息量)。,2.2.1统计编码的理论基础,23,例如:从64个数(1-64的整数)中选定某一个数(采用折半查找算法),提问:“是否大于32?”,则不论回答是与否,都消去半数的可能事件,如此下去,只要问6次这类问题,就可以从64个数中选定一个数,则所需的信息量是 =6(bit),信息量,24,设从N中选定任一个数X的概率为P(xi),假定任选一个数的概率都相等, 即 ,则信息量I(xi)可定义为:,信息量,25,在信息论中称为信源的“熵” ,它的含义是信源发出任意一个随机变量的平均信息量。,信息熵,26,信源X中有16个随机事件,即
8、n=16。每一个随机事件的概率分别为: X1-X81/32 ; X9-X121/16; X13-X161/8, 请写出信息熵的计算公式并计算信源X的熵。,信息熵,27,信息熵,28,最大信息熵定理:所有概率分布P(Xi)所构成的熵,以等概率时为最大。 熵的范围: 只要信源不是等概率分布,就存在着数据压缩的可能性。这就是统计编码的理论基础。,统计编码的理论基础,29,如果要求在编码过程中不丢失信息量,即要求保存信息熵,这种信息保持编码又叫做熵保存编码,或者叫熵编码。 特性:熵编码是无失真数据压缩,用这种编码结果经解码后可无失真地恢复出原图像。,熵编码,30,熵编码,熵编码包括香农范诺编码、霍夫曼
9、编码和算术编码,其宗旨在于找到一种编码使得平均码长到达熵极限。 基本思想就是对出现概率较大的符号取较短的码长,而对出现概率较小的符号取较大的码长。,31,Huffman编码方法于1952年问世, 是D.A.Huffman在他的论文“最小冗余度代码的构造方法(A Method for the Construnction of Minimum Redundancy Codes)”中提出来的。 迄今为止, 仍经久不衰, 广泛应用于各种数据压缩技术中, 且仍不失为熵编码中的最佳编码方法。,2.2.2 Huffman编码,32,1、变字长编码定理,在变字长编码中,对于出现概率大的信息符号,编以短字长的码
10、,对于出现概率小的信息符号编以长字长的码,如果码字长度严格按照符号概率的大小的相反顺序排列,则平均码字长一定小于按任何其他符号顺序排列方式得到的码字长度。,33,英文字母出现的概率按大小排列,该英文字母编码的码长按大小排列,概率大,码长短,1、变字长编码定理,34,信源符号按概率大小顺序排列(1) 出现概率最小的两个符号概率相加合成一个概率。 (2) 将合成概率看成一个新组合符号概率,重复上述做法,直到最后只剩下两个符号概率为止。 (3) 反过来逐步向前编码,每一步有两个分支各赋予一个二进制码,可以对概率大的编码为1。,2、哈夫曼编码,35,a1 0.20 01 a2 0.19 00 a3 0
11、.18 111 a4 0.17 110 a5 0.15 101 a6 0.10 1001 a7 0.01 1000,1,0,1,1,1,0,0,0.39,0,0.35,1,0.26,0,0.11,0,0.61,1,2、哈夫曼编码,36,a1 0.20 a2 0.19 a3 0.18 a4 0.17 a5 0.15 a6 0.10 a7 0.01,0.11,0.26,0.35,0.39,0.61,37,a1 0.20 a2 0.19 a3 0.18 a4 0.17 a5 0.15 a6 0.10 a7 0.01,1,0,1,1,1,0,0,0.39,0,0.35,1,0.26,0,0.11,0,
12、0.61,1,38,a1 0.20 a2 0.19 a3 0.18 a4 0.17 a5 0.15 a6 0.10 a7 0.01,1,0,1,1,1,0,0,0.39,0,0.35,1,0.26,0,0.11,0,0.61,1,01,39,a1 0.20 a2 0.19 a3 0.18 a4 0.17 a5 0.15 a6 0.10 a7 0.01,1,0,1,1,1,0,0,0.39,0,0.35,1,0.26,0,0.11,0,0.61,1,01,00,40,a1 0.20 a2 0.19 a3 0.18 a4 0.17 a5 0.15 a6 0.10 a7 0.01,1,0,1,1,1
13、,0,0,0.39,0,0.35,1,0.26,0,0.11,0,0.61,1,01,00,111,41,a1 0.20 a2 0.19 a3 0.18 a4 0.17 a5 0.15 a6 0.10 a7 0.01,1,0,1,1,1,0,0,0.39,0,0.35,1,0.26,0,0.11,0,0.61,1,01,00,111,110,42,a1 0.20 a2 0.19 a3 0.18 a4 0.17 a5 0.15 a6 0.10 a7 0.01,1,0,1,1,1,0,0,0.39,0,0.35,1,0.26,0,0.11,0,0.61,1,01,00,111,110,101,43
14、,a1 0.20 a2 0.19 a3 0.18 a4 0.17 a5 0.15 a6 0.10 a7 0.01,1,0,1,1,1,0,0,0.39,0,0.35,1,0.26,0,0.11,0,0.61,1,01,00,111,110,101,1001,44,a1 0.20 a2 0.19 a3 0.18 a4 0.17 a5 0.15 a6 0.10 a7 0.01,1,0,1,1,1,0,0,0.39,0,0.35,1,0.26,0,0.11,0,0.61,1,01,00,111,110,101,1001,1000,45,例1:设输入图像的灰度级a1,a2,a3,a4,a5,a6出现的
15、概率分别是0.4、0.2、0.12、0.15、0.1、0.03。试进行哈夫曼编码,并计算编码效率、压缩比、冗余度。,2、哈夫曼编码,46,编码步骤: (1)初始化,根据符号概率的大小按由大到小顺序对符号进行排序。 (2)把概率小的两个符号组成一个节点,如图中的a5、a6组成节点P1。 (3)重复步骤2,得到节点P2、P3、P4、P5,形成一棵“树”,其中P5为根节点。 (4)从根节点P5开始到相应于每个符号的“树叶”,从上到下标上1或者0,至于哪个为1哪个为0则无关紧要,最后的结果仅仅是分配的代码不同,而代码的平均长度是相同的。,最终编码结果为:a1 =1, a2 =000 , a3 =011
16、, a4 =001, a5 =0100, a6 =0101,2、哈夫曼编码,47,H(X)=-(0.4log20.4+0.2log20.2+0.12log20.12+0.15log20.15+0.1log20.1+0.03log20.03)=2.25 bit,平均码字长度: Lc=0.41+0.23+0.153+0.123+0.14+0.034 =2.33 编码效率:,压缩之前8个符号需要3个比特量化,经过压缩之后的平均码字长度为2.33,其压缩比:,冗余度为: r = 1- = 3.4%,2、哈夫曼编码,48,采用哈夫曼编码时有两个问题值得注意: (1)哈夫曼编码没有错误保护功能; (2)哈
17、夫曼编码是可变长度码,因此很难随意查找或调用压缩文件中间的内容,然后再译码,这就需要在存储代码之前加以考虑。,2、哈夫曼编码,49,香农范诺编码,香农范诺编码与Huffman编码相反,采用从上到下的方法。 具体步骤为:(1)首先将编码字符集中的字符按照出现频度和概率进行排序。(2)用递归的方法分成两部分,使两个部分的概率和接近于相等。直至不可再分,即每一个叶子对应一个字符。(3)编码。,50,香农范诺编码,0,1,0,1,0,0,1,1,51,香农范诺编码,52,3.算术编码,Huffman 编码使用整数个二进制位对符号进行编码,这种方法在许多情况下无法得到最优的压缩效果。 假设某个字符的出现
18、概率为 80%,该字符事实上只需要 -log2(0.8) = 0.322 位编码,但 Huffman 编码一定会为其分配一位 0 或一位 1 的编码。 整个信息的 80% 在压缩后都几乎相当于理想长度的 3 倍左右,压缩效果可想而知。,53,3.算术编码,算术编码(arithmetic coding AC)是将被编码的符号串(序列)表示成0和1之间的一个间隔,即对一串符号直接编码成0,1区间上的一个小数。 符号序列越长,编码表示它的间隔越小,表示这一间隔所需的位数就越多。 可能出现概率大的符号要比概率小的符号减少范围小,因此,只正加较少的比特位。,54,3.算术编码,在传输符号串之前,符号串的
19、完整范围设为0,1。当一个符号被处理时,这一范围就依据分配给这一符号的那一范围变窄。 算术编码的过程,实际上就是依据信源符号的发生概率对码区间分割的过程。Low=low + rangerange_lowHigh=low + rangerange_high,55,例2:假设信源符号为A, B, C, D,这些符号的概率分别为 0.1, 0.4, 0.2, 0.3 ,根据这些概率可把间隔0, 1分成4个子间隔:0, 0.1), 0.1, 0.5), 0.5, 0.7), 0.7, 1,其中x,y表示半开放间隔,即包含x不包含y,如表4-1所示。,3.算术编码,表1 信源符号、概率和初始编码间隔,5
20、6,输入为:CADACDB,其编码过程: C,找到它的编码范围是0.5, 0.7; A的编码范围是0, 0.1,因此它的间隔就取0.5, 0.7的第一个1/10作为新间隔0.5, 0.52; D时取新间隔为0.514, 0.52; A时,取新间隔为0.514, 0.5146,Low=low原 + range原range_low新High=low原+ range原range_high新,3.算术编码,57,3.算术编码,Low=low原 + range原range_low新 High=low原+ range原range_high新,58,解码时,通过判断哪一个符号能拥有编码的消息落在的空间来找出
21、消息中的第一个符号。由于0.5143876落在0.5,0.7)之间,因此可解得第一个符号是c。 解出c后,由于知道c的范围的上界和下界,利用编码的逆作用,首先去掉c的下界值0.5,得0.0143876,然后用c的范围range=0.2去除所得到的0.0143876 ,即得到0.071938,接着找出它所在的区间,就是a的原来范围0, 0.1)。 然后用a的range=0.1除该数得出0.71938 ,该值所属范围就是字符d如此操作下去便得到消息的准确译码。综上所述,可以得到解码公式为:(Number-range_low)/range=number,3.算术编码,59,在算术编码中需要注意的几个
22、问题: (1)由于实际的计算机的精度不可能无限长,运算中会出现溢出问题,但都有16位、32位或者64位的精度,因此这个问题可使用比例缩放方法解决。 (2)算术编码器对整个消息只产生一个码字,这个码字是在间隔0, 1)中的一个实数,因此译码器在接受到表示这个实数的所有位之前不能进行译码。 (3)算术编码也是一种对错误很敏感的编码方法,如果有一位发生错误就会导致整个消息译错。,3.算术编码,60,4行程长度编码,行程编码(RLE,Run-Length Encoding),又称“运行长度编码”或“游程编码” ,是一种统计编码,该编码属于无损压缩编码。 行程编码原理用一个符号值或串长代替数据流中出现的
23、行程(由连续的重复符号串构成的一段连续的字符串称为“行程”,行程编码因此而得名),使符号长度少于原始数据的长度。 如果想得到原始数据,只需展开这个编码就可以了。,61,如图所示,假定一幅灰度图像,第n行的像素值为:用RLE编码方法得到的代码为:3150841160。代码斜黑体表示的数字是行程长度,黑体字后面的数字代表像素的颜色值。例如黑体字50代表有连续50个像素具有相同的颜色值,它的颜色值是8。,对比RLE编码前后的代码数可以发现,在编码前要用73个代码表示这一行的数据,而编码后只要用10个代码表示代表原来的73个代码,压缩前后的数据量之比约为7:1,即压缩比为7:1。这说明RLE确实是一种
24、压缩技术,而且编码技术实用。,4行程长度编码,62,AC系数行程编码码字,两个非0值间 连续0的个数,表示下一个 非0值需要的bit数,下一个非0实际值,7,4,3,0,字节1,字节2,例子:对“,3,0,0,0,0,0,12,0,0,”编码,(5,4),(12),.,4行程长度编码,63,5 词典编码 指用以前处理过的数据来表示编码过程中遇到的重复部分。 Abraham Lempel 和Jakob Ziv在1977年开发和发表的称为LZ77算法,1982年由Storer和Szymanski改进的称为LZSS算法。,64,5 词典编码,词典编码主要利用数据本身包含许多重复的字符串的特性。例如:
25、吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮。 我们如果用一些简单的代号代替这些字符串,就可以实现压缩,实际上就是利用了信源符号之间的相关性。字符串与代号的对应表就是词典。 实用的词典编码算法的核心就是如何动态地形成词典,以及如何选择输出格式减小冗余。,65,第一类词典编码,第一类词典法的想法是企图查找正在压缩的字符序列是否在以前输入的数据中出现过,然后用已经出现过的字符串替代重复的部分,它的输出仅仅是指向早期出现过的字符串的“指针”。,66,LZ77算法,LZ77 算法在某种意义上又可以称为“滑动窗口压缩”,该算法将一个虚拟的,可以跟随压缩进程滑动的窗口作为词典,要压缩的字符串如果在该窗口中出现,则
26、输出其出现位置和长度。 使用固定大小窗口进行词语匹配,而不是在所有已经编码的信息中匹配,是因为匹配算法的时间消耗往往很多,必须限制词典的大小才能保证算法的效率; 随着压缩的进程滑动词典窗口,使其中总包含最近编码过的信息,是因为对大多数信息而言,要编码的字符串往往在最近的上下文中更容易找到匹配串。,67,LZ77编码的基本流程,1、从当前压缩位置开始,考察未编码的数据,并试图在滑动窗口中找出最长的匹配字符串,如果找到,则进行步骤 2,否则进行步骤 3。 2、输出三元符号组 ( off, len, c )。其中 off 为窗口中匹配字符串相对窗口边界的偏移,len 为可匹配的长度,c 为下一个字符
27、,即不匹配的第一个字符。然后将窗口向后滑动 len + 1 个字符,继续步骤 1。 3、输出三元符号组 ( 0, 0, c )。其中 c 为下一个字符。然后将窗口向后滑动 1 个字符,继续步骤 1。,68,LZ77算法,69,LZ77编码举例,70,LZSS算法,LZ77通过输出真实字符解决了在窗口中出现没有匹配串的问题,但这个解决方案包含有冗余信息。冗余信息表现在两个方面,一是空指针,二是编码器可能输出额外的字符,这种字符是指可能包含在下一个匹配串中的字符。 LZSS算法的思想是如果匹配串的长度比指针本身的长度长就输出指针(匹配串长度大于等于MIN_LENGTH),否则就输出真实字符。另外要
28、输出额外的标志位区分是指针还是字符。,71,LZSS编码的基本流程,1、从当前压缩位置开始,考察未编码的字符,并试图在滑动窗口中找出最长的匹配字符串,如果匹配串长度len大于等于最小匹配串长度(len = MIN_LENGTH),则进行步骤 2,否则进行步骤 3。 2、输出指针二元组 ( off, len)。其中 off 为窗口中匹配字符串相对窗口边界的偏移,len 为匹配串的长度,然后将窗口向后滑动 len 个字符,继续步骤 1。 3、输出当前字符c,然后将窗口向后滑动 1 个字符,继续步骤 1。,72,LZSS编码举例,输入数据流:,编码过程 MIN_LEN =2,73,LZSS算法,在相
29、同的计算机环境下,LZSS算法比LZ77可获得比较高的压缩比,而译码同样简单。这也就是为什么这种算法成为开发新算法的基础,许多后来开发的文档压缩程序都使用了LZSS的思想。例如,PKZip, GZip, ARJ, LHArc和ZOO等等,其差别仅仅是指针的长短和窗口的大小等有所不同。 LZSS同样可以和熵编码联合使用,例如ARJ就与霍夫曼编码联用,而PKZip则与Shannon-Fano联用,它的后续版本也采用霍夫曼编码。,74,第二类词典编码,第二类算法的想法是企图从输入的数据中创建一个“短语词典 (dictionary of the phrases)”,这种短语可以是任意字符的组合。编码数
30、据过程中当遇到已经在词典中出现的“短语”时,编码器就输出这个词典中的短语的“索引号”,而不是短语本身。,75,LZ78算法,LZ78的编码思想是不断地从字符流中提取新的字符串(String),通俗地理解为新“词条”,然后用“代号”也就是码字(Code word)表示这个“词条”。这样一来,对字符流的编码就变成了用码字(Code word)去替换字符流(Char stream),生成码字流(Code stream),从而达到压缩数据的目的。 LZ78编码器的输出是码字-字符(W,C)对,每次输出一对到码字流中,与码字W相对应的字符串(String)用字符C进行扩展生成新的字符串(String),
31、然后添加到词典中。,76,LZ78编码算法,步骤1:将词典和当前前缀P都初始化为空。 步骤2:当前字符C:=字符流中的下一个字符。 步骤3:判断PC是否在词典中(1)如果“是”,则用C扩展P,即让P:=PC,返回到步骤2。(2)如果“否”,则输出与当前前缀P相对应的码字W和当前字符C,即(W,C);将PC添加到词典中;令P:=空值,并返回到步骤2,77,LZ78编码举例,输入数据流:,编码过程:,78,LZW算法,J.Ziv和A.Lempel在1978年首次发表了介绍第二类词典编码算法的文章。在他们的研究基础上,Terry A.Welch在1984年发表了改进这种编码算法的文章,因此把这种编码
32、方法称为LZW(Lempel-Ziv Walch)压缩编码。在编码原理上,LZW与LZ78相比有如下差别:LZW只输出代表词典中的字符串(String)的码字(code word)。这就意味在开始时词典不能是空的,它必须包含可能在字符流出现中的所有单个字符。即在编码匹配时,至少可以在词典中找到长度为1的匹配串。LZW编码是围绕称为词典的转换表来完成的。,79,LZW算法的词典,LZW编码器(软件编码器或硬件编码器)就是通过管理这个词典完成输入与输出之间的转换。LZW编码器的输入是字符流(Char stream),字符流可以是用8位ASCII字符组成的字符串,而输出是用n位(例如12位)表示的码
33、字流 (Code stream),码字代表单个字符或多个字符组成的字符串(String)。,80,LZW编码算法,步骤1:将词典初始化为包含所有可能的单字符,当前前缀P初始化为空。 步骤2:当前字符C:=字符流中的下一个字符。 步骤3:判断PC是否在词典中(1)如果“是”,则用C扩展P,即让P:=PC,返回到步骤2。(2)如果“否”,则输出与当前前缀P相对应的码字W;将PC添加到词典中;令P:=C,并返回到步骤2,81,LZW编码举例,输入数据流:,82,LZW算法,LZW算法得到普遍采用,它的速度比使用LZ77算法的速度快,因为它不需要执行那么多的缀-符串比较操作。对LZW算法进一步的改进是
34、增加可变的码字长度,以及在词典中删除老的缀-符串。在GIF图像格式和UNIX的压缩程序中已经采用了这些改进措施之后的LZW算法。LZW算法取得了专利,专利权的所有者是美国的一个大型计算机公司Unisys(优利系统公司),除了商业软件生产公司之外,可以免费使用LZW算法。,83,采样 量化 编码,音频的数字化,连续的模拟声音信号,声音信号的采样,2.4.4 预测编码,84,采样:音频实际上是连续信号,或称连续时间函数x(t)。用计算机处理这些信号时,必须先对连续信号采样,即按一定的时间间隔(T)取值, 得到x(nT)(n为整数)。T称采样周期,1/T称为采样频率。称x(nT)为离散信号。,2.4
35、.4 预测编码,85,采样定理:设连续信号x(t)的频谱为x(f),以采样间隔T采样得到离散信号x(nT),如果满足:,可以由x(nT)完全确定连续信号x(f)。当采样频率等于1/2T时, 称为奈魁斯特频率。常用的音频采样率有:8kHz 11.025kHz 22.05kHz 16kHz 44.1kHz、48kHz。,2.4.4 预测编码,86,量化:为了把采样序列x(nT)存入计算机,必须将无限个样本值量化成一个有限个幅度值的集合x(nT)。所谓量化是将连续分布的值域划分成若干个子区间,在同一子区间内的不同样本值都用这个子区间内某一个确定值代替,形成一个有限可列数值序列。,2.4.4 预测编码
36、,87,量化采样的过程如下:先将整个幅度划分成为有限个小幅度(量化阶距)的集合,把落入某个阶距内的样值归为一类,并赋予相同的量化值。如果量化值是均匀分布的,我们称之为均匀量化。,2.4.4 预测编码,88,均匀量化,89,采样 量化 编码,PCM,连续的模拟声音信号,声音信号的采样,2.4.4 预测编码,90,脉冲编码调制PCM PCM编码是对连续语音信号进行采样、量化及用适当码字将其编码的总称。 PCM是一种最通用的无损压缩编码,其特点是保真度高,解码速度快,但编码后的数据量大。CD-DA就是采用的这种编码方式。 PCM方法可以按量化方式的不同,分为均匀量化PCM、非均匀量化PCM和自适应量
37、化PCM等。,2.4.4 预测编码,91,1.量化原理 (1)数据压缩编码中的量化处理,是指以PCM码作为输入,经正交变换、差分、或预测处理后,熵编码之前,对正交变换系数、差值或预测误差的量化处理。,量化,92,(2)量化输入值的动态范围很大,需要以多的比特数表示一个数值,量化输出只能取有限个整数,称作量化级,希望量化后的数值(样本)用较少的比特数便可表示。 (3)量化处理是一个多对一的处理过程,是个不可逆过程。 (4)量化处理中有信息丢失,或者说,会引起量化误差(量化噪声)。,93,2.量化方法分类,94,3.标量量化 标量量化是对单个样本或单个参数的幅值进行量化。“标量”是指被量化的变量维
38、数,即一维变量。,量化,95,均匀量化特性曲线,均匀量化,96,输出阶层数为L的量化器, 输出值的位数 (位)。 输出量化位数为n的量化器, 输出阶数 (位)。,均匀量化,97,非均匀量化特性曲线,非均匀量化,横轴的量化间隔是不唯一的,98,A律和律,99,A律压扩,小信号时为线性特性,信号被放大了16倍;大信号时近似为对数特性,量化间隔比均匀量化时增大了5.47倍。 这种压扩特性常把压缩、量化和编码合为一体。A律可用13段折线逼近(相当于A=87.6),便于用数字电路实现。 压大补小,量化,100,A律压扩,其特性可表示为:,(国际标准中A=87.6),101,律压扩,律压扩的数学解析式:其
39、中:x为输入信号的归一化值;y为压扩后的信号。对话音信号编码,常采用=255,这样量化信噪比改善约24dB。,量化,102,矢量量化,标量量化:把每个像素的颜色用一个0到255之间的整数值表示。 矢量量化:把几个像素组成的像素块,用一个特定码书中的像素块来表示。 码书中像素块的数目,一般远小于这些像素块所有可能颜色的组合。,103,如果一个2x2像素的小块,每像素有8位表示,则所有的像素块的可能取值有232种; 选择一个远远小于这个数的数n,作为码书中码的个数; 对图像中的每个块(矢量),用一个码书中的码来近似,只需用这个码的编号来编码这个图像矢量即可; 因此每一个块,最后都只需用log2n个
40、位来表示,由此达到压缩的目的。,矢量量化,104,通常,图像中局部区域的像素是高度相关的,因此可以用先前像素的有关灰度来对当前像素的灰度进行估计,这就是预测。 不必对每一个像素都进行编码,而是把预测值与实际像素值之间的差值发送到接收端,接收端通过预测值+差值信号来重建原像素。 预测编码分为线性预测编码和非线性预测编码。,2.4.4 预测编码,105,2.4.4 预测编码,常用的音频编码压缩算法有以下几种。 增量调制(DM) 在编码端,由前一个输入信号的编码值经解码器解码可得到下一个信号的预测值。输入的模拟音频信号与预测值在比较器上相减,从而得到差值。差值的极性可以是正也可以是负。若为正,则编码
41、输出为;若为负,则编码输出为0。这样,在增量调制的输出端可以得到一串1位编码的DM码。,106,2.4.4 预测编码,增量调制的系统结构图,107,增量调制编码过程示意图,108,问题1:斜率过载,当语音信号大幅度发生变化时,阶梯波形的上升或下降有可能跟不上信号的变化,因而产生滞后,这种失真称为“过载失真”。在斜率过载期间的码字将是一连串的0或者一连串的1。,109,为避免斜率过载,要求阶梯波的上升或下降的斜率必须大于或等于语音信号的最大变化斜率。,110,当话音信号不发生变化或者变化很缓慢时,预测误差信号将等于零或具有很小的绝对值,在这种情况下,编码为0和1交替出现的序列。这样,在解码器中所
42、得到的是等幅脉冲序列,这样形成的噪声称为颗粒噪声。,问题2:颗粒噪声,111,112,为了减少颗粒噪声,希望使输出编码1位所表示的量化阶距小一些。但是,减少量化阶距会使在固定采样速度下产生更严重的斜率过载。为了解决这些矛盾,促使人们研究出了自适应增量调制(ADM)方法。,分析,113,2.4.4 预测编码,自适应增量调制(ADM) 在ADM中,常用的规则有两种:一种是控制可 变因子M,使量化阶距在一定范围内变化。对于 每一个新的采样,其量化阶距为其前面数值的M 倍。而的值则由输入信号的变化率来决定。如 果出现连续相同的编码,则说明有发生过载的危 险,这时就要加大。当0、1信号交替出现时 ,说明
43、信号变化很慢,会产生颗粒噪声,这时就 要减少M值。,114,2.4.4 预测编码,其典型的规则为:,另一类使用较多的自适应增量调制称为可变斜 率增量调制。其工作原理如下:如果调制器连续 输出三个相同的码,则量化阶距加上一个大的增 量,也就是说,三个连续相同的码表示有过载发 生。反之,则量化阶距增加一个小的增量。,115,2.4.4 预测编码,可变斜率增量的自适应规则为:,式中,可在01之间取值。可以看到,的大 小可以通过调节增量调制来适应输入信号变化 所需时间的长短。和为增量,而且要大 于等于。,116,2.4.4 预测编码,差分脉冲编码调制DPCM DPCM的中心思想是对信号的差值而不是对信
44、号本身进行编码。 这个差值是指信号值与预测值的差值。预测可以由过去的采样值进行预测,其计算公式如下所示:,117,2.4.4 预测编码,式中ai为预测系数。因此,利用若干个前面的 采样值可以预测当前值。当前值与预测值的差 为:,差分脉冲编码调制就是将上述每个样点的差值 量化编码,而后用于存储或传递 。,118,图中x(n)为采样的声音或图像数据, 为x(n)的预测值,是实际值和预测值的差值, 是d(n)的量化值,是引入量化误差的x(n)。,2.4.4 预测编码,119,2.4.4 预测编码,自适应差分脉冲编码调制ADPCM 将自适应量化器和自适应预测器结合在一起用于DPCM之中,从而实现了自适应差分脉冲编码。ADPCM是一种有损压缩编码,记录的量化值不是每个采样点的幅值,而是该点的幅值与前一个采样点幅值之差。,120,2.4.4 预测编码,其简化框图如下图所示:,