信号处理基础到进阶再到前沿
一、数学与信号处理基础
-
线性代数基础
- 正交与正交变换:为什么要让小波基保持正交/渐进正交?正交基保证能完美重构且能快速求系数。
- 矩阵分解思想:理解正交矩阵、奇异值分解(SVD)等,有助于领会小波变换本质上是一种“特定形式的可逆线性变换”。
-
时频分析与傅里叶变换
- 连续傅里叶变换(CFT)与离散傅里叶变换(DFT):了解为什么单纯的傅里叶只能分辨“整体频率”,却无法定位到信号何时出现某个频率(缺少时间局部化)。
- 短时傅里叶变换(STFT):学会 STFT 的不足——窗口大小固定,面向“线性时变”信号时容易造成“频率泄漏”或“时间分辨率不足”。
- 时频不确定性原理:理解“时域分辨率 vs 频域分辨率”之间的权衡,为后续多尺度思想打下直观基础。
-
多分辨率分析(Multiresolution Analysis, MRA)
-
这是小波理论的核心思想:
- 定义一系列嵌套的子空间 V 0 ⊂ V 1 ⊂ V 2 ⊂ … V_0 \subset V_1 \subset V_2 \subset \dots V0⊂V1⊂V2⊂… ,每个子空间都代表了信号在某个“分辨率”下的投影。
- 在子空间之间引入“尺度函数(Scaling Function)”与“小波函数(Wavelet Function)”,从概念上理解“细节空间 W j W_j Wj” 和“平滑空间 V j V_j Vj” 的关系。
-
学透后,你会知道:第一层小波分解,实际上就是把信号从 V j V_j Vj 投影到 V j + 1 V_{j+1} Vj+1(更低分辨率)和 W j + 1 W_{j+1} Wj+1(高频细节),这样的思想在滤波器组实现上展现为“低通+下采样”和“高通+下采样”。
-
-
离散小波变换(DWT)与滤波器组(Filter Banks)
-
正交滤波器组 vs 双正交(Biorthogonal)滤波器组:
- 正交滤波器(orthogonal wavelets,比如 Daubechies 系列)保证“分析滤波器”和“合成滤波器”相同;
- 双正交则允许它们不同,一般在图像压缩(JPEG2000)等场景里更常用,因为能设计对称的滤波器。
-
Perfect Reconstruction(完美重构)条件:研究如何设计一个“低通、高通、下采样、上采样”的信号处理链,既能把信号拆分成多尺度成分,也能保证“拆+合”后能完全还原。
-
滤波器长度、支撑宽度、消失矩(vanishing moments):
- 滤波器长度越长,能提供更高阶的消失矩(能消掉更高次多项式),就意味着信号中更复杂的“多项式趋势”或更精细的“局部平滑”都能更好地提取到。
- 比如 Daubechies-4 崇尚最小支撑宽度下尽可能高的消失矩;Coiflet、Symlet、Biorthogonal 则有各自的特性。
-
-
离散小波包变换(Wavelet Packet)
- 不只是对“低频部分再做分解”,而是可以对“低频”和“高频”都继续做分解,形成一个二叉树形结构,能够更灵活地细分频带。
- 掌握小波包后,你会理解“最佳基(Best‐Basis)”选择的思想:根据某种熵准则或能量准则,自动选择最适合信号的分解方式。
-
提升(Lifting)方案
- 一种完全在时域操作、无需 FFT 的小波实现方式,包含“分裂(Split)→预测(Predict)→更新(Update)”三步。
- 通过学习提升方案,你能进一步理解“为什么小波分解能做到原地计算(in-place)”以及“如何在有限精度下减少算术误差和内存占用”。
二、算法实现与工程细节
-
边界处理(Boundary Handling)
-
离散小波变换对有限长度信号做“下采样”时,边缘处会出现“超出范围”的样本,该怎么处理?常见方法包括:
- 零填充(Zero Padding)
- 对称填充(Symmetric Extension)
- 周期延拓(Periodic Extension)
- 平滑延拓(平滑镜像、最小二乘延拓等)
-
理解不同边界处理对“小波系数”尤其是边缘部分的影响,对图像边缘检测和压缩性能影响甚大。
-
-
二维小波变换(2D DWT)
-
图像不是一维序列,需要在水平和垂直方向上各做一次一维小波分解,才成为完整的二维 DWT 层次:
- 先对每一行做一维 DWT,得到“行低通/行高通”
- 再对各列做一维 DWT,得到“列低通/列高通”
-
这种先行后列(或先列后行)的方式,会把一层分解后得到 4 个子带:LL(低低),LH(低高),HL(高低),HH(高高)。LL 可继续迭代做下一层分解,依此得到多层分解。
-
-
实现细节与常见库
-
PyWavelets(Python):
pywt.Wavelet
、pywt.dwt
、pywt.wavedec2
、pywt.waverec2
等常用函数。- 掌握如何在 Python 环境下一行代码完成“连续多层分解”与“重构”,并理解其底层实现原理(如何调用滤波器系数、处理边界、做下采样/上采样)。
-
MATLAB Wavelet Toolbox:
- 熟悉 GUI 下的“Wavelet Analyzer”,调节不同小波基、查看时频图;
- 学会使用
dwt2
,wavdec2
,waverec2
等函数。
-
C++ 或 GPU 实现:
- 深入了解手工实现 1D/2D DWT 时,如何优化卷积(利用滑动窗口、快速卷积),如何在 GPU 上用 CUDA 做并行加速。
- 在视觉定位的实时(Real‐time)或嵌入式场景里,通常要把 DWT 加速成一两毫秒内完成。
-
-
数值稳定性与逼近精度
- 在有限精度浮点运算下,要保证重构误差最小。特别是在做多层分解/重构时,误差容易累积,需要理解“IEEE‐754 误差传递”与“lifting scheme”相比传统滤波器组的优势。
- 如果需要 16 位或 8 位定点运算,要学会固定小数点表示法,以及对滤波器系数进行量化(Quantization)时如何保证小波基的近似正交与最低误差。
三、不同小波基的特性与选型
-
Haar 小波
- 最简单、最容易理解——基于“两个相邻点加/减”,相当于把信号切成块状常值表示。
- 优点:计算极快、易实现;缺点:时域不连续(阶跃),对平滑信号逼近能力弱。
- 适用场景:理清核心思路、做快速原型,但在视觉任务中通常只当做“示例”或“基准”。
-
Daubechies Series(Daubechies DbN)
- 支持高阶消失矩,时域更平滑;但滤波器长度随着消失矩阶数 N 增大而变长,时域支撑变宽。
- 你要对比各阶 Daubechies 的频域响应、时域支撑、线性相位(一般不是线性)、双正交情况等,理解为什么较长滤波器更适合情景,但计算量和边界处理更复杂。
-
Symlets、Coiflets、Biorthogonal Wavelets
- Symlets:Daubechies 改进版,时域对称性更好,适合某些图像/压缩场景;
- Coiflets:同时在小波函数和尺度函数上都拥有高阶消失矩,适合数值分析;
- Biorthogonal:分析滤波器和重构滤波器可以不同,使得你可以设计完全对称线性相位滤波器(有助于避免边缘伪影),在 JPEG2000 中被广泛使用。
-
Multiwavelets、Wavelet Frames
- 进一步推广到“多个尺度函数同时存在”的情形,或“不一定要正交但要帧属性”。
- 适合高级研究,尤其在一些超分辨、深度学习融合等新课题里,multiwavelet 能提供更丰富的稀疏/帧表示能力。
四、与深度学习、视觉定位结合时要拓展的知识
-
把小波嵌入 CNN/Transformer 框架
-
Wavelet Pooling / Unpooling
-
在 CNN 里,Max‐Pool 或 Average‐Pool 做下采样时往往丢掉大量细节;用小波做“可逆下采样”则能在“下采样→上采样”过程中保留边缘信息。
-
了解一些经典做法:
- Wavelet‐ResNet:在 ResNet 每个阶段中,把特征图用小波分解,下采样成 LL,保留 LH/HL/HH 作为跳跃连接(skip‐connection)。
- Wavelet‐CNN:用 2D 小波在每层提取低频和高频特征,分别卷积处理后再融合。
-
-
Wavelet Attention / Frequency‐Domain Attention
- 把小波分解看作一种“频带分解”,在 Transformer 设计中用 Attention 去“加权不同频带”。
- 学会把小波系数看成不同子频带,让网络能对每个子频带分配不同权重。
-
-
特征融合与再排序(Re‐ranking)
-
在视觉定位时,往往需要先做粗匹配(Global Descriptor)再做精匹配(Local Descriptor)。
-
小波能在“粗尺度匹配”后再提取“中/高频边缘特征”去做局部重排序(Re‐ranking)。
-
掌握经典论文:
- “WaveLoc: Wavelet‐based Local Feature Extraction for Visual Place Recognition”(虚构示例,找类似思路),看看作者是如何把 LL、LH、HL、HH 四个子带特征输入到网络不同层;
- “Hierarchical Matching SIFT with Wavelet”:用小波多尺度结构来分层提取 SIFT 特征做加速。
-
-
GPU 加速与并行化实现
- 研究如何在 PyTorch/TensorFlow 中自定义 2D DWT 层(
torch.nn.Conv2d
+ “预定义的低通/高通核” + 下采样),并能保证反向传播(梯度计算)正常。 - 掌握“分组卷积(grouped convolution)”实现小波滤波器组的技巧,让一条 GPU kernel 同时把批量特征图做低通+高通。
- Byte‐efficient 实现、FP16 量化对小波系数的稳定性等等细节,都是做大规模视觉定位系统时需要考虑的。
- 研究如何在 PyTorch/TensorFlow 中自定义 2D DWT 层(
五、实践与案例动手
-
手动实现 1D/2D DWT 并可视化
- 对一维信号(比如声音、传感器数据)做一维 DWT,把每次分解的低频系数和高频系数绘制成时序图,让你直观感受“信号每个尺度上变化的瞬时位置”。
- 对一张灰度图像做 2D DWT,将 LL、LH、HL、HH 四个子带可视化,观察不同子带保留的大体轮廓 vs 细节纹理。
- 让自己通过代码去验证“重构误差”、“边界处理方式”对结果的影响。
-
把小波融入一个简单的定位/匹配 Pipeline
-
举例设计一个“基于小波+手工特征”的原型:
- 将输入图像做一层二级小波分解,得到 LL、LH、HL、HH;
- 对每个子带分别提取 ORB 或 SIFT 特征;
- 在不同尺度上匹配后,通过加权融合决定最终候选帧。
-
这个流程不仅能验证“多尺度细节对匹配鲁棒性的帮助”,还能让你体会“实际工程细节”:如何把小波算子和特征提取算法无缝衔接,如何选择阈值、如何做特征描述符融合。
-
-
速度与内存优化
-
输入一批 640×480 图像,做 3 级 2D DWT,测试并记录 CPU/GPU 上的耗时和内存开销。思考:
- 滤波器长度越长,边界填充越复杂,速度怎么变化?
- 可否只在金字塔(pyramid)顶端做高阶分解,底层只做 1 层,兼顾速度和精度。
-
引入 OpenCV 的
dwt
、idwt
API 或者直接用 PyWavelets,比较不同实现的速度与重构精度。
-
-
查阅和动手阅读相关论文
- 经典教材:《A Wavelet Tour of Signal Processing》(Mallat)中的多分辨率分析与滤波器组章节,从数学推导到应用都有覆盖。
- 近年深度学习+小波的相关论文:如“Wavelet‐based Feature Pyramid Networks”、“Deep Wavelet Neural Networks for Visual Recognition”等,了解当前前沿思路。
- 把某篇论文里的伪代码拿来自己实现一遍,确保“不仅看得懂,还能复现每一个细节”。
六、推荐的学习路线(按阶段)
-
入门阶段
- 了解时频分析基本概念(傅里叶→STFT→小波)
- 入手 Haar 小波:手工推导一维例子、编写 Python 打印系数
- 学习多分辨率分析(MRA)理论——用图示帮助理解“子空间递进”和“细节投影”
-
进阶阶段
- 掌握 Daubechies、Symlets、Biorthogonal 等常用离散小波基的差异与选择原则
- 实现 2D DWT:把图像分成 LL、LH、HL、HH 四个子带,直观可视化
- 深入研究滤波器组设计:正交/双正交滤波器的构造方法、完美重构原理、边界延拓方式
-
应用与优化阶段
- 把小波集成到现有的特征提取或匹配框架里,评估其对定位鲁棒性和准确度的提升
- 学习如何在 PyTorch/TensorFlow 里实现可训练的“Wavelet‐Conv”层,让网络能自己学习最优的小波基系数
- 研究小波包、提升方案、 2.5D/3D 小波(针对视频、体数据),扩展到更高维度的视觉数据处理
-
研究前沿阶段
- 深入了解“深度小波神经网络(Deep Wavelet Nets)”与“Graph Wavelets”、“Adaptive Wavelets”在视觉领域的最新成果
- 尝试将小波分解与注意力机制(Attention)结合,做频率域的注意力自适应加权
- 关注多模态场景:把小波思想推广到 LiDAR 点云、三维网格、时空视频等更复杂结构数据上
七、总结
-
核心动机:
- 解决传统傅里叶“只能告诉我频率分布,却不知道时间在哪个位置出现某个频率”的局限;
- 希望“在不同分辨率/尺度下”的信息都能被捕捉到,以兼顾整体与细节,特别适合在视觉定位或目标检测中处理“大场景 + 细节边缘”问题。
-
核心技术细节:
- 多分辨率子空间的构造、消失矩(vanishing moments)与滤波器长度的权衡、双正交对称性对边缘伪影的影响;
- 边界延拓策略带来的系数扭曲、一定层数分解后的重构误差累积;
- 2D DWT 在图像金字塔/特征金字塔中的具体实现、GPU 并行化计算与可微分操作接口。
-
知识拓展:
- 在信号处理层面:更深地了解“多分辨率分析”、“时频框架”、“提升方案”“小波包”。
- 在工程实现层面:掌握如何用 PyWavelets、OpenCV、TensorFlow/PyTorch 自定义高效的小波算子,并保证正向/反向传播的数值稳定性。
- 在视觉应用层面:研究“小波+深度网络”融合的策略、扩展到三维、时空领域,把多尺度思想推广到更广泛的多模态数据。
沿着上面这条“从基础到进阶再到前沿”的路线,一步步打牢信号与时频分析的理论基石,同时结合具体的代码实现、GPU 加速与视觉应用场景。