1. 程式人生 > >小波變換 通俗解讀(2)

小波變換 通俗解讀(2)

這是《小波變換和motion訊號處理》系列的第二篇,深入小波。第一篇我進行了基礎知識的鋪墊,第三篇主要講解應用。

在上一篇中講到,每個小波變換都會有一個mother wavelet,我們稱之為母小波,同時還有一個father wavelet,就是scaling function。而該小波的basis函式其實就是對這個母小波和父小波縮放和平移形成的。縮放倍數都是2的級數,平移的大小和當前其縮放的程度有關。

還講到,小波系統有很多種,不同的母小波,衍生的小波基就完全不同。小波展開的近似形式是這樣:


其中的就是小波級數,這些級數的組合就形成了小波變換中的基basis。和傅立葉級數有一點不同的是,小波級數通常是orthonormal basis,也就是說,它們不僅兩兩正交,還歸一化了。

我們還講了一般小波變換的三個特點,就是小波級數是二維的,能定位時域和頻域,計算很快。但我們並沒有深入講解,比如,如何理解這個二維?它是如何同時定位頻域和時域的?

在這一篇文章裡,我們就來討論一下這些特性背後的原理。

首先,我們一直都在講小波展開的近似形式。那什麼是完整形式呢?之前講到,小波basis的形成,是基於基本的小波函式,也就是母小波來做縮放和平移的。但是,母小波並非唯一的原始基。在構建小波基函式集合的時候,通常還要用到一個函式叫尺度函式,scaling function,人們通常都稱其為父小波。它和母小波一樣,也是歸一化了,而且它還需要滿足一個性質,就是它和對自己本身週期平移的函式兩兩正交:



另外,為了方便處理,父小波和母小波也需要是正交的。可以說,完整的小波展開就是由母小波和父小波共同定義的。


其中是母小波,是父小波。需要提醒一點的是,這個正交純粹是為了小波分析的方便而引入的特性,並不是說小波變換的基就一定必須是正交的。但大部分小波變換的基確實是正交的,所以本文就直接預設正交為小波變換的主要性質之一了。引入這個父小波呢,主要是為了方便做多解析度分析(multiresolution analysis, MRA)。說到這裡,你的問題可能會井噴了:好好的為什麼出來一個父小波呢?這個scaling function是拿來幹嘛的?它背後的物理意義是什麼?wavelet function背後的物理意義又是什麼?這個多解析度分析又是什麼呢?不急,下面,我們圍繞一個例子來鞏固一下前面的知識,同時再引出新的特性。

假設我們有這樣一個訊號:


該訊號長度為8,是離散的一維訊號。我們要考慮的,就是如何用小波將其展開。為了方便講解,我們考慮最簡單的一種小波,哈爾小波。下面是它的一種母小波:


那如何構建基於這個母小波的基呢?剛才提到了,要縮放,要平移。我們先試試縮放,那就是ψ(2n):


但這樣的話,它與自己的內積就不是1了,不符合小波基orthonormal的要求,所以我們要在前面加一個係數根號二,這樣我們就得到了另一個哈爾小波的basis function:


同理,我們可以一直這樣推廣下去做scale,得到4n,8n,…….下的basis function。當然在這個例子裡,我們訊號長度就是8,所以做到4n就夠了。但推廣來說,就是這種scaling對母小波的作用為,這是歸一化後的表示形式。

平移的話也很簡單,我們可以對母小波進行平移,也可以對scale之後的basis function進行平移。比如對上一幅圖中的basis function進行平移,就成了


看得出來,平移後的basis function和母小波以及僅僅scale過的小波,都是正交的,附合小波basis的特點。如果我們用ψ(n)來表示這個mother wavelet,那麼這些orthonormal basis函式可以寫成:


這裡的k是可以看成時域的引數,因為它控制著小波基時域的轉移,而j是頻域的引數,因為它決定了小波基的頻率特性。看到這裡,你應該會感覺很熟悉,因為這裡的平移和變換本質和剛才對scaling function的平移變換是一模一樣的。

這樣,我們就有了針對此訊號space的哈爾小波basis組合:


圖1

可以看出,我們用到了三層頻率尺度的小波函式,每往下一層,小波的數量都是上面一層的兩倍。在圖中,每一個小波基函式的表達形式都寫在了波形的下面。

等等,你可能已經發現了,有問題。這裡為什麼多了個沒有函式表示式的波形呢?這貨明顯不是wavelet function阿。沒錯,它是之前提到的scaling function,也就是父小波。然後你可能就會問,為啥這個憑空插了一個scaling function出來呢?明明目標訊號已經可以用純的小波基組合表示了。是,確實是,就算不包括scaling function,這些小波函式本身也組成了正交歸一基,但如果僅限於此的話,小波變換也就沒那麼神奇的功效了。引入這個scaling function,才能引入我們提到的多解析度分析的理論,而小波變換的強大,就體現在這個多解析度上。那在這裡,我們怎麼用這個多解析度呢?這個哈爾小波basis組合是怎麼通過多解析度推匯出來的呢?

話說在數學定義中,有一種空間叫Lebesgue空間,對於訊號處理非常重要,可以用L^p(R)表示,指的是由p次可積函式所組成的函式空間。我們在小波變換中要研究的訊號都是屬於L^2(R)空間的,這個空間是R上的所有處處平方可積的可測函式的集合,這樣就等於對訊號提出了一個限制,就是訊號能量必須是有限的,否則它就不可積了。小波變換的定義都是基於但不限於L^2(R)中的訊號的。這玩意的特性要具體解釋起來太數學了,牽涉到太多泛函知識,我就不在這裡詳述了。而且老實說我也沒能力完全講清楚,畢竟不是學這個的,有興趣可以參考wiki。總之你記住,小波變換研究中所使用的訊號基本都是平方可積的訊號,但其應用不限於這種訊號,就行了。

對L^2(R)空間做MRA是在幹嘛呢?就是說,在L^2(R)空間中,我們可以找出一個巢狀的空間序列,並有下列性質:

(i) 

(ii) 

(iii) 

(iv) 

(v) 有這樣一個方程 是的orthonormal basis。

我來簡單解釋一下這些性質。這個V_j都是L^2(R)空間中的子空間,然後他們是由小到大的,交集是{0},因為這是最小的子空間,並集就是L空間。是不是有點難以理解?沒關係,看看下面這個圖就清楚了:


這個圖是圈圈套圈圈,最裡面的圈是V0,之後分別是V1,V2,V3,V4 。那他們有趣的性質就是,假如有一個函式f(t)他屬於一個某空間,那你將其在時域上平移,它還是屬於這個空間。但如果你對它頻域的放大或縮小,它就會相應移到下一個或者上一個空間了。

同時我們還知道,你要形容每一個空間的話,都需要有對應的orthonormal basis,這是必然的,那對於V0來講,它的orthonormal basis就是


這一系列函式是什麼呢?是的時域變換,而且我們剛才也說了,時域上平移,是不會跳出這個空間的。這樣,我們就可以說,由這一系列basis所定義的L^2(R)子空間V0被這些basis所span,表示成:


k從負無窮到正無窮。上面的bar表示這是一個閉包空間,也就是說


這樣,我們就定義了基本的V0這個子空間。剛才說了,這個子空間的基都是對的整數時域變換,這裡我們稱為scaling function,所以換個說法,就是說這裡整個子空間V0,由scaling function和其時域變換的兄弟們span。

當然,如果這個scaling function只是用來代表一個子空間的,那它的地位也就不會這麼重要了。剛才我們提到,這個巢狀空間序列有一個性質,。這就是這個函式,如果你對它頻域的放大或縮小,它就會相應移到下一個或者上一個空間了。這個性質就有意思了,它代表什麼呢?對於任何一個包含V0的更上一層的空間來講,他們的基都可以通過對scaling function做頻域的scale後再做時域上的整數變換得到!推廣開來就是說,當


我們有


這也就意味著,對於任何屬於V_j空間的函式f(t),都可以表示為:


到這裡,我們就明白這些個子空間和那個憑空冒出來的scaling function的作用了。scaling構建這些不同的子空間的基礎,當j越大的時候,每一次你對頻率變換後的scaling function所做的時域上的整數平移幅度會越小,這樣在這個j子空間裡面得到的f(t)表示粒度會很細,細節展現很多。反之亦然。通俗點說,就是對scaling function的變換平移給你不同的子空間,而不同的子空間給你不同的解析度,這樣你就可以用不同的解析度去看目標訊號。

下面就是時候看看什麼是MRA equation了,這是更加有趣,也是更加核心的地方。通過剛才的講解,V0屬於V1,那scaling function是在V0中的,自然也在V1中了。我們把他寫成V1的基的線性組合,那就是


其中的h(n)是scaling function的係數,也叫做scaling filter或者scaling vector,可以是實數,也可以是虛數。根號2是為了維持norm為1的。看,在這個公式裡,我們就把屬於V0的函式用V1的基表示出來了。同理,我們可以迴圈如此,把屬於V0的在V2, V3, …, Vn中表示出來。這些方程就是MRA equation,也叫refinement equation,它是scaling function理論的基礎,也是小波分析的基礎之一。

好,稍微總結一下。到現在,已經講了關於scaling function的基本理論知識,知道了訊號空間可以分為不同精細度的子空間,這些子空間的basis集合就是scaling function或者頻率變換之後的scaling function,如下圖所示:


上圖就是四個子空間的basis集合的展覽。通過前面的討論,我們還知道,一開始的scaling function可以通過更精細的子空間的scaling function(它們都是對應子空間的basis)來構建。比如


對於更加finer的scale:


圖2
依此類推。實際上,對於任何scale和translate過的scaling function,都可以用更加精細的scale層面上的scaling function構建出來。

然後,我們有各種scale下的scaling function了,該看看它們分別所對應的巢狀的空間序列了。先看看V0,自然就是以基本的scaling function為基礎去span出來的:


這個不新鮮,剛才就講過了。這個子空間代表什麼樣的訊號?常量訊號。道理很簡單,這個scaling function在整個訊號長度上,沒有任何變化。繼續往下看:


這個相比V0更加finer的子空間,代表著這樣一種訊號,它從1-4是常量,從5-8是另一個常量。同理我們有:


V2代表的訊號,是分別在1,2; 3,4; 5,6; 7,8上有相同值的訊號。那麼V3呢?則表示任何訊號,因為對於V3來講,任何一個時間刻度上的值都可以不一樣。而且現在,我們也可以通過上面的一些scaling functions的波形驗證了之前提到的多解析度分析中的一個核心性質,那就是:


我們之前講了一堆多解析度的理論,但直到現在,通過這些圖形化的分析,我們可能才會真正理解它。那好,既然我們有一個現成的訊號,那就來看看,對這個訊號作多解析度分析是啥樣子的:


你看,在不同的子空間,對於同一個訊號就有不同的詮釋。詮釋最好的當然是V3,完全不損失細節。這就是多解析度的意義。我們可以有巢狀的,由scaling function演變的basis function集合,每一個集合都提供對原始訊號的某種近似,解析度越高,近似越精確。

說到這裡,可能你對scaling function以及多解析度分析已經比較理解了。但是,我們還沒有涉及到它們在小波變換中的具體應用,也就是還沒有回答剛才那個問題:憑空插了一個scaling function到小波basis組合中幹嘛。也就是說,我們希望理解scaling function是怎麼和小波函式結合的呢,多解析度能給小波變換帶來什麼樣的好處呢。這其實就是是小波變換中的核心知識。理解了這個,後面的小波變換就是純數學計算了。

好,我們已經知道,對於子空間V0,basis是scaling function:


對應的小波函式是:


然後子空間V1的basis集合是這倆哥們:


看出什麼規律了麼?多看幾次這三個圖,你會驚訝地發現,在V0中的scaling function和wavelet function的組合,其實就是V1中的basis!繼續這樣推導,V1本來的的basis是:


然後V1中對應的wavelet function是


他們的組合,本質上也就是V2的basis(參考圖2)。你繼續推導下去,會得到同樣的結論:在scale j的wavelet function,可以被用來將Vj的basis擴充套件到V(j+1)中去!這是一個非常非常關鍵的性質,因為這代表著,對任何一個子空間Vj,我們現在有兩種方法去得到它的orthonormal basis:

1. 一種就是它本來的basis ,對任意k。

2. 第二種就是它上一個子空間的basis,對任意k,以及上一級子空間的wavelet function ,對任意k。

第二種選擇能給我們帶來額外的好處,那就是我們可以迴圈不斷地用上一級子空間的scaling function以及wavelet function的組合來作為當前子空間的基。換句話說,如果針對V3這個子空間,它實際上就有四種不同的,但是等價的orthonormal basis:

1. 本級(V3)的scaling function basis set


2. 上一級(V2)的scaling function + wavelet function;


3 . 上上一級(V1)的scaling function + 上上一級(V1)的wavelet function + 上一級(V2)的wavelet function;

4. 上上上一級(V0)的scaling function + 上上上一級(V0)的wavelet function + 上上一級(V1)的wavelet function + 上一級(V2)的wavelet function


好,看看最後一種選取方式,有沒有感到眼熟?對了,它就是我們之前提到的“針對此訊號space的哈爾小波basis組合”,參見圖1。現在我們知道了,這個scaling function不是憑空插進去的,而是通過不斷的巢狀迭代出來的:)

那為什麼我們最後選定的是這種選取方式呢?實際上,剛才介紹的這個性質已經告訴我們,對於任何的scale j0,我們都可以給我們的signal space找到一組orthonormal basis,這個basis是通過組合scale j0上的scaling function以及所有在scale j,j>=j0上的wavelets得到的。這樣,基於這個orthonormal basis,所有訊號空間中的訊號都可以寫成組成這個basis的functions的線性組合:


對應的係數的計算和平常一樣:


這,就是最終的,也是最核心的,小波變換形式。不管是訊號壓縮,濾波,還是別的方式處理,只要是用小波變換,都逃不出這個基礎流程:

1. 選取合適的wavelet function和scaling function,從已有的訊號中,反算出係數c和d。

2. 對係數做對應處理

3. 從處理後的係數中重新構建訊號。

這裡的係數處理是區別你的應用的重點。比如影象或者視訊壓縮,就希望選取能將能量聚集到很小一部分系數中的小波,然後拋棄那些能量很小的小波係數,只保留少數的這些大頭係數,再反變換回去。這樣的話,影象訊號的能量並沒有怎麼丟失,影象體積卻大大減小了。

還有一個沒有解釋的問題是,為什麼要強調尺度函式和小波函式組成一個orthonormal basis呢?計算方便是一方面,還有一個原因是,如果他們滿足這個性質,就滿足瑞利能量定理,也就是說,訊號的能量,可以完全用每個頻域裡面的展開部分的能量,也就是他們的展開係數表示:


到這裡,我們對小波變換的形式就講完了。雖然是用的最簡單的哈爾小波為例子,但舉一反三即可。我們著重介紹了多解析度分析以及它給小波變換帶來的殺手鐗:時域頻域同時定位。結束之前,再多說幾句小波變換的意義。我們拿剛才例子中V3子空間的第二種可選擇的orthonormal basis作為例子:


左邊這四個basis組成元素,也就是scaling functions,的係數,表徵的是訊號的local平均(想想它們和訊號的內積形式),而右邊的這四個basis組成元素,也就是wavelet functions,的係數則表徵了在local平均中丟失的訊號細節。得益於此,多解析度分析能夠對訊號在越來越寬的區域上取平均,等同於做低通濾波,而且,它還能保留因為平均而損失的訊號細節,等同於做高通濾波!這樣,我們終於可以解釋了wavelet function和scaling function背後的物理意義了:wavelet function等同於對訊號做高通濾波保留變化細節,而scaling function等同於對訊號做低通濾波保留平滑的shape!

對小波變換的基礎知識,我們就講到這裡。需要注意的是,這只是小波變換最基本最基本的知識,但也是最核心的知識。掌握了這些,代表你對小波變換的物理意義有了一定的瞭解。但對於小波變換本身的講解,一本書都不一定能將講透,還有很多的基礎知識我都沒有講,比如如何構建自己的scaling function,選取合適的係數集h[k],並由此構建自己的wavelet functions。所以,如果有深入下去研究的同學,好好買一本書來看吧。而只是希望用小波變換來服務自己的應用的同學,個人覺得這些知識已經足夠讓你用來起步了。