数字图像处理第6章-图像编码与压缩技术.课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数字图像处理第6章-图像编码与压缩技术.课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 图像 编码 压缩 技术 课件
- 资源描述:
-
1、第6章 图像编码与压缩技术6.1 概 述 从信息论角度看,信源编码的一个最主要的目的,就是要解决数据的压缩问题。数据压缩是指以最少的数码表示信源所发出的信号,减少容纳给定消息集合或数据采样集合的信号空间。图像编码与压缩的目的就是对图像数据按一定的规则进行变换和组合,从而达到以尽可能少的代码(符号)表示尽可能多的图像信息。 图像编码的国际标准主要是国际标准化组织(ISO)和国际电信联盟(ITU)制定的。其主要目的包括: 提供高效的压缩编码算法; 提供统一的压缩数据流格式。经过大量严格的试验测试,从算法压缩性能到实现的复杂度等综合因素的考虑比较之后,最终形成了两个著名的里程碑式的国际标准,这就是人
2、们熟知的用于连续色调静止图像压缩编码的JPEG标准和码率为p64kbit/s(p=1,2,30)的数字视频压缩编码标准H.261建议。6.1.1 图像的信息冗余 图像数据的压缩是基于图像存在冗余这种特性。压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息(可推知的);也就是用一种更接近信息本身的描述代替原有冗余的描述。一般来说,图像数据中存在的冗余有8种。 (1) 空间冗余。在同一幅图像中,规则物体或规则背景的物理表面特性具有的相关性,这种相关性会使它们的图像结构趋于有序和平滑,表现出空间数据的冗余。邻近像素灰度分布的相关性很强。 (2) 频间冗余。多谱段图像中各谱段图像对应像素之间
3、灰度相关性很强。 (3) 时间冗余。对于动画或电视图像所形成的图像序列(帧序列),相邻两帧图像之间有较大的相关性,其中有很多局部甚至完全相同,或变化极其微细,这就形成了数据的时间冗余。图像的信息冗余(4) 信息熵冗余。(5) 结构冗余。有些图像存在纹理或图元(分块子图)的相似结构 ,这就是图像结构上的冗余。(6) 知识冗余。对有些图像的理解与某些知识有相当大的相关性。(7) 视觉冗余。人类视觉对于图像场的任何变化并不是都能感知的。如果因为噪声的干扰使图像产生的畸变不足以被视觉感知,则认为这种图像仍然足够好。(8) 其他冗余。6.1.2 图像压缩编码技术的分类 从图像压缩技术发展过程可将图像压缩
4、编码分为两代,第一代是指20世纪80年代以前,图像压缩编码主要是根据传统的信源编码方法,研究的内容是有关信息熵、编码方法以及数据压缩比;第二代是指20世纪80年代以后,它突破了信源编码理论,结合分形、模型基、神经网络、小波变换等数学工具,充分利用视觉系统生理特性和图像信源的各种特性。 图像压缩编码系统的组成框图如图所示。图像压缩编码技术的分类 图像数据压缩过程有3个基本环节:变换、量化和编码。 变换变换的作用是将原始图像表示在另一个量化和编码数据较少的域中,对变换器的要求应是高度去相关的、重建均方差最小的、可逆的和方法简便的。常见的变换包括线性预测、正交变换、多分辨率变换、二值图像的游程变换等
5、。 量化器量化器要完成的功能是按一定的规则对抽样值作近似表示,使量化器输出幅值的大小为有限个数。量化器可分为无记忆量化器和有记忆量化器2大类。 编码器编码器为量化器输出端的每个符号分配一个码字或二进制比特流,编码器可采用等长码或变长码。不同的图像编码系统可能采用上述框图中的不同组合。图像压缩编码技术的分类 根据编码的作用域划分,图像编码分为空间域编码和变换域编码2大类。其他编码变换编码预测编码有损压缩算术编码行程编码霍夫曼编码无损压缩图像压缩技术6.2.1 基于压缩编码参数的评价 1 图像熵图像熵 设数字图像像素灰度级集合为d1,d2,dm,其对应的概率分别为 p(d1),p(d2),p(dm
6、)。按信息论中信源信息熵的定义,图像的熵定义为 2 平均码字长度平均码字长度 设i为数字图像中灰度级di所对应的码字长度(二进制代码的位数),其相应出现的概率为P(di),则该数字图像所赋予的平均码字长度为字符/)(log)(1bitdPdPHmiiimiiidPR1)(基于压缩编码参数的评价 3 编码效率编码效率 =H/R100% 根据信息论中信源码理论,可以证明在 RH 条件下,总可以设计出某种无失真编码方法。最好编码结果是使R等于或接近于H。这种状态的编码方法,称为最佳编码。 4 压缩比压缩比 压缩比是指编码前后平均码长之比,如果用n表示编码前每个符号的平均码长,通常为用自然二进制码表示
7、时的位数,则压缩比可表示为 rn/R 一般来讲,压缩比大,则说明被压缩掉的数据量多。一个编码系统要研究的问题是设法减小编码平均长度R,使编码效率尽量趋于1,而冗余度趋于0。6.2.2 图像的逼真度准则 描述解码图像相对原始图像偏离程度的测度一般称为保真度(逼真度)准则。常用的准则可分为2大类:客观保真度准则和主观保真度准则。 1. 客观保真度准则客观保真度准则 最常用的客观保真度准则是原图像和解码图像之间的均方根误差和均方根信噪比。令 f(x,y) 代表大小为 MN 的原图像, 代表解压缩后得到的图像,对任意x和y,f(x,y) 和之间的误差定义为 ),(),(),(yxfyxfyxe),(y
8、xf图像的逼真度准则 则均方根误差为 如果将 看作原始图像f(x,y) 和噪声信号e(x,y)的和,那么解压图像的均方根信噪比(SNR)为1021010102 ),(),(),(MxNyMxNyrmsyxfyxfyxfR2/110210 ),(),(1MxNyrmsyxfyxfMNe),(yxf图像的逼真度准则 2. 主观保真度准则主观保真度准则 图像处理的结果,绝大多数是给人观看,由研究人员来解释的,因此,图像质量的好坏与否,既与图像本身的客观质量有关,也与人的视觉系统的特性有关。有时客观保真度完全一样的两幅图像可能会有完全不相同的视觉质量,所以又规定了主观保真度准则。这种方法是把图像显示给
9、观察者,然后把评价结果加以平均,以此评价一副图像的主观质量。6.3 图像的统计编码 统计编码是指一类建立在图像的统计特性基础之上的压缩编码方法,根据信源的概率分布特性分配不同长度的码字,降低平均码字长度,以提高传输速度,节省存储空间。 由于二值图像只有两个亮度值,所以采集时每像素用一个比特表示,用“”代表“黑”,“”代表“白”,或者反之,这通常称为直接编码。直接编码时,代表一帧图像的码元数等于该图像的像素数。二值图像的质量一般用分辨率表示,它是一个单位长度所包含的像素数。分辨率越高,图像细节越清晰,图像质量越高,但同时表示一幅图像的比特数就越多。 二值图像的相邻像素之间也存在很强的相关性。其突
10、出的表现为图像中的黑点或白点都是以很大的概率连续出现的,这种相关性构成了研究和设计二值图像编码方法的基础。常用的二值图像编码有2种,即行程长度编码和二值图像方块编码。 6.3.1 行程编码 行程长度编码,又叫做游程编码(RLC),其基本思想是,当按照二值图像从左到右的扫描顺序去观察每一行时,一定数量的连续白点和一定数量的连续黑点总是交替出现,如图所示。通常把具有相同灰度值的相邻像素组成的序列称为一个游程,游程中像素的个数称为游程长度,简称游长;把连续白点和黑点的数目分别叫做“白行程”和“黑行程”。如果对于不同的行程长度根据其概率分布分配相应的码字,可以得到较好的压缩。在进行行程编码时可以将黑行
11、程与白行程合在一起统一编码,也可以将它们分开,单独进行编码。行程编码 行程长度编码先对每一行交替出现的白游长和黑游长进行统计,然后进行变长编码。在进行变长编码时,经常采用霍夫曼编码,在大量统计的基础上,得到每种白游长和黑游长的发生概率。其概率可分为2种情况,一种是白长和黑长各自发生的概率分布;另一种是游长的概率分布,而不区分白游长和黑游长。对于第一种情况,要分别建立白游长和黑游长的霍夫曼码表;对于第二种情况,只需建立游长的霍夫曼码表。在编码时对每一行的第一个像素要有一个标志码,以区分该行是以白游长还是黑游长开始,对于后面的游长,按照其值查相应的霍夫曼码表,并输出对应的码字。行程编码 设行程长度
12、编码的信息符号集由长度为,N的各种游程组成,这里N是一条扫描线上的像素总数。如果不分黑、白游长而进行统一编码,并设Pi为长度为I的游长的概率,则游长的熵H和平均游长分别为 行程长度的符号熵(即平均每个像素的熵)为NiiippH1logNiiipL1行程编码 当根据各游长的概率利用霍夫曼编码时,则每个行程的平均长度满足下列不等式: H H+1 将该不等式两边同除以平均游长L,可得每个像素的平均码长n的估计值为 hnh+1 因此,每个像素的熵h即为游长编码可达到的最小比特率的估计值。N6.3.2 方块编码 WBS的编码方法是,对于出现概率大的全白子块,分配最短码字,用1比特码字“0”表示;对有N个
13、黑色像素的子块用N+1比特的码字表示,第1个比特为前缀码“1”,其余N个比特采用直接编码,白为0,黑为1。 对图像分别逐行或逐列进行WBS编码,可用一维WBS,此时N=1n,即将图像的每条扫描线分成若干像素段,每段的像素个数为n。 例如: 某段像素值 相应编码 黑白白黑 1001 白白白白 0方块编码 将一维WBS的像素段扩展为像素块,按照mn的方形块进行编码,称为二维WBS,Nmn。 WBS编码的码字平均长度,即比特率bN为 式中,pN 为N个像素为全白的子块的概率,可由实验确定。 如果能根据图像的局部结构或统计特性改变段或子块的大小,进行自适应编码,则编码效果会得到进一步的改善。下面是个自
14、适应编码的实例。像素/11) 1)(1 (bitpNNNppbNNNN方块编码 例 下图为二维自适应WBS编码的码字分配图。图像分为2n2n(n为正整数)的子块,每个子块按四叉树结构分为个次子块,并依次分割下去,如图(a)所示;码字的构造与一维时的类似,如图(b)所示。在编码过程中,如某一块全白,则直接由图中得到码字;繁殖,依次考察下面4个子块,如果最小的22子块不是全白,则对其进行直接编码,并加前缀1111。6.3.3 霍夫曼编码 霍夫曼(Huffman)编码是根据可变长最佳编码定理,应用霍夫曼算法而产生的一种编码方法。 1 可变长编码可变长编码 对于每个符号,例如经过量化后的图像数据,如果
15、对它们每个值都是以相同长度的二进制码表示的,则称为等长编码或均匀编码。采用等长编码的优点是编码过程和解码过程简单,但由于这种编码方法没有考虑各个符号出现的概率,实际上就是将它们当作等概率事件处理的,因而它的编码效率比较低。例6.3给出了一个等长编码的例子。霍夫曼编码 例 假设一个文件中出现了8种符号S0、S1、S2、S3、S4、S5、S6、S7,那么每种符号编码至少需要3bit,假设编码成 S0=000, S1=001, S2=010, S3=011, S4=100, S5=101, S6=110, S7=111 那么,符号序列S0 S1 S7 S0 S1 S6 S2 S2 S3 S4 S5
16、S0 S0 S1编码后变成 000 001 111 000 001 110 010 010 011 100 101 000 000 001(共42bit) 和等长编码不同的一种方法是可变长编码。在这种编码方法中,表示符号的码字的长度不是固定不变的,而是随着符号出现的概率而变化,对于那些出现概率大的信息符号编以较短的字长的码,而对于那些出现概率小的信息符号编以较长的字长的码。霍夫曼编码例 在例6.3中,可以观察到S0、S1、S2这三个符号出现的频率比较大,其他符号出现的频率比较小,如果采用一种编码方案使得S0、S1、S2的码字短,其他符号的码字长,这样就能够减少上述符号序列占用的位数。例如,可以
17、采用下面的编码方案: S0=01, S1=11, S2=101, S3=0000, S4=0010, S5=0001, S6=0011, S7=100 那么上述符号序列变成 01 11 100 01 11 0011 101 101 0000 0010 0001 01 01 11(共39bit) 可见,利用可变长编码方案对符号进行编码,尽管有些码字如S3、S4、S5、S6变长了(由3位变成4位),但使用频繁的几个码字如S0、S1变短,使得整个序列的编码缩短,从而实现了压缩。霍夫曼编码2 霍夫曼编码霍夫曼编码 霍夫曼于1952年提出了一种编码方法,它根据信源字符出现的概率构造码字,这种编码方法形成
18、的平均码字长度最短。实现霍夫曼编码的步骤如下:(1) 将信源符号出现的概率按从小到大的顺序排列。(2) 把两个最小的概率进行组合相加,形成一个新的概率。(3) 重复第(1)、(2)步,直到概率和达到1为止。(4) 在每次合并符号时,将被合并的符号赋以1和0(大概率赋1,小概率赋0,或者相反)。(5) 寻找从每一个信源符号到概率为1处的路径,记录下路径上的1和0。霍夫曼编码例 一个有8个符号的信源X,各个符号出现的概率为 X = 符号:u1 u2 u3 u4 u5 u6 u7 u8 概率:0.40 0.18 0.10 0.10 0.07 0.06 0.05 0.04 试进行霍夫曼编码,并计算编码
19、效率、压缩比、冗余度等。解 霍夫曼编码算法过程如图所示。 最终的各符号的霍夫曼编码如下: u1:1 u2:001 u3:011 u4:0000 u5:0100 u6:0101 u7:00010 u8:00011霍夫曼编码霍夫曼编码 霍夫曼编码时,对同一源图像序列,霍夫曼编码并不是唯一的。在上图中,如果节点标1的和标0的对调,则相应的霍夫曼编码变成 u1:0 u2:110 u3:100 u4:1111 u5:1011 u6:1010 u7:11101 u8:11100 对照两组霍夫曼编码不难看出,尽管两者的组成不同,但两者的平均码长是一致的。根据以上数据,可分别计算其信源的熵、平均码长、编码效率
20、及冗余度,即熵 H(x)= =0.4log0.40.18log0.180.10log0.1 0.07log0.070.06log0.060.05log0.05 0.04log0.04=2.55Niiipp1log霍夫曼编码 平均码长 =10.04+30.18+30.10+40.10+40.0740.06+5 0.05+50.04=2.61 编码效率 H/R=2.55/2.61100%=97.7% 压缩之前8个符号需要3个比特量化,经压缩之后的平均码字长度为2.61,因此压缩比为C=3/2.611.15 冗余度为r=12.3% 对上述信源X的霍夫曼编码,其编码效率已达97.7%,仅有2.3%的冗
21、余。81)(kkkPxR霍夫曼编码 3 准变长编码准变长编码 霍夫曼编码是依据符号出现的概率对符号进行编码,因而需要对原始数据扫描两遍。第一遍扫描要精确地统计出原始数据中每个符号出现的概率;第二遍是建立霍夫曼树并进行编码。因此当源数据成分复杂时,霍夫曼编码非常麻烦与耗时,从而限制了霍夫曼编码的实际应用。因此在实际编码中经常采用一种性能稍差,但实现方便的方法,即所谓的准变长编码。在最简单的准变长编码方法中只有两种长度的码字,对概率大的符号用长码,反之用短码。同时,在短码字集中留出一个作为长码字的字头,保证整个码字集的非续长性。6.3.4 算术编码 1. 算术编码基本原理算术编码基本原理 算术编码
22、用区域划分来表示信源输出序列。对一个独立信源,根据信源信息的概率将半开区间0,1)划分为若干个子区间,使每个子区间对应一个长度为N(任意整数)的可能序列,各个子区间互不重叠。这样,每个子区间有一个唯一的起始值或左端点,只要知道了该端点,也就能确定具体的符号序列。算术编码将待编码的图像数据看作是由多个符号组成的序列,对该序列递归地进行算术运算后,成为一个小数。在接收端,解码过程也是算术运算,由小数反向算术运算,重建图像符号序列。 设输入符号串s取自符号集 式中,xi 表示符号序列, pi为对应的概率。mmpppxxxX,.,.,2121算术编码算术编码的迭代关系可表示为 码字刷新 区间刷新其中是
23、符号的累积概率。初始条件为 )()()(sAxPsxAii11)()(ijiixPxP0)(C1)(A0)(P1)(P)()()()(sAxPsCsxCii算术编码例 给出一组信源符号及其概率,试根据该表对符号序列a2、a1、a3、a4进行算术编码。 符号 概率 符号 概率 a1 0.5 a3 0.125 a2 0.25 a4 0.125 (1) 编码 根据表中字符概率,将区间0,1.0分为4个子区间,每个子区间的长度分别为0.5、0.25、0.125、0.125,如图所示。算术编码 设整个序列的概率初值 对a2进行编码: a2所在的编码区间为 C(a2),C(a2)+A(a2)=0.5,0.
24、5+0.25)=0.5,0.75) 0)(C1)(A5 . 0)()()(1112aPaPaPijj5 . 0)()()()()()()(22AaPCsAxPsCaCi25. 0)()()()()(212AaPsAxPaA算术编码 对a1进行编码: a1所在的区间为C(a1),C(a1)+A(a1)= 0.5,0.5+0.125)=0.5,0.625) 对a3进行编码 a3所在的区间为C(a3),C(a3)+A(a3)= 0.59375,0.59375+0.015625)=0.59375,0.609375) 对a4进行编码 最后输出的区域为C(a4),C(a4)+A(a4)= 0.607421
25、875, 0.607421 875+0.001 953 125) =0.607421875, 0.609375) 取最后的区间的左端点数值0.607421875,转换为二进制数,并去掉小数点,得到字符串a2、a1、a3、a4的编码结果为100110111。算术编码以上编码过程的区间子分过程如图所示。6.3.5行程编码和霍夫曼编码的Matlab实现1. 行程编码的实现方法行程编码的实现方法 I=imread(code.gif); m n=size(I); c=I(1,1);E(1,1)=1;E(1,2)=1;E(1,3)=c; t1=2; for k=1:m for j=1:n if(not(a
展开阅读全文