您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页小波变换与JPEG 2000编码

小波变换与JPEG 2000编码

来源:爱够旅游网
第10章 小波变换与JPEG 2000编码

虽然基于DCT的JPEG标准的压缩效果已经很不错,但在较高压缩比时会出现明显的马赛克现象,且不能渐进传输。为了适应网络发展的需要,JPEG于2000年底推出了采用DWT (Discrete Wavelet Transform离散小波变换)的JPEG 2000标准。

小波变换是1980年代中期发展起来的一种时频分析方法,比DCT这样的傅立叶变换的性能更优越,被广泛应用于调和分析、语音处理、图像分割、石油勘探和雷达探测等等方面,也被应用于音频、图像和视频的压缩编码。

本章先介绍小波变换的来龙去脉,然后分别介绍连续小波变换、离散小波变换、Haar小波变换和整数小波变换,最后介绍JPEG 2000的编码算法和标准。

10.1 小波变换

小波变换(wavelet transform)是傅立叶变换的发展,中间经历了窗口傅立叶变换。 原始数据一般是时间或空间信号,在时空上有最大分辨率。时空信号经傅立叶变换后得到频率信号,在频域上有最大分辨率,但其本身并不包含时空定位信息。窗口傅立叶变换通过对时空信号进行分段或分块进行时空-频谱分析,但由于其窗口的大小是固定的,不适用于频率波动大的非平稳信号。而小波变换可以根据频率的高低自动调节窗口大小,是一种自适应的时频分析方法,具有多分辨分析功能。

本节先讨论小波变换与(窗口)傅立叶变换的关系,然后依次介绍连续小波变换、离散小波变换、Haar小波变换和第二代小波变换(整数小波变换)。

10.1.1 傅立叶变换与小波变换

傅立叶变换(Fourier transform)是法国科学家Joseph Fourier发表于1822年的他在用无穷三角级数求解热传导偏微分方程时所提出的一种数学方法,它可将时空信号变换成频率信号。

鉴于傅立叶变换不含时空定位信息,(1971年的诺贝尔物理学奖获得者)匈牙利人Dennis Gabor于1946年提出窗口傅立叶变换(window Fourier transform)。可以用于时频分析,但是窗口大小是固定的。

1984年法国的物理学家Jean Morlet和A. Grossman,在进行石油勘(wavelet transform)。

Joseph Fourier

探的地震数据处理分析时,又提出了具有可变窗口的自适应时频分析方法——小波变换

• 2 • 多媒体技术与应用教程

 傅立叶变换

傅立叶变换(Fourier transform)是1807年法国科学家Joseph Fourier在研究热力学问题时所提出来的一种全新的数学方法,当时曾受到数学界的嘲笑与抵制,后来却得到工程技术领域的广泛应用,并成为分析数学的一个分支——傅立叶分析。

原始的多媒体数据一般为时空信号,在时空上有最大分辨率,并可利用时空上的相关性进行数据压缩。Fourier变换可将时空域中的多媒体信号映射到频率域来研究,即更符合人类感觉特征,也可以利用信号在频率域中的冗余进行数据压缩。Fourier变换所得的频率信号,在频率域上有最大分辨率,但其本身并不包含时空定位信息。

时空信号:

f (t), t↔(-∞, ∞) (一维时间信号,参见图10-1)

f (x, y), x, y↔(-∞, ∞) (二维空间信号)

图10-1 音频信号的时间波形图

Fourier变换,F(w)为频率信号:

F(w)f(t)ejwtdt (参见图10-2)

F(u,v)f(x,y)ej(uxvy)dxdy

第10章 小波变换与JPEG 2000编码 • 3 •

图10-2 音频信号的频率图

 窗口傅立叶变换

虽然基于Fourier变换的频谱分析,在需要信号分析及数据处理的物理、电子、化学、生物、医学、军事、语音、图像、视频等众多科学研究与工程技术的广阔领域得到了非常广泛和深入应用,但对既需要频谱分析又要求时空定位的应用,如雷达探测、语音识别、图像处理、地震数据分析等等,Fourier分析技术就显得力不从心了。

为了弥补Fourier变换不能时空定位的不足,工程技术领域长期以来一直采用D.Gabor开发的窗口Fourier变换(短时Fourier变换),来对时空信号进行分段或分块的时空-频谱分析(时频分析)。

窗口Fourier变换:(参见图10-4)

Fg(,w)f(t)g(t)ejwtdt

其中,g为窗口函数(参见图10-3)。

图10-3 音频处理中常用的几种窗口函数

• 4 • 多媒体技术与应用教程

图10-4 音频信号的三维频谱图

虽然窗口Fourier变换能部分解决Fourier变换时空定位问题,但由于窗口的大小是固定的,对频率波动不大的平稳信号还可以,但对音频、图像等突变定信号就成问题了。本来对高频信号应该用较小窗口,以提高分析精度;而对低频信号应该用较大窗口,以避免丢失低频信息;而窗口Fourier变换则不论频率的高低,都统一用同样宽度的窗口来进行变换,所以分析结果的精度不够或效果不好。迫切需要一种更好的时频分析方法。

 小波变换

近二十年来发展起来的小波(wavelet)分析正是这样一种时频分析方法,具有多分辨分析功能,被誉为数学显微镜。它是继一百多年前发明傅立叶分析之后的又一个重大突破,对许多古老的自然学科和新兴的高新技术应用学科都产生了强烈冲击,并迅速应用到图像处理和语音分析等众多领域。

1)函数展开与积分变换

小波分析是傅立叶分析的发展,是分析数学的一个新分枝,高等数学中的微积分(数学分析)就是分析数学的基础。与幂级数、三角级数或傅立叶级数等一样,小波分析研究用一组简单函数,如{xn}、{sin nx, cos nx}等,来表示任意函数,如

f(x)anxn(幂级数)

n0ja0nxnxf(x)ancosbnsincne2n1llnnxl(三角级数/傅立叶级数)

其中

第10章 小波变换与JPEG 2000编码 • 5 • cn11(anjbn), cn(anjbn), ejcosjsin, j1 22被表示的函数的全体构成一个函数空间(一种函数的集合),而表示这些函数的函数族{xn}与{sin nx, cos nx}等则为函数空间的基底。函数展开式中的系数为该函数在函数空间中相对于此基底的坐标,对应于函数空间的一个点。这相当于将函数从原来的域变到新的域,如三角级数将时空域的函数变换到频率域。

为了求得展开式的系数,需要对原函数求微积分,如幂级数中的

f(n)(0)an

n!三角级数中的

1lnx1lnxanf(x)cosdx, bnf(x)sindx

llllll和傅立叶级数中的

j1lcnf(x)ellnxldx

nw,并让l,则得l若f (x)不是以2 l为周期的函数,在上式中改记x为t、Fourier变换:

F(w)f(t)ejwtdt

这是一种复变函数的广义积分,也是一种积分变换。

2)小波的发展

自从近两百年前Joseph Fourier在研究热力学问题提出Fourier分析以后,长期以来许多数学家一直在寻找更广泛函数空间的性能更好的基底函数族,工程技术领域也一直在寻找更好的时频分析方法,但收获甚微。

1984年法国的年轻的地球物理学家Jean Morlet在进行石油勘探的地震数据处理分析时与法国理论物理学家A.Grossman一起提出了小波变换(wavelet transform, WT)的概念并定义了小波函数的伸缩平移系:

1xb, |a|a但并没有受到学术界的重视。直到1986年法国大数学家Yves Meyer构造出平方可积空间L2的规范正交基——二进制伸缩平移系:

• 6 • 多媒体技术与应用教程 jj2j,k(x)2(2xk) 小波才得到数学界的认可。

1987年正在读硕士的Stephane Mallat将自己熟悉的图像处理的塔式算法引入小波分析,提出多分辨分析的概念和构造正交小波的快速算法——Mallat算法。1988年法国女科学家Inrid Daubechies构造出具有紧支集的正交小波基——Daubechies小波。1990年美籍华裔数学家崔锦泰和武汉大学的数学教授王建忠又构造出基于样条函数的单正交小波函数——样条小波。1992年Daubechies在美国费城举行的CBMS-NFN应用数学大会上作了著名的《小波十讲Ten Lectures on Wavelets》报告,掀起了学习与应用小波的高潮。1994年Wim Swelden提出了一种不依赖于Fourier变换的新的小波构造方法——提升模式(lifting scheme),也叫第二代小波或整数小波变换。

3)连续小波变换

连续小波变换(CWT = Continuous wavelet transform)的定义为:

Wf(a,b)1|a|xbf(x)dx

a其中,a为缩放因子(对应于频率信息),b为平移因子(对应于时空信息),(x)为小波函数(又叫基本小波或母小波),(x)表示(x)的复共轭。连续小波变换的过程可参见图10-5。

图10-5 连续小波变换的过程

第10章 小波变换与JPEG 2000编码 • 7 • 小波变换的特点有:(参见图10-6)

 时频局域性、多分辨分析、数学显微镜  自适应窗口滤波:低频宽、高频窄  适用于去噪、滤波、边缘检测等

图10-6 窗口傅立叶变换与小波变换的时频特征

如同三角函数sin x和cos x及e-jx可以缩放构成函数空间的基底{sin nx, cos nx}及{ e-jwx }一样,母小波也可以缩放和平移而构成函数空间的基底:

j1xbj2 j,k(x)2(2xk)及|a|a与傅立叶变换不同,小波变换的结果有两个参数,多了一个可以表示时空位置信息的平移因子,所以其图示为一个二维曲面。图10-7/8是Mallat构造的一组典型数据的曲线及其连续小波变换曲面的二维与三维图示:

图10-7 Mallat数据及其连续小波变换的二维图示

• 8 • 多媒体技术与应用教程

图10-8 Mallat数据及其连续小波变换的三维图示

4)小波函数

小波变换与傅立叶变换比较,它们的变换核不同:傅立叶变换的变换核为固定的虚指数函数(复三角函数)e-jwx,而小波变换的变换核为任意的母小波(x)。前者是固定的,而后者是可选的,实际上母小波有无穷多种,只要(x)满足下列条件即可。

小波函数需满足的条件:

 绝对可积且平方可积,即LL  正负部分相抵,即

12ˆ(0)0) (x)dx0(即2ˆ() 满足允许条件(admissible condition),即d(广义积分收敛)

ˆ()为(x)的傅立叶变换 其中常见的小波函数有:

1, 0x0.5 Haar小波(Alfred Haar,1910年):(x)1, 0.5x1,参见图10-9。

0, 其他第10章 小波变换与JPEG 2000编码 • 9 •

图10-9 Haar小波函数及其Fourier变换

d22 墨西哥草帽(Mexican hat)小波:(x)e,参见图10-10。 2dxx2

图10-10 墨西哥草帽小波函数及其Fourier变换

x22 Morlet小波(Jean Morlet,1984年):(x)ejC xe ,C5,参见图10-11。

图10-11 Morlet小波函数(C=5)及其Fourier变换

除了Haar小波外,其他紧支集小波都不是初等函数,有的小波函数是用导数/积分或微分方程/积分方程来定义,有的小波用其傅立叶变换定义,有的小波甚至没有解析表达式,而只是一些数字解,很多小波为复函数,所以不太直观。

可以把小波与三角函数中正弦波加以比较(参见图10-12)。

• 10 • 多媒体技术与应用教程

图10-12 小波与正弦波

 离散小波变换

将连续小波变换的缩放因子a离散化,得到二进小波变换;再将其平移因子b也离散化,就得到离散小波变换。

1) 二进小波变换与滤波器

为了适应数字信号处理,需要将小波变换离散化。可以先进行缩放因子的离散:若小波函数满足

|ˆ(2kZk)|21,

则称为基本二进小波。

在连续小波变换中,若为基本二进小波,则令a = 2k ,得到二进小波变换:

W2kf(b)12kxbf(x)kdx

2为了构造基本二进小波,可设φ满足:

ˆ()|2||ˆ(2)|jj12

ˆ(0)|21,则φ大体上相当于一个低通滤波器,因此,φ(2x)的通道比φ(x)的宽,可推出|可设φ满足如下的双尺度方程:

(x)2hn(2xn)

nZ其Fourier变换为:

ˆinˆ()H ,其中H()hne22nZˆ(0)|21,可得H(0) = 1 即∑hn = 1。 为低通滤波器。由|若设

第10章 小波变换与JPEG 2000编码 • 11 • |G()|21|H()|2,其中G()gnein

nZ则G为高通滤波器,有

(x)2gn(2xn)

nZ其Fourier变换为:

ˆ ˆ(2)Gˆ(0)|21,得G(0) = 0 即∑gn = 0。 ˆ(0)0且|因例如(B2滤波器),若取φ为二次B样条,则

H()ei21(cos)2(ei33eiei2)

28可得hn = h1- n,h0 = h1 = 3/8 = 0.375,h -1 = h2= 1/8 = 0.125,其余hn = 0;

因G不唯一,可令G()G(),gn = -g1- n,解得-g0 = g1 = 0.5798,-g-1 = g2 = 0.0869,-g-2 = g3 = 0.0061,其余gn=0。

又例如(B3滤波器),若取φ为中心三次B样条,则

H()(cos2)41i2(e4ei64eiei2) 16可得hn = h- n,h0 = 3/8 = 0.375,h -1 = h1= 1/4 = 0.25,h -2 = h2= 1/16 = 0.0625,其余hn = 0;

似上例可得gn = -g- n,-g-1 = g1 = 0.59261,-g-2 = g2 = 0.10872,-g-3 = g3 = 0.00008,其余gn

为0。

2) 离散小波变换

下面再将二进小波变换中的平移因子也离散化:令b = n2k,则可得离散小波变换:

W2kf(n)2k/2f(x)(2kxn)dx

可以用前面所讲的滤波器系数改写成如下循环形式:

W2jf(n)gkS2j1f(n2j1k)kS2jf(n)hkS2j1f(n2kj1k)

其中,S20f(n)f(n),D = Wf为差——高频部分,A = Sf为剩余——低频部分,hk与gk为上面讲过的滤波器H()与G()之系数。

• 12 • 多媒体技术与应用教程 可以写出正反离散小波变换的具体算法如下:  正变换(分解)(保存S2Jf和所有W2jf)

j = 0; S20f(n)f(n); while ( j < J ) {

W2j1f(n)gkS2jf(n2jk)kS2j1f(n)hkS2jf(n2jk)k

j++; }

 逆变换(重构)(利用正变换所保存下来的S2Jf和所有W2jf)

j = J; while ( j > 0 ) {

S2j1f(n)hkS2jf(n2j1k)gkW2jf(n2j1k)

kkj--; }

f(n)S20f(n)

第10章 小波变换与JPEG 2000编码 图10-13 Mallat数据的离散小波变换

说明:

图形的横纵坐标分别表示时间(平移因子)和变换结果S f与W f的值。 小波分解可以无限进行下去,J是自己指定的最大分解次数,一般为8~10。

• 13 • 求和符号中k↔Z,无上下限,但具体计算时,由于只有有限个hk、gk不为0,所以实际上是有限的。 逆变换中h与g上的一杠表示复数的共轭,对于实h与g,则共轭与不共轭相同。 求S f与W f都涉及到对所有的样本求和,不可能只处理一个样本。

3) 小波分解

执行离散小波变换的有效方法是使用滤波器。该方法是Mallat在1988年开发的,叫做Mallat算法。这种方法实际上是一种信号的分解方法,在数字信号处理中称为双通道子带编码。用滤波器执行离散小波变换的概念如图10-14所示。

图10-14 双通道滤波过程

图中,S表示原始的输入信号,通过两个互补的滤波器产生A和D两个信号,A表示信号的近似值(approximations),D表示信号的细节值(detail)。在许多应用中,信号的低频部分是最重要的,而高频部分起一个“添加剂”的作用。犹如声音那样,把高频分量去掉之后,听起来声音确实是变了,但还能够听清楚说的是什么内容。相反,如果把低频部分去掉,听起来就莫名其妙。在小波分析中,近似值是大的缩放因子产生的系数,表示信号的低频分量。而细节值是小的缩放因子产生的系数,表示信号的高频分量。

由此可见,离散小波变换可以被表示成由低通滤波器和高通滤波器组成的一棵树。原始信号通过这样的一对滤波器进行的分解叫做一级分解。信号的分解过程可以叠代,也就是说可进行多级分解。如果对信号的高频分量不再分解,而对低频分量连续进行分解,就得到许多分辨率较低的低频分量,形成如图10-15所示的一棵比较大的树。这种树叫做小波分解树(wavelet decomposition tree)。分解级数的多少取决于要被分析的数据和用户的需要。小波分解树表示只对信号的低频分量进行连续分解。

• 14 • 多媒体技术与应用教程

图10-15 小波分解树

随便要提及的是,在使用滤波器对真实的数字信号进行变换时,得到的数据将是原始数据的两倍。例如, 如果原始信号的数据样本为1000个,通过滤波之后每一个通道的数据均为1000个,总共为2000个。于是,根据尼奎斯特(Nyquist)采样定理就提出了降采样(downsampling)的方法,即在每个通道中每两个样本数据取一个,得到的离散小波变换的系数(coefficient)分别用cD和cA表示,如图10-16所示。图中的符号表示降采样。

图10-16 降采样过程

4) 小波重构

离散小波变换可以用来分析或者叫做分解信号,这个过程叫做分解或者叫做分析。把分解的系数还原成原始信号的过程叫做小波重构(wavelet reconstruction)或者叫做合成(synthesis),数学上叫做逆离散小波变换(inverse discrete wavelet transform,IDWT)。

在使用滤波器做小波变换时包含滤波和降采样两个过程,在小波重构时要包含升采样(upsampling)和滤波过程。小波重构的方法如图10-17所示,图中的符号表示升采样。

第10章 小波变换与JPEG 2000编码 • 15 •

图10-17 小波重构方法

升采样是在两个样本数据之间插入“0”,目的是把信号的分量加长。升采样的过程如图10-18所示。

图10-18 升采样的方法

图10-19是对某数据进行离散小波变换后结果。

图10-19 某数据的离散小波变换

• 16 • 多媒体技术与应用教程

10.1.2 哈尔小波变换

哈尔(Haar)小波是最简单的一种小波,本节首先介绍用来构造任意给定信号的哈尔基函数,然后介绍表示任意给定信号的哈尔小波函数,最后介绍函数的规范化和哈尔基的构造。

 哈尔基函数与哈尔小波函数

函数空间的基底是一组线性无关的函数,称之为函数基,如{xn}和{sinwx, coswx}或{ejwx},可以用来构造任意给定的信号f (x),如用基函数的加权和表示:

f(x)anxn(幂级数)

n0ja0nxnxf(x)ancosbnsincen2n1llnnxl(三角级数/傅立叶级数)

其中,构成函数基的基本函数(n=w=1) x1和sinx, cosx或ejx称为基函数(basis function)。

前面曾介绍过的(对小波的发展起了重要作用的)二进制伸缩平移系:

jjj2(x)2(2xk)k 就是1986年Meyer构造出的平方可积函数空间L2的规范正交函数基,其中的(x)为基函数,2 – j为伸缩因子,k为平移因子。若固定j,则函数基中所有函数kj(x)的形状大小都相同,仅有平移,只能表示固定尺度的函数空间V j,所以也称j为尺度因子,称kj(x)为尺度函数(scaling function)。

1)哈尔基函数

最简单的基函数是匈牙利数学家Alfréd Haar(哈尔)在1909年提出的哈尔基函数——

框函数(box function):

(x)其对应的尺度函数为

1, 0x1

0, 其他k1k1, jxjj

(x)(2xk)22,k = 0, 1, 2, ..., 2 -1

0, 其他jkj第10章 小波变换与JPEG 2000编码 • 17 • 可见,原始的哈尔基函数(x)相比,由于尺度因子2 j的作用,非0区间的长度为1/2 j

会随着j的增加而成倍缩少,面积也以同样的速度缩小;由于平移因子k的作用,非0区间会随着k平移k/2 j。图10-20是j=0, 1和2时尺度函数的部分波形图。

10(x)和11(x)的波形

(x)00(x)的波形

02(x)、12(x)、22(x)和32(x)的波形

图10-20 哈尔基函数所对应尺度函数的波形

矢量空间V j定义为由尺度函数kj(x)的线性组合生成的函数空间(显然是分段的等间隔台阶函数,每段的长不小于1/2 j):

VjSP{kj(x)},k0,1,2,...,2j1

因为j越大,尺度函数越窄(分段1/2 j越细),能表示的函数就越多,所以有V即矢量空间V j是嵌套的:

jVj1,

V0V1VjV

2)哈尔小波函数

j1。

由框函数所构成的函数基虽然能生成函数空间,但框函数本身并不是小波函数,因为它不满足无穷积分为0的条件。与框函数相对应的小波函数为前面已经介绍过的哈尔小波函数(Haar wavelet functions):

11, 0x21(x)1, x1

20, 其他其对应的尺度函数为

• 18 • 多媒体技术与应用教程 2k1k1, x2j2j1j

kj(x)(2jxk)2k1k1,k = 0, 1, 2, ..., 2 -1

1, 2j1x2j0, 其他类似于哈尔基函数,与原始的哈尔小波函数(x)相比,由于尺度因子2 j的作用,非0

区间的长度为1/2 j也会随着j的增加而成倍缩少,面积也以同样的速度缩小;由于平移因子k的作用,非0区间也会随着k平移k/2 j。图10-21是j=0, 1和2时尺度函数的部分波形图。

0(x)0(x)的波形

11(x)的波形 0(x)和1

222(x)和30(x)、12(x)、2(x)的波形

图10-21 哈尔小波函数所对应尺度函数的波形

由哈尔小波的尺度函数所构成的矢量空间为

WjSP{kj(x)},k0,1,2,...,2j1

因为

1kj(x)2jk1(x)2jk1(x)

(1)

即{kj(x)}可用{kj1(x)}表示,所以有

WjVj1 (2)

又因为

第10章 小波变换与JPEG 2000编码 • 19 • 1kj(x)2jk1(x)2jk1(x) (3)

由(1)+(3)可得:

kj1(x)故有:

1jk/2(x)kj/2(x) (4) 2Vj1VjWj (5)

其中,符号表示直和,即空间V j与W j是正交的。因为,根据所选择的内积,生成这两个矢量空间的所有基函数(尺度函数)都是正交的,即子空间V j与W j互为正交补。上式即为空间的小波分解,V j与W j分别对应于离散小波变换的余S2Jf和差W2jf。这些基函数具有两个重要性质:

(1) 生成矢量空间W j的基函数{kj(x)}与生成矢量空间V j的基函数{kj(x)}构成矢量空间V j+1的一个基{kj(x),kj(x)}~{kj1(x)}。

(2) 生成矢量空间W j的每一个基函数kj(x)与生成矢量空间V j的每一个基函数kj(x)正交。

3)函数的正交性与规范化 (1) 正交性

函数f, g正交是指其内积< f, g>为0,而函数的内积一般定义为它们的乘积在某一区间的定积分:

bf,g f(x)g(x)dx0

a如三角函数系{cosnx, sinnx}(n = 0,1,2,...)在[-π, π]上正交,因为

cosmx,cosnx cosmxcosnxdx0,mnsinmx,sinnx sinmxsinnxdx0,mn

cosmx,sinnx cosmxsinnxdx0哈尔基函数所对应的尺度函数系{kj(x)}, k = 0, 1, 2, ..., 2 j-1在(-∞, ∞)上正交,因为对j固定而k不同的kj(x),非0区间各不相同,所以有:

kj,lj kj(x)lj(x)dx0dx0,kl

• 20 • 多媒体技术与应用教程 类似可知哈尔小波函数所对应尺度函数{kj(x)}也在(-∞, ∞)上正交:

kj,lj kj(x)lj(x)dx0dx0,kl

而对{kj(x)}与{kj(x)}的正交性,可从下面的讨论得知:若k不同,非0区间也不相同,所以也有:

,l (x)l(x)dx0dx0,kl

jkjjkj若k相同,则它们的非0区间也相同,由于在该区间上kj(x)=1,所以有:

kj,kj kj(x)kj(x)dxkj(x)dx0



(2) 规范化

所谓规范化也称为标准化,指将基底函数乘上某一常数,使其内积为1,即函数的平方在区间上的积分为1,方法是除以原内积积分值(>0)的平方根。

如,因为:

cos20xdx12dx22cosnxdxsinnxdx,n1,2,3,

2所以,三角函数的规范正交基为因为

12,1cosnx,1sinnx,n1,2,3,。 k1k1, jxjj

(x)22,k = 0, 1, 2, ..., 2 -1

0, 其他jk所以

(x),(x) (x)dxk2j12dx2jjkjkjk2k11 j2故规范化的哈尔基函数为

(x)2(2jxk)

可见,规范化的哈尔基函数,虽然由于尺度因子2 j的作用,非0区间的长度仍然为1/2 j

会随着j的增加而成倍缩少,但由于乘了其扩大作用的常系数2j,面积缩小的速度放慢了,

jkj2第10章 小波变换与JPEG 2000编码 • 21 • j而且函数的平方k(x)下的面积恒为1。

2类似可得哈尔小波函数所对应的规范化尺度函数(基底)为

(x)2(2jxk)

因为

jkj22k1k1, x2j2j1kj(x)2k1k1

1, xj1j220, 其他(x),(x) (x)dxk2j1dx2jjkjkjk2k11 2j类似于规范化哈尔基函数,规范化哈尔小波基函数的平方k(x)下的面积也恒为1。

 一维哈尔变换及其规范化算法

为了研究用小波变换进行图像压缩,可以先讨论哈尔变换的情形,首先从最简单一维变换开始。

1)一维哈尔变换

设一维图像I = (p0, p1, p2, ..., pn-1)对应于 [0,1]区间上等间距的n段台阶函数(参见图10-22)。则由n个像素组成的一维图像的全体,构成一个n维矢量空间(台阶函数空间),每一幅具体图像是空间中的一个矢量(一个台阶函数),其像素的值pi对应于矢量的分量(台阶的函数值)。若将矢量用空间的基底表示,则像素值对应于线性组合表示中的系数。

j2

图10-22 一维图像与台阶函数

显然,对台阶函数,适合采用哈尔基。因为k(x)可将[0,1]区间分为2j小段,所以为

j• 22 • 多媒体技术与应用教程 了表示有n个像素的一维图像,至少需要取jlog2n。

I(x)p00j(x)p11j(x)pn1nj1(x)

例如,有4个像素的一维图像I = (9, 7, 3, 5),若视其为[0,1]区间上等间距的4段台阶函数,则取j = 2,将其表示成(参见图10-23/24)

I(x)902(x)712(x)322(x)532(x)c(x)c(x)c(x)c(x)2200221122222233

图10-23 一维图像I = (9, 7, 3, 5)所对应的台阶函数

图10-24 I (x) 用V 2中的哈尔基表示

即I = (9, 7, 3, 5)为V 2空间的一个向量。

可按上节所讲的空间分解公式V即

11111111I(x)c00(x)c11(x)d00(x)d11(x)

j1VjWj,将其分解成

V2V1W1

为了求该线性组合的系数,可利用函数系的正交性及关系式:

1jj1j1kj(x)2jk1(x)2jk1(x) 与 k(x)2k(x)2k1(x)

在方程

第10章 小波变换与JPEG 2000编码 • 23 • 11111111c00(x)c11(x)d00(x)d11(x)I(x)902(x)712(x)322(x)532(x)

两边同乘上系数所对应的kj(x)或kj(x),然后再在(-∞, ∞)上积分,最后解方程即得。

11如求c0:先在方程两边分别同乘上该系数所对应的基函数0(x)及下面等式的右边

10(x)02(x)12(x)

再两边积分得:

11111121c097c0(97)8(c0c12) 24422一般有:

1j1j11j11j1j1cccc(c2kc2jkk1) (1) jkj12kj12k12222即图像在低维空间余V j上的系数ckj(对应于低分辨率图像的像素值)等于其在高一维余空

11间V j+1上的对应区间的两个系数c2jk和c2jk1的平均值,可以用来表示图像在低分辨率下的

大体情形。

由(1)式可得

1c11212(c2c3)(35)4 221利用kj(x)2jk1(x)2jk1(x)类似可得:

dkj1j11(c2kc2jk1) (2) 2即图像在低维空间差W j上的系数dkj等于其在高一维差空间W j+1上的对应区间的两个系数

1d2jk1和d2jk1差的一半,可以用来表示图像在不同分辨率下的细节。

用(2)式可求得

1d0111(97)1,d1(35)1 22即(参见图10-25)

111I(x)80(x)411(x)0(x)1(x)

• 24 • 多媒体技术与应用教程

图10-25 I (x) 用V 1和W 1中的基函数表示

类似可将所得的空间V 1中的向量(8, 4) ,按照

V1V0W0

再进一步分解成

0000c00(x)d00(x)

其中

0c01111(c0c1)(84)622

11101d0(c0c1)(84)222最后可得(参见图10-26)

V2V1W1V0W0W1I(x)6(x)2(x)(x)(x)00001011

图10-26 I (x) 用V、W和W中的基函数表示

0

0

1

变换过程见表10-1。

表10-1 哈尔变换过程 分辨率 4 2 1 平均值V j V 2: (9, 7, 3, 5) V 1: (8, 4) V 0: (6) 细节系数W j W 2: 无 W 1: (1, -1) W 0: (2)

第10章 小波变换与JPEG 2000编码 • 25 • 可见,小波变换的最后结果仍然是4个系数(似8*8的DCT变换后仍有8*8个系数),但系数的幅度减少。一般来说,小波变换具有如下特征:

① 变换过程中没有丢失信息,因为能够从所记录的数据中重构出原始图像。

② 对这个给定的变换,我们可以从所记录的数据中重构出各种分辨率的图像。例如,在分辨率为1的图像基础上重构出分辨率为2的图像,即VVW;在分辨率为2的图像基础上重构出分辨率为4的图像,即V2100V1W1。

③ 通过变换之后产生的细节系数的幅度值比较小,这就为图像压缩提供了一种途径,例如去掉一些微不足道的细节系数并不影响对重构图像的理解。(这一点似量化后的DCT交流系数)。

2)规范化算法

若采用规范化的哈尔基函数和哈尔小波函数基:

kj(x)2j(2jxk) 与 kj(x)2j(2jxk)

来进行一维图像的小波变换,此时关系式变为

kj(x)12j12k1j(x)2jk1(x) 与 k(x)12j12k1(x)2jk1(x)

则前面哈尔小波的分解公式变为:

ckj应用于上例可得:

12cj12k1jc2jk1 与 dk1211(c2jkc2jk1)

I(x)902(x)712(x)322(x)532(x)12

110112400(x)80(x)20(x)21(x)2216(x)8(x)21011101(x)21(x)0111200(x)40(x)20(x)21(x)上例是4个像素的图像,只需要两次哈尔小波分解即可。类似可计算有8个像素的图像的三次哈尔小波分解,参见图10-27。

• 26 • 多媒体技术与应用教程

图10-27 小波分解的层次结构图

图中,f表示原始信号函数、c表示系数(coefficient)、A表示均值(averaging)、D表示差值(differencing)。

由上可以归纳出规范化的哈尔小波变换的一般算法。假设一维阵列C有h个元素(h等于2的幂),执行一维哈尔小波变换的伪代码如下:

procedure DecomposeArray(C: arry[0...h - 1] of color): while h > 1 do: h ← h / 2

for i ← 0 to h - 1 do:

C'[i] ← (C[2 i] + C[2 i + 1]) / sqrt(2) C'[h + i] ← (C[2 i] - C[2 i + 1]) / sqrt(2) end for C ← C' end while

end proc

也可改写成C++代码:(h → n, C → a, C’ → b)

void HaarWT1D(int n, BYTE *a) { BYTE *b = new BYTE[n];

int n0 = n; double sqrt2 = sqrt(2); while (n > 1) {

n >> 1;

for (int i = 0; i < n; i++) {

b[i] = (BYTE)((a[2 * i] + a[2 * i +1]) / sqrt2 + 0.5); b[n + i] = (BYTE)((a[2 * i] - a[2 * i +1]) / sqrt2 + 0.5); }

for (int i = 0; i < n0; i++) a[i] = b[i]; delete b;

第10章 小波变换与JPEG 2000编码 • 27 • }

 二维哈尔小波变换

本节将利用上节所讲的一维小波变换的基本原理和方法,并结合具体的图像数据系统地介绍如何对二维图像数据进行小波变换。

一幅图像可看成是由许多像素组成的一个大矩阵,在进行图像压缩时,为降低对存储器的要求,人们通常把它分成许多小块,例如以8×8个像素为一块,并用矩阵表示,然后分别对每一个图像块进行处理。在小波变换中,由于小波变换中使用的基函数的长度是可变的,一般无须把输入图像进行分块,以避免产生“块效应”。但为便于理解小波变换的奥妙,还是从一个小的图像块入手,并且继续使用哈尔小波对图像进行变换。

1)举例

假设有一幅灰度图像,其中的一个图像块用矩阵表示为:

91740A3241498 2572634231558346273522145961122037294452560132136284553465143303819116275042313918106357162433 2548561使用灰度表示的图像如图10-28所示:

图10-28 图像矩阵A的灰度图

一个图像块是一个二维的数据阵列,可以先对阵列的每一行进行一维小波变换,然后对再行变换之后的阵列的每一列进行一维小波变换,最后对经过变换之后的图像数据阵列进行编码。

• 28 • 多媒体技术与应用教程 (1) 求均值与差值

利用一维的非规范化哈尔小波变换对图像矩阵的每一行进行变换,即求均值与差值。在图像块矩阵A中,第一行的像素值为

R0: [ 2 3 61 60 6 7 57]

步骤1:在R0行上取每一对像素的平均值,并将结果放到新一行N0的前4个位置,其余的4个数是R0行每一对像素的差值的一半(细节系数):

R0: [ 2 3 61 60 6 7 57] N0: [33 32 33 32 31 -29 27 -25]

步骤2:对行N0的前4个数使用与第一步相同的方法,得到两个平均值和两个细节系数,并放在新一行N1的前4个位置,其余的4个细节系数直接从行N0复制到N1的相应位置上:

N1: [32.5 32.5 0.5 0.5 31 -29 27 -25]

步骤3:用与步骤1和2相同的方法,对剩余的一对平均值求平均值和差值,

N2: [32.5 0 0.5 0.5 31 -29 27 -25] V 3: V 0 W 0 W 1 W 2

其中,第一个元素是该行像素值的平均值,其余的是这行的细节系数。

(2) 计算图像矩阵

使用(1)中求均值和差值的方法,对矩阵的每一行进行计算,得到行变换后的矩阵:

32.532.532.532.5AR32.532.532.532.5000000000.50.50.50.50.50.50.50.50.5312927250.5232119170.515131190.57531

0.513570.591113150.5171921230.525272931其中,每一行的第一个元素是该行像素值的平均值,其余的是这行的细节系数。使用同样的方法,再对的每一列进行计算,得到:

第10章 小波变换与JPEG 2000编码 • 29 • ARC32.500000000000000000000440004400.50.5272500.50.511900.50.55700.50.5212300004444 2321759112527其中,左上角的元素表示整个图像块的像素值的平均值,其余是该图像块的细节系数。

如果从矩阵中去掉表示图像的某些细节系数,事实证明重构的图像质量仍然可以接受。具体做法是设置一个阈值,例如的细节系数δ≤5就把它当作“0”看待,这样经过变换之后的上面的矩阵就变成

A=

与ARC相比,A 中“0”的数目增加了18个,也就是去掉了18个细节系数。这样做的好处是可提高小波图像编码的效率。对矩阵进行逆变换,得到了重构的近似矩阵

59.55.521.5~43.5A32.532.553.511.55.559.3.521.532.532.511.553.57.557.1.523.539.525.59.555.557.57.523.1.525.539.555.59.555.59.525.539.523.1.557.57.59.555.539.525.1.523.57.557.511.553.532.532.3.521.55.559.553.511.532.532.5 21.543.559.55.5将原图像块矩阵和重构的数据用彩色图表示如图10-29。对比两图后可见,经过变换并且去掉某些细节系数之后重构的图,其图像质量的损失还是能够接受的。

• 30 • 多媒体技术与应用教程

图10-29 原图与重构图像的比较

(3) 使用线性代数

由于图像可用矩阵表示,而对图像的哈尔小波变换就是求平均值和求差值这样的线性变换,可以使用变换矩阵Mi与矩阵A 相乘来代替。如第一次对矩阵的每一行求均值和差值,对应于右乘如下变换矩阵

121200M100000012120000000012120000000012121212000000001212000000001212000000 001212类似地,第二次对矩阵的每一行的前一半元素求均值和差值,则对应于右乘如下变换矩阵

第10章 小波变换与JPEG 2000编码 • 31 • 12120M200000001212000012120000000012120000000000000000

00001000010000100001而第三次对矩阵的每一行的前1/4的元素求均值和差值,则对应于右乘如下变换矩阵

12120M300000即:AR = A M1 M2 M3。若设

1212000000000000000000100000010000 001000000100000010000001• 32 • 多媒体技术与应用教程

若使用规范化的哈尔小波变换,则变换矩阵W变为:

则AR = AW,再对其进行列变换得:

T = ARC = W’AR = W’A W

由此可得哈尔小波的逆变换为

A = W’ –1 T W –1 = (W –1)’ T W –1

第10章 小波变换与JPEG 2000编码 • 33 •

(4) 变换实例

为进一步理解小波变换的基本原理和在图像处理中的应用,可用Matlab软件中的小波变换工具箱编写小波变换程序,对原始图像进行分解和重构。图10-30表示图像分解和重构过程。

图10-30 小波图像分解与重构示意图

利用小波变换,用户可以按照应用要求获得不同分辨率的图像。如图10-31所示,其中,(a)表示原始的Lena图像,(b)表示通过一级(level)小波变换可得到1/4分辨率的图像,(c)表示通过二级小波变换可得到1/8分辨率的图像,(d)表示通过三级小波变换可得到1/16分辨率的图像。

• 34 • 多媒体技术与应用教程 图10-31 使用小波分解产生多种分辨率图像

阈值处理可用于去除图像中的噪声。在取不同阈值的情况下重构图像,可观察到图像质量发生的变化,如图10-32所示。其中,(a)表示原始的Lena图像,(b)表示阈值5的重构图像,(c)表示阈值10的重构图像,而(d)则表示阈值20的重构图像。从图中可以看到,随着阈值的增大,图像质量也随之降低。

(a) 原始图像 (b)δ≤5

(c) δ≤10 (d) δ≤>20

图10-32 不同阈值下的Lena图像

2)方法

用小波对图像进行变换有两种方法,一种叫做标准分解(standard decomposition),另一种叫做非标准分解(nonstandard decomposition)。

(1) 标准分解方法

标准分解方法同1),是指首先使用一维小波对图像每一行的像素值进行变换,产生每一行像素的平均值和细节系数,然后使用一维小波对这个经过行变换的图像的列进行变换,产生这个图像的平均值和细节系数。标准分解的过程如下

procedure StandardDecomposition(C: array [1. . . h, 1. . . w] of reals) for row 1 to h do

Decomposition(C [row, 1 . . . w])

第10章 小波变换与JPEG 2000编码 • 35 • end for for col 1 to w do

Decomposition(C [1 . . . h, col]) end for end procedure

图10-33表示标准分解方法所得到的图像系列:

图10-33 图像的标准分解方法

(2) 非标准分解方法

非标准分解是指使用一维小波交替地对每一行和每一列像素值进行变换。首先对图像的每一行计算像素对的均值和差值,然后对每一列计算像素对的均值和差值。这样得到的变换结果只有1/4的像素包含均值,再对这1/4的均值重复计算行和列的均值和差值,依此类推。非标准分解的过程如下:

procedure NonstandardDecomposition(C: array of reals) C ← C / h (normalize input coefficients) while h > 1 do

for row 1 to h do

DecompositionStep(C [row, 1 . . . h]) end for for col 1 to h do

DecompositionStep(C [1 . . . h, col])

• 36 • 多媒体技术与应用教程 end for

h ← h / 2

end while end procedure

图10-34表示采用非标准分解方法所得到的图像系列:

图10-34 图像的非标准分解方法

标准分解方法和非标准分解相比,它们得到的变换结果是完全相同的,只是非标准算法的计算量少可以一些,所以常用。

从以上的分析可以看到,构造二维小波基的最简单方法是使用两个相同一维小波和尺度函数的乘积,生成的尺度函数如下:

(x,y)(x)(y)

生成的三个小波函数如下:

1(x,y)(x)(y)2(x,y)(x)(y) 3(x,y)(x)(y)它们对应于一级非标准分解的: (x)(y) (x)(y) f (x, y) →(x) (x) →(x)(y) (x)(y) 第10章 小波变换与JPEG 2000编码 • 37 •

(3) 小波分解图像方法

使用小波变换把图像分解成各种子带的方法有很多种。例如,均匀分解(uniform decomposition),非均匀分解(non-uniform decomposition),八带分解(octave-band decomposition)和小波包分解(wavelet-packet decomposition),根据不同类型的图像选择不同小波的自适应小波分解(adaptive wavelet decomposition)等。

我们上面所介绍的小波分解方法被称为八带分解,是使用最广泛的一种分解方法。这种分解方法属于非均匀频带分割方法,它把低频部分分解成比较窄的频带,而对每一级分解的高频部分不再进一步分解。图10-35表示Lena图像的数据分解:

图10-35 Lena图像数据的八带分解

10.1.3 第二代小波变换

由于一般的小波滤波器的输出结果是浮点数,因而在对变换后的数据进行压缩时,要先进行量化,以得到相应的整数,这必然会引入误差,不适合于图像的无损压缩。

1994年Wim Swelden提出了一种新的小波构造方法——提升方案(lifting scheme),也叫第二代小波变换(second generation wavelet transform, SGWT)或[整数到]整数小波变换([integer-to-]integer wavelet transform, [IT]IWT)。

 特点

第二代小波变换构造方法的特点是:

 继承了第一代小波的多分辨率的特性;  不依赖傅立叶变换, 直接在时域完成小波变换;  小波变换后的系数可以是整数;

 图象的恢复质量与变换时边界采用何种延拓方式无关。

第二代小波变换是由第一代小波变换的提升实现的。与第一代小波相比,第二代小波还具有以下优点:

 算法简单、速度快、适合并行处理;

 对内存的需求量小,便于DSP芯片实现;

• 38 • 多媒体技术与应用教程  可用本位操作进行运算,能实现任意图像尺寸的小波变换。

由于第二代小波能实现图象的整数到整数的变换,因此给图象的无损压缩提供了理论基础,是JPEG2000标准的一个组成部分。

 提升原理

小波提升是一种构造紧支集双正交小波的新方法。 1)步骤

由提升构成第二代小波变换的过程分为如下3个步骤: (1)

(Split)是将原始信号sj = { sj,k }分为两个互不相交的子集和。每个子集的长度是原子集的一半。通常是将一个数列分为偶数序列ej-1和奇数序列oj-1,即

Split (sj) = (ej-1, oj-1 )

其中,ej-1 = { ej-1, k = sj, 2 k },oj-1 = { oj-1, k = sj, 2 k +1}。

(2) 预测

预测(Predict)是利用偶数序列和奇数序列之间的相关性,由其中一个序列(一般是偶序列ej-1)来预测另一个序列(一般是奇序列oj-1)。实际值oj-1与预测值P (ej-1)的差值dj-1反映了两者之间的逼近程度,称之为细节系数或小波系数,对应于原信号sj的高频部分。一般来说,数据的相关性越强,则小波系数的幅值就越小。如果预测是合理的,则差值数据集dj-1所包含的信息比原始子集oj-1包含的信息要少得多。预测过程如下:

dj-1 = oj-1 – P (ej-1)

其中,预测算子P可用预测函数Pk来表示,函数Pk可取为ej-1中的对应数据本身:

Pk (ej-1, k ) = ej-1, k = sj, 2 k

或ej-1中的对应数据的相邻数据的平均值:

Pk (ej-1) = (ej-1, k + ej-1, k+1) / 2 = (sj, 2 k + sj, 2 k +1) / 2

或其他更复杂的函数。

(3) 更新

经过步骤产生子集的某些整体特征 (如均值)可能与原始数据并不一致,为了保持原始数据的这些整体特征,需要一个更新(Update)过程。将更新过程用算子U来代替,其过程如下:

sj-1 = ej-1 + U (d j-1)

其中,sj-1为sj的低频部分;与预测函数一样,更新算子也可以取不同函数,如

U k (dj-1) = dj-1, k / 2

U k (dj-1) = (dj-1, k -1 + dj-1, k) / 4 + 1 / 2。

P与U取不同的函数,可构造出不同的小波变换。

第10章 小波变换与JPEG 2000编码 • 39 • 2) 分解与重构

经过小波提升,可将信号sj分解为低频部分sj-1和高频部分dj-1;对于低频数据子集sj-1 可以再进行相同的、预测和更新,把sj-1 进一步分解成dj-2和 sj-2;„;如此下去,经过n次分解后,原始数据sj的小波表示为 {sj-n, dj-n, dj-n+1, „, dj-1}。其中sj-n代表了信号的低频部分 ,而{dj-n, dj-n+1, „, dj-1}则是信号的从低到高的高频部分系列。

每次分解对应于上面的三个提升步骤——、预测和更新:

Split (sj) = (ej-1, oj-1 ),dj-1 = oj-1 – P (ej-1),sj-1 = ej-1 + U (d j-1)

小波提升是一个完全可逆的过程,其反变换的步骤如下:

ej-1 = sj-1 - U (d j-1 ),oj-1 = dj-1 + P (ej-1),sj = Merge (ej-1, oj-1 )

图10-36是用提升方法进行小波分解和重构的示意图。

偶数序列ej-1

输入信号sj 奇数序列oj-1

dj-1

dj-1

sj-1 sj-1 偶数序列ej-1

P sj U U P sj 合并 重构信号sj

奇数序列oj-1

图10-36 提升方法分解和重构

分解的三个步骤可以用替代的方式来计算:先将奇数序列更新 (用偶数序列预测奇数序列),然后用更新的奇数序列更新偶数序列。大致过程如下:

Split (sj) = (ej-1, oj-1 ),oj-1 -= P (ej-1 ),ej-1 += U (oj-1)

其反变换过程也可以用替代的方式来计算:

ej-1 -= U (oj-1),oj-1 += P (ej-1 ),sj = Merge (ej-1, oj-1 )

3)特点

由上面的讨论可见,基于上升型模式的第二代小波变换具有如下特点:

 本位操作:所有运算可做本位操作,节省内存;  效率高:利用复合赋值,减少了浮点运算量;

 并行性:一个上升步骤中的所有操作是并行的,而多个上升步骤之间是串行的;  逆变换:逆变换只须简单地改变代码执行的先后循序,具有与正向变换相同的计算复杂性;

 通用性:由于变换过程中不必依赖Fourier分析,很容易推广到一般性应用领域;  非线性:易于构造非线性小波变换(如整数变换);

 自适应:支持自适应性小波变换。函数的分析由粗到细逐步进行,细化过程可仅限于感兴趣的区域。

• 40 • 多媒体技术与应用教程 第二代小波变换实现方式相对于第一代小波变换具有如下优势:在进行提升计算时,可以采用替代的方法,因此能节省大量空间;通过子表达式的重复使用,需要计算轮廓和细节部分的浮点操作数目大大减少,因此能提高效率。

4)例子

(1) 线性Haar小波变换 取预测函数

Pk (ej-1) = ej-1, k = sj, 2k

更新函数

Uk (d j-1) = dj-1, k / 2

则得到线性Haar小波变换。

分解式如下:

Split (sj) = (ej-1, oj-1 )

d j-1, k = oj-1, k – Pk (ej-1) = oj-1, k – ej-1, k = sj, 2k+1 - sj, 2k sj-1, k = ej-1, k + Uk (d j-1) = sj, 2k + dj-1, k / 2 = (sj, 2k+1 + sj, 2k) / 2 重构式如下:

ej-1, k = sj-1, k - Uk (d j-1) = sj-1, k – dj-1, k / 2 oj-1, k = d j-1, k + Pk (ej-1) = d j-1, k + ej-1, k sj = Merge (ej-1, oj-1 )

(2) 线性小波变换 取预测函数

Pk (ej-1) = (ej-1, k + ej-1, k+1) / 2 = (sj, 2k + sj, 2k +2) / 2

更新函数

Uk (d j-1) = (dj-1, k -1 + dj-1, k) / 4

则得到线性小波变换。(参见图10-37)

图10-37 线性小波变换

第10章 小波变换与JPEG 2000编码 • 41 • 分解式如下:

Split (sj) = (ej-1, oj-1 )

d j-1, k = oj-1, k – Pk (ej-1) = oj-1, k – (ej-1, k + ej-1, k+1) / 2 = sj, 2k+1 - (sj, 2k + sj, 2k +2) / 2 sj-1, k = ej-1, k + Uk (d j-1) = sj, 2k + (dj-1, k -1 + dj-1, k) / 4 重构式如下:

ej-1, k = sj-1, k - Uk (d j-1) = sj-1, k – (dj-1, k -1 + dj-1, k) / 4 oj-1, k = d j-1, k + Pk (ej-1) = d j-1, k + (ej-1, k + ej-1, k+1) / 2 sj = Merge (ej-1, oj-1 )

实际上,提升算法是一种改善快速小波变换的方法。单步的提升算法并不能用于所有的小波构造过程,事实上只有一些特殊的小波变换很容易用它构造,比如双正交小波。不过,涉及有限滤波器(FIR)的所有小波或子带变换可用多个提升步骤来构造。Daubechies和 Sweldens等已经证明,借助于因子化小波变换,所有小波的构造都能够用提升模式实现。

 整数小波变换

可以用提升方法来构造具紧支集的双正交小波,那么就可以通过对每一次滤波后的数据进行取整(用[·]表示)来实现整数小波变换,而且这种变换是完全可逆的,也就是完全重构数据。

Sweldens已经证明在提升的基础上可以进行整数集到整数集的小波变换,也就是说,一个整数集合通过小波变换得到的仍然是整数集合。这就给数字图象的压缩编码带来了好处,由于不需要对变换后的系数进行量化,因此提供了实现无损压缩的可能。

下面试几个典型的整数小波变换的例子: 1) S变换

最简单的整数小波变换是S变换(S transform, S = sequential),它是线性Haar小波变换的近似整数形式。

分解式如下:

d j-1, k = sj, 2k +1 - sj, 2k sj-1, k = sj, 2k + [dj-1, k / 2]

相当于对原更新函数取整。

重构式如下:

sj, 2k = sj-1, k - [dj-1, k / 2] sj, 2k +1 = d j-1, k + sj, 2k

2)S+P变换

S变换之后,在低通系数sj-1, k的基础上进行线性预测,以产生新的高通系数d j-1, k ,这就是S+P变换族(S+P family of transform , S+P = sequential plus prediction)。分解式如下:

sj-1, k = sj, 2k + [ vk / 2] d j-1, k = vk + [tk + 1/2]

• 42 • 多媒体技术与应用教程 其中

vk = sj, 2k +1 - sj, 2k tk =α

-1 (sj-1, k -2 - sj-1, k -1) +α0 (sj-1, k -1 - sj-1, k ) +α1 (sj-1, k - sj-1, k +1) +β-1 v k +1

例如,取参数如表10-2。

表10-2 S+P变换的参数表 变换 S 2/6 B C α-1 α0 0 1/4 1/4 1/4 α1 0 1/4 3/8 1/2 β-1 0 0 0 -1/16 0 0 1/4 3/8 其中

(1)S变换:

sj-1, k = sj, 2k + [ vk / 2] = sj, 2k + [(sj, 2k +1 - sj, 2k) / 2] d j-1, k = vk = sj, 2k +1 - sj, 2k

其分解与重构式同上1)。

(2)2/6变换: 分解:

sj-1, k = sj, 2k + [ vk / 2] = sj, 2k + [(sj, 2k +1 - sj, 2k) / 2] d j-1, k = vk + [(sj-1, k -1 - sj-1, k ) / 4 + (sj-1, k - sj-1, k +1) / 4 +1/2]

= (sj, 2k+1 - sj, 2k) +[(sj-1, k -1 - sj-1, k +1) / 4 + 1/2]

即:

vk = sj, 2k +1 - sj, 2k sj-1, k = sj, 2k + [ vk / 2]

d j-1, k = vk + [(sj-1, k -1 - sj-1, k +1) / 4 + 1/2]

重构:

uk = [(sj-1, k -1 - sj-1, k +1) / 4 + 1/2] sj, 2k = [(2 sj-1, k - d j-1, k + uk ) / 2] ? sj, 2k +1 = sj, 2k + d j-1, k - uk

3)5/3变换

d j-1, k = sj, 2k +1 - [(sj, 2k +2 - sj, 2k) / 2] sj-1, k = sj, 2k + [(dj-1, k + dj-1, k -1) / 4 + 1/2]

4)9/7-M变换

d j-1, k = sj, 2k +1 - [((sj, 2k +4 + sj, 2k -2) – 9 (sj, 2k +2 + sj, 2k)) / 16 + 1/2] sj-1, k = sj, 2k + [(dj-1, k + dj-1, k -1) / 4 + 1/2]

第10章 小波变换与JPEG 2000编码 • 43 • 10.2 JPEG 2000编码标准

JPEG 2000是ISO与CCITT/ITU共同成立的联合图像专家组(JPEG),于2000年底开始推出的一种基于小波变换的静态图像压缩标准(ISO/IEC 144-1~12,ITU T.800~808)。它统一了2值图像编码标准JBIG、[近]无损压缩编码标准JPEG-LS以及原来的JPEG编码标准,支持更多的颜色分量和更大的颜色深度,具有多分辨率表示和渐进传输功能,同时支持有损和无损压缩,比JPEG标准的压缩率更高、性能更优秀。

本节介绍JPEG 2000标准的基本内容和其核心编码系统的主要算法及文件格式。

10.2.1 概述

JPEG 2000标准由12个部分组成,本书主要介绍其第一部分——核心编码系统的编码模块、主要算法及文件格式。

下面介绍JPEG 2000标准的组成、特征和核心系统的编码过程。  组成

JPEG 2000标准计划包含如下13个部分(其中的第7部分已经被抛弃):

(1) 核心编码系统(Core coding system)——提供不需要版权、许可费和专利费的基本编码

算法,只支持Daubechies 9/7阶有损的离散小波滤波器和Le Gall 5/3阶无损的整数小波滤波器

(2) 扩展(Extensions)——在核心上添加更多的特性与复杂性,支持更多的和自定义的小波

滤波器

(3) 运动JPEG 2000(Motion JPEG 2000)——定义作为运动图像序列的帧内JPEG 2000编

码的文件格式MJ2,主要应用于数字相机的视频片断的存储、高质量基于帧的视频录制和编辑、数字电影、医学和卫星图像等。MP2从开始第3部分定义的文档,发展到现在用第12部分的ISO基格式重新定义

(4) 一致性(Conformance)——测试第1部分的一致性,指定编码和解码的测试过程,但

不包含其范围验收、性能或健壮性测试

(5) 参考软件(Reference software)——有Java和C实现可用

(6) 混合图像文件格式(Compound image file format)——文档映像,用于印前和传真等应

(7) 最小支撑函数准则(Guideline of minimum support function)——该部分已经被抛弃 (8) JPSEC(JPEG 2000 Security)——安全方面,包括加密、源鉴别、数据完整性、条件访

问和所有权保护等内容

(9) JPIP(JPEG 2000 Interactive Protocols)——交互协议与API

(10) JP3D(JPEG 2000 3D)——涉及三维数据编码,将JPEG 2000编码扩展到立体图像 (11) JPWL(JPEG 2000 WireLess)——无线应用

• 44 • 多媒体技术与应用教程 (12) ISO基媒体文件格式(ISO Base Media File Format)——与MPEG-4共用 (13) 入口级编码器(An entry level encoder)

到目前为止,除第10部分外,其它的JPEG2000标准部分都已经公布,其中最早公布的是其中的第一部分标准(2000年12月)。下面是当前(2008年10月)最新的标准系列:  ISO/IEC 144-1:2004 (Ed. 2) (ITU T.800) Information technology -- JPEG 2000 image coding system: Core coding system(信息技术—JPEG 2000图像编码系统:核心编码系统)  ISO/IEC 144-1:2004/Cor 1:2007(核心1)

 ISO/IEC 144-1:2004/Cor 2:2008 Clarification on determination of maximum file size

(核心2:最大文件尺寸确定的识别)

 ISO/IEC 144-1:2004/Amd 1:2006 Profiles for digital cinema applications(辅助1:数

字电影应用的档次)

 ISO/IEC 144-2:2004 (ITU T.801) Information technology -- JPEG 2000 image coding system: Extensions(信息技术—JPEG 2000图像编码系统:扩展)  ISO/IEC 144-2:2004/Cor 3:2005(核心3)  ISO/IEC 144-2:2004/Cor 4:2007(核心4)

 ISO/IEC 144-2:2004/Amd 2:2006 Extended capabilities marker segment(辅助2:扩

展能力标记段)

 ISO/IEC 144-3:2007 (Ed. 2) (ITU T.802) Information technology -- JPEG 2000 image coding system -- Part 3: Motion JPEG 2000(信息技术—JPEG 2000图像编码系统—第3部分:运动JPEG 2000)

 ISO/IEC 144-4:2004 (Ed. 2) (ITU T.803) Information technology -- JPEG 2000 image coding system: Conformance testing(信息技术—JPEG 2000图像编码系统:一致性测试)  ISO/IEC 144-5:2003 (ITU T.804) Information technology -- JPEG 2000 image coding system: Reference software(信息技术—JPEG 2000图像编码系统:参考软件)

 ISO/IEC 144-5:2003/Amd 1:2003 Reference software for the JP2 file format(辅助1:

JP2文件格式的参考软件)

 ISO/IEC 144-6:2003 (ITU T.800) Information technology -- JPEG 2000 image coding system -- Part 6: Compound image file format(信息技术—JPEG 2000图像编码系统—第6部分:混合图像文件格式)

 ISO/IEC 144-6:2003/Amd 1:2007 Hidden text metadata(辅助1:隐藏文本元数据)  ISO/IEC TR 144-7 Information technology -- JPEG 2000 image coding system: Guideline of minimum support function of ISO/IEC 144-1(信息技术—JPEG 2000图像编码系统—第7部分:ISO/IEC 144-1最小支撑函数准则)

 ISO/IEC 144-8:2007 Information technology -- JPEG 2000 image coding system: Secure JPEG 2000 Media and price(信息技术—JPEG 2000图像编码系统—第8部分:安全的JPEG 2000媒体和价格)

 ISO/IEC 144-9:2005 Information technology -- JPEG 2000 image coding system: Interactivity tools, APIs and protocols(信息技术—JPEG 2000图像编码系统—第9部分:交互性工具、API和协议)

第10章 小波变换与JPEG 2000编码 • 45 •  ISO/IEC 144-9:2005/Cor 1:2007(核心1)  ISO/IEC 144-9:2005/Cor 2:2008(核心2)

 ISO/IEC 144-9:2005/Amd 1:2006 APIs, metadata, and editing(辅助1:API、元数据

和编辑)

 ISO/IEC 144-9:2005/Amd 2:2008 JPIP extensions(辅助2:JPIP扩展)

 ISO/IEC FDIS 144-10 Information technology -- JPEG 2000 image coding system: Extensions for three-dimensional data(信息技术—JPEG 2000图像编码系统—第10部分:三维数据的扩展)

 ISO/IEC 144-11:2007 Information technology -- JPEG 2000 image coding system: Wireless Media and price(信息技术—JPEG 2000图像编码系统—第11部分:无线媒体和价格)  ISO/IEC 144-12:2005 (Ed. 2) Information technology -- JPEG 2000 image coding system -- Part 12: ISO base media file format(信息技术—JPEG 2000图像编码系统—第12部分:ISO基媒体文件格式)

 ISO/IEC 144-12:2005/Cor 1:2005(核心1)  ISO/IEC 144-12:2005/Cor 2:2006(核心2)  ISO/IEC 144-12:2005/Cor 3:2007(核心3)

 ISO/IEC 144-12:2005/Amd 1:2007 Support for timed metadata, non-square pixels and

improved sample groups(辅助1:对定时元数据、非正方形像素和改进的样本组的支持)

 ISO/IEC 144-12:2005/Amd 2:2008 Hint track format for ALC/LCT and FLUTE

transmission and multiple meta box support(辅助2:ALC/LCT和FLUTE传输与多元盒支持的提示轨道格式)

 ISO/IEC 144-13:2008 Information technology -- JPEG 2000 image coding system: An entry level JPEG 2000 encoder(信息技术—JPEG 2000图像编码系统—第13部分:入口级JPEG 2000编码器)

其中,第7部分已经被抛弃,第10部分还处于制定过程中。  特性

与原来的JPEG相比,JPEG 2000的主要特点有:

 支持多分辨表示——利用小波变换的多分辨特性,在JPEG 2000码流中,包含了各个分辨率的信息。只需压缩一次,但是有多种分辨率的解压方式。因此,一个单一的JPEG 2000码流,可以同时满足不同分辨率应用的需要,如高分辨率的打印机、中分辨率的显示器和低分辨率的手持设备等

 压缩域的图像处理与编辑——利用JPEG 2000的多分辨特性,可以直接从JPEG 2000码流中抽取新的低分辨率JPEG 2000码流,而不需经历解压缩/再压缩过程,也避免了噪声的累积。还可以在压缩域中直接对图像进行剪切、旋转、镜像和翻转等操作,同样不必解压缩后再压缩

 渐进性——JPEG 2000支持多种类型的渐进传送,可从轮廓到细节渐进传输,适用于窄带通信和低速网络。JPEG 2000支持四维渐进传送:质量(改善)、分辨率(提高)、

• 46 • 多媒体技术与应用教程 空间位置(顺序/免缓冲)和分量(逐个)

 低位深度图像——不像JPEG只支持灰度图和真彩图,JPEG 2000支持黑白二值图和伪彩图的无损压缩,相当于JBIG和JPEG-LS

 兴趣区——ROI(Region of Interest)可指定图片上感兴趣区域,在压缩编码时可对这些区域指定压缩质量,在显示解码时还可以指定新的兴趣区来指导传输方的编码

其他具体特点有:(参考第4章的4.6.1节的第4小节)

 支持最多达(214=)16384个颜色分量(如多波段遥感图像)、每个颜色分量的深度可为1~38位

 高压缩率——比JPEG提高近30%,特别是低码率时的重构图效果比JPEG好很多  同时支持有损和无损压缩,集成了采用预测编码和整数小波变换的无损压缩方法  增加了视觉权重和掩膜  可加入加密版权  兼容多种彩色模式

本节后面的讨论都是针对JPEG 2000标准的第一部分核心编码系统进行的。

 编解码模块与过程

图10-38是JPEG 2000的核心编码系统的编解码模块与过程:

码率控制 原始图像数据 压缩图像数据 预处理 FDWT 量化 (a) 编码过程

重构图像 后处理 JPEG 2000码流 IDWT 反量化 熵解码 码流分解 熵编码 码流组织 (b) 解码过程

图10-38 JPEG 2000核心编码系统的编解码模块与过程

下面各小节是对编码过程中主要步骤的具体讨论。

10.2.2 预处理与后处理

JPEG 2000的核心编码系统的预处理,主要包括可选的图像分块、无符号数据的中心偏移(直流电平平移)、有损压缩时数据的归一化和可选的两种颜色分量变换(参见图10-39)等步骤,下面将逐个进行介绍。

第10章 小波变换与JPEG 2000编码 • 47 • 预处理 原始图像数据 图像分块 电平平移 归一化 颜色变换 分块FDWT 图10-39 预处理过程

通常的图像有三个颜色分量(RGB或YCbCr等),但为了适应多波段图像(如遥感图像)的压缩需要,JPEG 2000允许一个输入图像最多可有16384(214)个分量。每个分量的样本值可以是1~38位长的无符号整数或有符号整数。图像的各个分量的分辨率、样本值的符号和位数,可以互不相同。

 图像分块与拼接

与JPEG不同,JPEG 2000算法并不需要将图像强制分成8×8的小块。但为了降低对内存的需求和方便压缩域中可能的分块处理,可以将图像分割成若干互不重叠的矩形块(tile)。分块的大小任意,可以整个图像是一个块,也可以一个像素是一个块。一般分成2 6~12×2 6~12(即~1024像素宽)的等大方块,不过边缘部分的块可能小一些,而且不一定是方的。

图像分块的大小会影响重构图像的质量。一般来说,分块大比分块小的质量要好一些。 在解码过程的后处理中,需要将分块的图像数据,重新无缝地拼接在一起。  数据偏移和归一化

与JPEG中的DCT一样,JPEG 2000中的DWT也需要图像的样本数据关于0对称分布,对B位无符号整数的分量样本值I (x, y)(0≤I(x,y)<2B),应该先进行中心偏移(又称为直流电平平移DC level shifting):

I'(x,y)I(x,y)2B1, 则 2B1I'(x,y)2B1。

对无损压缩,因为采用的是整数小波变换,数据偏移后就可以了。但是对有损压缩,因为采用的是实数型离散小波变换,所以还需要对偏移后的数据进行归一化处理:

I\"(x,y)I'(x,y)11, 则 I\"(x,y)。 B222在解码的后处理中,需要将归一化和/或平移的数据还原:

I'(x,y)2BI\"(x,y), 则 2B1I'(x,y)2B1 I(x,y)I'(x,y)2B1, 则 0I'(x,y)2B

 颜色变换

对图像数据的前三个颜色分量,还可以进行可选的颜色变换。在JPEG 2000的核心编码系统中,定义了两种颜色变换:不可逆分量变换ICT和可逆分量变换RCT,它们分别对应于有损压缩和无损压缩的情形。在预处理中用正变换,在后处理中用逆变换。

下面为了便于对变换公式的理解,将前三个颜色分量的值I0 (x, y)、I1 (x, y)和I2 (x, y)简记

• 48 • 多媒体技术与应用教程 为R、G和B,将变换后的值Y0 (x, y)、Y1 (x, y)和Y2 (x, y)简记为Y、Cb和Cr或Y、U和V。

1)ICT

不可逆分量变换ICT (Irreversible component transformation)是一种颜色空间的转换,采用了近似的实数运算,可用在有损的小波压缩中。该变换的背景,是将原始的光电颜色空间RGB,转换为亮度与色差颜色空间YCbCr。在亮度与色差颜色空间中,可以利用人眼对颜色的分辨率比亮度低的特性,对色差数据进行子采样。同时,还可以在分量的渐进传送中,优先传输对人眼最重要的亮度数据。

 正变换:

 精确式:根据人眼对RGB三种颜色分量的感知特性,设各颜色的权重为:

R0.299,G0.587,B0.114,满足RGB1

则:

YRRGGBB0.5Cb(BY)

1B0.5Cr(RY)1R 近似式:

0.5870.114RY0.299Cb0.1687360.33120.5G CrB0.50.4186880.081312 逆变换:

 精确式:

RY2(1R)Cr2B(1B)CbR(1R)Cr GYBY2(1B)Cb 近似式:

G01.402YR1G10.3441360.714136Cb B1Cr1.77202)RCT

可逆分量变换RCT (Reversible component transformation)也是一种颜色空间的转换,采用了精确的整数运算,可用在无损的小波压缩中。该变换的背景和优势与ICT的类似,只是现在的亮度与色差颜色空间改为YUV。它可以看成是ICT的一种整数型简化,目的是为了可以进行精确的可逆运算。

第10章 小波变换与JPEG 2000编码 • 49 •  正变换:

R2GBY4URG VBG 逆变换:

UVGY4RUG BVG10.2.3 小波变换

在JPEG 2000的核心编码系统中,对有损压缩采用的是基于Daubechies 9/7 滤波器之提升实现的不可逆DWT,对无损压缩采用的则是基于Le Gall 5/3滤波器之提升实现的可逆DWT。

由10.1.1节可知FDWT(正向离散小波变换)的变换公式为:(j = 0 ~ NL)

W2jx(n)hH(k)S2j1x(n2j1k)kZS2jx(n)hL(k)S2j1x(n2kZj1k)

其中,S20x(n)x(n)为原始数据,D = Wx为差——高频部分,A = Sx为剩余——低频部分,hL与hH为分解用的低通滤波器H()和高通滤波器G()之系数。参见图10-40/41。

0L(原始数据x,含各种频率信息) 1L(末低频) 2L(次低频) 3L(最低频) 图10-40 小波的逐级分解过程(NL = 3) L = Low frequence,H = High frequence

1H(最高频) 2H(次高频) 3H(末高频) x ↓FDWT 3L 3H 2H 1H • 50 • 多媒体技术与应用教程 图10-41 3级小波分解

同样由10.1.1节可知逆变换IDWT(重构)的变换公式为(利用正变换所保存下来的S2Jx和所有W2jx):(j = NL ~ 0)

S2j1x(n)gL(k)S2jx(n2j1k)gH(k)W2jx(n2j1k)

kZkZx(n)S20x(n)

其中,gL与gH为合成用的低通滤波器H()和高通滤波器G()之对称位置的系数。参见图10-42/43。

0L(原始数据x,含各种频率信息) 1L(末低频) 2L(次低频) 3L(最低频) 图10-42 小波的逐级重构过程(NL = 3) L = Low frequence,H = High frequence

1H(最高频) 2H(次高频) 3H(末高频) x ↑FDWT 3L 3H 2H 图10-43 3级小波重构

1H 不过在JPEG 2000中,并不直接用滤波器系数来进行DWT,而是利用滤波器的提升实现来进行DWT。

 不可逆DWT

JPEG 2000标准的核心编码系统所默认的不可逆小波变换是Daubechies 9/7离散小波变换的提升实现。Daubechies 9/7是I. Daubechies与M. Antonini等人于1992年提出的一种双正交小波滤波器,其分解和合成滤波器(analysis and synthesisfilter)的系数如表10-3所示。

表10-3 Daubechies 9/7 分解与合成滤波器系数 分解滤波器系数 i 0 低通滤波器hL (i) 0.6029490182363579 高通滤波器hH (i) 1.115087052456994 合成滤波器系数 低通滤波器gL (i) 1.115087052456994 高通滤波器gH (i) 0.6029490182363579 第10章 小波变换与JPEG 2000编码 • 51 • ±1 ±2 ±3 ±4 其他值 0.26681184428723 -0.078223266528785 -0.016811844287495 0.02674875741080976 0 -0.5912717631142470 -0.057352622849957 0.09127176311424948 0 0 0.5912717631142470 -0.057352622849957 -0.09127176311424948 0 0 -0.26681184428723 -0.078223266528785 0.016811844287495 0.02674875741080976 0 Daubechies 9/7 DWT的提升实现如下:  正变换:

FDWT的提升实现包括如下6个步骤: 4步提升:

y(2n1)x(2n1)[x(2n)x(2n2)]y(2n)x(2n)[y(2n1)y(2n1)]y(2n1)y(2n1)[y(2n)y(2n2)]y(2n)y(2n)[y(2n1)y(2n1)]和2步缩放:

y(2n1)Ky(2n1) 1y(2n)y(2n)K其中α= 1.586134342、β= 0.052980118、γ= 0.882911075、δ= 0.443506852、K =1.230174105

 逆变换:

IDWT的提升实现包括如下6个步骤: 2步缩放:

x(2n)Ky(2n) 1x(2n1)y(2n1)K和4步提升:

x(2n)x(2n)[x(2n1)x(2n1)]x(2n1)x(2n1)[x(2n)x(2n2)]x(2n)x(2n)[x(2n1)x(2n1)]x(2n1)x(2n1)[x(2n)x(2n2)]其中α、β、γ、δ和K的值同上。

 可逆DWT

JPEG 2000标准的核心编码系统所默认的可逆小波变换采用的是Le Gall 5/3滤波器之提升实现的整数小波变换。Le Gall 5/3是D. Le Gall 与 A. Tabatabai于1988年基于样条5/3变换而提出的一种可逆滤波器,它的系数如表10-4所示。

表10-4 5/3 分解与合成滤波器系数

• 52 • 多媒体技术与应用教程 分解滤波器系数 i 0 ±1 ±2 其他值 低通滤波器hL (i) 6/8 2/8 -1/8 0 高通滤波器hH (i) 1 -1/2 0 0 合成滤波器系数 低通滤波器gL (i) 1 1/2 0 0 高通滤波器gH (i) 6/8 -2/8 -1/8 0 Le Gall 5/3 DWT的提升实现如下:  正变换:

x(2n)x(2n2)y(2n1)x(2n1)2

y(2n1)y(2n1)2y(2n)x(2n)4 逆变换:

y(2n1)y(2n1)2x(2n1)y(2n)4

x(2n)x(2n2)x(2n1)y(2n1)2 二维DWT

前面讨论的都是一维DWT,而图像的小波变换必须是二维的。在编码与解码过程中,使用的分别是二维的FDWT和IDWT。

1)FDWT

二维FDWT(Forward Discrete Wavelet Transformation正离散小波变换),可以进行若干次,可以任意指定总变换次数NL(一般取为3),得到的是从1到NL的各级子带b之小波样本值ab(ub, vb),参见图10-44。

图10-44 二维FDWT过程的I/O示意图

NL次二维FDWT的过程如图10-45所示。

第10章 小波变换与JPEG 2000编码 • 53 •

图10-45 二维FDWT的过程框图

其中的二维子带分解2D_SD(Sub-band Decomposition)见图10-46:

图10-46 二维子带分解2D_SD图

可见,每次(如第lev+1次)小波变换会使原低频子带块(levLL)产生三个高频子带块::(lev+1)LH、(lev+1)HL和(lev+1)HH,所以NL次变换所得子带块的总数为3*NL+1个。例如,2次变换得到(3*2+1=)7个子带块(参见图10-47)、3次变换得到(3*3+1=)10个子带块。

a2LL FDWT

——→

a2LH a2HL a2HH a1HL I (x, y) a1LH 图10-47 二维FDWT过程的示意图(NL = 2)

a1HH 2)IDWT

重构需要IDWT(Inverse Discrete Wavelet Transformation逆离散小波变换)过程,它刚好是FDWT过程的到过来。参见图10-48~51。

• • 多媒体技术与应用教程

图10-48 二维IDWT过程的I/O示意图

图10-49 二维IDWT的过程框图

图10-50 二维子带重构2D_SR(Sub-band Recomposition)

a2LL a2HL a2LH a2HH a1LH a1HL IDWT ——→

a1HH 图10-51 二维IDWT过程的示意图(NL = 2)

I (x, y) 10.2.4 量化与反量化

步长(step-sizes)大于1的量化(quantization)必然会造成有损和失真,所以对可逆的无损压缩编码不能进行量化,只有对不可逆的有损压缩编码才可能有量化和反量化过程。

JPEG 2000的核心编码系统对不可逆编码的子带(sub-band)样本采用的是嵌入式恒域(deadzone)标量量化方法。所谓嵌入式量化,是指K个量化器Qi(0≤i第10章 小波变换与JPEG 2000编码 • 55 • 恒域,是指对同一个子带b的样本,采用统一量化步长Δb的均匀量化,并对量化区间再进行均匀划分。嵌入式恒域量化适合具有多分辨和渐进特性的小波数据。

 量化

量化操作由步长参数Δb通过下式确定:

yb(n)qb(n)sign[yb(n)]

b其中,yb(n)↔[-0.5, 0.5]为子带b的样本、qb(n)为yb(n)的量化值,sign为符号函数。

子带b的步长Δb是一个16位数,其低11位为尾数μb、高5位为指数εb,即:

bb2b1110b211。 ,其中0b25,2可为每个子带b选择一个单独的步长Δb。典型的步长可用下式计算:

b1 GbGb2db其中,Gb是子带b的DWT综合基矢量的平方范数,可以近似为Gb2,这里的db为子

带b所对应的DWT级数值(level)。Δ为基本量化步长(须>Gb),可以用来调整压缩比和失真率。

例如,对2HH子带,db=2,则Gb≈24=16,若取Δ=8,则步长Δb=8/4=2。  反量化

在解码过程中,应该对采用了量化步骤的编码进行反量化:

ˆb(n)qb(n)b(1b) yˆb(n),一般与原值yb(n)有一定误差。 其中,重构的小波样本值yδ

b

为解码器可以任意选择的中间点重建参数。理想情况下,是使重构的小波样本的平

均值为相应量化间隔的统计质心的δb值。不过,一般取δb为0.5。

除了这里所讲的嵌入式恒域标量量化,下面要将的EZW、SPIHT和EBCOT等熵编码方法中,也包含量化操作。

10.2.5 熵编码

本小节介绍,在JPEG 2000标准的核心编码系统中,所采用的EBCOT和MQ熵编码方法。

 概述

• 56 • 多媒体技术与应用教程 JPEG 2000的编码过程,到现在为止还没有任何直接的压缩效果。因为,预处理显然没有减少数据量;小波变换虽然将图像数据变成了不同子带的小波样本,但数据量仍然一个也没有减少;量化是减小了样本值的幅度(有一些可能已经变成了0),为后面的压缩提供了条件,但量化本身并没有减少任何样本。

这样的结果与JPEG的预处理、DCT和量化等过程是一致的。回想一下,JPEG主要是根据高频交流系数的幅度值小,量化后很多为0的特点,利用Z字形和RLE编码达到主要的压缩目的;还有相邻直流系数的相差不大,可以利用DPCM进行差分编码,以减小数据的幅度;然后再利用哈夫曼或算术编码来对交直流系数进行进一步的压缩。

在JPEG 2000编码中,进行了NL次二维小波离散变换的样本数据,其b = NL LL的子带块有类似于JPEG编码中的直流系数DC的特性,都是图像的低频能量部分,但是这样的子带块只有一个,不可能对多个这样的块进行DPCM编码;其他子带块:(NL-i)LH、(NL-i)HL和(NL-i)HH(i = 0 ~ NL-1)虽然也是从左上角的低频到右下角的高频排列,但它们按块Z字形排列的,并不是按像素级Z字形排列,所以就不能像JPEG中一样用对小波样本值进行Z字形和RLE编码。

有没有能够利用小波样本值这样分频(子带)分块(定位)排列的特点,进行压缩的方法呢?有。EZW(embedded zerotree wavelet嵌入式零树小波)、SPIHT(Set Partitioning In Hierachical Tree层次树中的集合分割)和EBCOT(Embedded Block Coding with Optimized Truncation最佳截断嵌入码块编码)等编码方法,就是一些非常巧妙地利用了二维DWT数据的特点,来进行图像压缩的熵编码方法。

其中,EZW方法是,将不同子带中同一空间位置的数据构成一棵树,利用树中的低频数据的幅度值大、高频数据的幅度值小的特点,生成零树,从而达到压缩的目的;SPIHT是EZW的改进,对树根值大但其他节点的值小的树,进行分层树集合的分割排序,可提高编码效率;而EBCOT则是一种嵌入式压缩编码方法,它对每个子带块的小波系数进行编码,且每一码块的嵌入位流可以被截断成长度不等的位流,生成不同的位速率。

这三种方法都包含量化操作,为有损的压缩步骤。而且,它们都可以通过调整参数,来控制压缩比与失真率。

EZW是J. M.Shapiro于1993年提出的一种早期编码方法,SPIHT是A.Said和W.Pearlman于1996 年对EZW的改进。这两种算法在小波的图像压缩中起过非常重要的作用,也被纳入进了JPEG 2000的草案标准。但是,最后公布的JPEG 2000标准的正式文本中却只采用了David Taubman于1999年所提出的EBCOT算法。

而MQ(Multiple Quantization多路量化)编码则是一种用于二进制数据的自适应算术编码。

 EBCOT编码

最佳截断嵌入码块编码 (embedded block coding with optimized truncation,EBCOT)是David Taubman在1999年发表的一种编码算法,现在已经纳入JPEG 2000标准之中。该方法与早期的EZW,SPIHT以及LZC(layered zero coding)等算法有着不同程度的联系。

第10章 小波变换与JPEG 2000编码 • 57 • 1)算法介绍

EBCOT算法是一种对小波变换产生的子带系数进行量化和编码的方法。它的基本思想是把每一个子带的小波变换系数分成编码的码块(code-block),并且对所有的码块使用完全相同的编码算法。如图10-52所示,图(a)表示使用小波变换进行三级分解之后的图像子带,图(b)表示经过这种变换之后各个子带的Lena图像,EBCOT算法的基本出发点就是把每一个图像子带的系数分成编码的码块。

(a) 图像子带划分法

(b) Lena图像子带

图10-52 编码的码块

对每一个码块进行编码时,编码器不用其他码块的任何信息,只是用码块自身的信息产生单独的嵌入位流(bitstream)。每一码块的嵌入位流可以被截断成长度不等的位流,生成不同的位速率,这就是EBCOT编码算法中“截断(truncation)”的含义。

每一码块的嵌入位流应该截断到什么程度才符合特定的目标位速率、失真限度或者其他衡量图像质量的指标,也就是在给定一个目标位速率的情况下,使重构图像的失真程度最小, Taubman提出了一种认为是“最佳”的方法来截断每一个码块的位流,这就是EBCOT编码算法中“最佳”的含义。

概括地说,EBCOT编码的主要想法是把嵌入码块编码方法与码块位流的最佳截断方法结合在一起,使重构图像的失真最小,它的主要特性包括分辨率可变(resolution, scalability)、信噪比可变(SNR scalability)和随机访问(random access)。这些特性比较适合包括大图像的远程浏览,但在具体实施过程中,普遍感到实现这些特性的算法比较复杂些。

2)质量层的概念

EBCOT编码算法引入了一个“质量层(quality layers)”的概念。图像的最终码块位流以质量层的形式组织,每一层都包含每一个码块对图像质量的贡献,如图10-53所示。为简单起见,图中只画了7个码块的位流,每一个码块的质量层只画了5层,其中某些码块对质量没有贡献的层用“空”表示。

• 58 • 多媒体技术与应用教程

图10-53 EBCOT质量层的概念

EBCOT算法包含两种不同的编码器(coding engine)来体现它的性能。这两种编码器分别叫做层1编码器T1(Tier 1)和层2编码器T2(Tier 2),如图10-所示。T1编码器处理变换图像的小波变换系数,并把截断点放到码块中。后者把来自T1编码器的零碎码块放到不同的质量层,与不同的位速率相对应,并生成实际的压缩位流和文件。

图10- EBCOT两层编码系统

3)位速率失真最佳

EBCOT算法把表示图像的子带分成相对比较小的许多码块{Bi}i = 1, 2, ...,Bi表示第i个码块。每一个码块中的位流可以被截断成各种长度的位流Ri1, Ri2, Ri3, ...,在重构图像时计算由这些截断位流引起的失真Di1, Di2, Di3, ...。Bi对重构图像产生的失真用Din表示,并假设失真度量是相加的,整个图像的失真D表示为:

DDini

i其中,ni表示码块选择的截断点。相加性的失真度量可用均方差MSE(Mean Square Error)或者加权的均方差来表示。

第10章 小波变换与JPEG 2000编码 • 59 • 对某一组截断点{ni},位流中某一层的位速率用R表示

RRini

iEBCOT算法的目的就是在R≤Rmax的条件下找一组截断位流ni使失真D最小。这个问题可使用拉格朗日(Lagrange)乘数法求解,把问题就转化为求解使函数

RiniiDini

最小化的问题。其中的λ值必须进行调整,直到使该函数最小时的截断位流产生的速率满足R≤Rmax。期待总是能够找到使实际的位速率与目标位速率完全相等的λ值是不现实的,但可以找到使函数最小的某个λ值,使相应的位流产生的失真D最小。

 MQ编码

MQ(Multiple Quantization多路量化)编码是一种用于二进制数据的自适应算术编码,是W. Pennebaker等人于1988年提出的无乘法器的Q编码算法的改进,增加了条件交换机制和概率估计状态机。MQ编码也与(Q编码的另一改进)QM(Quadrature Mirror正交镜像)编码联系紧密,QM编码由JBIG标准(ITU-T T.82 / ISO/IEC 114:1993)定义,是JPEG标准的可选项。QM编码采用全进位分辨率结合字节填充进行错误恢复;但MQ编码则采用原始Q编码的位填充策略。MQ编码器是I. Ueno等人于1999年专门为JPEG 2000标准设计的,也用于JBIG2标准(ITU-T T.88 / ISO/IEC 14492:2000)。

由于篇幅所限,这里不准备详细介绍MQ编码方法。图10-55/56是MQ编码器的I/O和编码过程的示意图。

图10-55 MQ编码器的输入和输出

D = Decision决策 ,

CX = ConteXt上下文,

CD = Compressed Data压缩数据

• 60 • 多媒体技术与应用教程

图10-56 MQ编码器的编码过程

10.2.6 码流组织

 组成

JPEG 2000的码流(code stream)一般以一个主标头开始,后跟若干拼块码流,最后以双字节标记EOC(End Of Codestream码流末端)(0xFFD9)结束。参见图10-55。 EOC 主标头 拼块流1 „„ 拼块流n 图10-55 码流的组成

 主标头

主标头(header)以一个SOC标记开始,后面紧跟SIZ标记段,后面再跟其他11种标记段。这11种标记段可以以任意的顺序出现,其中只有COD段和QCD段是必需的,其他9种标记段都是可选的。参见图10-56。

SOC

SIZ

必须的

可选的

COD QCD COC QCC RGN POC PPM PLM TLM CRG COM

顺序可任意

图10-56 主标头的组成

第10章 小波变换与JPEG 2000编码 • 61 •

图10-57 码流的结构

表10-5 主标头中的标记和标记段 标记 SOC SIZ COD QCD COC QCC RGN POC PPM PLM TLM CRG COM 值 0xFF4F 0xFF51 0xFF52 0xFF5C 0xFF53 0xFF5D 0xFF5E 0xFF5F 0xFF60 0xFF57 0xFF55 0xFF63 0xFF 英文名 Start Of Code-stream image and tile SIZe CODing style default Quantization Default COding style Component Quantization Component ReGioN-of-interest Progression Order Change Packed Packet headers, Main header Packet Length, Main header Tile-part Lengths, Main header Component ReGistration COMment 中文名 码流开始 图像和拼块的大小 默认编码格式 默认量化 编码格式分量 量化分量 兴趣区 渐进顺序改变 打包的包标头:主标头 包长:主标头 拼块长:主标头 分量注册 注释

 拼块码流

拼块(tile-part)码流由拼块头开始,后跟若干包组成的包流。参见图10-58。

拼块头 包0 包1 „„ 包m

包流

• 62 • 多媒体技术与应用教程 图10-58 拼块码流

1)拼块头

拼块头的组成如下图:

可选的且顺序可任意

SOT COD QCD COC QCC RGN POC PPT PLT COM SOD 图10-59 拼块标头的组成

表10-6 拼块标头中的标记和标记段 标记 SOT SIZ COD QCD COC QCC RGN POC PPT PLT COM SOD 值 0xFF90 0xFF51 0xFF52 0xFF5C 0xFF53 0xFF5D 0xFF5E 0xFF5F 0xFF61 0xFF58 0xFF 0xFF93 英文名 Start Of tile-part image and tile SIZe CODing style default Quantization Default COding style Component Quantization Component ReGioN-of-interest Progression Order Change Packed Packet headers, Tile-part header Packet Length, Tile-part header COMment Start Of Data 中文名 码流开始 图像和拼块的大小 默认编码格式 默认量化 编码格式分量 量化分量 兴趣区 渐进顺序改变 打包的包标头:拼块标头 包长:拼块标头 注释 数据开始 2)包

每个包(packet)有一个包标头,后跟一个包体(包数据流)。包标头的前后允许有一个包起始标记SOP(Start Of Packet,0xFF91)段和一个包标头结束标记EPH(End of Packet Header,0xFF92)。

SOP段

SOP(2B) 段长(2B) (= 4) 可选

包序号(2B)

可选

图10-59 包的结构

包标头 EPH(2B) 包体 空标头位 包标头 LH标签

包体 LH编码字节 HH编码字节 HL标签 HH标签 HL编码字节 图10-60 包标头与包体的结构

第10章 小波变换与JPEG 2000编码 • 63 • 10.2.7 JP2文件格式

与JPEG标准不同,JPEG 2000标准中除了定义了算法外,还定义了图像文件格式。在JPEG 2000标准的第1部分(核心编码系统)中定义了JP2格式,在第2部分(扩展)中定义了JPX格式,在第6部分(混合图像文件格式)中定义了JPM格式。由于时间和篇幅的,本书只简单介绍基本的JP2格式。

JP2格式在JPEG 2000标准第1部分的附录I中定义,JP2文件由各种框组成(参见图10-61和表10-7)。有的框是必须的,有的框是可选的。有的框 只能有一个,有的框则可有多个。有的框必须按一定顺序排列,有的框的顺序却在一定范围内是任意的。容器型的框(也称为超级框SuperBox)之中还可以包含其他的框。

图10-61 JP2文件的结构

IPR = Intellectual Property Right智能产权

XML = Extensible Markup Language 可扩展标记语言 UUID = Universally Unique IDentifier通用唯一标识符

表10-7 JP2中的框 框名 JP2签名框 标志 ―JP ‖ 容器型 否 必须 是 功能(个数、顺序) 标识JP2文件(唯一、首个) • • 多媒体技术与应用教程 轮廓框 JP2头框 ―ftyp‖ ―jp2h‖ 否 是 是 是 指定文件格式的商标类型和兼容参数列表信息(唯一、第2个) 含图像大小、位深度、分辨率和颜色空间等子框(唯一、连续码流框之前) 含图像宽高、分量数、位深度、压缩类型等信息(JP2头框的子框、唯一、首个) 定义该分量与众不同的深度(JP2头框的子框、唯一、任意) 定义码流中的分量类型和顺序信息(JP2头框的子框、唯一、任意) 定义图像的颜色空间(JP2头框的子框、多个、任意) 指定调色板(JP2头框的子框、唯一、任意) 定义图像的分辨率(JP2头框的子框、唯一、任意) 定义图像被捕获时的分辨率(分辨率框的子框、多个、任意) 定义图像显示时的分辨率(分辨率框的子框、多个、任意) 含有效的JPEG 2000码流(多个,JP2头框之后) 含图像的知识产权信息(唯一、任意) 可利用XML格式添加各种用户信息(多个、任意) 利用网卡地址、时间戳和伪随机数产生一个128位的ID(多个、任意) 可通过UUID访问其他信息(多个、任意) 指定一系列的UUID(UUID信息框的子框、必须、唯一、任意) 指定一个URL(UUID信息框的子框、必须、唯一、任意) 图像头框 分量位数框 分量定义框 色标框 调色板框 分辨率框 捕获分辨率框 默认显示辨率框 连续码流框 智能产权框 XML框 UUID框 UUID信息框 UUID列表框 数据项URL框 ―ihdr‖ ―bpcc‖ ―cdef‖ ―colr‖ ―pclr‖ ―res ‖ ―resc‖ ―resd‖ ―jp2c‖ ―jp2i‖ ―xml ‖ ―uuid‖ ―uuif‖ ―ulst‖ ―url ‖ 否 否 否 否 否 是 否 否 否 否 否 否 是 否 否 是 可选 可选 是 可选 可选 可选 可选 可选 可选 可选 可选 可选 可选 可选 每个框的结构相同,依次为4个字节的框长(>8时为实际框长、=1时框长由扩展框长决定、=0表示框长不知)、4个字节的框类型(4个ASCII字符组成的标志串)、可选的8个字节的扩展框长(只有当框长=1时才有,为框的实际长度)、n(框长-8或扩展框长-16)个字节的数据框。参见图10-62。 框长(4B) 框类型(4B) 扩展框长(8B)

图10-62 JP2框的结构

数据框(nB) 复习思考题

1. 2. 3. 4. 5. 6. 7.

Fourier变换与三角级数有什么关系? Fourier变换有什么用处? 为什么要引入窗口Fourier变换?它对Fourier变换有什么改进? 小波变换与(窗口)Fourier变换有什么关系?它们各有什么特点? 级数与函数空间及其基底有什么关系?

小波变换属于数学的哪个分支?小波是数学家发明的吗? 连续小波变换中的参数a和b各是什么含义?

小波变换的变换核ψ(x)被称为什么?它必须满足哪些条件?常见的ψ(x)有哪些?

第10章 小波变换与JPEG 2000编码 • 65 • 8. 9.

如何从CWT到DWT?计算DWT一般采用什么算法?

DWT中的小波分解是如何进行的?滤波器H和G各起什么作用?

10. 哈尔基函数与哈尔小波函数有什么区别?它们在小波变换各起什么作用? 11. 函数空间、基底、基函数与坐标,它们之间是什么关系?

12. 什么是尺度函数?哈尔基函数与哈尔小波函数所对应尺度函数有什么共同之处? 13. 矢量空间Vj与Wj之间有什么关系?它们与小波分解有什么联系?

14. 一维图像可以用什么矢量空间来表示?空间又是如何分解的? 4、8像素的图像分别需

要几次哈尔小波分解?

15. 给出图像的哈尔小波分解系数的计算公式?这些公式是如何推倒出来的? 16. 图像的小波变换有哪些特征?

17. 对图像进行小波变换需要先对图像进行分块吗?为什么? 18. 二维小波变换是如何计算的?为什么可以采用矩阵运算?

19. 用小波对图像进行变换有哪两种方法?它们的区别在哪里?哪个更好一些? 20. 函数的正交性是怎么定义的?为什么哈尔尺度函数是正交的?

21. 函数规范化的含义是什么?怎样规范化?哈尔尺度函数的规范化参数是多少? 22. 第二代小波变换有哪些主要优点?

23. 提升原理的3个步骤的名称和内容各是什么?

24. 提升原理中的预测函数和更新函数是唯一的吗?给出线性Haar小波变换与线性小波变

换的预测函数和更新函数。 25. 第二代小波变换的具体特点有哪些?

26. 第二代小波都是整数小波吗?如何生成整数小波?最简单的整数小波变换——S变换与

线性Haar小波变换有什么关系?

27. JPEG 2000编码需要像JPEG那样对图像进行分块吗?为什么?图像块的大小有没有限

制?

28. JPEG 2000的基本编码方法是什么?用到了整数小波吗? 29. 给出EBCOT的英文原文与中文译文及其编码思路与特点。 30. 给出MQ的英文原文与中文译文及其编码器所属的算法类型。

作业

 平时作业15:(选做)实现离散小波变换,绘出变换结果图。采用B2或B3滤波器,对Mallat数据进行正反离散小波变换,并绘出图形。其中:

离散小波变换的测试数据(mallat.dat)格式为ASCII码文本,内容为: n // 数据总数(整数,以下为浮点数) x0 dx // 采样起点值与间隔(可用于画图) d1 // 以下为n个采样数据 d2

• 66 • 多媒体技术与应用教程 ...

dn

 平时作业16:(必做)实现二维哈尔小波变换的图像编码算法,并对JPEG作业(平时作业14)中所给的4个8*8的图像数据进行计算。

 平时作业17:(选做)用非标准分解方法处理256*256或更大的灰度或真彩图像(如lena),并像图10-34那样在屏幕上显示不同级别和分辨率的图像。

 平时作业18:(选做)用整数小波的S或2/6变换对256*256 Lena灰度图像进行非标准方法的3级分解与重构。

 平时作业19:(选做)用Le Gall 5/3整数小波 或Daubechies 9/7 离散小波的提升实现,对256*256 Lena灰度图像进行非标准方法的3级分解与重构。  平时作业20:(选做)实现EZW、SPIHT或EBCOT算法。

 大作业选题16:实现完整的JPEG 2000编解码(参见标准),并可读写与显示JP2图像文件。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务