多貝西小波，是以比利時女性物理暨數學家英格麗多貝西（Ingrid Daubechies）的名字命名之一種小波函式，當初英格麗多貝西發現了一種具有階層（hierarchy）性質的小波，便將此小波以她的名字命名。多貝西小波主要應用在離散型的小波轉換，是最常使用到的小波轉換，通常使用在數位訊號分析、訊號壓縮跟雜訊去除。 一般而言的離散小波轉換通常是以（orthogonal wavelet）為基底，而多貝西小波也是一種正交小波。由於它很容易經由快速小波轉換（fast wavelet transform（FWT））實現，所以常會放在數位訊號處理的教科書中教學。 對於有限長度的小波，應用於快速小波轉換（fast wavelet transform（FWT））時，會有兩個實陣列成的數列：一是作為高通濾波器的係數，稱作小波濾波器（wavelet filter 也稱為 mother wavelet）；二是低通濾波器的係數，稱作調整濾波器（scaling filter 也稱為 father wavelet）。 我們則以濾波器的長度 N 來形容濾波器為 DN，例如：N2 的多貝西小波寫作 D2、N4 的多貝西小波寫作 D4，以此類推（N 為偶數）。實際上常用的多貝西小波為 D2 到 D20。與之對應的另一種描述方式是 db N，其中 N 指消失矩的數量，由此，D4 和 db2 是同一種多貝西小波。 性質 分類方式 多貝西小波的分類是以消失動量（vanishing moment）的值 A（亦為消失動量的個數）為依據（A 稱為 tap），調整函式（scaling function）及小波函式（wavelet function）的平滑度（smoothness）皆會隨著消失動量的值（tap）增加而增加：例如，當 A1 時，多貝西小波即是哈爾小波（Haar wavelet），調整函式及小波函式都是不連續的；當 A2 時，多貝西小波的調整函式及小波函式為不能平滑微分的連續函式；當 A3 時，調整函式及小波函式已經是連續可微的函式了。以此類推，當 A 愈大時，多貝西小波的兩個函式平滑度會愈來愈高。以下為多貝西小波跟不同 A 的調整及小波函式圖： 尺度函式（藍色）和小波函式（紅色） 對應函式的頻譜幅度 長度 多貝西小波的長度為消失動量（vanishing moment）值 A 的兩倍；所以當消失動量為 A 時，多貝西小波的小波濾波器（wavelet filter）及調整濾波器（scaling filter）長度皆為 2A（N2A）。一般而言，我們仍是以 N 來形容多貝西小波的長度：例如，當 A1 時，有一個消失動量，多貝西小波寫成 D2，長度為 2（也是 Haar 小波）；當 A2 時，有兩個消失動量，多貝西小波寫成 D4，長度為 4；以此類推。但是，在 MATLAB 的使用上是以 dbA 描述多貝西小波，以下則為調整濾波器的係數及 A 的關係表： 正交多貝西小波係數 Scaling Coefficient p_k db1（Haar） db2 db3 db4 db5 db6 db7 db8 db9 db10 p_0 1 06830127 047046721 032580343 022641898 015774243 011009943 007695562 005385035 003771716 p_1 1 11830127 114111692 101094572 085394354 069950381 056079128 044246725 034483430 026612218 p_2 03169873 0650365 08922014 102432694 106226376 103114849 095548615 085534906 074557507 p_3 01830127 019093442 003957503 019576696 044583132 066437248 082781653 092954571 097362811 p_4 012083221 026450717 034265671 031998660 020351382 002238574 018836955 039763774 p_5 00498175 00436163 004560113 018351806 031683501 040165863 041475176 035333620 p_6 00465036 010970265 013788809 01008467 668194092e4 013695355 027710988 p_7 001498699 000882680 003892321 011400345 018207636 021006834 018012745 p_8 001779187 004466375 005378245 002456390 0043452675 013160299 p_9 471742793e3 783251152e4 002343994 006235021 009564726 010096657 p_10 675606236e3 001774979 001977216 354892813e4 004165925 p_11 152353381e3 607514995e4 001236884 003162417 004696981 p_12 254790472e3 688771926e3 667962023e3 510043697e3 p_13 500226853e4 554004549e4 605496058e3 001517900 p_14 955229711e4 261296728e3 197332536e3 p_15 166137261e4 325814671e4 281768659e3 p_16 356329759e4 969947840e4 p_17 55645514e5 164709006e4 p_18 132354367e4 p_19 1875841e5 濾波器 這邊列出 4 到 10 點的 filter，這些在實務上已經很夠用，消失點 vanish moment 也就是 k2。 g 會是低頻的濾波器，h 會是高頻的濾波器。 可以看出 h n1ng n，這邊採用 python 的語法，h 會是 g 的反序，且 n 為基數時要乘上 1。 Coiflet filter g_kh_k 0 1 2 3 4 5 6 7 8 9 h_4 04829629131445 0836516303 022414386 g_4 083651630 h_6 03326705529500 080689150 045987750 003522629 g_6 00352262918857 008544127 0806891509 h_8 02303778133088 071484657 063088076 0030841381 0032883011 g_8 003084138 01870348117 0714846570 h_10 01601023979741 060382926 072430852 01384281459 0077571493 0003335725 g_10 00033357252854 0012580751 02422948870 0138428145 06038292697 建立 多貝西小波具有調整函式（低通濾波）及小波函式（高通濾波）兩個函式。因此，我們需先建立調整函式及小波函式的係數 首先，調整函式在多尺度分析（multiresolution analysis）中的每一層皆可寫為下列方程式： phi xsum_k0N1 a_kphi 2xk 其中 a_0dots a_N1 為有限長度實數數列，稱作調整係數。同時，小波函式也可以調整函式的線性組合表示： psi xsum_k0M1 b_kphi 2xk 其中 b_0dots b_M1 亦為有限長度的實數數列，稱做小波係數。 因為上述方程式必須是齊性的（homogeneous），在建立上，這兩個函式會正規化（normalize）為和（sum）及平方和（sum of square）皆是 2。 正交小波 正交性質在此指調整係數就必須和位移偶數間隔後的調整係數互相垂直（內積為 0），即為下式： sum_ninZ a_n a_n2m2delta_m0 由於正交的特性，小波係數會滿足下列條件： b_n1n a_N1n 消失動量及多項式估計 常用的多貝西小波為 D2 到 D20，由於多貝西小波的消失動量為有限個，所以調整及小波係數可以表示為有限長度的多項式 a na_n 上式經過 Z 轉換（Ztransform）後會變成： AZa_0a_1Zdotsa_N1 ZN1 我們可以將上式轉換為正交離散小波轉換的一般表示式 a Z21A1ZAp Z order A，此時，p 11、p 有實係數及 deg p A1。 而正交的條件可寫成 a Za Z1a Za Z14 或是等同於 2XA P XXAP 2X2Adots X 定義為可以產生對稱數列的勞倫茲多項式 X12cdot 2ZZ1 滿足 X Z2X Z 因此 P X 便成為對稱型勞倫滋多項式，即 P X ZP Z P Z1。因為 X eiw1cos w 及 p eiw p eiwp eiw2 P 則會是區段 02 中的非負實數。 方程式如果除上 X 的 truncated power series 則可求得對於每個 A 的最小解 P_A Xsum_k0A1left Ak1atop A1right 2k Xk（明顯的值會是在（02）間的正數） 而的齊性方程式是一個對於 x1 的反對稱方程式，因此可得一般解為 XA X1 R X12，此一般解有 R 個多項式實係數。 因此和為 sum P XP_A XXA X1 R X12 P 的值在區間 02 中並有界線（界線為 4Ar）。為了將 r 最大化的過程中會產生許多具有不等式條件的線性方程式。 為瞭解出 P X ZP Z P Z1 的 P，這裡使用 FejerRieszalgorithm 這個方法（此為頻譜分解的方法）。多項式 P X 會因此分開成許多線性因子（linear factor）P XXmu_1dots Xmu_N 此時 NA12deg R。每一個線性因子代表可以分解成兩個線性因子的一個勞倫茲多項式 X Zmufrac12Z1mufrac12Z1，任選其中一個線性因子都可設為 p Z。所以 p Z 會有 2N 個可能的答案。為了極端相位的目的，挑選所有根都是在單位圓上或是在單位圓內複數根的 P Z。 演演算法 以下為示範小波轉換應用於影像壓縮，壓縮後為原本圖片的四分之一。 假設輸入的圖片大小為 MN，讓圖片對高頻和低頻進行卷積運算。 對 M 的基數進行取樣，這個結果會讓兩個維度都變成 M2N。 把低頻的圖片放在上面，高頻的放在下面，低頻的圖片會長的像原本的圖片，高頻的圖片會是隻有灰色的圖片。 對新的圖片再進行高頻和低頻的卷積，這時變成 MN2 的大小，低頻放在左邊，高頻放在右邊， 最後可以看到 0M2 0N2 就會是原本壓縮過後的圖片。 因小波轉換有良好的性質，經過多次壓縮還是能保有原本的資訊。也就是說可以修改以下的程式碼改成迴圈的方式， 進行多次小波轉換，經過類似的模式再使用多次的反小波轉換，還原出原本大小的圖片。 import numpy as np def subsampling x d if d 1 y x 2 elif d 2 y x 2 return y def upsampling x d s xshape if d 1 y npzeros p s 0 s 1 y 2 x elif d 2 y npzeros s 0 p s 1 y 2 x return y def cconv x h d if d 2 return nptranspose cconv nptranspose x h 1 y npzeros xshape p len h pc int round float p 1 2 for i in range 0 p y y h i nproll x i pc axis0 return y def DWT image h g discrete wavelet transformation fW imagecopy j int nplog2 imageshape 01 A fW 2j12j1 Coarse subsampling cconv Ah11 Detail subsampling cconv Ag11 A npconcatenate Coarse Detail axis0 Coarse subsampling cconv Ah22 Detail subsampling cconv Ag22 A npconcatenate Coarse Detail axis1 fW 2j12j1 A return fW def iDWT image fW h g image is original fW is after DWT of that f1 fWcopy j int nplog2 imageshape 01 A f1 2j12j1 Coarse A 2j Detail A 2j2j1 h1 h 1 g1 g 1 Coarse cconv upsampling Coarse1h11 Detail cconv upsampling Detail1g11 A Coarse Detail Coarse A 2j Detail A 2j2j1 Coarse cconv upsampling Coarse2h12 Detail cconv upsampling Detail2g12 A Coarse Detail f1 2j12j1 A return f1 參照 小波分析 參考資料 A first course in Wavelets with Fourier Analysis ABoggess FJ Narcowich 2001 D