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