多媒体数据压缩技术.docx
《多媒体数据压缩技术.docx》由会员分享,可在线阅读,更多相关《多媒体数据压缩技术.docx(38页珍藏版)》请在冰豆网上搜索。
多媒体数据压缩技术
第5章多媒体数据压缩技术
本章要点:
●多媒体数据压缩技术概述
●量化
●统计编码
●变换编码
●数据压缩编码国际标准
5.1多媒体数据压缩技术概述
(必要、可行、分类)
5.1.1多媒体数据压缩编码的必要性
由于多媒体元素种类繁多、构成复杂,使得数字计算机面临的是数值、音乐、动画、静态图像和电视视频图像等多种媒体元素,且要将它们在模拟量和数字量之间进行自由转换、信息吞吐、存储和传输。
目前,虚拟现实技术还要实现逼真的三维空间、3D立体声效果和在实境中进行仿真交互,带来的突出问题就是媒体元素数字化后数据量大得惊人,解决这一问题,单纯靠扩大存储器容量、增加通信干线传输率的办法是不现实的。
通过数据压缩技术可大大降低数据量,以压缩形式存储和传输,既节约了存储空间,又提高了通信干线的传输效率,同时也使计算机得以实时处理音频、视频信息,保证播放出高质量的视频和音频节目。
5.1.2多媒体数据压缩的可能性
安特尼·科罗威尔[意]意大利1975年,300公斤
分析冗余?
图像数据压缩技术就是研究如何利用图像数据的冗余性来减少图像数据量的方法。
下面是常见的一些图像数据冗余:
(1)空间冗余:
是由于基于离散像素采样的方法不能表示物体颜色之间的空间连惯性导致的;
(2)时间冗余:
就是对于象电视图像、动画等序列图片,当其中物体有位移时,后一帧的数据与前一帧的数据有许多相同的地方;
(3)结构冗余:
在有些图像的纹理区,图像的像素值存在着明显的分布模式;
(4)知识冗余:
对于图像中重复出现的部分,我们可构造其基本模型,并创建对应各种特征的图像库,进而图像的存储只需要保存一些特征参数,从而可大大减少数据量;
(5)视觉冗余:
事实表明,人类的视觉系统对图像场的敏感性是非均匀和非线性的;
6.1.3多媒体数据压缩方法的分类
1.有损与无损压缩:
第一种分类方法是根据解码后数据是否能够完全无丢失地恢复原始数据,可分为:
1)无损压缩:
也称可逆压缩、无失真编码、熵编码等。
原理:
去除或减少冗余值,但这些值可在解压缩时重新插入到数据中,恢复原始数据。
它大多使用在对文本和数据的压缩上,但是压缩比较低,大致在2:
1~5:
1之间。
典型算法有:
Huffman编码、Shannon-Fano编码、算术编码、游程编码和Lenpel-Ziv编码等。
2)有损压缩:
也称不可逆压缩和熵压缩等。
此法在压缩时减少了的数据信息是不能恢复的。
2、压缩技术分类:
第二种分类方法是按照压缩技术所采用的方法来分的,见下表所示:
多媒体数据编码算法
PCM
自适应、固定式
预测编码
自适应、固定式(DPCM、△M)
混合编码
变换编码
傅里叶、离散余弦(DCT)、离散正弦(DST)、哈尔、斜变换、沃尔什-哈密瓜达马、卡胡南-劳夫(K-L)、小波
统计编码(熵编码)
哈夫曼、算术编码、费诺、香农、游程编码(RLE)、LZW
静态图像编码
方块、逐渐浮现、逐层内插、比特平面、抖动
电视编码
帧内预测
帧间编码
运动估计、运动补偿、条件补充、内插、帧间预测
其他编码
矢量量化、子带编码、轮廓编码、二值图像
3.脉冲编码调制PCM(PulseCodeModulation)编码分类
1)预测编码(PredictioveCoding,PC):
这种编码器记录与传输的不是样本的真实值,而是它与预期测值的差。
预测值由欲编码图像信号的过去信息决定。
由于时间、空间相关性,真实值与预测值的差值变化范围远远小于真实值的变化范围,因而可以采用较少的位数来表示。
2)变换编码(TransformCoding,TC):
其主要思想是利用图像块内像素值之间的相关性,把图像变换到一组新的基上,使得能量集中到少数几个变换系数上,通过存储这些系数而达到压缩的目的。
3)统计编码:
最常用的统计编码是Huffman编码。
它对于出现频率大的符号用较少的位数来表示,而对出现频率小的符号用较多的位数来表示。
其编码效率主要取决于需编码的符号出现的概率分布,越集中则压缩比越高。
5.2量化
通常量化是指模拟信号到数字信号的映射,它是模拟量化为数字量必不可少的步骤。
由于模拟量是连续的,而数字量是离散量,因此量化操作实质上是用有限的离散量代替无限的模拟量的多对一映射操作。
5.2.1比特率
比特率是采样率和量化过程中使用的比特数的产物。
它是数据通信的一个重要参数。
公用数据网的信道传输能力常常是以每秒传送多少KB或多少GB信息量来衡量的。
数字音频格式比较
应用类型
采样频率(KHz)
带宽(KHz)
频带(Hz)
比特率(KB/s)
电话
8.0
3.0
200~3200
64
远程会议
16.0
7.0
50~7000
256
数字音频光盘
44.1
20.0
20~20000
1410
数字音频带
48.0
20.0
20~20000
1536
5.2.2量化原理
量化处理是使数据比特率下降的一个强有力的措施。
脉冲编码调制(PCM)的量化处理在采样之后进行。
数据压缩编码中的量化是指以PCM码作为输入,经正交变换、差分、或预测处理后,在熵编码之前,对正交变换系数、差值或预测误差的量化处理。
模拟无限等级-------------数字等级有限化→数字量化处理
量化输入值的动态范围很大,需要以多的比特数表示一个数值,量化输出只能取有限个整数,称作量化级,一般希望量化后的数值用较少的比特数就可表示。
每个量化输入被强行归一到与其接近的某个输出,即量化到某个级。
量化处理总是把一批输入,量化到一个输出级上,所量化处理是一个多对一的处理过程,是个不可逆过程,量化处理中有信息丢失,或者说会引起量化误差(量化噪声)。
5.2.3标量量化器的设计
1.量化器的设计要求
(1)给定量化分层级数,满足量化误差最小;
(2)限定量化误差,确定分层级数,满足以尽量小的平均比特数,表示量化输出。
2.量化方法和量化特性
量化方法有标量量化和矢量量化之分,标量量化又可分为均匀量化、非均匀量化和自适应量化。
下图画出一个标量量化过程的示意图:
量化器的量化特性曲线,有多种多样,下图给出一个八级均匀量化特性曲线:
下图是给出一个非均匀量化特性曲线:
5.2.4矢量量化
矢量量化编码一般是失真编码方法。
矢量量化的名字是相对于标量量化而提出的,对于PCM数据,一个数一个数进行量化叫标量量化;若对这些数据分组,每组K个数构成一个K维矢量,然后以矢量为单元,逐个矢量进行量化,称矢量量化。
矢量量化可有效提高压缩比,见下图:
5.3统计编码
本节介绍几种典型的熵编码方法,如Shannon与Fano编码法和Huffman编码法,算术编码法与游程编码法。
其中尤以Huffman编码法为最佳,在多媒体编码系统中常用这种方法作熵保持编码。
预备知识:
信息论基础
?
?
?
今天有同学收到EMAIL、TEL,….?
今天有同学读报?
海报?
今天有同学WATCHTV、RADIO?
?
?
?
?
?
?
什么是信息?
信息量多大?
信息单位是什么?
当我们收到一封信或一个电话、传真、电报、电子邮件时,便获得一定的信息,在此之前我们并不能肯定其中的内容,如果我们早知其内容,也就没有必要写信、发电子邮件或打电话了,这也就不存在信息问题。
那么信息是什么?
简单说:
从上面可知
信息就是消息,消息是由不知到知知的过程,信息量的大小就是消息的多少,也即由不知到知知的多少,这是一般定义上的理解,在数学怎么定义信息及信息量的大小。
再从上面我们也可以知
道,在信息中蕴含着不确性,这种不确性在数学上就是事件的概率,对确定事件(消息)概率大信息量少,否则信息量就大,所以一般而言,小概率事件信息量大,大概率事件信息量小,如果
概率P=1信息量则为0。
例如:
(1) 百年不遇事件,概率较小,一旦发生,必定信息量惊人;
(2) 两军对持,若势均力敌(等概率分布)很难判定谁是胜家,信息量大。
如果两军实力相差较远(不等概率),则信息量小,易判定胜负,这说明:
基本事件的个数相同者,以等概率分布场平均信息量大。
信息可以识别,转换、存贮、传送、增值、信息既不是物质,也不是意识,信息的存在具有特殊性,同时与物质与意识又密切相关。
信息的过程包含有发送、传输、接收三个基本过程。
香农提出了如下模型称之为信息传播的基本模型。
从这个模型可知,信息量实际就是发送、传输、接收这个信息所要求表示这个事件(信息)最小比特数。
如发送某一事件A,需要3位(二进数)来表示,则说明该信息的信息量是3bit,按shannon理论:
信息源S的信息量用熵(entropy)来定义:
Pi是符号Si在S中出现的概率
表示包含在Si中信息量,即编码Si所需二进制位数,H(s)是S的总信息量
例如:
(1)一幅256级灰度的黑白图像,每个象素点灰度概率为Pi=1/256,那么编码每个象素要log21/256=8bit
(2)电视屏上约有500×600=3×105个格点,按每个点10种不同的亮度等级计算,则共组成多少个不同画面?
按等概率计算,每个画面概率是多少?
电视屏上约有2个格点,按每个点2种不同的亮度等级计算,则共组成多少个不同画面?
按等概率计算,每个画面概率是多少?
(2)电视屏上约有500×600=3×105个格点,按每个点10种不同的亮度等级计算,则共组成多少个不同画面?
按等概率计算,每个画面概率是多少?
平均每个画面可提供信息量为:
=3×105×3.32=106bit
(3)千字文章假定每字可从万字表中任选,则可有不同的千字
文:
N=100001000=104000篇,按等概率计算,平均每篇千字
文可提供的信息量为:
结论:
可见一个电视画面的信息远远超过千字文,从计算可知前者是后者的100倍,图像信息量是远远大于文本信息量。
几种主要信息编码方法
1、Shannon-Fano算法编码
有一幅40象素组成的图像,每个象素灰度用5级来表示,分别记为A、B、C、D、E,40个象素中出现A级灰度数为15个,出现B级为7个,出现C级为7个,出现D和E级分别为6个和5个,按照Shsnnon理论,这幅图像的熵为:
=2.196
也就是说,这幅图像内每个象素平均可用2.196位表示,整个图像共需40×2.196=87.84bit,下面按Shannon-Fano的编码方法进行编码,其基本步骤如下:
(1)计算各符号(A—E)亦即灰度等级出现的概率,并排序,
见表
(2)列表并计算各自的比特数:
(3)用递归法分成两部分,每部分具有近似相同的次数,如图所示直至分到各种表示的符号级别,并给它们分配“0”或“1”,可以是概率大者为“0”也可以是概率小者为“0”,另外一个就对应为“1”。
(4)压缩比的计算
利用这种算法,关键作用就是在传递这些信时,其传输比特位要少,亦即要求压缩比较大,这种算法及编码,简单方便,其压缩比为:
如果不压缩,每个象素有5级(A—E)灰度,每个象素至少要用3bit来表示。
此画共有40个象素,即要用120bit用Shsnnon-Fano算法则需共计91bit,因此压缩比是1.3:
1,这种压缩比对图像而言还是很小的。
2、Huffman编码算法
前面介绍的Shannon-Fano是1948年提出的一种非定长编码,称为变长码(Variable-Lengthcode),由于是据概率进行的编码方法,所以又称为统计编码,或称为熵编码。
Shannon-Fano编码只是指出存在一种无失真的编码,使得编码平均码长逼近熵值这个下限,但它并没有给出具体的编码方法。
下面介绍另一种变长的统计熵编码的方法,这就是Huffamn编码方法。
它是基于变字长编码的最佳编码定理。
(定理)在变字长码中,对于出现概率大的信息符号编短字长的码,对于出现概率小的信息符号编以长字长的码,如果码字长度严格按照符号概率的大小的相反顺序排列,则平均码字长度一定小于按任意方式排列得到的码字长度。
(证明):
设最佳排列方式的码字平均长度为L,则有
为信号源符号出现的概率,是符号的编码长度
且规定:
≥,≤,i=1,2,3…….m,s=1,2,3……m
如果将的码字与的码字互换,其余码字不变,经过这样互换后,平均码字长度变成,即有:
因为≥,≥,所以,亦即为是最短编码。
Huffnnan编码方法于1952问世至今,经久不衰,广泛应用于各种数据压缩技术中,且仍不失为熵编码中最佳方法就是因为满足上述定理,下面举例来具体说明编码过程:
假设要传的信息源是8个不同的电平值,而这个电平值xi(i=1-8)对应的概率事先已知如下:
编码步骤是
(1)计算各信号源符号的概率;
(2)将信源符号按概率递减顺序排列;
(3)把两个最小的概率相加作为新符号的概率,并按
(2)重排;
(4)重复
(2),(3)直至全部概率之和为1;
(5) 在每次合并信源时,将两个信源分别赋于“0”和“1”(一般概率大赋值0,概率小赋1,也可相反);
(6)寻找每一个信源的符号直到概率为1处,记录其路径上的“1”和“0”。
如图所示。
(7)从尾部(含概率为1处)开始到信号源将其赋给的“0”或“1”代码写出,列于是表
信息Xi熵计算:
亦即每个信息源(i=1-8)平均至少要2.41bit,整个信息共需要2.41*8=19.28bits
Huffman平均每个信息源xi平均需码长为:
按定长编码:
信息源有8个,每个信息源至少要N=3位,可见,Huffman编码比定长编码要少3-2.47=0.53bit,节省18%存储空间编码效率=M/L=2.41/2.47=97.6%
Huffman的编码虽然是可变的,但却不需要码同步信号,例如,码串中的第一位为1,那么肯定是电平X1,因为没有其它电平代码开始是1,因此下一位是下一个电平代码的第一位。
对Huffman编码只要事先编写一个解释各种代码意义的“词典”即码薄即可依次解码。
Huffman具有以下特点:
(1)平均码长(熵编码)
(2)平均码长(等定长编码)
采用Huffman编码时有几个问题值得注意:
(1)Huffman编码没有错码保护,而不具纠错功能;
(2)Huffman是可变长编码,因此很难随意查找或调用编码图象或文件之中的中间内容,然后再译码,就需要在存储代码之前加以考虑;
(3)Huffman进行编码解码也相当费时。
复习Huffman一下喔?
哈夫曼(Huffman)编码方法是利用了下面这个定理:
在变字长码中,对于出现概率大的信息符号以短字长编码,对于出现概率小的信息符号以长字长编码。
如果码字长度严格按照符号概率的大小的相反顺序排列,则平均码字长度一定小于按任何其他符号顺序排列方式得到的码字长度。
Huffman编码的具体步骤归纳如下:
(1)概率统计(如对一幅图像,或m幅同种类型图像作灰度信号统计),得到n个不同概率的信源信息符号;
(2)将信源信息符号的n个概率,按概率大小排序;
(3)将n个概率中,最后两个小概率相加,这时概率个数减为n-1个;
(4)将n-1个概率,按大小重新排序;
(5)重复(3),将新排序后的最后两个小概率再相加,相加和与其余概率再排序;
(6)如此反复重复n-2次,最后只剩两个概率序列;
(7)以二进制码元(0,1)赋值,构成Huffman码字,编码结束。
3、算术编码
1.算术编码基本原理
此法比Huffman编码、行程长度等熵编码方法都复杂,但它不需要传送像Huffman编码那样的Huffman码表,同时算术编码还有自适应能力,所以算术编码是实现高效压缩数据中很有前途的编码方法。
它跳出了分组编码的范畴,是从全序列出发,采用递推形式的连续编码。
它不是将单个信源符号映射成一个码字,而是将整个输入符号序列映射为实数轴上[0,1]区间内的一个间隔,其长度等于该序列的概率,并在该间隔内选择一个代表性的二进制小数,作为实际的编码输出,使其平均码长逼近信源的熵,从而达到高效编码的目的。
算术编码(OrithmeticCoding)是20世纪60年代初,由Elias提出的,1976年Rissanen和Pasco首次介绍其实用技术。
算术编码的基本原理是:
将编码的信息表示成实数0和1之间的一个间隔(interval),信息越长,编码间隔就越小,表示这一间隔所需的二进制位数就越长。
2.举例说明
设输入数据为eaiou,其出现概率和所设定的取值范围如下:
字符:
aeiou
概率:
0.20.30.10.20.2
范围:
[0,0.2][0.2,0.5][0.5,0.6][0.6,0.8][0.8,1.0]
设high为编码间隔的高端,high=1;low为编码间隔的低端,Low=0;range为编码间隔的长度,range=high-low;rangelow为编码字符分配的间隔低端;rangehigh为编码字符分配的间隔高端。
则一个字符编码后新的low和hogh按下式计算:
low=low+range×rangelow;high=low+range×rangehigh
(1)在第一个字符e被编码时,e的rangelow=0.2,rangehight=0.5,因此按公式:
low=0+1×0.2=0.2
high=0+1×0.5=0.5
range=high-low=0.5-0.3=0.2
此时分配给e的范围为[0.2,0.5]
(2)第二个字符a编码时使用新生成范围[0.2,0.5],a的rangelow=0,rangehigh=0.2。
low=0.2+0.3×0=0.2
high=0.2+0.3×0.2=0.26
range=high-low=0.26-0.3=0.06
此时分配给a的范围为[0.2,0.26]
(3)第三个字符i编码时用新生成范围,i的rangelow=0.5,rangehigh=0.6,则:
low=0.2+0.06×0.5=0.23
high=0.2+0.06×0.6=0.236
range=high-low=0.236-0.23=0.006
此时分配给i的范围为[0.23,0.236]
(4)第四个字符o编码时o的rangelow=0.6,rangehigh=0.8,则:
low=0.23+0.006×0.6=0.2336
high=0.23+0.006×0.8=0.2348
range=high-low=0.2348-0.2336=0.0012
此时分配给o的范围为[0.23396,0.2342]
(5)第五个字符u编码时u的rangelow=0.8,rangehigh=1.0,则:
low=0.2336+0.0012×0.8=0.23396
high=0.2348+0.0012×1.0=0.2342
此时分配给u的范围为[0.23396,0.2342]
编码结果如下表所示:
输入字符的算术编码结果
输入字符
low
high
range
e
0.2
0.5
0.3
a
0.2
0.26
0.06
i
0.23
0.236
0.006
o
0.2336
0.2348
0.0012
u
0.23396
0.2342
(6)译码的时候又是如何处理的呢?
例:
根据上面给定字符的概率和取值范围,对代码0.23396进行译码,步骤如下:
·根据代码所在范围确定当前代码的第一个字符,并输出。
由于0.23396在[0.2,0.5]的范围内,故代码对应的第一字符必定是e。
输出字符e。
·用0.23396减去e发生的概率取值下限0.2,使代码变为0.03396,再除以e范围的宽度0.5-0.2=0.3。
得到0.1132,落入区间[0,0.2),所以对应后续字符为a。
·转到
(2),将0.1132作为代码继续确定下一个译码字符的范围。
3.总结
算术编码的过程实际上是用新加入的符号的取值范围来
缩小代码的取值范围,而释放的过程与其相反。
4、游程编码
游程编码(RunLengthEncoder,RLE)是种压缩编码,实现简单,还原后得到的数据与压缩前的数据完全相同,是无损压缩技术。
但RLE所能获得的压缩比有多大,这主要取决于图像本身的特点。
如图像中具有相同颜色的图像块越大,图像块数目越少,获得的压缩比就越高,反之,压缩比就越小。
对于重复色彩特别少的图像,如果仍然使用RLE编码方法,不仅不能压缩图像数据,反而可能使原来的图像数据变得更大。
010*********
0000000000000000000
111111*********1111
5.4变换编码
预测编码是一种较好地去除音频、图像信号相关性的编码技术,而变换编码也可有效去除图像信号的相关性,而且其性能还往往优于预测编码。
6.4.1变换编码的原理
变换编码不是直接对空域图像信号编码,而是首先在数据压缩前对原始输入数据作某种正交变换,把图像信号映射变换到另外一个正交向量空间,产生一批变换系数,然后再对这些变换系数进行编码处理。
它首先在发送端将原始图像分割成n个子图像块,每个子图像块经过正交变换、滤波、量化和编码后送信道传输到达接收端,接收端作解码、逆变换、综合拼接,恢复出空域图像。
?
?
直角坐标到时极坐标,FourierTransformer,LaplaceT,
下图给出了其过程示意图:
正交变换对数字图像的处理到底有什么好处呢?
如果有
一个正弦波,用采样、量化的方法把它变换到空域上,或者说在空间上用一个个离散的量化值记录下来,随着时间的增长,数据量会呈“海量”增长。
但是换个思路,一个正弦波,只要记录频域上的幅度值、以及它的频率,就可以完全表示这个正弦波。
可见在频域上描述信号,可大大减少数据相关性以及数据冗余。
同理,设有两个相邻的数据样本x1与x2,因为每个样本采用3个比特编码,故共有23=8个幅度等级。
而两个样本的联合事件共有8×8=64种可能性,二维平面坐标表示,见下图:
考虑到相邻样值的相关性,x1与x2同时出现相近幅度的可能性最大。
因此合成可能性往往落在图中以x1=x2为对称轴的圈内。
相关性越强则圈子越扁;反之,圈越圆。
一般情况下,要对圈内各点的位置进行编码,就要对两个差不多大的坐标值分别进行编码,说明x1处于某一幅度等级时,x2可能出现在不相同的任意幅度等级上。
现在如对该数据进行正交变换,从几何上相当于坐标系
旋转45°,变成y1、y2坐标系,那么此时相关圈正好处在y1坐标轴下,且该圈越扁长,其在y1上的投影就越大,而在y2上投影就越小。
见下图所示:
由此可知,正交变换实现数据压缩的本质在于:
经过坐标系适当的旋转和变换,能够把散布在各个坐标轴上的原始数据,在新的、适当的坐标系中集中到少数坐标轴上,因此,可用较少的编码位数来表示一组信号样本,实现高效率的压缩编码。
6.4.2K-L变换
K-L变换(Karhunen-Loeve)亦称主分量变换,它从图像统计特性出发用一组