離散小波變換

来自testwiki
跳转到导航 跳转到搜索

Template:NoteTA数值分析泛函分析领域中,离散小波变换(Discrete Wavelet Transform,DWT)是小波被离散采样的小波变换。与其他小波变换一样,它与傅里叶变换相比的一个关键优势是时间分辨率:它既能捕获频率信息,又能捕获位置(时间上的位置)信息。

第一個離散小波變換由匈牙利數學家哈尔發明,離散小波轉換顧名思義就是離散的輸入以及離散的輸出,但是這裡並沒有一個簡單而明確的公式來表示輸入及輸出的關係,只能以階層式架構來表示。

定義

Template:傅里葉變換

  • 首先我們定義一些需要用到的信號及濾波器。
  • x[n]:離散的輸入信號,長度為N。
  • g[n]:低通濾波器(low pass filter),可以將輸入信號的高頻部份濾掉而輸出低頻部份。
  • h[n]:高通濾波器(high pass filter),與低通濾波器相反,濾掉低頻部份而輸出高頻部份。
  • Q:降采样濾波器(downsampling filter),如果以x[n]作為输入,則輸出y[n]=x[Qn]。此處舉例Q=2。
舉例說明:
清楚規定以上符號之後,便可以利用階層架構來介紹如何將一個離散信號作離散小波轉換:
架構中的第1層(1st stage)
x1,L[n]=k=0K1x[2nk]g[k]
x1,H[n]=k=0K1x[2nk]h[k]
架構中的第2層(2nd stage)
x2,L[n]=k=0K1x1,L[2nk]g[k]
x2,H[n]=k=0K1x1,L[2nk]h[k]
可繼續延伸




架構中的第α層(αth stage)

xα,L[n]=k=0K1xα1,L[2nk]g[k]
xα,H[n]=k=0K1xα1,L[2nk]h[k]
注意:若輸入信號x[n]的長度是N,則第α層中的xα,L[n]xα,H[n]的長度為N2α

二維離散小波轉換


此時的輸入信號變成x[m,n],而轉換過程變得更複雜,說明如下:
首先對n方向作高通、低通以及降頻的處理
v1,L[m,n]=k=0K1x[m,2nk]g[k]
v1,H[m,n]=k=0K1x[m,2nk]h[k]
接著對v1,L[m,n]v1,H[m,n]延著m方向作高低通及降頻動作
x1,LL[m,n]=k=0K1v1,L[2mk,n]g[k]
x1,HL[m,n]=k=0K1v1,L[2mk,n]h[k]
x1,LH[m,n]=k=0K1v1,H[2mk,n]g[k]
x1,HH[m,n]=k=0K1v1,H[2mk,n]h[k]
經過(1)(2)兩個步驟才算完成2-D DWT的一個stage。


實際範例

以下根據上述2-D DWT的步驟,對一張影像作二維離散小波轉換(2D Discrete Wavelet Transform)

原始影像
2D DWT的結果

複雜度(Complexity)

在討論複雜度之前,先做一些定義,當x[n]*y[n]時,x[n]之長度為N,y[n]之長度為L:  IDFTN+L1[DFTN+L1(x[n])DFTN+L1(y[n])]

其中,

 IDFTN+L1為(N+L-1)點離散傅立葉反轉換(inverse discrete Fourier transform)

 DFTN+L1為(N+L-1)點離散傅立葉轉換(discrete Fourier transform)

(1)一維離散小波轉換之複雜度(沒有分段卷积(sectioned convolution)):

32(N+L1)log2(N+L1)32Nlog2N

(2)當 N >>> L 時,使用 “分段卷积(sectioned convolution)”的技巧:

將x[n]切成很多段,每段長度為1,總共會有S=NN1段,其中N>N1>>L

 x[n]*g[n]=x1[n]*g[n]+x2[n]*g[n]+...+xs[n]*g[n]

 x[n]*h[n]=x1[n]*h[n]+x2[n]*h[n]+...+xs[n]*h[n]

複雜度為:

32S(N1+L1)log2(N1+L1)32SN1log2(N1+L1)32Nlog2(N1+L1)32Nlog2N1

在這裡要注意的是,當N>>L時,一維離散小波轉換之複雜度是呈線性的(隨N),𝑂(𝑁)

(3)多層(Multiple stages )的情況下:

1.若 xa,H[n]不再分解時:

Complexity(N+N2+N4+N8+...+2)32log2N1=(2N2)32log2N13Nlog2N1

2.若 xa,H[n]也細分時:

Complexity(N+2N2+4N4+8N8+...+N22)32log2N1=(Nlog2N)32log2N1

(4)二維離散小波轉換之複雜度(沒有分段卷积(sectioned convolution)):  M32(N+L1)log2(N+L1)+(N+L1)32(M+L1)log2(M+L1)

上式中,第一部分需要M個一維離散小波轉換並且每個一維離散小波轉換的輸入有N個點;第二部分需要N+L-1個一維離散小波轉換並且每個一維離散小波轉換的輸入有M個點。

Complexity32MNlog2N+32MNlog2M=32MN(log2N+log2M)=32MNlog2MN

(5)二維離散小波轉換之複雜度,使用 “分段卷积(sectioned convolution)”的技巧:

假設原始尺寸為M×N,則每一小部分的尺寸為M1×N1

ComplexityMNM1N132M1N1log2M1N1=32MNlog2M1N1

所以若是使用分段摺積,則二維離散小波轉換之複雜度是呈線性的(隨MN),𝑂(𝑀𝑁)

(6)多層(Multiple stages )與二維的情況下:

首先x[m,n]的尺寸為M×N

1.若 xa,H1[n],xa,H2[n],xa,H3[n]不細分,只細分 xa,L[n]時,總複雜度為:

totalcomplexity=(MN+MN4+MN16+...)32log2M1N143MN32log2M1N1=2MNlog2M1N1

2.若 xa,H1[n],xa,H2[n],xa,H3[n]也細分時,總複雜度為:

totalcomplexity=(MN+4M2N2+16M4N4+...)32log2M1N1=[MNlog2(min(M,N))]32log2M1N1

重建(Reconstruction)

使用離散小波轉換,將訊號個別通過一個低通濾波器和一個高通濾波器,得到訊號的高低頻成分,而在重建(Template:Link-en)原始訊號的過程,也就是離散小波的逆轉換(Inverse Discrete Wavelet Transform. IDWT),直觀而言,我們僅是需要將離散小波轉換做重建濾波即可得到原始輸入信號,以下將推導重建濾波器,也就是IDWT高低通濾波器的構成要件,以及如何來重建原始信號。

重建過程如下:

使用Z轉換:

X(z)=x(n)zn
  • DWT低通濾波器 g(n) 的Z轉換為 G(z) ,DWT高通濾波器h(n)的Z轉換為H(z)
  • 信號x(n)通過濾波器 g(n) 後,Z轉換為 X(z)G(z) ,信號x(n)通過濾波器 h(n) 後,Z轉換為 X(z)H(z)
  • 降低採樣數(downsample)2倍後,
X1,L(z)=12[X(z12)G(z12)+X(z12)G(z12)]
X1,H(z)=12[X(z12)H(z12)+X(z12)H(z12)]
  • 升頻(interpolation)2倍後,再通過IDWT的低通重建濾波器 g1(n)
X0(z)=12[X(z)G(z)+X(z)G(z)]G1(z)+12[X(z)H(z)+X(z)H(z)]H1(z)
=12[G(z)G1(z)+H(z)H1(z)]X(z)+12[G(z)G1(z)+H(z)H1(z)]X(z)

若要完整重建,則X0(z)=X(z)

條件1:G(z)G1(z)+H(z)H1(z)=2
條件2:G(z)G1(z)+H(z)H1(z)=0

因此,在設計高低通重建濾波器時,需要考慮上述條件,寫成矩陣形式如下:

(G1(z)H1(z))=2det(Hm(z))(H(z)G(z))
其中 det(Hm(z))=G(z)H(z)H(z)G(z)

離散小波轉換(DWT)設計

四大條件:

1.DWT通濾波器 g(n)h(n)必須要是有限長度。

2.滿足h(n)是高通濾波器(high pass filter),g(n)是低通濾波器(low pass filter)。

3.滿足完整重建要條件,(G1(z)H1(z))=2det(Hm(z))(H(z)G(z)),其中 det(Hm(z))=G(z)H(z)H(z)G(z)

4.若g(n)h(n)為有限長度,則det(Hm(z))=G(z)H(z)H(z)G(z)=αzk ,且 k 為奇數。

>第4點較難達成,是DWT設計的核心

*為什麼k是奇數?

假設k为偶数,

z=-1

det(Hm(1))=G(1)H(1)H(1)G(1)=α(1)k=1

z=1

det(Hm(1))=G(1)H(1)H(1)G(1)=α(1)k=1

G(1)H(1)H(1)G(1)=G(1)H(1)H(1)G(1)

H(1)G(1)=G(1)H(1)

代回

det(Hm(1))=G(1)H(1)H(1)G(1)=0

顯然出現矛盾。

所以k必須為奇数。

以下介紹兩種完美重建的DWT濾波器:

1.正交镜象滤波器(Quadrature Mirror Filter,QMF)

  • H(z)=G(z)

h(n)=(1)ng(n)

  • G1(z)=G(z)zk

g1(n)=g(nk)

  • H1(z)=G(z)zk

h1(n)=(1)nk+1g(nk)

det(Hm(z))=G(z)H(z)H(z)G(z)=2zk,且 k 為奇數。

2.单位正交小波(Orthonormal Wavelet)

  • G(z)=G1(z1)

g(n)=g1(n)

  • H(z)=zkG1(z)

h(n)=(1)ng1(n+k)

  • H1(z)=zkG1(z1)

h1(n)=(1)ng1(n+k)

det(Hm(z))=G(z)H(z)H(z)G(z)=2zk,且 k 為奇數。

多數小波屬於单位正交小波。

其他應用

壓縮、去除雜訊:使用低通濾波器,將小波轉換的高頻濾掉,即保留x1,LL[m,n]而將其他部分捨棄。

  • 邊緣偵測:使用高通濾波器,將小波的低頻濾掉,即保留x1,HL[m,n]x1,LH[m,n]而捨棄其他部分。
  • R语言小波分析wavelet Template:Wayback
  • 作為 JPEG2000 的內部架構
  • 模式辨認:由於可以利用低頻的部分得到原圖的縮略版,加上模式通常為整體的特性,藉由在縮略圖上進行工作,小波轉換可以有效減少尋找模式與比對模式的運算時間
  • 濾波器設計:小波轉換保留部分時間資訊,可以據此資訊加上訊號的強度資訊,保留特定時點的資訊而同時去除雜訊

同時參閱

參考

de:Wavelet-Transformation#Diskrete Wavelet-Transformation fr:Ondelette#Transformée en ondelettes discrète