跳转至

信号处理

生物信号 → 含噪信号 → 滤波 → 采样 → 数字信号处理

噪声

混在有用生物信号里的、无关或干扰成分。

基线漂移 (Baseline Wander):波形整体像海浪一样上下起伏。这通常是由于呼吸或身体晃动引起的(属于低频干扰)。

高频噪声 (High-frequency Noise):波形上有细小的锯齿。这可能是肌肉电信号 (EMG) 或设备电子噪声。

采样

按固定时间间隔对连续时间信号取值,把模拟信号转换为数字信号

采样定理

采样频率 ≥ 信号最高频率的 2 倍

否则会出现 混叠

Nyquist 频率

Nyquist 频率 = 采样频率 / 2

采样系统能够无失真地还原的最高信号频率。任何高于这个频率的成分,在采样后都会发生畸变,这样的采样是无效的。因此,我们希望,被采样信号本身的最高频率成分小于 Nyquist 频率

混叠

采样频率低于信号最高频率的 2 倍时,高频成分会被错误地表现为低频成分,导致信号失真。

采样后,频谱会以 fs 为周期重复,超出 fs/2 的部分会折叠回低频

混叠后的频率:

f(alias) = |f(实际) - k * fs|,并且要保证 f(alias) 落在 0 Hz 到 Nyquist 频率 这个范围内。

抗混叠滤波器

采样前加一个低通滤波器,其截止频率设定在 Nyquist 频率以下,将所有高于 Nyquist 频率的成分在采样前就彻底滤除

滤波

保留感兴趣的频率成分,抑制或去除其他成分。

  • 低通滤波:去高频噪声
  • 高通滤波:去低频漂移
  • 带通滤波:只保留某一频段
  • 带阻滤波:去除特定频率

原理

对于单级电路(如 LC 振荡电路),带通原理来自于电感(L)电容(C)的阻抗特性随频率变化的抵消现象:

  • 感抗 (\(X_L = 2\pi fL\)):随频率升高而增大。它“讨厌”高频。
  • 容抗 (\(X_C = \frac{1}{2\pi fC}\)):随频率升高而减小。它“讨厌”低频。

在某个特定的频率 \(f_0\)(谐振频率)下,感抗等于容抗。此时,电路中的虚部阻抗互相抵消,能量交换达到效率最高点。

  • 低于 \(f_0\):电容占主导,阻碍大。
  • 高于 \(f_0\):电感占主导,阻碍大。
  • 等于 \(f_0\):阻抗最小(串联谐振)或最大(并联谐振),从而形成一个选择性的“窗口”。

滤波器设计

中值滤波(Median)

  • 取一个窗口内的若干点,把数排序后取中间那个值。
  • 作用:去掉“突刺/毛刺噪声”,但不会把波形边缘抹平。
  • 中值滤波是滑动窗口,每次只输出窗口中心那个点的一个值。
  • 例如:原序列x = [1, 2, 50, 2, 1, 3, 2]
    • 窗口=5,第一次窗口是 [1,2,50,2,1] → 中值=2,输出 y[3]=2(只替换中心那个点)
    • 窗口右移一格变成 [2,50,2,1,3] → 中值=2,输出 y[4]=2

均值滤波(Mean / Moving Average)

  • 取窗口内的点求平均值。
  • 作用:整体平滑高频噪声,但会让波峰变钝一点。

为什么先中值再均值?

  • 先用中值把“单点毛刺”清掉;
  • 再用均值做平滑;
  • 反过来会让毛刺先污染平均值,后面中值就补不回来了。

差分方程

傅里叶变换

  • 时域卷积:让原始信号与一个特定的“冲激响应”函数进行卷积运算。这个函数在数学上本质是一个震荡并逐渐衰减的波形,它能过滤掉不需要的数字波动。
  • 频域相乘
  • 通过 快速傅里叶变换 (FFT) 将时域信号转为频域。
  • 将通带以外的频率幅值直接置为 0(或乘以极小的系数)。
  • 通过 逆傅里叶变换 (IFFT) 还原回时域。

Butterworth 滤波器

Butterworth滤波器的振幅平方响应由以下公式定义:

\[|H(j\omega)|^2 = \frac{1}{1 + (\frac{\omega}{\omega_c})^{2n}}\]
  • \(n\):滤波器的阶数。阶数越高,过渡带越陡峭,越接近理想的“砖墙”过滤效果。
  • \(\omega_c\):截止频率(Cut-off frequency)。在此频率点,增益下降到最大值的 \(1/\sqrt{2}\),即 -3dB 处。
  • \(\omega\):信号的角频率。

峰值检测

一种鲁棒性更强的波峰检测方法

  • 不用固定阈值,而是用 signalMax 和 signalMin 动态调整阈值,适应光强变化。阈值 = (signalMax+signalMin)/2,跟随信号幅度缓慢漂移。一个峰必须同时满足 3 个条件(拐点 + 超过阈值 + 距上次>固定时间(如200ms)),才算有效。

  • 对于心跳峰,心率合理性过滤:由相邻两个峰值间隔算出来的 BPM 必须在 40~200 之间。如果算出来是 300 或 10,就认为是误检,不计入。

ECG

心脏在跳动过程中产生的电活动信号,通过贴在皮肤表面的电极采集。

  • 导联:通过电极采集到的电压差。每一个导联记录的是两个特定点之间,或者一个点与一组参考点之间的电位变化。
  • 周期性(与心跳一致)
  • 幅值:约 0.5–5 mV
  • 频率范围0.05–150 Hz

波形

  • P 波:心房去极化,即心房肌细胞兴奋并引发心房收缩。特点:幅度较小、频率成分较低、在 ECG 中容易被噪声掩盖。
  • QRS 波群:心室去极化。特点:幅度大、上升沿陡峭、高频成分丰富(约 10–25 Hz)。
  • T 波:心室复极化。特点:斜率平缓、高频成分较少、波形结束点(T 波终点)界定困难。

去噪

  • 工频干扰(50 Hz / 60 Hz):来源于电力系统。可通过带阻滤波抑制工频干扰,但在 QRS 复合波存在时,线性滤波器可能引入失真,因此在某些情况下需要采用非线性或自适应滤波方法
  • 肌电干扰:来自骨骼肌活动。利用 ECG 的周期性,对齐多个心搏后进行集合平均(ensemble averaging)可以有效降低非同步噪声成分。
  • 基线漂移:来源于呼吸、体动,低频噪声,通常低于 0.5 Hz,通过高通滤波、多采样率方法或样条拟合等方式加以去除

R 峰检测

R 峰是 QRS 复合波中幅度最大的正峰,是心搏时间定位的基准点。ECG 中几乎所有时间参数(RR 间期、心率变异性等)都以 R 峰为参考。

心率变异性(HRV)分析

心电分类(正常 / 房颤 / 室早等)

心率

Heart Rate (bpm)=60/RR interval (s)

工程上我们不是直接算心率,而是先稳定地检测 R 峰,再从 RR 间期得到心率。”

EEG

大脑神经元群体活动产生的微弱电信号,通过头皮电极采集。

  • 非平稳、随机性强
  • 幅值:约 10–100 μV
  • 主要频率范围0.1–100 Hz

节律

频段 频率 含义
δ(Delta) 0.5–4 Hz 深度睡眠
θ(Theta) 4–8 Hz 困倦、冥想
α(Alpha) 8–13 Hz 放松、闭眼
β(Beta) 13–30 Hz 思考、紧张
γ(Gamma) >30 Hz 高级认知

去噪

  • 眼电(眨眼、眼动)
  • 肌电(咀嚼、说话)
  • 电极接触不良

时频分析(STFT / 小波)

特征提取(功率谱、熵)

脑电分类与解码

PPG

光电容积脉搏波(Photoplethysmography)是用红光/红外光照射手指,血液在每次心跳时流量变化,会导致反射/透射光强随之变化。传感器把这种光强变化转换成波形,这个波形就是PPG。

  • 测心率: 血液中红细胞的血红蛋白对光的吸收率是有规律的。当心脏跳动(泵血)时,外周血管(如手指或手腕)的血液量会发生微小的周期性变化。传感器发出的光(IR通道,信噪比更高,吸收对比度更好)射入皮肤,反射回来的光强度会随血液量波动。通过处理这个波形,就能算出心跳频率。

测血氧

MAX30102 交替发射红光和红外光,通过计算这两种光被吸收的比例(即 \(R\) 值),就能估算出血液中的含氧量。

  • 红光 (660nm): 还原血红蛋白 (\(Hb\)) 的吸收率极高。
  • 红外光 (880-940nm): 氧合血红蛋白 (\(HbO_2\)) 的吸收率较高。

根据 Lambert-Beer 定律,物质对光的吸收遵循以下公式:

\[A = \epsilon \cdot c \cdot d = \ln\left(\frac{I_0}{I}\right)\]
  • \(\epsilon\):物质的摩尔消光系数(红细胞中血红蛋白的特性)。
  • \(c\):物质浓度。
  • \(d\):光程(光在组织中行走的路径长度)。

在人体组织中,情况变得复杂,因为光不仅被吸收,还会被散射。底层模型通常将其简化为: \(I = I_{dc} + I_{ac}\)

  • DC 分量(直流): 来自皮肤、肌肉、骨骼以及非搏动性的静脉血。这部分信号相对恒定。
  • AC 分量(交流): 仅来自动脉搏动引起的血液容积变化。这是我们要提取的核心。

为了消除个体皮肤厚度、肤色和传感器压力的干扰,计算 “比值的比值”(Ratio of Ratios),即 \(R\) 值:

\[R = \frac{(AC_{Red} / DC_{Red})}{(AC_{IR} / DC_{IR})}\]

得到 \(R\) 值后,并不能直接转换成百分比,而是通过经验公式(Lookup Table)

\[SpO_2 = a - bR\]

(其中 \(a\)\(b\) 是通过人体临床实验校准出的常数。经验线性拟合,有效范围约70-100%。)

手指检测

  • IR原始值 < 50000 → 判定无手指
  • 重置所有滤波器和检测器状态,防止残留数据污染