第 7 章 小波变换与多分辨率分析
学习目标:理解”同时获得频率和位置”这一革命性思想,掌握图像金字塔、Haar/Daubechies 小波、2D-DWT 及其在去噪、压缩、融合中的应用。 本章是 20 世纪 80-90 年代信号处理的最大理论突破之一,哈佛数学系与贝尔实验室工程师联手的里程碑。
7.1 为什么需要小波?—— 傅里叶的局限
7.1.1 傅里叶的”空间无定位”问题
回忆第 4 章:傅里叶变换把信号分解为无穷长的正弦波。 [ F(u) = \int_{-\infty}^{+\infty} f(x) e^{-j2\pi u x} dx ]
这意味着:频率为 (u) 的分量在整个空间上都存在。 即使我们知道某信号含有频率 (u_0),无法从频谱知道它出现在哪个位置。
类比:一首音乐先是低音后是高音,但傅里叶只能告诉你”这首歌里有低音和高音”,不知道先后。
信号: ── 低频段 ── 高频段 ── 低频段 ── (x=0-10) (10-20) (20-30)
FT: 看到的是"低 + 高",没有时序信息7.1.2 短时傅里叶变换(STFT):第一次尝试
思路:把信号切成小块,每块做 FT。 [ \text{STFT}(u, \tau) = \int f(x) g(x - \tau) e^{-j2\pi ux} dx ] 其中 (g) 是窗函数(高斯、汉宁等)。
权衡困难(海森堡不确定原理):
- 窗口窄 → 时间定位好,但频率分辨率差
- 窗口宽 → 频率分辨率好,但时间定位差
STFT 用固定窗宽,无法同时满足低频(需要长观察)和高频(需要细定位)的需求。
7.1.3 小波的核心思想:多尺度
小波让”窗口大小”与频率自适应:
- 分析低频:窗口宽(长时间观察)
- 分析高频:窗口窄(短时间观察)
STFT 的时-频窗格: 小波的时-频窗格:
频率 ▲ 频率 ▲高 │□ □ □ □ □ │■ ■ ■ ■ ■ ← 高频:窄窗中 │□ □ □ □ □ │█ █ █ ← 中频低 │□ □ □ □ □ │██ ← 低频:宽窗 └──────→ 时间 └──────→ 时间这就是小波变换。核心:固定”时间×频率” 面积(不确定原理允许的最小),但形状自适应。
7.2 图像金字塔:直观的多分辨率
7.2.1 金字塔的概念
对一张图,反复下采样得到一系列尺寸递减的版本:
L0 (512×512) 原图L1 (256×256) /2L2 (128×128) /4L3 (64×64) /8...每层代表同一内容的不同尺度。远看轮廓 = 上层金字塔;近察细节 = 下层。
7.2.2 高斯金字塔 (Gaussian Pyramid)
构造:
L_{k+1} = Downsample(Gaussian_Blur(L_k))- 对 (L_k) 用 5×5 高斯核模糊(抗混叠)
- 每行每列取一半 → 尺寸减半
G = img.copy()pyr = [G]for _ in range(4): G = cv2.pyrDown(G) # 内部先高斯再下采样 pyr.append(G)性质:
- 每层尺寸 1/4,总存储 (1 + 1/4 + 1/16 + \ldots = 4/3) 倍原图
- 每层对应一个带通频率
7.2.3 拉普拉斯金字塔 (Laplacian Pyramid)
Burt & Adelson 1983 提出。
核心:每层存储高斯金字塔相邻两层之差。
[ L_k = G_k - \text{Upsample}(G_{k+1}) ]
原图 G0 ──┬────────── L0 = G0 - Upsample(G1) │ ▼ G1 ──┬──────── L1 = G1 - Upsample(G2) │ ▼ G2 ──┬────── L2 = G2 - Upsample(G3) │ ▼ G3 (保留最粗层)关键性质:完美重建
重建: G_k = L_k + Upsample(G_{k+1})每层含义:该尺度下的细节(高频差分)。
能量集中性
拉普拉斯金字塔的绝大多数系数接近 0(自然图像的细节稀疏)。这是它被用于图像压缩、融合的关键。
7.2.4 经典应用:多尺度图像融合 (Burt & Adelson)
问题:把两张图在指定区域”无缝”融合(经典例子:把苹果和橘子融成”苹橘”)。
简单方法:直接按掩膜拼接 → 边界有明显接缝。
多尺度融合:
1. 图 A, B 各自求拉普拉斯金字塔 L^A, L^B2. 掩膜 M 求高斯金字塔 G^M(平滑掩膜)3. 逐层加权混合: L^blend_k = L^A_k · G^M_k + L^B_k · (1 - G^M_k)4. 用 L^blend 重建出融合图像为什么奏效?
- 低频层掩膜宽 → 缓慢过渡(整体颜色/亮度融合)
- 高频层掩膜窄 → 锐利过渡(细节仅取一边)
现代变体:
- 曝光融合 (Mertens):多曝光 HDR,手机默认
- Poisson Blending:梯度域融合(Ch 9 会提到)
7.3 Haar 小波:最简单的小波
7.3.1 一维 Haar
尺度函数与小波函数
尺度函数(scaling / 低通): [ \phi(x) = \begin{cases} 1 & 0 \le x < 1 \ 0 & \text{否则} \end{cases} ]
小波函数(wavelet / 高通): [ \psi(x) = \begin{cases} 1 & 0 \le x < 1/2 \ -1 & 1/2 \le x < 1 \ 0 & \text{否则} \end{cases} ]
φ: ┌────┐ ψ: ┌──┐ │ │ │ │ │ │ │ └──┐───────┴────┴ ─ ──┴── 0 1 0 .5 1正交分解
对长度 2 的信号 ((x_1, x_2)),一级 Haar 变换: [ \begin{bmatrix} a \ d \end{bmatrix} = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \ 1 & -1 \end{bmatrix} \begin{bmatrix} x_1 \ x_2 \end{bmatrix} ]
- (a = (x_1 + x_2)/\sqrt{2}):平均 / 低频 / 近似
- (d = (x_1 - x_2)/\sqrt{2}):差分 / 高频 / 细节
信息量不变(2 个输入 → 2 个输出),且正交(逆变换是转置)。
多级分解
对长度 (N) 的信号:
原信号 │ Haar ▼a1 (N/2), d1 (N/2) │ 对 a1 再做 Haar ▼a2 (N/4), d2 (N/4), d1 (N/2) ...最终:一个最粗的 (a_K) + 多级细节 (d_K, d_{K-1}, \ldots, d_1)。 总系数数 = 原信号长度 (N)(无冗余)。
7.3.2 二维 Haar(图像)
对 2D 信号,Haar 通过”先行后列”分解。
一级 2D 分解
原图 (M×N) │ 对每行做 1D Haar ▼左半 = 行均值 (M×N/2) 右半 = 行差分 (M×N/2) │ 对每列做 1D Haar │ 对每列做 1D Haar ▼ ▼(M/2 × N/2) (M/2 × N/2)┌────┬────┐│ LL │ HL │ LL: 低低频(近似)├────┼────┤ HL: 水平细节(垂直边缘)│ LH │ HH │ LH: 垂直细节(水平边缘)└────┴────┘ HH: 对角细节(对角边缘)- LL:图像的”缩略图”
- HL:图像的垂直边缘
- LH:图像的水平边缘
- HH:图像的对角/角点
多级分解:递归对 LL
┌──┬──┬──────┐│LL│HL│ │├──┼──┤ HL1 │ ← 2 级分解│LH│HH│ │├──┴──┼──────┤│ │ ││ LH1 │ HH1 │ ← 1 级分解│ │ │└─────┴──────┘金字塔式的多分辨率分解。
7.3.3 Haar 的物理意义
- (\phi) 是平均算子(低通)
- (\psi) 是差分算子(高通)
- 小波 = 对应于不同尺度 ((2^j)) 和位置 ((2^j k)) 的平移缩放
Haar 的基函数: [ \psi_{j, k}(x) = 2^{j/2} \psi(2^j x - k) ]
所有这样的 (\psi_{j, k}) 构成 (L^2(\mathbb{R})) 的正交基!(Haar 1909 的经典结果)
7.4 多分辨率分析 (MRA) 框架
Mallat & Meyer 1987-1989 给出”小波理论”的严格数学结构。
7.4.1 嵌套子空间
定义一系列子空间 ({V_j}_{j \in \mathbb{Z}}),满足:
- 嵌套:(\cdots \subset V_{-1} \subset V_0 \subset V_1 \subset \cdots)
- 稠密:(\overline{\bigcup_j V_j} = L^2(\mathbb{R}))
- 交空:(\bigcap_j V_j = {0})
- 尺度关系:(f(x) \in V_j \Leftrightarrow f(2x) \in V_{j+1})
- 平移不变性:(f(x) \in V_0 \Leftrightarrow f(x - k) \in V_0)
- 正交基存在:存在 (\phi \in V_0) 使 ({\phi(x - k)}_{k \in \mathbb{Z}}) 是 (V_0) 的正交基
(\phi) 称尺度函数。
7.4.2 细节子空间 (W_j)
由嵌套关系 (V_j \subset V_{j+1}),定义正交补: [ V_{j+1} = V_j \oplus W_j ]
(W_j) 称为细节子空间,其基: [ \psi_{j, k}(x) = 2^{j/2} \psi(2^j x - k) ]
(\psi) 称小波函数。
7.4.3 双尺度方程(Two-Scale Equation)
由 (\phi \in V_0 \subset V_1),可写: [ \phi(x) = \sum_k h_\phi(k) \sqrt{2} \phi(2x - k) ]
(h_\phi) 叫低通滤波器系数。类似地: [ \psi(x) = \sum_k h_\psi(k) \sqrt{2} \phi(2x - k) ]
(h_\psi) 叫高通滤波器系数。
正交性约束
要求双滤波器组满足: [ \sum_k h_\phi(k) h_\phi(k + 2m) = \delta(m) ] [ h_\psi(k) = (-1)^k h_\phi(1 - k) ]
这就是 QMF(正交镜像滤波器) 条件。
7.4.4 MRA 的意义
任意函数 (f \in L^2(\mathbb{R})) 可分解为: [ f = f_{J} + \sum_{j = -\infty}^{J - 1} d_j ]
- (f_J \in V_J):尺度 (J) 下的近似
- (d_j \in W_j):各尺度细节
展开为系数: [ f(x) = \sum_k c_{J, k} \phi_{J, k}(x) + \sum_{j < J} \sum_k d_{j, k} \psi_{j, k}(x) ]
这就是离散小波变换(DWT)。
7.5 离散小波变换(DWT)算法
7.5.1 Mallat 快速算法
思想:递归滤波 + 下采样。
信号 x │ ├── h_φ (低通) ──> 下采样 2 ──> a1 │ └── h_ψ (高通) ──> 下采样 2 ──> d1对 a1 再次分解:
a1 │ ├── h_φ ──> ↓2 ──> a2 │ └── h_ψ ──> ↓2 ──> d2复杂度:(O(N))(相当于 FFT 的 (O(N \log N)) 更快!)
7.5.2 反变换(重建)
a_j, d_j │ ├── 上采样 2 ──> g_φ (低通) ──┐ │ ├── 相加 ──> a_{j-1} └── 上采样 2 ──> g_ψ (高通) ──┘完美重建条件: [ h_\phi(n) * g_\phi(-n) + h_\psi(n) * g_\psi(-n) = 2 \delta(n) ]
正交小波下 (g = h)(自对偶)。
7.5.3 2D DWT 实现
图像 │ 逐行 1D DWT ▼┌────┬────┐│ L │ H │ ← 每行分成低/高频│ │ │└────┴────┘ │ 逐列 1D DWT ▼┌────┬────┐│ LL │ HL │├────┼────┤│ LH │ HH │└────┴────┘代码(pywt):
import pywtcoeffs = pywt.wavedec2(img, 'db1', level=3)# coeffs = [cA3, (cH3, cV3, cD3), (cH2, ...), (cH1, ...)]# cA: approximation, cH/V/D: horizontal/vertical/diagonal detail
reconstructed = pywt.waverec2(coeffs, 'db1')7.6 常用小波族
7.6.1 Haar (db1)
- 最简单、不连续
- 阶跃边缘检测好
- 但紧支太小(2 抽头),频率选择性差
7.6.2 Daubechies (dbN)
Daubechies 1988 构造的正交紧支小波族。dbN 有 2N 个系数,支持长度 2N-1。
| 家族 | 系数数 | 消失矩 | 特点 |
|---|---|---|---|
| db1 (= Haar) | 2 | 1 | 不连续 |
| db2 | 4 | 2 | 几乎连续 |
| db4 | 8 | 4 | 光滑但不对称 |
| db10 | 20 | 10 | 很光滑,频域好 |
消失矩 (N): [ \int x^k \psi(x) dx = 0, \quad k = 0, 1, \ldots, N-1 ]
消失矩高 → 对多项式信号响应为 0 → 图像稀疏表示好。
缺点:
- 非对称 → 重建有相位失真
- 没有解析表达式(只能通过迭代构造)
7.6.3 Symlets (sym)
Daubechies 的”近似对称”版本。
7.6.4 Coiflets (coif)
同时要求 (\phi) 和 (\psi) 都有消失矩(Daubechies 只要求 (\psi))。更对称但支持更大。
7.6.5 Biorthogonal (bior, rbio)
放弃正交性换取完美对称 + 完美重建(同时不可能)。
- 分析小波 (\tilde{\phi}, \tilde{\psi})
- 合成小波 (\phi, \psi)
- 两者不同但满足双正交条件: [ \langle \tilde{\phi}(x), \phi(x - k) \rangle = \delta(k) ]
JPEG2000 使用 bior4.4(9/7 双正交小波),因为线性相位对图像压缩质量关键。
7.6.6 选型建议
| 场景 | 推荐 |
|---|---|
| 教学、简单 | Haar / db1 |
| 通用图像处理 | db4 / sym4 |
| JPEG2000 有损压缩 | bior4.4 (9/7) |
| 无损压缩 | bior5.3 (5/3 整数) |
| 边缘检测 | sym8 |
| 医学成像 | coif3 |
7.7 小波的应用
7.7.1 图像去噪(Donoho 软阈值)
思想:
- 自然图像的小波系数稀疏(少数大,多数近 0)
- 高斯噪声的系数密集(接近 0 附近的高斯)
- 把小幅度系数”削掉”,保留大的 → 去噪
阈值函数:
硬阈值: [ T_{\text{hard}}(d) = \begin{cases} d & |d| > \lambda \ 0 & |d| \le \lambda \end{cases} ]
软阈值(更平滑): [ T_{\text{soft}}(d) = \text{sign}(d) \max(|d| - \lambda, 0) ]
硬阈值: 软阈值: │ / │ / │ / │ / │ / │ /──┼────── ──┼──/─── │\ │ / │ \ │/最优阈值:Donoho 给出通用阈值 [ \lambda = \sigma \sqrt{2 \ln N} ] (N) 是信号长度,(\sigma) 是噪声标准差(用最粗细节子带的 MAD 估计)。
算法:
1. DWT 多级分解2. 对每个细节子带 d_j 做阈值化 → d_j'3. IDWT 用 [a_J, d_J', ..., d_1'] 重建效果:比经典均值/高斯滤波好,边缘保留出色。
改进:BayesShrink、SUREShrink
- SUREShrink:用 Stein 无偏风险估计自动调阈值
- BayesShrink:假设系数服从拉普拉斯分布
- BM3D:结合小波 + 3D patch 堆叠,非深度学习的 SOTA
7.7.2 图像压缩
JPEG2000 概览
(第 8 章详讲)
- 5/3 整数小波(无损)或 9/7 浮点(有损)
- EBCOT 位平面编码
- 支持渐进解码、ROI、无损 ↔ 有损
相对于 JPEG 的优势:
- 无块效应(小波无分块)
- 同等质量下压缩率提高 20-30%
- 支持渐进传输(低带宽先看低分辨率)
劣势:专利、计算复杂、浏览器不支持 → 未普及。
7.7.3 多尺度边缘检测
每个 DWT 细节子带就是该尺度下的边缘响应:
- HH1:最细尺度(噪声 + 纹理)
- HH2:中尺度(小物体边缘)
- HH3:粗尺度(大物体轮廓)
Mallat-Zhong 算法:跨尺度追踪模极大值,做出多尺度 Canny。
7.7.4 图像融合
两张源图各自 DWT,对系数采用不同规则合并:
| 子带 | 融合规则 |
|---|---|
| LL (近似) | 加权平均(保持亮度) |
| HL / LH / HH (细节) | 取最大绝对值(选最清晰细节) |
应用:
- 多焦融合(近焦 + 远焦 → 全景深)
- 红外 + 可见光(夜视增强)
- MRI + CT(医学多模态)
7.7.5 图像隐写
LSB 隐写(第 3 章)易被统计检测。小波域隐写:
- 把秘密信息嵌入细节子带的 LSB
- 主观视觉几乎不变
- 抗 JPEG 压缩能力更强
7.8 时频局部化:小波与 STFT 的严格对比
7.8.1 海森堡不确定原理(量化时-频权衡)
定理 7.1:对任何函数 (f \in L^2),其时间方差 (\sigma_t^2) 和频率方差 (\sigma_u^2) 满足: [ \sigma_t \sigma_u \ge \frac{1}{4\pi} ]
等号在 高斯函数 处取得 → 高斯窗是 STFT 的最优窗。
7.8.2 小波的”等 Q”特性
对小波 (\psi_{j, k}):
- 时间方差 (\sigma_t \propto 2^{-j})
- 频率方差 (\sigma_u \propto 2^j)
- Q 因子(频率中心 / 带宽) (= \text{const})
意思是相对带宽一致。这正是人耳、人眼的特点(对数感知)!因此小波在生物学意义上”更自然”。
7.9 现代发展与深度学习
7.9.1 复小波 (Complex Wavelets)
经典 DWT 对平移敏感(平移 1 个像素,系数大变)。复小波(Kingsbury 的 DTCWT)对平移近似不变,旋转也更稳定。
7.9.2 Curvelet、Ridgelet、Shearlet
小波对点奇异最优,对曲线奇异(图像中更普遍)次优。 Curvelet(Candes 2004)专门为曲线设计 → 更好的边缘表示。
7.9.3 小波 + CNN
- Wavelet CNN:把 DWT 作为可微模块嵌入 CNN,替代池化
- WaveResNet 等:去噪、压缩、超分
- Multi-level Wavelet-CNN (MWCNN):去雾、去雨
关键发现:CNN 学到的第一层滤波器与 Gabor/小波高度相似 → 网络自然发现了多尺度分析。
7.9.4 神经小波 / 可学习小波
- 学习出的小波比固定 Haar/Daubechies 对特定任务更优
- 用于神经压缩(End-to-End Learned Compression)
7.10 本章要点与面试考点
✅ 必须掌握
- 傅里叶的空间无定位问题,小波的时频局部化优势
- 高斯/拉普拉斯金字塔的构造与完美重建
- Haar 小波的 (\phi, \psi) 定义
- 2D DWT 的四子带 (LL/HL/LH/HH) 及其含义
- MRA 框架:嵌套子空间、双尺度方程、细节子空间
- Mallat 快速算法((O(N)))
- 软阈值去噪思想与 Donoho 通用阈值公式
- Daubechies vs 双正交的权衡(正交/对称不可兼得)
💡 高频面试题
Q1. 小波相比傅里叶的核心优势是什么?
答:时频同时局部化。傅里叶用无穷长正弦波作为基,只能告诉你”信号中有什么频率”;小波用有限支集的函数,能同时给出”什么频率、出现在哪里”。这对图像处理至关重要——图像中的边缘、纹理是局部化事件。
Q2. 为什么 JPEG2000 选择双正交 9/7 小波?
答:图像压缩对线性相位(= 对称性)敏感(非对称导致边缘偏移)。而正交 + 对称 + 紧支三者不能同时满足(除了 Haar)。双正交牺牲正交性换取完美对称 + 完美重建 + 紧支,是图像压缩的最佳折中。
Q3. 二维 DWT 四子带分别代表什么?
答:
- LL:低通低通,即”缩略图”
- HL:水平高通,垂直低通 → 垂直边缘
- LH:水平低通,垂直高通 → 水平边缘
- HH:双高通 → 对角与角点
Q4. 小波去噪为什么用软阈值而非硬阈值?
答:
- 硬阈值:在阈值处不连续 → 去噪后图像可能有”小斑点”跳变
- 软阈值:连续,对所有通过的系数减去 (\lambda) → 更平滑的结果
- 理论上:软阈值在估计风险下接近最优(Donoho-Johnstone)
Q5. Donoho 通用阈值 (\lambda = \sigma \sqrt{2 \ln N}) 的直觉?
答:(N) 个独立标准正态噪声,其最大绝对值大致为 (\sqrt{2 \ln N})。乘 (\sigma) 即估计”纯噪声区的最大幅度”。阈值设在此就能把绝大多数噪声系数归零,只保留显著信号。
Q6. DWT 能完美重建的条件?
答:滤波器组满足完美重建 (PR) 条件,即 [H_0(z) G_0(z) + H_1(z) G_1(z) = 2] 且混叠项抵消 [H_0(-z) G_0(z) + H_1(-z) G_1(z) = 0] 正交小波(如 Daubechies)中 (G = H),自然满足。
Q7. 小波金字塔 vs 拉普拉斯金字塔的区别?
答:
- 拉普拉斯金字塔:冗余约 4/3 倍,但每层分辨率与输入相同(简单直观)
- 小波金字塔:严格无冗余(系数总数 = 原像素数),但一层产出 4 个子带
- 拉普拉斯适合教学;小波适合压缩/编码
Q8. 小波与深度学习的关系?
答:
- CNN 的前几层滤波器自发学到类似小波/Gabor 的多尺度模板
- 用 DWT 替代池化可保留全部信息(不丢细节)
- 神经压缩(Ballé 等)的编码器架构灵感部分来自小波
7.11 延伸阅读
- Mallat, A Wavelet Tour of Signal Processing(小波圣经)
- Daubechies, Ten Lectures on Wavelets
- Strang & Nguyen, Wavelets and Filter Banks
- Burt & Adelson, “The Laplacian Pyramid as a Compact Image Code”, IEEE Trans. Comm. 1983
- Donoho, “De-noising by Soft-Thresholding”, IEEE Trans. Inf. Theory 1995
- PyWavelets 文档:https://pywavelets.readthedocs.io/
下一章:前面花大量篇幅讨论”怎么处理图像”,现在换个方向——如何把图像压缩,让它占用更少空间?这就是图像压缩,每天都在你手机和网络上发生的”看不见的艺术”。
如果這篇文章對你有幫助,歡迎分享給更多人!
部分資訊可能已經過時





















