1、第四章 小波与小波变换,19:42,1,新一代静态图像压缩标准-JPEG2000 JPEG所具有的优良品质,使它获得极大的成功。然而,随着多媒体应用领域的激增,传统JPEG压缩技术也存在着许多不足,无法满足人们对多媒体图像资料的要求。离散余弦变换将图像压缩为88 的小块,然后依次放入文件中,这种算法靠丢弃频率信息实现压缩,因而图像的压缩率越高,频率信息被丢弃的越多。在极端情况下,JPEG图像只保留了反映图像外貌的基本信息,精细的图像细节都损失了。 JPEG 2000 与传统 JPEG 最大的不同,在于它放弃了 JPEG 所采用的以离散余弦变换(Discrete Cosine Transform
2、) 为主的区块编码方式,而改采以小波变换(Wavelet transform) 为主的解析编码方式。,19:42,2,JPEG2000 主要有以下特点 高压缩率 JPEG2000压缩性能比JPEG提高了30%50%,也就是说,在同样的图像质量下,JPEG2000可以使图像文件的大小比JPEG图像文件小30%50%。同时,使用JPEG2000的系统稳定性好,运行平稳,抗干扰性好,易于操作。 同时支持有损和无损压缩 JPEG只支持有损压缩,而JPEG2000能支持无损压缩。在实际应用中,诸如卫星遥感图像、医学图像、文物照片等重要的图像都非常适合于采用JPEG2000压缩。,19:42,3,实现了渐
3、进传输 渐进传输(Progressive Transmission)是指可以先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图像由朦胧到清晰显示,而不必像现在的 JPEG 那样,由上到下慢慢显示,这在网络传输中有重大意义。 支持“感兴趣区域” 用户可以任意指定图像上感兴趣区域(Region of Interest)的压缩质量,还可以选择指定的部分先解压缩,从而使重点突出。这种方法的优点在于它结合了接收方对压缩的主观需求,实现了交互式压缩。 由于 JPEG2000采用的是小波变换算法,它所产生的压缩图像比JPEG图像更细腻、更逼真。而它所采用的新的文件格式也更利于对图像进行数字化处理。,
4、19:42,4,源图像,小波压缩后重构的图像(压缩比: 22:1),19:42,5,由于小波分析克服了Fourier分析的许多弱点,因此它不仅可以用于图像压缩,还可以用于许多其他领域,如信号分析、静态图像识别、计算机视觉、声音压缩与合成、视频图像分析、CT成像、地震勘探和分形力学等领域。总之,可以说凡能用Fourier分析的地方,都可以进行小波分析。小波分析应用前景十分广阔。,19:42,6,小波介绍-小波简史1,1909 年哈尔(Alfred Haar)发现了小波,并命名为哈尔小波(Haar wavelets),他最早发现和使用了小波。 20 世纪70 年代,当时在法国石油公司工作的年轻的地
5、球物理学家Jean Morlet 提出了小波变换WT(wavelet transform)的概念。 法国的科学家Y.Meyer于1986 年创造性地构造出具有一定衰减性的光滑函数,他用缩放(dilations)与平移(translations)均为2 j ( j =0 的整数)的倍数构造了L2(R) 空间的规范正交基,使小波得到真正的发展。,19:42,7,小波介绍-小波简史2,法国的科学家Stephane Mallat 在构造正交小波基时提出了多分辨率的概念,从空间上形象地说明了小波的多分辨率的特性,在1988 年提出了正交小波的构造方法和快速算法,叫做Mallat 算法。该算法统一了在此之
6、前构造正交小波基的所有方法,它的地位相当于快速傅立叶变换在经典傅立叶分析中的地位。 Inrid Daubechies,Ronald Coifman 和Victor Wickerhauser 等著名科学家把这个小波理论引入到工程应用方面做出了极其重要的贡献。例如,Inrid Daubechies 于1988 年最先揭示了小波变换和滤波器组(filter banks)之间的内在关系,使离散小波分析变成为现实。在信号处理中,自从S.Mallat 和Inrid Daubechies 发现滤波器组与小波基函数有密切关系之后,小波在信号(如声音信号,图像信号等)处理中得到极其广泛的应用。,19:42,8,
7、小波概念,小波是定义在有限间隔而且其平均值为零的一种函数,它的波形如图所示,小波与正弦波,19:42,9,与正弦波相比,小波具有有限的持续时间和突变的频率和振幅,波形可以是不规则的,也可以是不对称的,在整个时间范围里的幅度平均值为零。 而正弦波和余弦波具有无限的持续时间,它可从负无穷扩展到正无穷,波形是平滑的,它的振幅和频率也是恒定的。,19:42,10,小波分析,信号分析一般是为了获得时间和频率域之间的相互关系。傅立叶变换提供了有关频率域的信息,但时间方面的局部化信息却基本丢失。 与傅立叶变换不同,小波变换通过平移母小波(mother wavelet)可获得信号的时间信息,而通过缩放小波的宽
8、度(或者叫做尺度)可获得信号的频率特性。对母小波的缩放和平移操作是为了计算小波的系数,这些系数代表小波和局部信号之间的相互关系,19:42,11,连续小波变换,从小波和正弦波的形状可以看出,变化剧烈的信号,用不规则的小波进行分析比用平滑的正弦波更好,即用小波更能描述信号的局部特征。,正弦波和小波 (a) 正弦波曲线; (b) 小波曲线,19:42,12,连续小波变换(Continuous Wavelet Transform, CWT)用下式表示:,表示小波变换是信号f(x)与被缩放和平移的小波函数()之积在信号存在的整个期间里求和的结果。CWT的变换结果是许多小波系数C,这些系数是缩放因子(s
9、cale)和平移(position)的函数。,19:42,13,基本小波函数()的缩放和平移操作含义如下: (1) 缩放。简单地讲, 缩放就是压缩或伸展基本小波, 缩放系数越小, 则小波越窄,如图所示。,小波的缩放操作,19:42,14,(2) 平移。简单地讲,平移就是小波的延迟或超前。在数学上, 函数f(t)延迟k的表达式为f(t-k),如图所示。,小波的平移操作 (a) 小波函数(t); (b) 位移后的小波函数(t-k),19:42,15,CWT计算主要有如下五个步骤: 步骤1:把小波 (t) 和原始信号f (t) 的开始部分进行比较。 步骤2:计算系数C。该系数表示该部分信号与小波的近
10、似程度。 系数C 的值越高表示信号与小波越相似。 步骤3:把小波向右移,距离为k,得到的小波函数为(t-k),然后重复步骤1和2;再把小波向右移,得到小波 (t- 2k),重复步骤1 和2。按上述步骤一直进行下去,直到信号f (t) 结束。 步骤4:扩展小波(t),例如扩展一倍,得到的小波函数为(t /2)。 步骤5: 重复步骤14。,19:42,16,连续小波变换的过程,19:42,17,小波的缩放因子与信号频率之间的关系是:缩放因子scale越小,表示小波越窄,度量的是信号的细节变化,表示信号频率越高;缩放因子scale越大, 表示小波越宽,度量的是信号的粗糙程度,表示信号频率越低。,19
11、:42,18,连续小波变换分析,(b) 三维图,(a) 二维图,19:42,19,离散小波变换,为了解决计算量的问题,缩放因子和平移参数都选择2 j ( j 0 的整数)的倍数。使用这样的缩放因子和平移参数的小波变换叫做双尺度小波变换(dyadic wavelet transform),它是离散小波变换(discrete wavelet transform,DWT)的一种形式。通常离散小波变换就是指双尺度小波变换。,19:42,20,离散小波变换分析图,使用离散小波分析得到的小波系数、缩放因子和时间关系如图所示。 图(a)是20 世纪40 年代使用Gabor 开发的短时傅立叶变换(short
12、time Fourier transform,STFT)得到的时间-频率关系图 图(b)是20 世纪80 年代使用Morlet 开发的小波变换得到的时间-缩放因子(反映频率)关系图。,19:42,21,用滤波器执行离散小波变换,执行离散小波变换的有效方法是使用滤波器, 该方法是Mallat于1988年提出的,称为Mallat算法。这种方法实际上是一种信号分解的方法, 在数字信号处理中常称为双通道子带编码。,19:42,22,双通道滤波过程,用滤波器执行离散小波变换的概念如图所示。 S表示原始的输入信号, 通过两个互补的滤波器组 其中一个滤波器为低通滤波器,通过该滤波器可得到信号的近似值A(Ap
13、proximations) 另一个为高通滤波器, 通过该滤波器可得到信号的细节值D(Detail)。,19:42,23,在小波分析中,近似值是大的缩放因子计算的系数,表示信号的低频分量,而细节值是小的缩放因子计算的系数,表示信号的高频分量。 实际应用中,信号的低频分量往往是最重要的,而高频分量只起一个修饰的作用。如同一个人的声音一样, 把高频分量去掉后,听起来声音会发生改变,但还能听出说的是什么内容,但如果把低频分量删除后,就会什么内容也听不出来了。,19:42,24,小波分解树,离散小波变换可以被表示成由低通滤波器和高通滤波器组成的一棵树。 原始信号通过这样的一对滤波器进行的分解叫做一级分解
14、。 信号的分解过程可以叠代,也就是说可进行多级分解。 如果对信号的高频分量不再分解,而对低频分量连续进行分解,就得到许多分辨率较低的低频分量,形成一棵比较大的树。这种树叫做小波分解树(wavelet decomposition tree) 分解级数的多少取决于要被分析的数据和用户的需要。,19:42,25,小波分解树 (a) 信号分解; (b) 系数结构; (c)小波分解树,19:42,26,如果不仅对信号的低频分量连续进行分解,而且对高频分量也进行连续分解,这样不仅可得到许多分辨率较低的低频分量,而且也可得到许多分辨率较低的高频分量。这样分解得到的树叫做小波包分解树(wavelet pack
15、et decomposition tree),这种树是一个完整的二进制树。小波包分解方法是小波分解的一般化,可为信号分析提供更丰富和更详细的信息。 例如,小波包分解树允许信号S 表示为S=A1 + AAD3 + DAD3 + DD2,三级小波包分解树,19:42,27,小波定义,在数学上,小波定义为对给定函数局部化的函数。小波可由一个定义在有限区间的函数(x)来构造,(x)称为母小波(mother wavelet)或者叫做基本小波。一组小波基函数,a,b (x) ,可通过缩放和平移基本小波(x)来生成,,其中,a为进行缩放的缩放参数,反映特定基函数的宽度(或者叫做尺度);b为进行平移的平移参数
16、,指定沿x 轴平移的位置。,19:42,28,当a = 2 j 和b= ia 的情况下,一维小波基函数序列定义为其中, i 为平移参数, j 为缩放因子。函数f (x)以小波(x)为基的连续小波变换定义为函数f (x)和a,b(x) 的内积,,19:42,29,哈尔基函数,基函数是一组线性无关的函数,可以用来构造任意给定的信号,例如用基函数的加权和表示。最简单的基函数是哈尔基函数(Haar basis function)。哈尔基函数在1909 年提出,它是由一组分段常值函数(piecewise-constant function)组成的函数集。这个函数集定义在半开区间0,1) 上,每一个分段常
17、值函数的数值在一个小范围里是“1”,其他地方为“0”,19:42,30,如果一幅图像仅由20 =1 个像素组成,这幅图像在整个0,1) 区间中就是一个常值函数。用 表示这个常值函数,用V0 表示由这个常值函数生成的矢量空间,即,它的波形如图所示,这个常值函数也叫做框函数(box function),它是构成矢量空间V0 的基。,19:42,31,如果一幅图像由21 =2 个像素组成,这幅图像在整个0,1)区间中有两个等间隔的子区间:0,1/2) 和1/2,1) ,每一个区间中各有1 个常值函数,分别用 和 表示。 用V1 表示由2个子区间中的常值函数生成的矢量空间,即,它的波形如图所示,这2个
18、常值函数就是构成矢量空间V1的基。,19:42,32,它的波形如图所示,这4个常值函数就是构成矢量空间V2的基。,如果一幅图像由22 =4 个像素组成,这幅图像在整个0,1)区间中有4个等间隔的子区间:0,1/4),1/4,1/2),1/2,3/4)和3/4,1),每一个区间中各有1 个常值函数,分别用 和 表示。 用V2 表示由4个子区间中的常值函数生成的矢量空间,即,19:42,33,为了表示矢量空间中的矢量,每一个矢量空间Vj 都需要定义一个基(basis)。为生成矢量空间V j 而定义的基函数也叫做尺度函数(scaling function),这种函数通常用符号 表示。哈尔基函数定义为
19、,哈尔基尺度函数 定义为,其中,j为尺度因子,改变j使函数图形缩小或者放大;i为平移参数,改变i使函数沿x轴方向平移。 空间矢量 定义为,其中,sp 表示线性生成(linear span),19:42,34,矢量,欧几里德空间(Euclidean Space)中矢量是有限维的希尔伯特空间(Hilbert Space)中矢量是无限维的,可用函数表达式来表达。,哈尔小波函数,小波函数通常用 表示。与框函数相对应的小波称为基本哈尔小波函数(Haar wavelet functions),并由下式定义:,哈尔小波尺度函数 定义为,用小波函数构成的矢量空间用 表示,其中,sp表示线性生成;j为尺度因子,
20、改变j使函数图形缩小或者放大;i为平移参数,改变i使函数沿x轴方向平移。,19:42,36,根据哈尔小波函数的定义,可以写出生成W0 ,W1 和W2 等矢量空间的小波函数。 生成矢量空间W0 的哈尔小波:,它的波形如图所示。,19:42,37,生成矢量空间W1 的哈尔小波:,它的波形如图所示。,19:42,38,生成矢量空间W2 的哈尔小波:,它的波形如图所示。,19:42,39,函数的规范化,在小波变换中,有时要对基函数和小波函数进行规范化(normalization)。在半开区间0,1) 中,如果函数的内积,则称 和 是规范化的函数。哈尔基和哈尔小波分别使用下面两个式子进行规范化,,其中,
21、常数因子2 j / 2 用来满足标准内积(inner product)等于1 的条件。,19:42,40,哈尔基的结构,使用哈尔基函数 和哈尔小波函数 生成的矢量空间V j 和W j 具有下面的性质,,其中,符号“ ”表示直和。这就是说,在矢量空间V j +1 中,根据所选择的内积,生成矢量空间W j 的所有函数与生成矢量空间V j 的所有函数都是正交的,即子空间W j 是子空间V j 的正交补(orthogonal complement),(1),19:42,41,哈尔小波变换-求有限信号的均值和方差,小波变换的基本思想是用一组小波函数或者基函数表示一个函数或者信号,例如图像信号。 例1假设
22、有一幅分辨率只有4 个像素p0 , p1 , p2 , p3 的一维图像,对应的像素值或者叫做图像位置的系数分别为:9 7 3 5,计算它的哈尔小波变换系数。 步骤1:求均值(averaging)。计算相邻像素对的平均值,得到一幅分辨率比较低的新图像,新的图像的分辨率是原来的1/2,相应的像素值为:8 4 步骤2:求差值(differencing)。用2 个像素表示这幅图像时,图像的信息已经部分丢失,需要存储一些图像的细节系数(detail coefficient),以便在重构时找回丢失的信息。方法是使用这个像素对的差值除以2(也等于第一个像素值减去均值),存储这个细节系数就可以恢复后2 个像
23、素值。原始图像就可以用下面的两个平均值和两个细节系数表示,8 4 1 -1 步骤3:重复第1,2 步,把由第一步分解得到的图像进一步分解成分辨率更低的图像和细节系数。在这个例子中,就用一个像素的平均值6 和三个细节系数2,1 和-1 表示整幅图像。6 2 1 -1,19:42,42,分解过程如表所示,19:42,43,由此可见,通过上述分解就把由4 像素组成的一幅图像用一个平均像素值和三个细节系数表示,这个过程就叫做哈尔小波变换(Haar wavelet transform),也称哈尔小波分解(Haar wavelet decomposition)。这个概念可以推广到使用其他小波基的变换。 在
24、这个例子中我们可以看到, 变换过程中没有丢失信息,因为能够从所记录的数据中重构出原始图像。 对这个给定的变换,我们可以从所记录的数据中重构出各种分辨率的图像。例如,在分辨率为2i 的图像基础上重构出分辨率为2i+1 的图像 通过变换之后产生的细节系数的幅度值比较小,这就为图像压缩提供了一种途径,例如去掉一些微不足道的细节系数而不影响对重构图像的理解。,19:42,44,哈尔小波变换,求均值和差值的过程实际上就是一维小波变换的过程,现在用数学方法重新描述小波变换的过程。 (1) 用V2 中的哈尔基表示 图像I(x)9 7 3 5有2j=22=4像素,因此可以用生成矢量空间V2 中的框基函数的线性
25、组合表示,,其中的系数 是4 个正交的像素值9 7 3 5,因此,,19:42,45,用图形可表示为,19:42,46,(2) 用V1和W1 中的函数表示,根据式(1)有,因此,I(x)可表示成,其中,系数 是分辨率为2 时的像素平均值, 为细节系数; 是V1中的哈尔基函数, 是W1 中的哈尔小波函数。,19:42,47,用图形可把I(x)表示成,19:42,48,(3) 用V0,W0和W1 中的函数表示,根据式(1)有,I(x)可表示成,其中,4个系数 就是原始图像通过哈尔小波变换所得到的系数,用来表示整幅图像的平均值和不同分辨率下的细节系数。4 个函数 就是构成V2 空间的基。,19:42
26、,49,用图形可表示成,19:42,50,规范化算法,规范化的小波变换与非规范化的小波变换相比,唯一的差别是在规范化的小波变换中需要乘一个规范化的系数。下面用一个例子说明。 例2 对函数f (x)= 2,5,8,9,7,4,-1,-1 作哈尔小波变换。 我们把f (x)看成是矢量空间V3 中的一个向量,尺度因子j = 3,因此最多可分解为3 层,如图所示,19:42,51,分解过程如下。 步骤1:,步骤2:,步骤3:,19:42,52,根据这个例子,我们可以归纳出规范化的哈尔小波变换的一般算法。假设一维阵列C 有h 个元素, h 等于2 的幂,执行一维哈尔小波变换的伪代码如下:,19:42,5
27、3,二维哈尔小波变换,二维小波变换举例 假设有一幅灰度图像,其中的一个图像块用矩阵A表示为:,图像矩阵A 的灰度图,19:42,54,一个图像块是一个二维的数据阵列,进行小波变换时可以对阵列的每一行进行变换,然后对行变换之后的阵列的每一列进行变换,最后对经过变换之后的图像数据阵列进行编码。 1. 求均值与求差值 在图像块矩阵A中,第一行的像素值为,R0: 64 2 3 61 60 6 7 57 步骤1:N0: 33 32 33 32 31 -29 27 -25 步骤2:N1: 32.5 32.5 0.5 0.5 31 -29 27 -25 步骤3: N1: 32.5 0 0.5 0.5 31
28、-29 27 -25,19:42,55,2. 图像矩阵的计算 使用求均值和求差值的方法,对矩阵的每一行进行计算,得到,,其中,每一行的第一个元素是该行像素值的平均值,其余的是这行的细节系数。,19:42,56,使用同样的方法,对AR的每一列进行计算,得到,,其中,左上角的元素表示整个图像块的像素值的平均值,其余是该图像块的细节系数。,19:42,57,如果从矩阵中去掉表示图像的某些细节系数,事实证明重构的图像质量仍然可以接受。具体做法是设置一个阈值d ,例如d=5的细节系数就把它当作“0”看待,这样经过变换之后的矩阵ARC 就变成,,19:42,58,对 矩阵进行逆变换,得到了重构的近似矩阵,
29、,19:42,59,19:42,60,3. 使用线性代数由于图像可用矩阵表示,使用三个矩阵M1,M2和M3 同样可以对矩阵A进行求平均值和求差值。这三个矩阵分别是第一、第二和第三次分解图像时所构成的矩阵。现以矩阵A的第一行的数据为例,,19:42,61,步骤1: 使用M1计算,19:42,62,步骤2: 使用M2计算,19:42,63,步骤3: 使用M3 计算,19:42,64,为简化计算,可把三个矩阵相乘之后再计算。三个矩阵相乘的结果为,,19:42,65,如果使用规格化的小波进行计算,则,19:42,66,以上计算哈尔小波正变换的步骤就简化成,,计算哈尔小波的逆变换简化为,,19:42,6
30、7,图像压缩,图像的分辨率为256256,像素数目为65 536,计算得到的结果如表所示。表中,lena256_org.png 是原始图像,用png 格式存储的文件大小是37 KB。其他是经过哈尔变换之后重构的图像。例如,lena256_00.png 是重构图像,阈值d =0 时,系数为“0”的数目为43887,重构之后的图像用png 格式存储,其文件大小为37 KB。表中的测试数据虽然与图像的属性等因素有关,但从表中看到的趋势具有代表性,即阈值取得越大,“0”的数目就越多,文件所占的空间越小。,19:42,68,19:42,69,图(a)、(b)、(c)和(d)分别表示了在不同阈值下的重构图
31、像。,19:42,70,二维小波变换方法,用小波对图像进行变换有两种方法,一种叫做标准分解(standard decomposition),另一种叫做非标准分解(nonstandard decomposition)。 标准分解方法和非标准分解相比,它们得到的变换结果是完全相同的,只是非标准算法的计算量少可以一些。,19:42,71,标准分解方法是指首先使用一维小波对图像每一行的像素值进行变换,产生每一行像素的平均值和细节系数,然后使用一维小波对这个经过行变换的图像的列进行变换,产生这个图像的平均值和细节系数。标准分解的过程如图所示,19:42,72,非标准分解是指使用一维小波交替地对每一行和每
32、一列像素值进行变换。首先对图像的每一行计算像素对的均值和差值,然后对每一列计算像素对的均值和差值。这样得到的变换结果只有1/4 的像素包含均值,再对这1/4 的均值重复计算行和列的均值和差值,依此类推。,19:42,73,小波图像编码,子带编码,19:42,74,子带编码,子带编码SBC (Subband Coding) 的基本概念是把信号的频率分成几个子带,然后对每个子带分别进行编码,并根据每个子带的重要性分配不同的位数来表示数据。 由于这个优点,20 世纪80 年代中期子带编码开始在图像编码中使用。 1986 年Woods 等人曾经使用一维正交镜像滤波器组QMF (Quadrature M
33、irror Filterbanks) 把信号的频带分解成4 个相等的子带,如图所示。,19:42,75,图(a) 表示分解方法,图(b) 表示其相应的频谱。图中的符号 表示频带降低1/ 2 ,HH 表示频率最高的子带,LL 表示频率最低的子带。这个过程可以重复,直到符合应用要求为止。这样的滤波器组称为分解滤波器树。,Lena 图像的子带编码(1984年),(a)分解法,(b)频谱,19:42,76,多分辨率分析,Mallat 于1988 年在构造正交小波基时提出了多分辨率分析(Multiresolution Analysis) 的概念,从空间上形象地说明了小波的多分辨率的特性,提出了正交小波的
34、构造方法和快速算法,叫做Mallat 算法。 根据Mallat和Meyer 等人的理论,使用一级小波分解方法将原始图像首先分解为粗糙图像和细节图像,19:42,77,如果在一级分解之后继续进行分析,这种分解过程叫做多分辨率分析,实际上就是多级小波分解的概念。使用多级小波分解可以得到更多的分辨率不同的图像,这些图像叫做多分辨率图像(Multiresolution Images) 。在多分辨率分解图像中,粗糙图像1 的分辨率是原始图像的1/ 4 ,粗糙图像2 的分辨率是粗糙图像1的1/ 4 ,等等。,19:42,78,Lena的两种分辨率分析图像 Lena的多分辨率分析图像,19:42,79,小波
35、分解图像方法,使用小波变换把图像分解成各种子带的方法有很多种。例如,均匀分解(uniform decomposition) ,非均匀分解(non - uniform decomposition) ,八带分解(octave - band decomposition) 小波包分解(wavelet - packet decomposition) ,根据不同类型的图像选择不同小波的自适应小波分解(adaptive wavelet decomposition) 等。 其中,八带分解是使用最广泛的一种分解方法,19:42,80,八带分解方法属于非均匀频带分割方法,它把低频部分分解成比较窄的频带,而对每一级
36、分解的高频部分不再进一步分解。如图表示图像的数据分解。,图像的数据分解,(a) 一级分解 (b) 三级分解,(c) Lena三级分解图,19:42,81,近年来,基于小波变换发展起来的图像编码有嵌入式零树小波编码EZW(Embedded Zerotree Wavelet)及在EZW算法基础上改进的层树分级编码SPIHT(Set Parition In HierarchicalTrees)和最佳截断嵌入码块编码EBCOT(Embedded Block Coding with Optimized Truncation)等。 ISO/IEC JTC1 SC29小组制定的JPEG2000静态图像编码标
37、准中的图像变换技术就采用了离散小波变换,这些编码的最大特点是在不丢失重要信息的同时, 能以较高的比率压缩图像数据, 并且其算法计算量小。,19:42,82,EZW编码,1992 年Lewis 和Knowles 首先介绍了一种树形数据结构来表示小波变换的系数。 1993 年Shapiro 把这种树形数据结构叫做“零树(Zerotree) ”,并且开发了一个效率很高的算法用于熵编码,他的这种算法叫做嵌入式零树小波EZW(embedded zerotree wavelet) 算法 EZW主要用于与小波变换有关的二维信号的编码,但不局限于二维信号。,19:42,83,嵌入式零树小波,嵌入式零树小波中的
38、“小波”是指该算法以离散小波变换为基础,以大的小波变换系数比小的小波变换系数更重要,以及高频子带中的小系数可以被抛弃的事实为背景。 “零树”是指小波变换系数之间的一种数据结构,因为离散小波变换是一种多分辨率的分解方法,每一级分解都会产生表示图像比较粗糙的低频图像和比较精细的高频图像的小波系数,在同一方向和相同空间位置上的所有小波系数之间的关系可用一棵树的形式表示,如果树根和它的子孙的小波系数的绝对值小于某个给定的阈值T(Threshold) ,那么这棵树就叫做零树。 “嵌入”是渐进编码技术(Progressive Encoding) 的另一种说法,其含义是指一幅图像可以分解成一幅低分辨率图像和
39、分辨率由低到高的表示图像细节的许多子图像,图像合成的过程与分解的过程相反,使用子图像生成许多分辨率不同的图像。,19:42,84,EZW编码指的是,按照用户对图像分辨率的要求,编码器可以进行多次编码,每进行一次编码,阈值降低1/ 2 ,水平和垂直方向上的图像分辨率各提高1 倍。 编码从最低分辨率图像开始扫描,每当遇到幅度大于阈值的正系数就用符号P 表示,幅度的绝对值大于阈值的负系数用符号N 表示,树根节点上的系数幅度小于阈值而树枝中有大于阈值的非零树用符号Z 表示,零树用符号T 表示,19:42,85,小波图像编码的一般结构如图 所示,它主要由小波变换(Wavelet Transform) 、
40、量化(Quantization) 和熵编码(Entropy Encoding) 等3 个模块组成。,19:42,86,小波变换不损失数据,但它是EZW算法具有渐进特性的基础 量化模块对数据会产生损失,数据损失的程度取决于量化阈值的大小,EZW算法指的就是这个模块的算法。它的输出是符号集P , N , T , Z , 0 , 1中的一系列符号 熵编码模块对每个输入数据值精确地确定它的概率,并根据这些概率生成一个合适的代码,使输出的码流(Code Stream) 小于输入的码流。,19:42,87,EZW算法,EZW算法是多分辨率图像的一种编码方法。 对整幅图像编码一次,生成一种分辨率图像,编码一
41、次叫做一遍扫描。 每一遍扫描大致包含3 个步骤:设置阈值、每个小波系数与阈值进行比较、量化系数和重新排序。 在扫描过程中需要维护两种表,一种是小波系数的符号表,另一种是量化表。,19:42,88,零树,回顾二维小波变换的计算过程,不难想象各级子图像中的系数是相关的。在说明零树的概念之前,需要对小波变换得到的系数、名称和符号加以说明。 现以3 级分解的离散小波变换为例,如图表示Lena 图像使用3 级滤波器组做小波变换输出的子图像(Sub Image) 。,三级分解图像,19:42,89,零树,图中的数字1 ,2 和3 表示分解的级数编号 LL3 表示第3 级的低频子图像,在这个例子中,它是分辨
42、率最低的子图像,HL3 表示第3 级分解在水平方向上的子图像,LH3 表示第3 级分解在垂直方向上的子图像,HH3 表示第3 级分解在对角线方向上的子图像,其他的组合符号依此类推。 由于低频子图像的系数要比高频子图像的系数大,零树编码技术就是利用这个事实来设计编码/ 解码过程中每一级使用的量化器。,19:42,90,各级子图像中的系数之间的关系可以用树的形式描述。 如图(a) 所示,最低频率的子图像在左上角,最高频率的子图像在右下角,由同一方向和相同空间位置上的所有小波系数组成一棵树。例如,从第3 级子图像HH3、第2 级子图像HH2 到第1 级子图像HH1的相应位置上的所有系数构成一棵下降树
43、。按箭头所指的方向,各级系数的名称分别用祖系数、父系数、子系数和孙系数来称呼。 如图 (b) 所示。如果把63指定为父系数,3就称为子系数,而4 , 6 , 3 , - 2中的4 个系数就称为孙系数。,(a) 构造方法 (b) 小波系数举例,EZW编码树的构造,19:42,91,假设编码时开始的阈值T0 = 32 ,由于63 比32 大,这样的树叫做非零树,如图(a) 所示。 假设下一次编码时的阈值T1 =16 ,把- 13 当作父系数,它的幅度比16 小,而它的所有4 个子系数的幅度都比16 小,这样的树叫做零树,系数- 13 叫做零树根,如图( b) 所示。 根据以上的分析,零树的定义可概
44、括为一句话:子孙系数都为零的树。定义零树的重要意义在于,如果一棵树是零树,那么这棵树就可以用一个预先定义的符号来代表整棵树,从而提高了压缩比。顺便要指出的是,小波图像系数结构的形式不只是上面介绍的一种,它也可能不是最好的一种。,(a) 非零树例子 (b) 零树例子非零树与零树的概念,19:42,92,EZW算法对小波系数进行编码的次序叫做扫描。扫描子图像系数的方法有两种,一种叫做光栅扫描(Raster Scan) ,另一种叫做迂回扫描(Morton Scan),光栅扫描,迂回扫描,19:42,93,算法描述,1) 阈值T 的选择开始时的阈值T0 通常按下式估算其中,max( . ) 表示最大的
45、系数值, Xi 表示小波变换分解到第i 级时的系数。以后每扫描一次,阈值减少一半。 2) 给系数分配符号使用EZW算法编码图像时每一次扫描需要执行两种扫描,并产生两种输出的符号。 第一种扫描叫做主扫描(Dominant Pass) ,它的任务是把小波系数X 与阈值T 进行比较,然后指定一个符号,我们把这种符号叫做系数符号,对整幅图像扫描之后产生系数符号序列。 第二种扫描叫做辅扫描(Subordinate Pass) ,其任务是对主扫描取出的带有符号P 或者N 的系数进行量化,产生代表对应量化值的符号“0”和“1”,我们把这种符号称为量化符号。,19:42,94,主扫描:扫描每一个系数以产生系数
46、符号。 如果系数幅度大于阈值T 且为正数,输出符号P(Positive) ; 如果系数幅度小于阈值T 且为负数,输出符号N(Negative) ; 如果系数是零树根,输出T(Zerotree) ; 如果系数幅度小于阈值但树中有大于阈值的子孙系数,输出孤立零符号Z( Isolated Zero) 。 为了确定一个系数是否为零树根T 或者是孤立零Z, 需要对整个4 叉树进行扫描, 这样就需要花费时间。此外,为了保护已经被标识为零树的所有系数,需要跟踪它们,这就意味需要存储空间来保存。最后要把绝对值大于阈值的系数取出来,并在图像系数相应的位置上填入一个标记或者零,这样做可防止对它们再编码。,19:4
47、2,95,辅扫描:量化带符号P 和N 的系数。 在量化系数之前要构造量化器。量化器的输入间隔为 Ti - 1 ,2 Ti 1),该间隔被1. 5 Ti - 1分成两个部分: Ti - 1, 1. 5 Ti - 1) 和1. 5 Ti - 1, 2 Ti - 1) ,量化间隔为0. 5 Ti - 1, 其中i 为第i 次编码。量化器的输出为量化符号“0”和“1”,“0”对应量化值为(1. 5 - 0. 25) Ti - 1,“1”对应量化值为(1. 5 + 0. 25) Ti - 1 。 例如,第一次扫描时的阈值T0 = 32 ,量化器的间隔就为32 ,64 ) ,该间隔32 ,64 )被48
48、分成两个相等的部分:32 ,48 )和48 ,64 ) ,量化间隔为16。对系数进行量化时,如果幅度在32 ,48 )的范围里,该系数的量化值为“0”,对应的量化值为(1. 5 - 0. 25) T0 = 40 ;如果幅度在48 ,64 )的范围里,该系数的量化符号为“1”,它的量化值为(1. 5 + 0. 25) T0 = 56。,19:42,96,算法举例,假设有一幅8X8 的图像P,离散小波变换矩阵为W,经过小波变换之后的图像为X=WP,小波图像系数X和扫描方式分别如图所示。图(a)所示数据是经过3级分解的小波图像系数,19:42,97,树结构 最低分辨率子图像(第3级)中的每个系数在高
49、一级分辨率子图像(即第2级)中有3个系数与它有关,它们之间构成的树如图(b)所示。,19:42,98,在其他子图像中,任何一个系数在高一级分辨率子图像中都有4个系数与它有关,它们之间构成的树如图(b)所示,(a) 88子图像小波变换系数 (b) 2级子图像小波变换部分系数树,19:42,99,编码 根据对图像分辨率的要求,编码时可以对小波系数进行多次扫描。 第一次扫描 步骤1:选择初始阈值。最大的系数为63,因此选择T0=32 步骤2:指定系数的符号。D1:PNTTPTTZTTTTTTTPTT 步骤3:量化系数。量化器的间隔:48,64),32,48)。S1:1010,19:42,100,步骤4:排序 步骤5:输出编码信息 给解码器的信息:HEADER(即T0=32), D1:PNTTPTTZTTTTTTTPTT “AND” S1:1010 给下一次扫描用的信息: T0=32,63-P,49-P,34-N,47-P “AND” 子带图像,