Haar 一維小波轉換 Haar Wavelet Transform 1D
以下是 Haar 一維小波轉換,原本要用於感知雜湊,但還無法使用此函數直接計算2D的陣列。
def haarDWT (data, level):
s = 0.5 # 每次取兩數的平均值,即 0.5
h = [1, 1] # low-pass 低通濾波
g = [1, -1] # high-pass 高通濾波
f = len(h) # 濾波器的長度
length = len(data) # 資料的長度
ret = np.zeros(length)
tmp = np.array(data)
for i in range(level):
ret[0:length] = [0] * length
l2 = length // 2
for j in range(l2):
for k in range(f):
ret[j] += tmp[2*j + k] * h[k] * s
ret[j+l2] += tmp[2*j + k] * g[k] * s
length = l2
tmp[0:length] = ret[0:length]
return ret
