血氧仪通过光电容积描记(PPG)技术采集心跳信号,原始数据往往杂乱无章,直接绘制会出现跳动、抖动,影响心率和血氧计算精度。本文将以实例讲解如何对硬件采集的心跳数据进行 归一化、滑动滤波、缓冲池处理,实现平滑、连续且易分析的数据流。
1. 原始数据的问题
硬件一次通常会发送多组数据,可能存在以下问题:
-
信号幅度差异大
-
不同人的血管弹性、皮肤厚度、手指位置都会影响光电信号幅值。
-
-
信号噪声多
-
光学噪声、电路噪声或手指微动会导致信号抖动。
-
-
折线图更新跳动
-
一次多组数据直接绘图,折线图会“跳动+停顿”,不连续。
-
针对这些问题,我们可以通过 缓冲池、滑动滤波和归一化 来优化数据处理。
2. 缓冲池(Buffer)的作用
缓冲池是一个临时存储区,用于平滑数据流:
-
硬件批量数据暂存
-
硬件一次可能发送 5~10 个采样点,将其存入缓冲池,而不是直接绘图。
-
-
按固定步长或时间间隔取数据绘图
-
例如每 50 ms 取 1 个数据点更新折线图,避免跳动。
-
-
支持滤波和归一化操作
-
可以在缓冲池中对数据做滑动滤波和归一化,再绘制图像。
-
类比:缓冲池就像水管中的水箱,硬件一次泵来一大口水(批量数据),水箱缓冲后均匀送出,折线图平滑滚动。
3. 滑动滤波(Moving Average Filter)
滑动滤波是一种简单有效的低通滤波方法,用于去除高频噪声和平滑信号:
-
原理: 对当前点及前 N 个采样点求平均。
-
公式示例:
-
作用:
-
平滑信号,减少抖动
-
提高心跳峰值检测准确性
-
去除瞬时异常点(毛刺)
-
4. 归一化(Normalization)
归一化用于将信号幅值映射到统一范围(如 0~1 或 -1~1):
-
作用:
-
消除个体差异
-
提高峰值检测与算法稳定性
-
便于设置阈值和进行后续计算
-
-
公式示例(Min-Max 归一化):
对血氧仪心跳数据,归一化后峰值统一到固定范围,便于算法处理。
5. 数据处理流程示意
结合缓冲池、滑动滤波和归一化,处理流程如下:
硬件采集 → 批量发送 → 写入缓冲池 → 按固定步长取数据 →
滑动滤波 → 归一化 → 折线图更新 & 心率/血氧计算
-
优点:
-
折线图平滑连续,不跳动
-
波形噪声降低,心跳峰值明显
-
数据幅值统一,计算更稳定
-
6. 小结
在血氧仪心跳数据处理中:
| 方法 | 作用 |
|---|---|
| 缓冲池 | 平滑数据流,解决折线图跳动问题 |
| 滑动滤波 | 去噪、平滑信号,提高峰值检测精度 |
| 归一化 | 统一幅值范围,消除个体差异,方便算法处理 |
结合这三步,硬件采集的心跳数据可以平滑、连续地显示和计算
1252

被折叠的 条评论
为什么被折叠?



