wavedec2函數詳解

很多人對小波多級分解的wavedec2總是迷惑,今天就詳釋她!

wavedec2函數:

1.功能:實現圖像(即二維信號)的多層分解,多層,即多尺度.

2.格式:[c,s]=wavedec2(X,N,'wname')

    [c,s]=wavedec2(X,N,Lo_D,Hi_D)(我不討論它)

3.參數說明:對圖像X用wname小波基函數實現N層分解,

這裏的小波基函數應該根據實際情況選擇,具體選擇辦法可以搜之或者 help WFILTERS

.輸出爲c,s.

c爲各層分解係數,s爲各層分解係數長度,也就是大小.

4.c的結構:c=[A(N)|H(N)|V(N)|D(N)|H(N-1)|V(N-1)|D(N-1)|H(N-2)|V(N-2)|D(N-2)|...|H(1)|V(1)|D(1)]

可見,c是一個行向量,即:1*(size(X)),(e.g,X=256*256,then c大小爲:1*(256*256)=1*65536)

A(N)代表第N層低頻係數,H(N)|V(N)|D(N)代表第N層高頻係數,分別是水平,垂直,對角高頻,以此類推,到H(1)|V(1)|D(1).

每個向量是一個矩陣的每列轉置的組合存儲。原文:Each vector is thevector column-wise storage of a matrix. 這是你理解A(N) H(N) | V(N) |D(N) 的關鍵。

很多人對wavedec2dwt2的輸出差別不可理解,後者因爲是單層分解,所以低頻係數,水平、垂直、對角高頻係數就直接以矩陣輸出了,沒有像wavedec2那樣轉換成行向量再輸出,我想你應該不再迷惑了。

那麼S有什麼用呢?

s的結構:是儲存各層分解係數長度的,即第一行是A(N)的長度(其實是A(N)的原矩陣的行數和列數),

第二行是H(N)|V(N)|D(N)|的長度,

第三行是

H(N-1)|V(N-1)|D(N-1)的長度,

倒數第二行是H(1)|V(1)|D(1)長度,

最後一行是X的長度(大小)

 

從上圖可知道:cAn的長度就是32*32,cH1、cV1、cD1的長度都是256*256。

到此爲止,你可能要問C的輸出爲什麼是行向量?

1、沒有那一種語言能夠動態輸出參數的個數,更何況C語言寫的Matlab

2、各級詳細係數矩陣的大小(size)不一樣,所以不能組合成一個大的矩陣輸出。

因此,把結果作爲行向量輸出是最好,也是唯一的選擇。

另:MATLABHELP wavedec2 裏面說得非常明白了,呵呵.
發佈了21 篇原創文章 · 獲贊 55 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章