MCPcopy Create free account
hub / github.com/MearaY/StegaPy / DWTUtil

Class DWTUtil

StegaPy/util/dwt_util.py:9–89  ·  view source on GitHub ↗

离散小波变换工具类

Source from the content-addressed store, hash-verified

7
8
9class DWTUtil:
10 """离散小波变换工具类"""
11
12 @staticmethod
13 def forward_dwt(image_data, wavelet='db1', level=3):
14 """
15 执行正向小波变换
16
17 Args:
18 image_data: 2D numpy数组,图像数据
19 wavelet: 小波基名称,默认'db1'(Daubechies 1)
20 level: 分解层数,默认3
21
22 Returns:
23 小波系数列表,格式为 [cA, (cH, cV, cD), ...]
24 """
25 coeffs = pywt.wavedec2(image_data, wavelet, level=level)
26 return coeffs
27
28 @staticmethod
29 def inverse_dwt(coeffs, wavelet='db1'):
30 """
31 执行逆向小波变换
32
33 Args:
34 coeffs: 小波系数列表
35 wavelet: 小波基名称
36
37 Returns:
38 重构后的图像数据
39 """
40 return pywt.waverec2(coeffs, wavelet)
41
42 @staticmethod
43 def get_subbands(coeffs):
44 """
45 从小波系数中提取子带
46
47 Args:
48 coeffs: 小波系数列表
49
50 Returns:
51 子带列表,每个元素为 (level, subband_type, data)
52 """
53 subbands = []
54 cA = coeffs[0] # 近似系数
55
56 for i, (cH, cV, cD) in enumerate(coeffs[1:]):
57 level = i + 1
58 subbands.append((level, 'H', cH)) # 水平细节
59 subbands.append((level, 'V', cV)) # 垂直细节
60 subbands.append((level, 'D', cD)) # 对角细节
61
62 return subbands
63
64 @staticmethod
65 def reconstruct_subbands(subbands, original_coeffs, wavelet='db1'):
66 """

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected