第3章图像压缩编码原理图像压缩方法在广义上可以分成两类。一类是无损压缩,又称为可逆编码(ReversibleCoding)。另一类是有损压缩,又称不可逆压缩(Non-ReversibleCoding)。3.1压缩编码基础3.2预测编码3.3正交变换编码3.4统计编码3.5子带编码3.6小波变换编码3.1压缩编码基础图像数据的压缩机理来自两个方面:一是利用图像中存在大量冗余度可供压缩;二是利用人眼的视觉特性。1.(1)在一幅图像中规则的物体和规则的背景具有很强的相关性。(2)电视图像序列中相邻两幅图像之间有较大的相关性。(3)图像从大面积上看常存在有纹理结构,称之为结构冗余。(4)人眼的视觉系统对于图像的感知是非均匀和非线性的,对图像的变化并不都能察觉出来。2.(1)当景物的亮度在背景亮度基础上增加很少时,人眼是辨别不出的,只有当亮度增加到某一数值时,人眼才能感觉其亮度有变化。人眼刚刚能察觉的亮度变化值称为亮度辨别阈值。(2)视觉阈值是指干扰或失真刚好可以被察觉的门限值,低于它就察觉不出来,高于它才看得出来,这是一个统计值。(3)空间分辨力是指对一幅图像相邻像素的灰度和细节的分辨力,视觉对于不同图像内容的分辨力不同。(4)“掩盖效应”是指人眼对图像中量化误差的敏感程度,与图像信号变化的剧烈程度有关。3.根据压缩机理的不同,数据压缩编码方法大致可以分成三类。(1)基于图像信源统计特性的压缩方法,有预测编码、变换编码、矢量量化编码、(2)基于人眼视觉特性的压缩方法,有基于方向滤波的图像编码法和基于图像轮(3)基于图像景物特征的压缩方法,有分形编码法和基于模型的编码方法等。3.2预测编码3.2.1预测编码是根据某一模型利用过去的样值对当前样值进行预测,然后将当前样值的实际值与预测值相减得到一个误差值,只对这一预测误差值进行编码。3.2.21.帧内预测利用图像信号的空间相关性来压缩图像的空间冗余,根据前面已经传送的同一帧内的像素来预测当前像素。2.电视图像在相邻帧之间存在很强的相关性。3.预测系数的选择通常采用最优线性预测法,选择预测系数a1,a2,…,an-1使误差信号en的均方值最小。4.自适应预测又称为非线性预测。可以利用预测误差作为控制信息,因为预测误差的大小反映了图像信号的相关性。3.2.31.由于图像信号在帧内和帧间存在着一定的相关性,预测误差统计特性的一个特点就是它的概率分布集中在0附近的一个较窄的范围内,0值出现的概率最大。随着预测误差绝对值的增大其出现的概率迅速下降,近似的数学模型是Laplace分布,即2.在预测编码中可以采用非均匀量化,非均匀量化特性曲线如图3-6所示。图3-63.2.4图像帧间编码中的运动处理1.在图像的运动处理中主要有两个过程。第一个过程为运动估计(MotionEstimation,ME)。运动估计是对运动物体的位移作出估计,即估计出运动物体从上一帧到当前帧的位移方向和位移量,也就是估计出运动矢量。第二个过程为运动补偿(MotionCompensation,MC)。运动补偿是按照运动矢量将上一帧作位移,求出当前帧的运动结果。2.3.把图像分成若干子块,设子块图像是由N×N个像素组成的像块,并假设一个像块内的所有像素作一致的平移运动。(1)估值块大小(N×N)估值块大小的选择应该综合考虑图像细节构成和计算量等因素。(2)判断两个宏块间最佳匹配准则有很多种。(3)搜索窗口的选择应综合考虑帧间运动位移的可能大小和计算量等因素。(4)快速搜索法可以减少搜索次数。(5)分级搜索则把搜索过程分为粗搜索和细搜索两步来进行,首先对图像进行亚取样得到一个低分辨率的图像,然后再对所得到的低分辨率图像进行全搜索。3.3正交变换编码变换编码(TransformCoding)的基本思想是将在通常的欧几里德几何空间(空间域)描写的图像信号变换到另外的向量空间(变换域)进行描写,然后再根据图像在变换域中系数的特点和人眼的视觉特性进行编码。(1)一般来说图像变换不是对整幅图像一次进行,而是在存储器中把一幅图像分成许多N×N的像块,然后依次将每个方块内的N×N个样点同时送入变换器进行变换运算。(2)变换器把输入的N×N点的像块由原空间域变换到变换域中,映射成同样大小的N×N点的变换系数矩阵,经过变换后的系数矩阵更有利于压缩。(3)量化器用有限个值来表示变换后的系数矩阵,通过量化器舍弃一些小幅度的变换系数。(4)编码器给量化器输出的每一个符号指定一个二进制码字,可以是定长码也可以是变长码。3.3.1正交变换有以下性质。1.可以证明图像在空间域中的数据平方和和图像在变换域中的数据的平方和存在能量守恒关系,即2.能量集中性(EnergyCompaction)大部分正交变换趋向将图像的大部分能量集中到相对少数几个系数上,由于整个能量守恒,因此这意味着许多变换系数只含有很少的能量。3.去相关性(Decorrelation)当输入的像素高度相关时,变换系数趋向于不相关。4.如果把f(x,y)看作是一个具有一定熵值的随机函数,那么变换系数F(u,v)的熵值和原来图像信号f(x,y)的熵值相等。3.3.21.一维DCT2.二维DCT(1)二维DCT一个N×N像块f(x,y)(x,y=0,1,…,N-1)的二维DCT定义为(2)二维变换核函数a(x,y;u,v)按x,y,u,v分别展开后得到的是N×N个N×N点的像块组,又称为基图像。一个8×8的DCT基图像示意如图3-15所示。图3-158×8的DCT基图像示意图3.3.3DCT编码中对图像带来失真的主要原(1)舍去高频系数而使图像产生模糊;(2)对某些系数采用粗量化而产生颗粒(3)像块的划分使相邻像块人为地造成亮度不连续,即块效应。3.4统计编码3.4.11.对于某一离散无记忆信源X的符号集xi(i=1,2,…,N),假设每个符号xi是统计独立的,出现的概率为p(xi),,则符号xi所携带的信息量定义为I(xi)=log2(1/p(xi))2.信息“熵”如果将信源所有可能时间的信息量进行平均,就得到了信源中每个符号的平均信息量,又称为信息的熵,可表示为3.4.2哈夫曼(Huffman)Huffman编码方法就是利用了这个定理,它是一种效率高、方法简单的编码。信源中符号出现的概率相差越大,Huffman编码效果越好。1.Huffman(1)把信源符号xi(i=1,2,…,N)按出现(2)对两个概率最小的符号分别分配以“0”和“1”,然后把这两个概率相加作(3)将这个新的辅助符号与其他符号一(4)跳到第2步,直到出现概率相加为1(5)用线将符号连接起来,从而得到一个码树,树的N个端点对应N个信源符号;(6)从最后一个概率为1的节点开始,沿着到达信源的每个符号,将一路遇到的二进制码“0”或“1”顺序排列起来,就2.Huffman3.Huffman(1)Huffman方法构造出来的码不是惟一的,主要有两个原因:一是在两个符号概率相加给两条支路分配“0”和“1”时,这一选择是任意的;二是当两个消息的概率相等时,0,1分配也是随意的。(2)Huffman编码对不同的信源,其编码效率是不同的。(3)Huffman编码中,没有一个码字是另一个码字的前缀,因此,每个码字惟一可译。3.4.31.在算术编码中,把被编码的信息表示成0到1之间的一个间隔。在传输任何信息之前,信息的完整范围是〔0,1),当一个符号被处理时,区间范围就依据分配给这一符号的那部分范围而变窄。(1)首先对字符号集X中每个单独的符号赋一个0到1之间的子区间,子区间的长度等于该符号的概率,并假设这样的赋值对解码器来说是已知的。(2)读入第一符号a1,设a1是符号集X中的第i个符号,a1=xi(i=1,2,…,N),那么初始子区间定义为[I1,r1)=[pi-1,pi)(3)读入下一个符号,设已经是第n次读入,并设读入的符号an是符号集X中的第i个符号,即an=xi定义新区间为[ln,rn)=[ln-1+pi-1dn-1,ln-1+pidn-1)2.如果解码器也知道这一最后的范围[0.5143876,0.514402),它马上就可以解得第一个字符为x3,因为从各个符号的概率值及其所分配的编码区间范围看,只有x3的编码区间范围能包含[0.5143876,0.514402)。3.算术编码器对整个消息只产生一个码字,这个码字是在间隔[0,1)中的一个实数,因此译码器在接收到表示这个实数的所有位之前不能进行译码。3.5子带编码子带编码的基本思想是利用带通滤波器组将信道频带分割成若干个子频带(Subband),将子频带搬移至零频处进行子带取样,再对每一个子带用一个与其统计特性相适配的编码器进行图像数据压缩。3.5.1子带编码由于其本身具备的频带分解特性,非常适合于分辨率可分多级的视频编码。另外,子带编码还有以下优点。(1)一个子带的编码噪声在解码后只局限于该子带内,不会扩散到其他子带。这样,即使有的子带信号较弱,也不会被其他子带的编码噪声所掩盖。(2)可以根据主观视觉特性,将有限的数码率在各个子带之间合理分配,有利于(3)通过频带分解,各个子带的抽样频率可以成倍下降。3.5.2在子带编码系统中,关键技术是正确实现无失真子带的分解和复原。一个一维2子带编码系统的框图如图3-25所示.图3-25一维2子带编码系统的框图3.6小波变换编码3.6.11.对于函数Ψ(x)∈L2(R),当且仅当其傅立叶变换Φ(ω)满足条件2.3.一个一维函数f(x)的连续小波变换是一个双变量的函数,变量比f(x)多一个。若f(x)是一个二维函数,则它的连续小波变换是3.6.2基于子带编码的快速小波变换下面介绍基于子带编码的快速小波变换(FastWaveletTransform,FWT)。图3-26中,(a)图表示原始图像矩阵,(b)图表示一层分解的小波变换,(c)图表示将低频图像LL小区域再分解的小波变换。图3-26小波分解示意图有了子带编码,我们可以用迭代的方式使用双带子带编码并自底向上地建立小波变换。