小波包分解

**小波包分解**（wavelet packet decomposition）也可稱為**小波包**（wavelet packet）或**子帶樹**（subband tree）及**最佳子帶樹結構**（optimal subband tree structuring）。其概念是用分析樹來表示小波包，即利用多次疊代的小波轉換分析輸入訊號的細節部分。

## 與快速小波轉換比較

快速小波轉換（fast wavelet transform）是將輸入訊號分解成對數刻度，如圖一所示，最左邊的圖是經過快速小波轉換，高頻的部分頻帶較寬，低頻較窄。若要更廣泛的控制時頻圖(例如把高頻的頻帶分得更細)，必須將快速小波轉換一般化，即稱為小波包分解。經過一般化後，複雜度從原本O(M)增加到O(MlogM)。

### 一維三階快速小波轉換
圖二是一維三階的快速小波轉換，最上方為流程圖，\mathit{V_J}為輸入訊號，\mathit{J} - P表示第\mathit{P}階，以此類推，\mathit{h_{\psi}}為縮放函數(scaling function)的係數，\mathit{h_{\varphi}}為小波函數(wavelet function)的係數；右下圖則是各個子空間(subspace)在頻譜上的分布，由此可知\mathit{V}表示低頻訊號，\mathit{W}表示高頻訊號，而左下圖是用二進位的樹枝圖來表示，因為佔的空間比流程圖來的少，用來分析有效的分解較為方便，此例而言\mathit{V_J}可分解成
:\mathit{V_J} = \mathit{V_{J-1}} \oplus \mathit{W_{J-1}}
:\mathit{V_J} = \mathit{V_{J-2}} \oplus \mathit{W_{J-2}} \oplus \mathit{W_{J-1}}
:\mathit{V_J} = \mathit{V_{J-3}} \oplus \mathit{W_{J-3}} \oplus \mathit{W_{J-2}} \oplus \mathit{W_{J-1}}
\mathit{j0} = \mathit{J-P}，\mathit{P} = {1, 2, 3}，一般而言\mathit{P}-階快速小波轉換分析樹有\mathit{P}種不同的分解方式。

### 一維三階小波包分解
如前面所述，小波包分解利用多次疊代的小波轉換分析輸入訊號，因此經過三次的小波轉換後如圖三所示，其中\mathit{W}後面的\mathit{A}代表近似(approximation)過濾，可視為前一階訊號的低頻部分；\mathit{D}代表細節(detail)過濾，可視為前一階訊號的高頻部分。以子空間\mathit{W_{J-1,DA}}為例，\mathit{W_{J-1,DA}}是由第\mathit{J-1}階的快速小波轉換係數先經過一個細節濾波器(得到\mathit{W_{J-1,D}})後，再經過一個近似濾波器(得到\mathit{W_{J-1,DA}})。

圖四和圖五分別為一維三階小波包分解的流程圖及頻率特徵。

一維三階的小波包分解有26種不同的分解方式，可展開如圖五
:\mathit{V_J} = \mathit{V_{J-3}} \oplus \mathit{W_{J-3}} \oplus \mathit{W_{J-2,A}} \oplus \mathit{W_{J-2,D}} \oplus \mathit{W_{J-1,AA}} \oplus \mathit{W_{J-1,AD}} \oplus \mathit{W_{J-1,DA}} \oplus \mathit{W_{J-1,DD}}
或是特徵頻率如圖六
:\mathit{V_J} = \mathit{V_{J-1}} \oplus \mathit{W_{J-1,A}} \oplus \mathit{W_{J-1,DA}} \oplus \mathit{W_{J-1,DD}}

一般而言，對於\mathit{P}-階、一維的小波包
:\mathit{D(P+1)} = \mathit{[D(P)]^2} + 1 種的分解方式，其中
:\mathit{D(1)} = 1
有這麼多種的分解方式下，小波包轉換進一步提供分解特徵頻率的的精細度，但分解越精細，複雜度也隨之而增。

## 二維多階小波包分解

在二維時，一次小波轉換會得到四個區域，三個子空間(圖七)，分別為\mathit{V_{J-1}}低頻訊號；\mathit{W_{J-1}^H}，水平特徵；\mathit{W_{J-1}^V}，垂直特徵；\mathit{W_{J-1}^D}，角落特徵。

圖八為三階的分析樹

與一維類似，\mathit{W_{J-1,VD}^H}為例，是第\mathit{J-1}階快速小波轉換的水平細節係數(\mathit{W_{J-1}^H})經過"細節/近似"濾波器後(\mathit{W_{J-1,V}^H})，再經過"細節/細節"濾波器(\mathit{W_{J-1,VD}^H})。
一個\mathit{P}-階的二維小波包分解有
:\mathit{D(P+1)} = \mathit{[D(P)]^4} + 1種，其中
:\mathit{D(1)} = 1
因此圖八有83522種分解的方式。

## 分解準則

由上述的例子可知道小波包分解的可能方式有很多種選擇，在應用上不夠實際，需要一套有效的演算法找最佳的分解方式，在壓縮上更有效率。以下用一張指紋影像(圖九)來說明，利用熵準則判斷二進位樹(binary tree)。

我們將圖九的影像用完整二維三階的小波包分解後會得到圖十的結果，其分析樹如圖八所表示，總共有64個子空間。這樣完整的分解，壓縮效率並不一定是最好的。
利用一個合理的準則來選擇在那些節點要繼續做小波分解，稱為可加性消耗函數(additive cost function)
:\mathit{E(f)} = \sum_{m,n} |f(m,n)|
此函數量測二維訊號\mathit{f}的熵，熵值若趨近於零，所攜帶的資訊量越少；熵值越高，表示非零的值越多，然而當零的值越多，能使壓縮效率提高，將可加性消耗函數的值最小化即是分解的最佳方式。
以下兩步驟是取得最佳分解方式的演算法:
:1.計算預估計節點的熵，以\mathit{E_P}表示，經過一次二維小波包轉換的四個區域的熵分別為
\mathit{E_A},\mathit{E_H},\mathit{E_V},\mathit{E_D}。
:2.比較四個區域熵的和是否小於原本節點的熵，即\mathit{E_A} + \mathit{E_H} + \mathit{E_V} + \mathit{E_D} \mathit{E_P}。若和大於等於原節點的值就刪去其分支，不要往下做小波分解。
上述的演算法可減少分析樹的分支，減少運算複雜度，並得到最佳化的分解方式。圖十一是將圖九的影像經過該演算法所產生，與圖十比較可發現在高頻的部分沒繼續分解，使壓縮效率最高。

## 應用
### 訊號去雜訊
對一個訊號，想要去除雜訊，可以使用小波包分解。

小波包分解的基本概念和小波轉換大致上相同，而不同之處在於小波包分解更加複雜、但是也因此在分析上更為靈活。

小波包分解對上一層的低頻部分和高頻部分，兩者同時一起分解，所以在局部分析方面能夠做到更加精確。

另外，對訊號進行小波包分解時，有很多種小波包基可以採用。

一般來說，會根據所要達成的目標，選擇一個較佳的小波包基，這個小波包基可以稱為最佳基，而熵標準是選擇最佳基的標準。

因此，利用小波包分析對訊號去除雜訊，一般如下進行：

(1)	選擇一個小波基，並且選擇一個分解的層次，然後對訊號做小波包分解。

(2)	決定一個熵標準，利用這個標準計算最優樹，然後便能確定最優小波包基。

(3)	對於每一個小波包分解係數，都選擇一個閾值，然後對係數進行閾值量化。

(4)	最後，根據最低層的小波包分解係數，以及經過量化處理的係數，來進行小波包重構。

以上去除雜訊的步驟中，最關鍵的步驟是閾值的選取和量化，因為這兩者對於訊號去除雜訊的效果有最直接的影響。

### 訊號壓縮
對一個訊號，想要進行壓縮，可以使用小波包分解。

小波包分解用於訊號壓縮中，概念和在小波轉換中的基本一致，不同的地方就是在於小波包可以更加的複雜，局部分析也能更加精確。

同樣的，在使用小波包分析做訊號壓縮時，必須慎選閾值，以及閾值量化，因為這兩者對於訊號壓縮的效果影響最為深遠。

### 影像壓縮
小波包因為可以將空間作精細的分解，所以非常適合用來做影像的壓縮。

另外，關於影像壓縮的演算法，由Kunt等人所提出的影像數據壓縮演算法，是利用將原始影像做多層分解，並且考慮到人類視覺的特性，然後對這些資訊選擇性的編碼，便可以可得到高壓縮比和低失真度。 

### 影像邊緣檢測
影像的邊緣檢測，就是找出影像當中的邊緣，找出邊緣後便能對影像進行進一步處理與辨識。

雖然不同的影像邊緣，產生的原因未必相同，但是若從影像組成的角度來看，邊緣可以說是影像上灰度的不連續點、或灰度有劇烈變化的地方，也就是說，影像的邊緣就是高頻的訊號。

所以說，如果要做邊緣檢測，就是要想辦法找出高頻的成分所在。

但是，在實際的影像邊緣偵測中，因為影像中也有雜訊，所以邊緣檢測同時要如何處理及考慮雜訊帶來的影響，是一個重要的問題。

而對影像做小波包分解，可以得到一個影像序列，其中由近似部分和細節部分所組成，可以進一步做影像的邊緣檢測。

近似部分是拿原本的影像濾掉高頻成分之後，所得到的一種近似的表示。因為透過濾波可以去除高頻分量，所以便能夠檢測出原始影像中所檢測不出的邊緣部分。

### 超音波檢測缺陷回波訊號處理
超音波檢測，是一種無損的檢測方法，因此它的應用十分廣泛。

但是，在超音波檢測中，對於缺陷的定性識別問題，一直是學者研究的重要問題。

最主要是因為缺陷回波本身是一種瞬時脈衝訊號，但是這樣的訊號很容易被各種雜訊所影響。

若想要做到對缺陷的正確識別，就必須先將缺陷回波從帶有雜訊的波中分離出來。

目前許多超音波訊號處理方法都是基於傅立葉轉換而來的方法，由於傅立葉轉換並不適合對非穩態訊號做分析，沒辦法法將訊號的時域和頻域兩部分的特徵結合起來分析，更無法做到只分析訊號當中的一小部分。

因此，在此問題中，使用小波轉換，是一種可行的方法，因為小波轉換特別適合拿來對瞬時訊號做分析與處理。

而另外，小波包分解則具有更好的時頻分析率，可以說是對小波轉換的進階版，能對訊號進行各樣的精細分析和處理，因此是許多學者研究此問題的重要方向。

## 同時參閱

*小波分析
*快速小波轉換（FWT）

## 參考
* Rafael C. Gonzalez, Richard E. Woods, "Digital Image Processing", 2nd 2002, ISBN 0-20-118075-8
* Mallat Stéphane, "A Wavelet Tour of Signal Processing ", 3rd 2009, ISBN 978-0-12-374370-1
* 程龙跃, and 李功. "小波包分解在超声检测缺陷回波信号处理中的应用." 安徽冶金科技职业学院学报 16.2 (2006): 27-30.
* 葛哲學, and 陳仲生. "Matlab 時頻分析技術及其應用." 人民郵電出版社, pp10-15 (2006).