第二章:噪声类型与来源——知己知彼,百战不殆

做神经信号去噪,说白了就是一场「信号提纯」的战斗。你想想看,我们采集到的脑电信号,就像一杯被各种杂质污染的水——有生理活动带来的「生物杂质」,也有设备环境带来的「电子杂质」。我个人习惯,拿到一段信号后第一件事不是急着去噪,而是先问自己三个问题:这噪声从哪来?长什么样?怎么区分?

这一章,我们就来拆解这些「杂质」的真面目。

2.1 生理噪声:来自身体内部的「干扰源」

生理噪声,顾名思义,是人体自身活动产生的电信号。它们混在脑电里,有时候比脑电本身还强。我在项目中遇到过最头疼的情况——受试者打了个哈欠,眼电直接淹没了整个额叶通道的数据。

2.1.1 眼电噪声(EOG)

眼电是最常见的生理噪声。眼球本身就是一个电偶极子,角膜带正电,视网膜带负电。你眨眼、转动眼球,都会产生几十到几百微伏的电位变化。

关键特征:
  • 幅度: 50-200 μV,比脑电(5-100 μV)大得多
  • 频率: 0-10 Hz,主要集中在低频段
  • 空间分布: 额叶电极(Fp1, Fp2, Fz)受影响最大
  • 波形: 眨眼产生陡峭的尖峰,眼动产生缓慢的阶梯状偏移

嗯,这里要注意:眼电和低频脑电(比如δ波、θ波)在频域上高度重叠。你如果简单用高通滤波,很容易把有用的脑电也滤掉。我曾经吃过这个亏——为了去眼电,把受试者的慢波睡眠信号全干掉了,结果论文审稿人一眼就看出来了。

2.1.2 肌电噪声(EMG)

肌电是另一个「刺头」。你咬个牙、皱个眉、甚至脖子稍微动一下,肌肉收缩产生的电信号就会窜进来。

噪声类型 频率范围 幅度 典型场景
眼电(EOG) 0-10 Hz 50-200 μV 眨眼、眼球转动
肌电(EMG) 20-500 Hz 10-100 μV 咬牙、皱眉、颈部紧张
心电(ECG) 0.5-40 Hz 0.5-5 μV 心跳、脉搏

肌电的麻烦在于它的频率范围太宽了。低频部分和β波、γ波重叠,高频部分又和噪声混在一起。我建议你记住一个经验法则:肌电的时域波形像「毛刺」,而脑电是「平滑的波动」。这个直觉在深度学习里很有用——很多CNN网络就是靠这个特征来区分信号的。

2.1.3 心电噪声(ECG)

心电噪声相对好处理一些。它幅度小(通常不到5 μV),而且有规律——跟着心跳节奏走。但如果你做的是高密度脑电(128导以上),或者电极靠近耳后、颈部,心电的R波尖峰就会很明显。

我的小技巧: 心电噪声在频域上表现为一个基频(约1-1.5 Hz)加上若干谐波。你可以先检测R波位置,然后用模板相减的方法去除。我在做睡眠分期项目时,就是用这个方法把心电去得干干净净。

2.2 环境噪声:来自外部的「电子污染」

环境噪声比生理噪声更「机械」,但也更顽固。你想想看,我们实验室里到处都是电源线、显示器、手机信号...这些都会耦合到脑电信号里。

2.2.1 工频干扰(50/60 Hz)

工频干扰是每个做脑电的人都会遇到的噩梦。电网的交流电频率——中国和欧洲是50 Hz,美国是60 Hz——会通过电磁感应耦合到电极线和放大器里。

避坑指南: 我曾经在调试一个便携式脑电设备时,发现50 Hz噪声大得离谱。查了半天,原来是受试者坐的位置离墙上的电源插座太近了。后来我要求所有实验都让受试者距离电源至少1.5米,问题就解决了。硬件上的屏蔽,比任何算法都管用。

工频干扰的时频特征非常明显:

  • 时域: 正弦波叠加在脑电上,幅度通常5-20 μV
  • 频域: 在50 Hz(或60 Hz)处有一个尖锐的峰值
  • 谐波: 有时还会出现100 Hz、150 Hz等谐波分量

2.2.2 电磁干扰(EMI)

电磁干扰的来源就多了——手机、WiFi路由器、荧光灯、电机...这些设备都会辐射电磁波,被脑电的导线和电极接收。

我个人习惯把电磁干扰分成两类:

  1. 窄带干扰: 比如手机信号(900 MHz、1800 MHz),虽然频率极高,但经过放大器后可能混叠到低频段
  2. 宽带干扰: 比如开关电源的噪声,覆盖很宽的频率范围,看起来像白噪声

2.3 噪声的时频域特征——深度学习能学什么?

好了,现在我们知道噪声长什么样了。但深度学习模型怎么区分信号和噪声呢?说白了,就是让模型学习到噪声在时域和频域上的「指纹」。

我画了一张图,帮你理清这个知识体系:

噪声时频域特征知识体系 时域特征 幅度分布 波形形态 统计特征 自相关 频域特征 功率谱密度 峰值频率 频谱斜率 谐波结构 时频域特征(深度学习重点) 短时傅里叶变换(STFT) 小波变换 希尔伯特-黄变换 深度学习模型通过时域、频域、时频域三个维度学习噪声的「指纹」特征

为什么深度学习在去噪上这么强?因为它能同时利用这三个维度的信息。举个例子:

  • 时域上: 眼电的尖峰、肌电的毛刺、工频的正弦波,形态完全不同
  • 频域上: 眼电低频、肌电高频、工频有固定峰值,频谱分布各异
  • 时频域上: 噪声的时变特性——比如眨眼瞬间的突变——在时频谱上一目了然
核心观点: 一个好的深度学习去噪模型,本质上是在学习一个「噪声字典」。它记住了每种噪声的时频模式,然后从混合信号中把噪声「抠」出来。你给模型喂的数据越多样,它见过的噪声类型越全,去噪效果就越好。

最后说一个我踩过的坑。刚开始做这个方向时,我总想着用一个模型搞定所有噪声。结果呢?模型在训练集上表现完美,一上真实数据就崩了。后来我才明白——不同噪声的物理机制完全不同,你不能指望一个简单的CNN同时学会去眼电和去工频。现在的做法是:先识别噪声类型,再针对性去噪。这个思路,我们会在后面的章节详细展开。

嗯,这一章的内容就到这里。记住一句话:理解噪声,比去噪本身更重要。下一章,我们会把这些知识落地到代码里,看看怎么用Python把噪声可视化出来。


专注资料整理