一、多分辨率分析的圖像處理
如果物體的尺寸較小或對比度較低,通常以較高的分辨率來研究;
如果物體的尺寸較大或對比度較高,粗略的觀察就已足夠
如果較大物體和較小物體同時存在時,以不同的分辨率來研究它們将更具優勢,即多分辨率分析。
1、圖像金字塔
圖像金字塔是一系列以金字塔形狀排列的,分辨率逐漸降低的圖像集合,底部是一個高分辨率圖像,頂部是低分辨率圖像。
金字塔低分辨率級别用于分析較大的結構或圖像的整體内容;高分辨率圖像适合于分析單個物體的特性。
預測殘差:一幅圖像與該圖像的一個預測版本間的差,預測殘差可更有效率地編碼。
預測殘差金字塔:
步驟1:第j級圖像通過近似濾波器,進行步長為2的下采樣(近似濾波器若是鄰域平均,會産生平均金字塔;若是高斯濾波,會産生高斯金字塔;若是不進行過濾,會産生子取樣金字塔)
步驟2:把步驟1的結果通過插值(最近鄰,雙線性,雙三次内插)進行上采樣
步驟3:把輸入圖像與步驟2得到的圖像做差,形成預測殘差
2、子帶編碼
一幅圖像被分解為一組頻帶受限的分量稱為子帶。
子帶可以重組在一起無失真地重建原始圖象
每個子帶通過對輸入進行帶通濾波而得到
子帶帶寬小于原始圖像帶寬,子帶可以進行無資訊損失的抽樣
原始圖象的重建可以通過内插、濾波、和疊加單個子帶來完成
分析濾波器組即為分解,綜合濾波器組即為重構。
分解就是通過下采樣提取圖像的低頻(背景)和高頻(細節)資訊。每一層(尺度)的分解都是對上一層分解中的低頻資訊進行再分解。
重構是通過上采樣将分解的低頻和高頻資訊再合并為分解前的圖像的近似。
3、哈爾變換
哈爾變換的基函數是一直最古老最簡單的正交小波。
二、多分辨率展開
1、級數展開
一個信号或函數f(x)可展開為函數的線性組合:
k為有限和或無限和的整數下标,αk為展開系數,φk(x)為展開函數。
若展開唯一,即任意給定的f(x)隻有一組αk與之對應。則φk(x)稱為基函數,集合{φk(x)}稱為可表示這樣一類函數的基。
可展開的函數形成了一個函數空間,稱為展開集合的閉合跨度,表示如下:
對任意函數空間V及相應的展開集合{φk(x)},都有一個表示為{φk ̃(x)}的對偶函數集合。展開系數αk即是對偶函數φk ̃(x)和函數f(x)的内積。
2、尺度函數
考慮由實、平方可積函數φ(x)的整數平移和二值尺度組成的展開函數集合{φj,k(x)}
其中φj,k(x)對所有的j,k∈Z(整數集)和φ(x)屬于L2®都成立(L2®表示度量的、平方可積的一維函數集合,R為實數集)。
整數平移k決定了φj,k(x)沿x軸的位置;尺度j決定了φj,k(x)的寬度;2j/2控制函數的幅度。
因為φj,k(x)的形狀随j發生變化,故φ(x)稱為尺度函數。
選擇适當的φ(x),可使{φj,k(x)}張成L2®。
對任意的j,将k上張成的子空間表示為:
增加j就會增加Vj的大小,進而允許子空間中包含具有更小變量或更細細節的函數。因為随着j的增大,用于表示子空間函數的φj,k(x)會變窄,且x有較小變化就可以分開。
hφ(n)為小波函數系數,hφ為小波向量。
三、小波變換
1、小波級數展開
與小波ψ(x)和尺度函數φ(x)相關的函數f(x)∈L2®的小波級數展開如下:
j0是任意的開始尺度,cj0(k)和dj(k)分别是尺度函數和小波函數下的展開系數αk的改寫形式。cj0(k)稱為近似和/或尺度系數,dj(k)稱為細節和/小波系數。
即為被展開的函數和展開函數的内積。
2、離散小波變換
上一小節的小波系數展開将一個連續變量函數映射為一系列系數。若待展開的函數是離散的(即數字序列),則得到的系數就稱為離散小波變換(DWT)。則序列f(n)的正向DWT系數(類似于上一節的cj0(k)和dj(k))如下:
其中φj0,k(n)ψj,k(n)是基函數φj0,k(x)ψj,k(x)的取樣形式,n = 0,1,2,…,M-1。是以f(n)的展開如下:
3、連續小波變換
離散小波變換的自然延伸是連續小波變換(CWT),連續小波變換将一個連續函數變換為兩個連續變量(平移和尺度)的高備援度函數。得到的變換易于解釋并且對于時間-頻率分析是有價值的。我們感興趣的是離散圖像,此處隻是為了完整性。
連續平方可積函數f(x)的連續小波變換與實數值小波ψ(x)的關系定義如下:
其中
s和τ分别為尺度參數和平移參數。
f(x)可由連續小波反變換求得:
其中
式中Ψ(μ)是ψ(x)的傅裡葉變換。
四、快速小波變換
快速小波變換(FWT)是一種實作離散小波變換(DWT)的高效計算。類似于2子帶的子帶編碼方案。
正變換,即分解
先定義尺度函數和小波函數,再計算尺度j的近似和細節系數。
3.2.1 一維情況
由前面描述的尺度函數和小波函數
其中hφ(n)為尺度函數系數,hφ為尺度向量;hψ(n)為小波函數系數,hψ為小波向量。
用2j對x進行尺度化,用k對它進行平移,并令m = 2k + n,則
尺度函數:
小波函數
近似系數和細節系數如下:
hφ(-n) = h0(n)(2帶子帶編碼和解碼系統中的分析部分),hψ(-n) = h1(n)
反變換,即重構
快速小波反變換
反變換即綜合濾波器,綜合濾波器和分析濾波器之間的順序是相反的。
g0(n) =h0(-n) = hφ(n) =,g1(n) = h1(-n) = hψ(n)
五、 二維小波變換
在二維情況下,需要一個二維尺度函數φ(x,y)和三個二維小波ψH(x,y),ψV(x,y),ψD(x,y)。每個二維小波都是兩個一維函數的乘積。排除産生一維結果的乘積,如φ(x)ψ(x),4個剩下的乘積可産生尺度函數
和可分的“方向敏感”小波
這些小波度量函數的變化——圖像的灰階變化——沿不同方向的變化:ψH度量沿列方向的變化(如水準邊緣),ψV響應沿行方向的變化(如垂直邊緣),ψD度量對應對角線方向的變化。
定義尺度和平移基函數:
故大小為M*N的圖像f(x,y)的離散小波變換是:
通常令j0 = 0,并選擇N = M = 2J,故j = 0,1,2,…,J-1和m = n = 0,1,2,…,2j-1。
f(x,y)可通過離散小波反變換得到:
利用小波去噪:
import matplotlib.pyplot as plt
import pywt
# Get data:
ecg = pywt.data.ecg() # 生成心電信号
index = []
data = []
for i in range(len(ecg)-1):
X = float(i)
Y = float(ecg[i])
index.append(X)
data.append(Y)
# Create wavelet object and define parameters
w = pywt.Wavelet('db8') # 選用Daubechies8小波
maxlev = pywt.dwt_max_level(len(data), w.dec_len)
print("maximum level is " + str(maxlev))
threshold = 0.04 # Threshold for filtering
# Decompose into wavelet components, to the level selected:
coeffs = pywt.wavedec(data, 'db8', level=maxlev) # 将信号進行小波分解
for i in range(1, len(coeffs)):
coeffs[i] = pywt.threshold(coeffs[i], threshold*max(coeffs[i])) # 将噪聲濾波
datarec = pywt.waverec(coeffs, 'db8') # 将信号進行小波重構
mintime = 0
maxtime = mintime + len(data) + 1
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(index[mintime:maxtime], data[mintime:maxtime])
plt.xlabel('time (s)')
plt.ylabel('microvolts (uV)')
plt.title("Raw signal")
plt.subplot(2, 1, 2)
plt.plot(index[mintime:maxtime], datarec[mintime:maxtime-1])
plt.xlabel('time (s)')
plt.ylabel('microvolts (uV)')
plt.title("De-noised signal using wavelet techniques")
plt.tight_layout()
plt.show()