数字图象处理 第6章 图像数据压缩.ppt
第六章第六章 图像数据压缩图像数据压缩 主要内容n6.1 概述n6.2 无损压缩算法n6.3 有损压缩算法n6.4 变换编码n6.5 混合编码n6.6 国际压缩标准简介n6.7 JPEG压缩算法 6.1 概述概述n6.1.1 数据压缩编码的重要性数据压缩编码的重要性数字图像的数据量非常大。1)彩色视频信息 对于画面的分辨率640*480的彩色图像,每秒30帧,则一秒钟的数据量为:640*480*3*30=27.6M 所以播放时,需要27.68221Mbps的通信回路。参考数据:宽带网为512K,电话线为56K。存储时,1张CD可存640M,则仅可以存放23秒的数据。6.1.1 数据压缩编码的重要性数据压缩编码的重要性 2)传真数据 如果只传送2值图像,以200dpi的分辨率传输,一张A4稿纸的内容的数据量为:1654*2337*1=3888768bit 按14.4K的电话线传输速率,需要传送的时间是:270秒(4.5分)6.1.1 数据压缩编码的重要性数据压缩编码的重要性两个问题:1)存储大数据量的图像信息,使存储设备(内存、外存)的存储容量消耗很快。2)在网络上传输图像时,由于图像信息的数据量太大了,本来就已经非常紧张的网络带宽变得更加不堪重负。如何用软件的手段来解决硬件上的物理极限。6.1.2 数据压缩编码的可能性数据压缩编码的可能性n能进行压缩,是因为图像中存在有各种冗余。1)数据冗余 数据与信息是不同的概念,数据是信息的载体,相同的信息可以用不同的数据量来表示。你的妻子,Helen,将于明天晚上6点零5分在上海的虹桥机场接你。(23*2+10=56个半角字符)你的妻子将于明天晚上 6点零5分在虹桥机场接你。(20*2+3=43个半角字符)Helen将于明晚6点在虹桥接你。(10*2+7=27个半角字符)结论:只要接收端不会产生误解,就可以减少承载信息的数据量。6.1.2 数据压缩编码的可能性数据压缩编码的可能性n描述语言1)“这是一幅 2*2的图像,图像的第一个像素是红的,第二个像素是红的,第三个像素是红的,第四个像素是红的”。2)“这是一幅2*2的图像,整幅图都是红色的”。由此我们知道,整理图 像的描述方法可以达到 压缩的目的。6.1.2 数据压缩编码的可能性数据压缩编码的可能性n图像的视觉冗余图像的视觉冗余(彩色)(彩色)R G B2488822*2*2=242=16,777,216(248,27,4)(251,32,15)(248,27,4)(248,27,4)2)心理视觉冗余人类视觉分辨率为26,但常用28,就是视觉冗余。6.1.2 数据压缩编码的可能性数据压缩编码的可能性 3空间冗余(象素间冗余)空间冗余(象素间冗余)例例:图像中的图像中的“A”A”是一个规则物体。光的亮度、饱是一个规则物体。光的亮度、饱和度及颜色都一样,因此,数据和度及颜色都一样,因此,数据A A有很大的冗余。有很大的冗余。4.结构冗余结构冗余 图像有非常强的纹理结构。如草席图结构上存在冗余。5.知识冗余知识冗余图像的理解与某些基础知识有关。人脸的图像有同样的结构:嘴的上方有鼻子,鼻子上方有眼睛,鼻子在中线上 6.1.3 图像数据压缩方法的分类图像数据压缩方法的分类 分类方法有很多。按压缩过程中信息有无损失可以将数据压缩方法分为两类:n有失真压缩(熵压缩)有失真压缩(熵压缩)又又称有损压缩,这类压缩的压缩过程是不可逆的,无法完全恢复出原图像,信息有一定的丢失。n无失真压缩(冗余压缩、熵编码)无失真压缩(冗余压缩、熵编码)又称为无损压缩,其压缩过程是可逆的,也就是说,从压缩后的图像能够完全恢复出原来的图像,信息没有任何丢失。6.1.3 图像数据压缩方法的分类图像数据压缩方法的分类 按压缩过程中编码的原理又可以将压缩算法分为按压缩过程中编码的原理又可以将压缩算法分为:6.1.4 衡量数据压缩技术好坏的标准衡量数据压缩技术好坏的标准 n三个重要的评价指标:1.压缩比大。2实现压缩的算法简单、压缩、解压速度快(实时性要求髙)。3.恢复效果要好。到底解压缩后图像的质量如何,采用保真度准则来评价。6.1.5 保真度准则保真度准则 n保真度准则有两种:客观保真度准则和主观保真度准则。1.客观保真度准则 以压缩前后图像的误差来度量。具体可以用原图像和压缩后图像之间的均方根误差或压缩后图像的均方根信噪比来度量。6.1.5 保真度准则保真度准则 1.客观保真度准则 1)设原图像为g(x,y),压缩后恢复的图像为f(x,y)(x,y=0,1N1),且每个象素均用m bit表示其灰度,则新旧图像的均方误差为:相应的均方根误差是:6.1.5保真度准则保真度准则 1.客观保真度准则 2)用压缩图像的均方信噪比:如果把压缩后恢复的图像表示成原图像和噪声的叠加,即:e(x,y)表示编码压缩后新旧图像之间的误差或编码噪声 压缩后图像的均方信噪比 相应的均方根信噪比 6.1.5保真度准则保真度准则1.客观保真度准则 3)用f(x,y)的峰值平方与均方噪声之比的均方根,来代替均方根信噪比,作为一种客观保真度的量度。6.1.5保真度准则保真度准则 2.主观保真度准则 通常,被处理的图像最终是让人进行观察,那么用人的视觉来评价图像的质量更有意义。事实上,具有相同客观保真度的不同图像,在人的视觉中可能引起不同的观察效果。这是因为客观保真度准则是一种统计平均意义下的度量准则,对于图像中的细枝末节它是无法反映出来的。6.1.5保真度准则保真度准则 2.主观保真度准则 而且人的视觉系统还有许多特殊的性质,例如对光强敏感的对数特性,使得图像暗区的误差比其亮区误差影响更为重要。又如人的视觉系统对灰度突变的特别敏感性,使得发生于图像边缘轮廓附近的误差,比发生于一般背景上的误差对图像质量有着更坏的影响等等。所有这些可能引起视觉明显差异的因素。用客观保真度准则往往是无法表示出来的,因此,根据人的主观感觉来评价图像质量十分必要。6.1.5保真度准则保真度准则 主观保真度准则规定为:(1)极好:图像具有极高的质量,和你所想象的一样好。(2)良好:图像质量高,能供满意的观察,干扰并不令人 讨厌。(3)通过:图像具有可以接受的质量,干扰并不令人讨 厌。(4)勉强:图像质量低劣,但你还希望改善它,干扰有些 令人不愉快。(5)低劣:图像质量很低劣,但还能观看,干扰确实令人 讨厌。(6)不能用:图像差得无法观看。6.2 无损压缩算法无损压缩算法 n通过改变图像的描述方式,来实现压缩。常用的有:行程(游长)编码,huffman编码、Fano-Shannon编码、预测编码等一、行程编码(RLE编码)n基本原理:在一个逐行存储的图像中,具有相同灰度(颜色)值的一些象素组成的序列称为一个行程。将一行中颜色值相同的相邻像素用一个计数值和该颜色值来代替。n举例说明:aaaa bbb cc d eeeee fffffff (共22*8=176 bits)4a3b2c1d5e7f (共12*8=96 bits)一、行程编码(RLE编码)n在传真中的应用:传真件中一般都是白色比较多,而黑色相对比较少。所以可能常常会出现如下的情况:600W 3b 100w 12b 4w 3b 200w 因为:5126001024 所以:计数值如果均用10bit来表示 10*7=70bit一、行程编码(RLE编码)n在传真中的应用:如果白色:10bit,黑色:4bit 600w 3b 100w 12b 4w 3b 200w 所需字节数为:4*10+3*4=52bit 比原来的方式10*7=70bit减少了18bit一、行程编码(RLE编码)n致命弱点:如果图像中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。n图像文件应用:单纯采用行程编码的压缩算法用得并不多,PCX、BMP文件算是其中的二种。n行程编码对于仅包含很少几个灰度级的图像,特别是二值图像,比较有效。二、Huffman 编码(熵编码)n信源的熵:它定义了观察到单个信源符号输出时所获得的平均信息量。如果信源各符号出现的概率P(Xi)相等,则熵达到最大。二、Huffman 编码(熵编码)n编码的平均码长:其中ni是符号xi的长度。可以证明:编码的平均码长满足以下关系:(平均码长的下限是信源的熵)二、Huffman 编码(熵编码)nHuffman编码是50年代提出的一种基于统计的无损编码方法,它利用变长的码来使冗余量达到最小。所得到的平均码字长度可以接近信源的熵,因此在变长编码中是最佳的编码方法。二、Huffman 编码(熵编码)n基本原理:为了达到更大的压缩率,提出了一种方法,就是将在图像中出现频度大的像素值给一个比较短的编码,将出现频度小的像数值给一个比较长的编码,每个数据的代码各不相同。二、Huffman 编码(熵编码)n举例说明:aaaa bbb cc d eeeee fffffff(共22*8=176 bits)4 3 2 1 5 7 4 3 2 1 5 7 编码:编码:f=0 e=10 a=110 b=1111 c=11100 d=11101 11011011011011111111111111100111001110110101010100000000 (共 7*1+5*2+4*3+3*4+2*5+1*5=57 bits)n问题:怎样给每个数据分配唯一的编码,并使平均码长最短?二、Huffman 编码(熵编码)n通过一个二叉树来编码,使常出现的字符用较短的码代表,不常出现的字符用较长的码代表。静态Huffman编码使用一棵依据字符出现的概率事先生成好的编码树进行编码。而动态Huffman编码需要在编码的过程中建立编码树。二、Huffman 编码(熵编码)nHuffman算法的基本步骤1.对L个符号按其概率值P从大到小顺序排列,并将每个符号作为一棵树的叶结点 2.如果没有到根结点,则1)两个概率值最小的结点合并成一个新结点并赋其概率为两子结点概率之和。2)结点到两个子结点的树枝分别赋值1和03.从根结点开始到叶结点,将树枝上的值按顺序组成二进制值,则为该叶结点上符号的Huffman码字。二、Huffman 编码(熵编码)cbafe10f=11e=01a=00b=101c=1001d=1000d10101010二、Huffman 编码(熵编码)aaaa bbb cc d eeeee fffffff(共22*8=176 bits)4 3 2 1 5 7经过经过Huffman编码之后的数据为:编码之后的数据为:00000000101101101100110011000010101010111111111111111 (共 7*2+5*2+4*2+3*3+2*4+1*4=53 bits)熵:平均码长:二、Huffman 编码(熵编码)nHuffman编码在图像压缩中的实现 我们知道,对一幅图像进行编码时,如果图像的大小大于256时,这幅图像的不同的码字就有可能是很大,例如极限为256个不同的码字。对整幅图直接进行Huffman编码时,小分布的灰度值,就有可能具有很长的编码。如:100位以上,这样不但达不到压缩的效果反而会使数据量加大,应该如何处理?二、Huffman 编码(熵编码)n常用的且有效的方法是:将图像分割成若干的小块,对每块进行独立的Huffman编码。例如:分成 的子块,就可以大大降低不同灰度值的个数(最多是64而不是256)。n这种编码方法形成的码字是可辨别的,即一个码字不能成为另一码字的前缀。nHuffman编码对不同的信源其编码效率不同,适合于对概率分布不均匀的信源编码。三、FanoShannon编码nHuffman编码需要多次排序,当Xi很多时十分不便。nFanoShannon编码更简单。三、FanoShannon编码1)排序:把X1 Xn 按概率大小从大到小排序。2)分组:然后分为两组:X1 Xk、Xk1 Xn 使:3)赋值:给两组分别赋予0和1。4)重复2)、3)直到每组仅包含一个Xi。三、FanoShannon编码 输入概率X10.40X20.310X30.1100X40.11X50.0610X60.041编码0101100110111101111H=2.14、N2.2 近熵编码四、算术编码n理论上Huffman编码对信源进行编码可以达到最佳编码效果。但计算机是按“位”进行处理。例如:设信源由两个符号组成x、y,概率分别为2/3和1/3。最优码长:n计算机中不可能出现0.585位,只能用1位。Huffman编码结果分别为0和1。对于概率较大的X不能用较短的编码来表示。这是实际编码效果达不到理论压缩比的原因。四、算术编码n算术编码不用一个特定的代码代替一个输入符号。n将要处理的数据映射到0,1)内的一个区间,构造出小于1且大于或等于0的数值,这个值就是这段数据的可译代码。四、算术编码n例如:4符号信源a1a2a3a4,各字符出现的概率和设定的取值范围如下:字符概率范围a30.20.0,0.2)a10.20.2,0.4)a20.40.4,0.8)a40.20.8,1.0)四、算术编码n“范围”给出了字符的赋值区间,这个区间根据字符的概率进行划分(具体把a1、a2、a3、a4、a5分到哪个区间对编码本身没有影响,只要保证编解码器对字符的概率区间有相同定义即可)。四、算术编码n假定:Ns=Fs+Cl*L Ne=Fs+Cr*L 式中:Ns为新子区间的起始位置;Fs为前子区间的起始位置;Cl当前符号的区间左端;Ne为新子区间的结束位置;Fe为前子区间的结束位置;Cr当前符号的区间右端;L为前子区间的长度。四、算术编码n假定输入序列为a1、a2、a3、a2、a4输入a2时:Ns=Fs+Cl*L0.2+0.4*0.2=0.28 Ne=Fs+Cr*L0.2+0.8*0.2=0.36输入序列区间长度范围a10.20.2,0.4)a20.080.28,0.36)a30.0160.28,0.296)a20.00640.2864,0.2928)a40.001280.29152,0.2928)四、算术编码n随着字符的输入,范围越来越小。当序列a1、a2、a3、a2、a4输入完毕后,编码范围为0.29152,0.2928)。换句话说,这范围内的每一个数值都对应这个序列。可取任意一个值比如:0.29152即可。n解码过程相反,根据概率分配区间表和0.2915可以确定第一个字符为a1,去掉第一个字符的影响,就可以得到第二个字符。n这种方法用一个浮点数表示了一个序列。五、无损预测编码n基本思想:提取每个象素中的新信息并对它们编码来消除象素间的冗余。这里1个象素的新信息定义为该象素的当前或现实值与预测值的差。注意这里正是由于象素间有相关性,所以才使预测成为可能。五、无损预测编码n无损预测编码系统的组成 1个编码器和1个解码器,它们各有1个相同的预测器。符号编码器采用变长码对误差进行编码以产生压缩的数据五、无损预测编码n可以提高数据压缩率。主要原因:误差值与原象素值相比小的多,且概率密度函数一般在0点有一个高峰。因此,对误差编码所需要的位数比原来少,压缩率可以进一步提高。n解码器根据接收到的变长码重建,并执行下列 操作,恢复原图像。五、无损预测编码n问题:预测器如何设计?即:如何计算n一般用前m个象素(上一行、前一列等)的线性组合来进行预测:m是线性预测器的阶,是预测系数,round是舍入函数。n表示的是象素的空间坐标。五、无损预测编码n1-D线性预测:n2-D线性预测:是图像从左到右,从上到下进行扫描时所扫描到的先前m个象素的函数。五、无损预测编码举例举例n最简单的1-D线性预测器:前值预测器 对应的编码方法称为 差分编码或前值编码 n最简单的2-D线性预测器:6.3 有有损压缩算法损压缩算法 n行程编码、Huffman编码等无损压缩方式的设计思想是基于对信息的表述方法的改变,可以在一定程度上压缩数据量,但是一定有一个极限。n为进一步提高压缩比,可以根据人眼的视觉特性,通过消除视觉冗余,在接收方不产生误解的前提下进行一定的信息丢失,来实现压缩。一、量化n将图像用较少的灰度级别来表示。这是一种最简单的减小数据量的方法。量化又可以分为:均匀量化和非均匀量化均匀量化和非均匀量化 1、均匀量化n采用相等的量化间隔对采样得到的信号作量化。均匀量化就是采用相同的“等分尺”来度量采样得到的幅度,也称为线性量化,如图所示。量化后的样本值Y和原始值X的差E=Y-X称为量化误差或量化噪声。1、均匀 量化n为了用尽可能少的位数,得到尽可能髙的量化质量,通常采用非均匀量化的方法,这种方法也叫做非线性量化。2、非均匀 量化n非均匀量化的基本想法是,对输入信号进行量化时,不同的输入信号采用不同的量化间隔。如图所示,这样就可以在满足精度要求的情况下用较少的位数来表示。二、有损预测编码n基本思想:在无损预测编码的基础上加了一个量化器,通过对预测误差进行量化,进一步压缩数据量。二、有损预测编码n差分脉冲编码调制DPCM(d differential p pulse c code m modulation)量化器位于预测误差和符号编码器之间,取代无损编码器中的整数舍入模块,将预测误差映射到有限个输出 中,的多少、大小就确定了有损预测编码中的压缩量和失真量二、有损预测编码n预测器取最简单的预测器,即n 取作两级,即:可以构成所谓的Delta调制编码(DM)。由DM方法得到的码率是:1bit/象素。图像处理和分析(章毓晋)p308页(老版P161)给出了DM编码的一个例子。二、有损预测编码问题问题n斜率过载现象:在图像变化比较剧烈时,DM编码可能产生斜率过载现象,预测值总小于实际值,输出跟不上输入的变化,使原陡峭的边沿轮廓变为平滑的轮廓。使图像边缘轮廓变模糊或者产生纹理。n边沿忙乱:在电视图像的DPCM中会出现这种情况。因为不同帧在同一象元位置上的量化噪声可不同,因此边沿呈现闪烁或跳动。二、有损预测编码问题问题n颗粒噪声:在图像灰度变化平缓的区域,恢复的图像会呈现“颗粒噪声”。这是因为灰度变化平缓,量化器的输出总是在小输出电平附近来回摆动,而视觉系统对这些区域的噪声特别敏感。n伪轮廓:如通常的量化一样,量化间隔太大,对于缓慢变化的边缘就会产生等高线一样的图形,叠加在图像上形成轮廓噪声。n以上四种噪声的解决办法:采用自适应量化,即量化间隔随信号变化的陡、缓而自己调节。6.4 变换编码1 1变换编码系统变换编码系统 前述编码都是对象素直接在空域实现的。压缩比一般较小。变换编码前述编码都是对象素直接在空域实现的。压缩比一般较小。变换编码的基本思路:的基本思路:用可逆线性变换将图像映射成一组变换系数,然后将系用可逆线性变换将图像映射成一组变换系数,然后将系数量化和编码。数量化和编码。一个典型的变换编码系统框图如下:一个典型的变换编码系统框图如下:正变换量化编码压缩图像符号解码反变换合并子图像压缩图像还原图像6.4 变换编码1 1变换编码系统变换编码系统 一般采用正交变换,正交变换具有去相关和能量集中特性,因此经过正交变换之后,可以解除图像内部图像的相关性或将尽可能多的信息集中到尽可能少的变换系数上,此后进行量化时,对携带信息较多的变换系数,采用较小的间隔进行量化,而对携带信息较少的变化系数,进行粗量化甚至完全忽略。变换本身并不能压缩数据,压缩是在量化变换系数时取得的。6.4 变换编码2 2变换的选择变换的选择 许多图像变换都可用于变换编码。但针对给定的编码应用,如何选择变换取决于可允许的重建误差和计算要求。变换具有将能量或信息集中于某些变换系数的能力。通常一个能把最多的信息集中到最少系数上去的变换所产生的重建误差最小。DCT比DFT有更强的能量集中能力。理论上,KLT是所有变换中信息集中能力最强的变换。从信息集中能力和计算复杂性综合考虑,DCT变换最优。6.4 变换编码3 3子图像尺寸选择子图像尺寸选择 子图像大小也是影响变换编码误差和计算复杂度的一个重要因素。在多数情况下,子图像大小应满足如下两个条件:相邻子图像之间的相关较少到某个可接受的水平;子图像的长和宽都是2的整数次幂(简化计算)。一般压缩量与计算复杂度都随子图像大小的增加而增加。最常用的子图像大小为:88 1616 变换编码重建误差与子图像之间的关系,见图像处理和分析(章毓晋)P169页(新版P315)图6.5.26.4 变换编码4 4比特分配比特分配 对变换系数如何处理(考虑丢掉那些变换系数、如何量化和编码等)。在多数变换编码中,保留的系数根据如下两种原则之一来选择确定:最大方差准则,称为分区编码;最大幅度准则,称为阈值编码。对整个子图像的系数截断、量化和编码的全过程称为比特分配。6.4 变换编码n分区编码分区编码 基础是信息论中的不确定性原理。具有最大方差的变换系数带有最多的图像信息,它们应当保留在编码过程中。分区编码对所有子图像采用同一模板,1表示保留的系数、0表示去掉的系数。6.4 变换编码n分区编码分区编码 1111000011100000110000001000000000000000000000000000000000000000对分区采样后保留的系数进行量化、编码。这样,分区模块中的每个象素可以用对每个系数编码所需的比特数表示。6.4 变换编码n分区编码分区编码 一般有两种分配策略:1)各系数分配相同的比特 2)给不同的系数分别分 配几种固定数量的比特 (右图)。87650000765000006500000050000000000000000000000000000000000000006.4 变换编码n分区编码分区编码 优点:(优点:(1 1)压缩比高)压缩比高 (2 2)视觉感觉好)视觉感觉好 缺点:缺点:计算复杂。计算复杂。6.4 变换编码n阈值编码阈值编码分区编码所有子图像使用一个固定的模板。而阈值编码本质上是自适应的,可以做到为各个子图像保留的变换系数随子图像的不同而不同,因此是一种自适应变换编码方法。在编码时,通常给出一个阈值模板,利用模板中的阈值对图像变换系数进行量化。6.4 变换编码 取阈值模板处理后结果取阈值模板处理后结果 Z Z字形编码字形编码n用用Z Z字形扫描得到字形扫描得到nnnn的的1-D1-D序列,用游长编码序列,用游长编码110100001110000010100000110000000000000001000000000000000000000001561415272824713162629423812172530414391118243140445310192332394552542022333846515560213437475056596135364849575862636.4 变换编码n对变换子图像取阈值的方法有三种:1.所有子所有子图图像用一个全局像用一个全局阈值阈值 2.2.各个子各个子图图像分像分别别用不同的用不同的阈值阈值 3.3.根据子根据子图图像中各个系数的位置像中各个系数的位置选选取取阈值阈值。6.5 混合编码n混合编码实现的可能性及有效性:回顾一下讲过的几个内容的特点1.行程编码:擅长于重复数字的压缩。2.Huffman编码:擅长于像素个数不同的编码。3.变换编码:擅长将高频部分分离出来。6.5 混合编码n例:aaaa bbb cc d eeeee fffffff (共228=176 bits)4 3 2 1 5 7 行程编码:4a3b2c1d5e7f (共6(38)=66Bits)176 666.5 混合编码 aaaa bbb cc d eeeee fffffff (共22*8=176 bits)4 3 2 1 5 7 Huffman编码:f=11 e=01 a=00 b=101 c=1001 d=1000 0000000000101101101100110011000010101010111111111111111 (共 7*2+5*2+4*2+3*3+2*4+1*4=53 bits)176 66 536.5 混合编码aaaa bbb cc d eeeee fffffff (共22*8=176 bits)4 3 2 1 5 7 Hufman与行程编码混合:40031012100111000501711(共:3+2+3+3+3+4+3+4+3+2+3+2=35 bits)176 66 53 356.6 国际标准简介n一、二值图像压缩标准1G3G3和和G4G4码码 CCITT的两个小组负责指定的。G3码:自适应、1D游长编码技术,或者每组N行(N2、4)扫描线中的后N-1行用2-D游长编码。13:1 G4码:G3码的简化版,只使用2-D编码。26:12JBIG JBIG 1991年由G3、G4组联合制定的。采用了一种自适应技术提高对半调灰度图像的压缩比。6.6 国际标准简介n二、静止图像压缩标准1 1.JPEGJPEG压缩编码标压缩编码标准算法准算法 2.2.JPEG2000JPEG2000 2000年推出的,利用小波变换的一种变换编码方法。6.6 国际标准简介n三、序列图像压缩标准 H.261 H.261 H.263 H.263 H.264 H.264 MPEG MPEGI I MPEG MPEGII II MPEG4 MPEG4 MPEG7MPEG7 6.7 JPEG压缩算法n一、算法概要6.7 JPEG压缩算法nJPEG算法与彩色空间无关,因此“RGB到YUV变换”和“YUV到RGB变换”不包含在JPEG算法中。JPEG算法处理的彩色图像是单独的彩色分量图像,因此它可以压缩来自不同彩色空间的数据,如RGB,YCbCr和CMYK。6.7 JPEG压缩算法n二、JPEG算法的主要计算步骤算法的主要计算步骤 1、图像分块。2、FDCT变换。3、量化(quantization)。4、Z字形扫描(zigzag scan)。6.7 JPEG压缩算法n二、JPEG算法的主要计算步骤算法的主要计算步骤 5、使用差分脉冲编码调制DPCM(d differential p pulse c code m modulation)对直流系数(DC)进行编码。6、使用行程长度编码RLE(r run-l length e encoding)对交流系数(AC)进行编码。7、熵编码(entropy coding)。8、组成位数据流6.7 JPEG压缩算法v1 1、图像分块。、图像分块。对每个单独的彩色图像分量,把整个分量图像分成88的图像块。v2 2、FDCTFDCT变换变换。将每个88的图像块作为二维离散余弦变换DCT的输入。通过DCT变换,把能量集中在少数几个系数上。6.7 JPEG压缩算法v3 3、量化、量化(quantization(quantization)目的:对经过FDCT变换后的频率系数进行量化,减小非“0”系数的幅度以及增加“0”值系数的数目。量化是图像质量下降的最主要原因。对于有损压缩算法,JPEG算法使用均匀量化器进行量化,量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。由于人眼对亮度信号比对色差信号更敏感,因此JPEG使用了两种量化表:6.7 JPEG压缩算法v3 3、量化、量化(quantization(quantization)表表1 1 色度量化色度量化值值(U U、V V)表表2 2 亮度量化亮度量化值值(Y Y)6.7 JPEG压缩算法v4 4、Z Z字形扫描字形扫描(zigzag scan)(zigzag scan)。目的:是为了增加连续的“0”系数的个数,就是“0”的游程长度。把一个8 8的矩阵变成一个1 64的矢量,频率较低的系数放在矢量的顶部。6.7 JPEG压缩算法n5 5、直流系数的编码、直流系数的编码 8 8图像块经过DCT变换之后得到的DC直流系数有两个特点:一是系数的数值比较大,二是相邻8 8图像块的DC系数值变化不大。根据这个特点,JPEG算法使用了差分脉冲调制编码DCPM(d differential p pulse c code m modulation)技术,对相邻图像块之间量化DC系数的差值(Delta)进行编码,DeltaDC(0,0)k-DC(0,0)k-1.6.7 JPEG压缩算法n6 6、交流系数的编码、交流系数的编码 量化AC系数的特点是164矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码RLE(r run l length e encode)对它们进行编码。6.7 JPEG压缩算法n6 6、交流系数的编码、交流系数的编码 JPEG使用了1个字节的高4位来表示连续“0”的个数,而使用它的低4位来表示编码下一个非“0”系数所需要的位数,跟在它后面的是量化AC系数的数值。Bits 7 6 5 4 3 2 1 03 2 1 0 后续数 连续0的个数 非非0 0数数bitbit数数 非0系数值 (015个)(015015位)位)6.7 JPEG压缩算法n7 7、熵编码、熵编码 目的:目的:对DCPM编码后的直流DC系数和RLE编码后的交流AC系数作进一步的压缩。在JPEG有损压缩算法中,使用哈夫曼编码器来减少熵。使用哈夫曼编码器的理由是可以使用很简单的查表(lookup table)方法进行编码。6.7JPEG压缩算法n8、组成位数据流 JPEG编码的最后一个步骤是把各种标记代码和编码后的图像数据组成一帧一帧的数据,这样做的目的是为了便于传输、存储和译码器进行译码,这样的组织的数据通常称为JPEG位数据流(JPEG bitstream)。JPEG压缩编码示例原图JPEG 100:1400:1600:1