小波變換演算法
Ⅰ 小波變換(一)
由於項目可能會用到的原因,學一下,感覺已有的通俗易懂教程不夠相應的學術性.
教程:《數字信號處理》陳後金著
視頻教程: 中國大學mooc-數字信號處理
[TOC]
在正式進入小波變換之前,我們不妨來討論一下傅里葉變換的局限性和為什麼我們需要引入小波變換。
回想傅里葉變換的公式
怎麼來解決以上的問題呢?有人提出了短時傅里葉變換來加以改善,我們先來看看短時傅里葉變換的表達式:
通過加入一個滑動的窗函數 (長度為N),來彌補傅里葉變換的頻譜上沒有時間信息這個弊端
其實原理很簡單,就是原來一段的傅里葉變換,現在固定分成幾段來分別進行傅里葉變換,那麼分成的這幾段,可以在時間上獨立開來,就變成了 具有時間信息的傅里葉變換
但當然,這個加窗對整個變換也是有影響的,這里不妨先介紹兩個術語:
時間解析度由時窗寬度 決定,
越 小 ,時間解析度越高.
頻譜解析度是指分辯信號中相鄰譜峰的能力
越 小 ,頻譜解析度越高。
在對信號的時頻分析中,我們希望時間解析度和頻譜解析度都可以比較高,但是從定義式裡面我們就知道,時 間解析度和頻譜解析度是相互制約的 ,同時也說明,我們沒辦法 同時獲得 較高的時間解析度和頻譜解析度.
從這里我們可以再一步印證出,傅里葉變換(連續)具有無窮的頻譜解析度,而無時間解析度.
現在我們回來討論短時傅里葉變換的窗函數 的長度N,顯然N如果變大,頻譜解析度肯定是越來越好的,時間解析度確實便來越差的.同時N如果變小,頻譜解析度肯定是越來越差的,時間解析度便是越來越差的.
既然上面說了時間解析度和頻譜解析度已經是不可兼得的了,那麼現在問題來了, 我們到底想得到什麼東西?
回想一下:
傅里葉變換的缺點在他不能有效地處理非平穩信號,短時傅里葉變換的N是固定的,往兩邊變化都會有制約.
那我們能不能在分析的過程中讓這個N變起來?讓他 在信號變化快的時候窗變小一點 ,獲得較高的時間解析度,較低的頻譜解析度. 在信號變化慢的時候窗變大一點 ,獲得較低的時間解析度,較高的頻譜解析度.
這個時候就應該給大家引入小波變換了.大家可以先無道理地認為小波變換就是一個窗長度會變的傅里葉變換(雖然我一直不喜歡這個通俗的比喻...)
在正式講小波變換前,需要先補充一些知識.
在信號分析中,我們常將信號展開成一組信號的線性組合,即有
其中,{ }為展開系數,{ }為展開函數
若展開式具有 唯一性 ,即不同的信號對應不同的展開系數 ,則該展開函數 稱為基(basis)。
對基函數來說,若其內積滿足:
稱此基函數為 正交規范(orthonormal) 基函數.正交在於其他內積等於0,規范在於系數是1
在此基礎上我們可以知道,由於每個基函數之間都是互相正交的,所以我們可以將x(t)和基函數 進行內積計算,便可以得到相應的展開系數 ,也就是:
稍微有點泛函常識的我們可以知道,這就是 將信號往給定基函數元素所張成的內積空間裡面投射
比較出名的就是傅里葉級數,將信號往以 為基函數的內積空間(無窮維空間)內投射,得到的相應正交基函數的特徵值(也就是展開系數 )這里的 就是傅里葉級數裡面的 .大家大可看看錶達式,都是一模一樣的.
當然這個是反著來用的,根據每個維度的特徵值來合成回x(t),也就是逆變換
這里要注意的還有一點是,所謂的基函數,其實不僅僅是一個函數,而是一些有相同特徵且相互正交的函數族.
小波(wavelet)信號是一類衰減較快的波動信號,其能量有限,且相對集中在局部區域.
先來看看常用的小波函數:
和小波變換相關的還有尺度函數(父小波)(Scaling Function)
尺度函數族 定義為:
小波函數族和尺度函數族前面的系數 是為了保持基函數的能量始終為1
對於這兩個後面會有更理性的認識,這里我們先直接介紹DWT和IDWT
有了小波函數和尺度函數,就相當於明確了我們的小波的基函數.
我們可以利用小波函數族 ,尺度函數族 ,來將信號進行小波展開:
同時,上式也被稱為 離散小波逆變換 (IDWT)
相反地,由信號x(t)求解展開系數{ }稱為 離散小波變換(Discrete Wavelet Transform, DWT)
我們常用 來表示信號的粗糙成分, 來表示信號的精細部分.詳細內容會在下一篇博客繼續闡述.
之前總有一段時間不想學小波,感覺這個名詞有點高大上什麼的,然後因為最近要涉及到相關的信息,所以不得不學一下.學完個基礎之後不得不感嘆的是,小波變換我覺得比傅里葉變換還要來得簡單直接,演示的效果有時還蠻驚艷的.
形象易懂講解演算法I——小波變換
小波變換完美通俗講解系列之 (一)
小波變換完美通俗講解系列之 (二
Wavelet transform - Wikipedia
A Tutorial of the Wavelet Transform
Ruch, David K. And Van Fleet, Patrick J.《Wavelet Theory:An elementary Approach With Applications》
Wavelets in Engineering Applications 羅高涌 ( 這可是我們學院羅教授出的書喔 )
購買鏈接如下:
Wavelets in Engineering Applications
Ⅱ 小波演算法
Function wavelet(s,wname,n,options);
Begin
{
功能:
一維序列小波消噪。
參數:
s:一維序列
wname:小波函數名
現有小波函數名(小波函數的選取依靠經驗)
Daubechies:
'db1' , 'db2', ... ,'db45' 'db1' 就是haar 小波函數
Coiflets :
'coif1', ... , 'coif5'
Symlets :
'sym2' , ... , 'sym8'
Biorthogonal:
'bior1.1', 'bior1.3' , 'bior1.5'
'bior2.2', 'bior2.4' , 'bior2.6', 'bior2.8'
'bior3.1', 'bior3.3' , 'bior3.5', 'bior3.7'
'bior3.9', 'bior4.4' , 'bior5.5', 'bior6.8'.
Reverse Biorthogonal:
'rbio1.1', 'rbio1.3' , 'rbio1.5'
'rbio2.2', 'rbio2.4' , 'rbio2.6', 'rbio2.8'
'rbio3.1', 'rbio3.3' , 'rbio3.5', 'rbio3.7'
'rbio3.9', 'rbio4.4' , 'rbio5.5', 'rbio6.8'.
n :分解層數
options : 選項
選擇欄位說明
array('brief':1, // 默認為1 採用簡單剔除高頻諧波 達到消噪的目的
// 如果為 0 採用估計序列噪音標准差剔除噪音,
'sigma':0, // 為0 默認採用 序列的高階諧波估計標准差;也可自己輸入值
'which':1, // 以 某一層諧波作為噪音估計的數據,默認第一層
'alpha':2, // 閾值懲罰系數,默認為2
"thr":0, // 閾值大小,默認0 採用諧波估計,也可以直接給出
'sorh':'s', // 閾值方式設置,'s' 軟閾值,'h'硬閾值 默認為's'
);
返回結果:
一維數字數組,消噪後的序列。
範例:
s := array(2484.82690429688,2479.05493164063,2482.34301757813,2437.794921875,
2447.7548828125,2512.962890625,2443.05688476563,2433.15893554688,
2393.18310546875,2415.05395507813,2392.06201171875,2365.34301757813,
2359.21997070313,2344.787109375,2348.51611328125,2420.00,2438.7900390625,
2431.375,2440.40209960938,2383.48510742188,2377.51196289063,2331.36596679688,
2317.27490234375,2370.3330078125,2409.67211914063,2427.47998046875,
2435.61401367188,2473.40991210938,2468.25,2470.01904296875,2504.10791015625,
2508.09008789063,2528.2939453125,2509.79907226563,2503.8359375,2524.9189453125,
2479.53588867188,2481.083984375,2528.71411132813,2529.76098632813,2466.958984375,
2463.0458984375,2416.56201171875,2415.1298828125,2412.625,2395.06494140625,
2397.55395507813,2380.22412109375,2383.03393554688,2412.39306640625,
2333.4140625,2386.86010742188,2360.6640625,2333.22900390625,2325.90502929688,
2332.72998046875,2329.82006835938,2315.27001953125,2291.544921875,2248.59008789063,
2228.52490234375,2180.89501953125,2224.84008789063,2218.23510742188,2215.92993164063,
2191.14794921875,2186.29711914063,2204.78393554688,2190.11010742188,2166.205078125,
2170.01293945313,2173.56103515625,2199.4169921875,2169.38989257813,2148.45190429688,
2163.39501953125,2225.88989257813,2285.74389648438,2276.0458984375,2275.01000976563,
2244.580078125,2206.19311523438,2298.3759765625,2266.38403320313,2296.07495117188,
2319.11791992188,2285.0380859375,2292.61010742188,2268.080078125,2312.55590820313,
2330.40502929688,2331.13598632813,2291.90209960938,2347.53002929688,2349.58911132813,
2351.98095703125,2351.85498046875,2344.77099609375,2366.70190429688,2356.86010742188,
2357.18090820313,2363.59692382813,2381.42993164063,2403.5869140625,2409.55395507813,
2439.6279296875,2447.05688476563,2451.85693359375,2428.48706054688,2426.11499023438,
2460.69311523438);
n := 2;
options := array('brief':1,'sigma':0,'which':1,'alpha':2,"thr":0,'sorh':'s');
return wavelet(s,wname,n,options) ;
天軟數學組
20120627
}
if not ifarray(options) then options := array();
defaut := wavedefaut() union options;
cout := 4;
cl:=wavedec(s,n,wname); //小波分解
if defaut['brief']=1 then
ret :=wrcoef('a',cl[0],cl[1],wname,n);
else
begin
//***************小波消噪*************************************************
k := defaut['which']; //標准差估計選項 ,k 為 1 到 n的整數 默認為1;
if defaut['sigma']=0 then sigma := wnoisest(cl[0],cl[1],k);
else //通過小波第k層細節系數(諧波)估計 ,噪音標准差
sigma := defaut['segma'];
if defaut['alpha']=0 then alpha :=2; // alpha 懲罰因子 大於1 的數 一般為默認2;
else alpha := defaut['alpha'];
if defaut['thr']=0 then
thr := wbmpen(cl[0],cl[1],sigma,alpha); //噪音信號全局閾值
else thr := defaut['thr'];
sorh := defaut['sorh'];
ret:=wdencmp('gbl',cl[0],cl[1],wname,n,thr,sorh)[0]; //採用軟閾值和近似信號進行消噪;
end //第一個參數為'gbl'為擴展介面備用,可以隨意輸入
return ret;
end;
function wavedefaut();
begin
return array('brief':1,'sigma':0,'which':1,'alpha':2,
"thr":0,'sorh':'s'
);
end
Ⅲ 一維,二維小波變換過程是怎樣的
1,一維小波變換可以對圖像進行處理和分解;2,確定1成立,一維小波分析總體上時離散的,串列的;二維小波分析總體上是非離散的,並行的;3,確定1成立,由2所述可知,在計算機計算能力許可前提下,後者速度高於前者,效果優於前者。附帶說幾句:目前基於小波變換的相關圖像處理技術已經從軍事、天氣、地理逐漸過渡到醫學、生物學等方面,在軟體發展的情況下,硬體也有了對應的發展,很多演算法都已經固化在硬體里或者由硬體直接完成了。