小波提升(续)

l     提升原理

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

 

1)步骤

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

(1) 分裂

分裂(Split)是将原始信号sj = { sjk }分为两个互不相交的子集和。每个子集的长度是原子集的一半。通常是将一个数列分为偶数序列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-1P (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-1sj的低频部分;与预测函数一样,更新算子也可以取不同函数,如

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

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

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

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-1P (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 )

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

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

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 )

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, kPk (ej-1) = oj-1, kej-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, kdj-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

则得到线性小波变换。

分解式如下:

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

d j-1, k = oj-1, kPk (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等已经证明,借助于因子化小波变换,所有小波的构造都能够用提升模式实现。

l     整数小波变换

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

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

 

2S+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]

其中

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

例如,取参数如下表所示

变换

α-1

α0

α1

β-1

S

0

0

0

0

2/6

0

1/4

1/4

0

B

0

1/4

3/8

1/4

C

-1/16

1/4

1/2

3/8

其中

1S变换:

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)

22/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

 

35/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]

 

49/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]

你可能感兴趣的:(算法,面试,merge)