1. 信号降噪技术概述
在数字信号处理领域,降噪技术就像给声音或图像"洗澡"的过程,目的是去除那些我们不想要的干扰成分。想象一下老照片修复师如何小心翼翼地去除照片上的霉斑和划痕,信号降噪工程师也在做着类似的工作,只不过处理对象变成了各种传感器采集的电压波形、声音信号或者医学图像。
信号中的噪声主要分为两大类:加性噪声(像背景里始终存在的嘶嘶声)和乘性噪声(类似信号强弱变化时产生的失真)。我们常见的白噪声、粉红噪声都属于加性噪声,它们像是信号上叠加的一层"静电干扰"。而降噪技术的核心任务,就是要在保留有用信号特征的前提下,尽可能干净地剥离这些噪声层。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三种主流降噪方法对比
2.1 传统滤波降噪法
滤波降噪就像是用筛子过滤杂质,根据信号和噪声在频率分布上的差异来工作。低通滤波器是最常用的工具,它假设有用信号主要分布在低频段,而噪声则像调皮的高频"跳蚤"。
巴特沃斯滤波器的典型实现:
python复制from scipy import signal
import numpy as np
def butter_lowpass(cutoff, fs, order=5):
nyq = 0.5 * fs # 奈奎斯特频率
normal_cutoff = cutoff / nyq
b, a = signal.butter(order, normal_cutoff, btype='low', analog=False)
return b, a
# 使用示例(采样率1000Hz,截止频率50Hz)
b, a = butter_lowpass(50, 1000)
filtered_signal = signal.filtfilt(b, a, noisy_signal)
注意:filtfilt函数实现了零相位滤波,避免了常规滤波导致的信号时移问题。这在需要精确时间定位的应用(如心电检测)中尤为重要。
传统滤波的局限性在于,当信号和噪声的频带重叠时,就像咖啡里混入了同样颜色的酱油,简单的"过滤筛"就无能为力了。这时候就需要更智能的降噪手段。
2.2 小波降噪技术
小波分析就像是给信号做"显微镜检查",可以同时观察时域和频域特征。其核心思想是通过小波变换将信号分解到不同尺度(可以理解为不同放大倍数)上,然后在每个尺度上智能地区分信号和噪声。
小波降噪四步法:
- 分解:选择合适的小波基(如db4、sym8)进行多级分解
- 阈值处理:对细节系数进行软/硬阈值处理
- 重构:用处理后的系数重建信号
- 评估:通过信噪比(SNR)等指标验证效果
python复制import pywt
def wavelet_denoise(signal, wavelet='db4', level=4):
# 分解
coeffs = pywt.wave
