基于小波变换模极大值法的信号去噪指南
项目介绍
本项目实现了一种基于二进小波变换模极大值(Wavelet Transform Modulus Maxima, WTMM)理论的信号去噪方案。与传统的小波阈值去噪法不同,该方法利用信号与噪声在不同尺度下模极大值演变特性的差异进行滤波。信号的模极大值通常随尺度增加而保持稳定或增大,而白噪声的模极大值则随尺度增加迅速衰减。通过提取并筛选跨尺度特征明显的极大值点,可以有效去除噪声,同时精准保留信号的突变沿和边缘特征,有效抑制伪吉布斯现象。
功能特性
- 多尺度二进分解:采用无抽样的 A trous 算法进行小波变换,保持信号在各尺度下的长度一致,便于时域定位。
- 边缘保留策略:通过分析模极大值的跨尺度相关性,识别并保留属于真实信号的突变特征。
- 启发式自动阈值:基于各尺度噪声水平自动计算去噪阈值,适应不同强度的噪声环境。
- 交替投影重构 (POCS):利用迭代算法逐步逼近原始信号空间,从非完备的小波极大值信息中恢复高质量纯净信号。
- 性能评估可视化:自动计算均方根误差(RMSE)与信噪比增益(SNR Improvement),并绘制时域对比图与极大值分布图。
系统要求
- 运行环境:MATLAB R2016b 及以上版本。
- 工具箱依赖:仅需 MATLAB 核心函数库(无需额外信号处理工具箱)。
使用方法
- 在 MATLAB 控制台中直接运行主程序脚本。
- 程序将自动执行以下流程:生成含噪的 HeaviSine 测试信号 -> 执行 4 层二进小波分解 -> 提取各层模极大值 -> 应用跨尺度过滤逻辑 -> 启动 20 次 POCS 迭代重构 -> 输出评估结果。
- 产生的交互式图表中,第一子图显示含噪信号,第二子图显示过滤前的极大值分布,第三子图显示去噪重构结果。
详细实现逻辑
- 参数初始化与信号生成:设定信号长度为 1024 点,采样频率 1000Hz。生成具有典型剧烈波动特征的 HeaviSine 信号,并按照设定的信噪比(如 10dB)注入加性高斯白噪声。
- 多尺度二进变换:使用二次样条小波(Quadratic Spline)滤波器组。通过 A trous 算法对高通和低通滤波器进行插零扩张(尺度越大,步长越长),从而在不进行下采样的情况下获得多尺度表示。
- 模极大值捕捉:在每个分解尺度上搜索小波系数绝对值的局部极大点。仅当当前点的模大于相邻两点且超过极小门限时,才被记录为模极大值。
- 去噪过滤逻辑:
*
阈值剔除:根据每个尺度系数的中间绝对偏差(MAD)估算噪声水平,结合经验公式生成不同尺度的自适应阈值。
*
跨尺度传播检查:利用信号在尺度间的连续性,检查当前尺度的极大值点在下一尺度(更大尺度)对应的邻域内是否存在关联点。若不存在,则识别为噪声点并置零。
- 信号重构 (POCS):
* 初始化估计信号。
* 进入迭代循环:将当前估计信号投影至小波域;在对应的模极大值点位置使用原始保留的极大值进行强制修正;通过对偶滤波器组执行反向变换回到时域。
* 引入随迭代次数递减的松弛因子 $alpha$,平滑更新信号估计,直到达到最大迭代次数。
- 指标评估:计算去噪后信号与原始纯净信号的差异,得出最终的 SNR 和 RMSE。
关键算法细节分析
- 滤波器设计:采用的低通滤波器系数为 [0.125, 0.375, 0.375, 0.125],高通滤波器为 [0.5, -0.5]。这种设计提供了良好的对称性和紧支撑性,有利于突变点的判别。
- 边界处理:在进行卷积操作时,采用了对称延拓(Symmetric Padding)技术,有效减少了分块处理或边界截断产生的端点效应。
- 模极大值表示:小波变换的模极大值包含了信号的大部分结构信息(Lipschitz 指数信息)。通过过滤掉随尺度增大而指数级衰减的分量,实现了在时域内分离信号与噪声的目的。
- 迭代重构原理:重构过程是一个求解约束满足问题的过程。通过在小波域修正模值,在时域保证信号连续性,交替投影算法能够有效地从稀疏的极大值点中恢复出绝大部分原始波形细节。