发布网友 发布时间:2022-04-05 05:02
共2个回答
热心网友 时间:2022-04-05 06:31
多媒体图像压缩技术
摘要:多媒体数据压缩技术是现代网络发展的关键性技术之一。由于图像和声音信号中存在各种各样的冗余,为数据压缩提供了可能。数据压缩技术有无损压和有损压缩两大类,这些压缩技术又各有不同的标准。
一、多媒体数据压缩技术
仙农(C.E.Shannon)在创立信息论时,提出把数据看作是信息和冗余度的组合。早期的数据压缩之所以成为信息论的一部分是因为它涉及冗余度问题。而数据之所以能够被压缩是因为其中存在各种各样的冗余;其中有时间冗余性、空间冗余性、信息熵冗余、先验知识冗余、其它冗余等。时间冗余是语音和序列图像中常见的冗余,运动图像中前后两帧间就存在很强的相关性,利用帧间运动补兴就可以将图像数据的速率大大压缩。语音也是这样。尤其是浊音段,在相当长的时间内(几到几十毫秒)语音信号都表现出很强的周期性,可以利用线性预测的方法得到较高的压缩比。空间冗余是用来表示图像数据中存在的某种空间上的规则性,如大面积的均匀背景中就有很大的空间冗余性。信息熵冗余是指在信源的符号表示过程中由于未遵循信息论意义下最优编码而造成的冗余性,这种冗余性可以通过熵编码来进行压缩,经常使用的如Huff-man编码。先验知识冗余是指数据的理解与先验知识有相当大的关系,如当收信方知道一个单词的前几个字母为administrato时,立刻就可以猜到最后一个字母为r,那么在这种情况下,最后一个字母就不带任何信息量了,这就是一种先验知识冗余。其它冗余是指那些主观无法感受到的信息等带来的冗余。
通常数据压缩技术可分为无损压缩(又叫冗余压缩)和有损压缩(又叫熵压缩)两大类。无损压缩就是把数据中的冗余去掉或减少,但这些冗余量是可以重新插入到数据中的,因而不会产生失真。该方法一般用于文本数据的压缩,它可以保证完全地恢复原始数据;其缺点是压缩比小(其压缩比一般为2:1至5:1)。有损压缩是对熵进行压缩,因而存在一定程度的失真;它主要用于对声音、图像、动态视频等数据进行压缩,压缩比较高(其压缩比一般高达20:1以上。最新被称为“E—igen—ID”的压缩技术可将基因数据压缩1.5亿倍)。对于多媒体图像采用的有损压缩的标准有静态图像压缩标准(JPEG标准,即‘JointPhotographicExpertGroup’标准)和动态图像压缩标准(MPEG标准,即‘MovingPictureExpertGroup’标准)。
JPEG利用了人眼的心理和生理特征及其局限性来对彩色的、单色的和多灰度连续色调的、静态图像的、数字图像的压缩,因此它非常适合不太复杂的以及一般来源于真
实景物的图像。它定义了两种基本的压缩算法:一种是基于有失真的压缩算法,另一种是基于空间线性预测技术(DPCM)无失真的压缩算法。为了满足各种需要,它制定了四种工作模式:无失真压缩、基于DCT的顺序工作方式、累进工作方式和分层工作方式。
MPEG用于活动影像的压缩。MPEG标准具体包三部分内容:(1)MPEG视频、(2)MPEG音频、(3)MP系统(视频和音频的同步)。MPEG视频是标准的核心分,它采用了帧内和帧间相结合的压缩方法,以离散余变换(DCT)和运动补偿两项技术为基础,在图像质量基不变的情况下,MPEG可把图像压缩至1/100或更MPEG音频压缩算法则是根据人耳屏蔽滤波功能。利用音响心理学的基本原理,即“某些频率的音响在重放其频率的音频时听不到”这样一个特性,将那些人耳完全不到或基本上听到的多余音频信号压缩掉,最后使音频号的压缩比达到8:1或更高,音质*真,与CD唱片可媲美。按照MPEG标准,MPEG数据流包含系统层和压层数据。系统层含有定时信号,图像和声音的同步、多
分配等信息。压缩层包含经压缩后的实际的图像和声数据,该数据流将视频、音频信号复合及同步后,其数据输率为1.5MB/s。其中压缩图像数据传输率为1.2M压缩声音传输率为0.2MB/s。
MPEG标准的发展经历了MPEG—I,MPEG一2、MPEG一4、MPEG-7、MPEG一21等不同层次。在MPEG的不同标准中,每—个标准都是建立在前面的标准之上的,并与前面的标准向后的兼容。目前在图像压缩中,应用得较多的是MPEG一4标准,MPEG-是在MPEG-2基础上作了很大的扩充,主要目标是多媒体应用。在MPEG一2标准中,我们的观念是单幅图像,而且包含了一幅图像的全部元素。在MPEG一4标准下,我们的观念变为多图像元素,其中的每—个多图像元素都是编码处理的。该标准包含了为接收器所用的指令,告诉接收器如何构成最终的图像。
上图既表示了MPEG一4解码器的概念,又比较清楚地描绘了每个部件的用途。这里不是使用单一的视频或音频解码器,而是使用若干个解码器,其中的每一个解码器只接收某个特定的图像(或声音)元素,并完成解码操作。每个解码缓冲器只接收属于它自己的灵敏据流,并转送给解码器。复合存储器完成图像元素的存储,并将它们送到显示器的恰当位置。音频的情况也是这样,但显然不同点是要求同时提供所有的元素。数据上的时间标记保证这些元素在时间上能正确同步。MPEG一4标准对自然元素(实物图像)和合成元素进行区分和规定,计算机生成的动画是合成元素的一个例子。比如,一幅完整的图像可以包含一幅实际的背景图,并在前面有一幅动画或者有另外一幅自然图像。这样的每一幅图像都可以作最佳压缩,并互相地传送到接收器,接收器知道如何把这些元素组合在一起。在MPEG一2标准中,图像被看作一个整体来压缩;而在MPEG一4标准下,对图像中的每一个元素进行优化压缩。静止的背景不必压缩到以后的I帧之中去,否则会使带宽的使用变得很紧张。而如果这个背景图像静止10秒钟,就只要传送一次(假设我们不必担心有人在该时间内切人此频道),需要不断传送的仅是前台的比较小的图像元素。对有些节目类型,这样做会节省大量的带宽。MPEG一4标准对音频的处理也是相同的。例如,有一位独唱演员,伴随有电子合成器,在MPEG一2标准下,我们必须先把独唱和合成器作混合,然后再对合成的音频信号进行压缩与传送。在MPEG一4标准下,我们可以对独唱作单独压缩,然后再传送乐器数字接口的声轨信号,就可以使接收器重建伴音。当然,接收器必须能支持MIDI放音。与传送合成的信号相比,分别传送独唱信号和MIDI数据要节省大量的带宽。其它的节目类型同样可以作类似的规定。MPEG一7标准又叫多媒体内容描述接口标准。图像可以用色彩、纹理、形状、运动等参数来描述,MPEG一7标准是依靠众多的参数对图像与声音实现分类,并对它们的数据库实现查询。
二、多媒体数据压缩技术的实现方法
目前多媒体压缩技术的实现方法已有近百种,其中基于信源理论编码的压缩方法、离散余弦变换(DCT)和小波分解技术压缩算法的研究更具有代表性。小波技术突破了传统压缩方法的局限性,引入了局部和全局相关去冗余的新思想,具有较大的潜力,因此近几年来吸引了众多的研究者。在小波压缩技术中,一幅图像可以被分解为若干个叫做“小片”的区域;在每个小片中,图像经滤波后被分解成若干个低频与高频分量。低频分量可以用不同的分辨率进行量化,即图像的低频部分需要许多的二进制位,以改善图像重构时的信噪比。低频元素采用精细量化,高频分量可以量化得比较粗糙,因为你不太容易看到变化区域的噪声与误差。此外,碎片技术已经作为一种压缩方法被提出,这种技术依靠实际图形的重复特性。用碎片技术压缩图像时需要占用大量的计算机资源,但可以获得很好的结果。借助于从DNA序列研究中发展出来的模式识别技术,能减少通过WAN链路的流量,最多时的压缩比率能达到90%,从而为网络传送图像和声音提供更大的压缩比,减轻风络负荷,更好地实现网络信息传播。
三、压缩原理
由于图像数据之间存在着一定的冗余,所以使得数据的压缩成为可能。信息论的创始人Shannon提出把数据看作是信息和冗余度(rendancy)的组合。所谓冗余度,是由于一副图像的各像素之间存在着很大的相关性,可利用一些编码的方法删去它们,从而达到减少冗余压缩数据的目的。为了去掉数据中的冗余,常常要考虑信号源的统计特性,或建立信号源的统计模型。图像的冗余包括以下几种:
(1) 空间冗余:像素点之间的相关性。
(2) 时间冗余:活动图像的两个连续帧之间的冗余。
(3) 信息熵冗余:单位信息量大于其熵。
(4) 结构冗余:图像的区域上存在非常强的纹理结构。
(5) 知识冗余:有固定的结构,如人的头像。
(6) 视觉冗余:某些图像的失真是人眼不易觉察的。
对数字图像进行压缩通常利用两个基本原理:
(1) 数字图像的相关性。在图像的同一行相邻像素之间、活动图像的相邻帧的对应像素之间往往存在很强的相关性,去除或减少这些相关性,也就去除或减少图像信息中的冗余度,即实现了对数字图像的压缩。
(2) 人的视觉心理特征。人的视觉对于边缘急剧变化不敏感(视觉掩盖效应),对颜色分辨力弱,利用这些特征可以在相应部分适当降低编码精度,而使人从视觉上并不感觉到图像质量的下降,从而达到对数字图像压缩的目的。
编码压缩方法有许多种,从不同的角度出发有不同的分类方法,比如从信息论角度出发可分 为两大类:
(1)冗余度压缩方法,也称无损压缩,信息保持编码或熵编码。具体讲就是解码图像和压缩 编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。
(2)信息量压缩方法,也称有损压缩,失真度编码或熵压缩编码。也就是讲解码图像和原始图像是有差别的,允许有一定的失真。
应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分类为:
(1)无损压缩编码种类 �6�1哈夫曼编码 �6�1算术编码 �6�1行程编码 �6�1Lempel zev编码
(2)有损压缩编码种类 �6�1预测编码:DPCM,运动补偿 �6�1频率域方法:正文变换编码(如DCT),子带编码 �6�1空间域方法:统计分块编码 �6�1模型方法:分形编码,模型基编码 �6�1基于重要性:滤波,子采样,比特分配,矢量量化
(3)混合编码 �6�1JBIG,H261,JPEG,MPEG等技术标准
衡量一个压缩编码方法优劣的重要指标
(1)压缩比要高,有几倍、几十倍,也有几百乃至几千倍;
(2)压缩与解压缩要快,算法要简单,硬件实现容易;
(3)解压缩的图像质量要好。
四、JPEG图像压缩算法
1..JPEG压缩过程
JPEG压缩分四个步骤实现:
1.颜色模式转换及采样;
2.DCT变换;
3.量化;
4.编码。
2.1.颜色模式转换及采样
RGB色彩系统是我们最常用的表示颜色的方式。JPEG采用的是YCbCr色彩系统。想要用JPEG基本压缩法处理全彩色图像,得先把RGB颜色模式图像数据,转换为YCbCr颜色模式的数据。Y代表亮度,Cb和Cr则代表色度、饱和度。通过下列计算公式可完成数据转换。
Y=0.2990R+0.5870G+0.1140B
Cb=-0.1687R-0.3313G+0.5000B+128
Cr=0.5000R-0.4187G-0.0813B+128
人类的眼晴对低频的数据比对高频的数据具有更高的敏感度,事实上,人类
的眼睛对亮度的改变也比对色彩的改变要敏感得多,也就是说Y成份的数据是比较重要的。既然Cb成份和Cr成份的数据比较相对不重要,就可以只取部分数据来处理。以增加压缩的比例。JPEG通常有两种采样方式:YUV411和YUV422,它们所代表的意义是Y、Cb和Cr三个成份的资料取样比例。
2.2.DCT变换
DCT变换的全称是离散余弦变换(Discrete Cosine Transform),是指将一组光强数据转换成频率数据,以便得知强度变化的情形。若对高频的数据做些修饰,再转回原来形式的数据时,显然与原始数据有些差异,但是人类的眼睛却是不容易辨认出来。
压缩时,将原始图像数据分成8*8数据单元矩阵,例如亮度值的第一个矩阵内容如下:
JPEG将整个亮度矩阵与色度Cb矩阵,饱和度Cr矩阵,视为一个基本单元称作MCU。每个MCU所包含的矩阵数量不得超过10个。例如,行和列采样的比例皆为4:2:2,则每个MCU将包含四个亮度矩阵,一个色度矩阵及一个饱和度矩阵。
当图像数据分成一个8*8矩阵后,还必须将每个数值减去128,然后一一代入DCT变换公式中,即可达到DCT变换的目的。图像数据值必须减去128,是因为DCT转换公式所接受的数字范围是在-128到+127之间。
DCT变换公式:
x,y代表图像数据矩阵内某个数值的坐标位置
f(x,y)代表图像数据矩阵内的数个数值
u,v代表DCT变换后矩阵内某个数值的坐标位置
F(u,v)代表DCT变换后矩阵内的某个数值
u=0 且 v=0 c(u)c(v)=1/1.414
u>0 或 v>0 c(u)c(v)=1
经过DCT变换后的矩阵数据自然数为频率系数,这些系数以F(0,0)的值最大,称为DC,其余的63个频率系数则多半是一些接近于0的正负浮点数,一概称之为AC。
3.3、量化
图像数据转换为频率系数后,还得接受一项量化程序,才能进入编码阶段。
量化阶段需要两个8*8矩阵数据,一个是专门处理亮度的频率系数,另一个则是
针对色度的频率系数,将频率系数除以量化矩阵的值,取得与商数最近的整数,
即完成量化。
当频率系数经过量化后,将频率系数由浮点数转变为整数,这才便于执行最
后的编码。不过,经过量化阶段后,所有数据只保留整数近似值,也就再度损失
了一些数据内容,JPEG提供的量化表如下:
2.4、编码
Huffman编码无专利权问题,成为JPEG最常用的编码方式,Huffman编码通常是以完整的MCU来进行的。
编码时,每个矩阵数据的DC值与63个AC值,将分别使用不同的Huffman编码表,而亮度与色度也需要不同的Huffman编码表,所以一共需要四个编码表,才能顺利地完成JPEG编码工作。
DC编码
DC是彩采用差值脉冲编码调制的差值编码法,也就是在同一个图像分量中取得每个DC值与前一个DC值的差值来编码。DC采用差值脉冲编码的主要原因是由于在连续色调的图像中,其差值多半比原值小,对差值进行编码所需的位数,会比对原值进行编码所需的位数少许多。例如差值为5,它的二进制表示值为101,如果差值为-5,则先改为正整数5,再将其二进制转换成1的补码即可。所谓1的补码,就是将每个Bit若值为0,便改成1;Bit为1,则变成0。差值5应保留的位数为3,下表即列出差值所应保留的Bit数与差值内容的对照。
在差值前端另外加入一些差值的霍夫曼码值,例如亮度差值为5(101)的位数为3,则霍夫曼码值应该是100,两者连接在一起即为100101。下列两份表格分别是亮度和色度DC差值的编码表。根据这两份表格内容,即可为DC差值加上霍夫曼码值,完成DC的编码工作。
AC编码
AC编码方式与DC略有不同,在AC编码之前,首先得将63个AC值按Zig-zag排序,即按照下图箭头所指示的顺序串联起来。
63个AC值排列好的,将AC系数转换成中间符号,中间符号表示为RRRR/SSSS,RRRR是指第非零的AC之前,其值为0的AC个数,SSSS是指AC值所需的位数,AC系数的范围与SSSS的对应关系与DC差值Bits数与差值内容对照表相似。
如果连续为0的AC个数大于15,则用15/0来表示连续的16个0,15/0称为ZRL(Zero Rum Length),而(0/0)称为EOB(Enel of Block)用来表示其后所
剩余的AC系数皆等于0,以中间符号值作为索引值,从相应的AC编码表中找出适当的霍夫曼码值,再与AC值相连即可。
例如某一组亮度的中间符为5/3,AC值为4,首先以5/3为索引值,从亮度AC的Huffman编码表中找到1111111110011110霍夫曼码值,于是加上原来100(4)即是用来取[5,4]的Huffman编码1111111110011110100,[5,4]表示AC值为4的前面有5个零。
由于亮度AC,色度AC霍夫曼编码表比较长,在此省略去,有兴趣者可参阅相关书籍。
实现上述四个步骤,即完成一幅图像的JPEG压缩。
热心网友 时间:2022-04-05 07:49
给我邮箱,我给你发过去