PPG 信号与 SpO₂ 模拟器 返回
生物医学信号处理

PPG 信号与 SpO₂(脉搏血氧仪)模拟器

可视化脉搏血氧仪如何利用红光与红外 LED 的吸收比,估算动脉血氧饱和度 SpO₂。调整灌注指数、运动伪影与采样率,即可实时观察 PPG 波形、校准曲线、信号质量与测量不确定度的变化。

参数设置
目标 SpO₂
%
设定的真实 SpO₂ 值(健康人 95~100%)
心率 HR
BPM
红光 LED 波长
nm
标准 660 nm,Hb 与 HbO₂ 吸收差异最大
红外 LED 波长
nm
标准 940 nm,靠近等吸收点
灌注指数 PI
%
AC/DC×100,健康 1~5%,低灌注 <0.5%
运动伪影
%
叠加在 PPG 波形上的低频噪声幅度
采样率 Fs
Hz
计算结果
R 比
SpO₂ 估算值 (%)
估算误差 (%)
RR 间期 (ms)
信号质量 SQI (%)
测量不确定度 (%)
指尖截面 — PPG 信号动画

红光(660 nm)与红外(940 nm)LED 透过指尖,被随心跳变化的血容量吸收,由光电二极管接收为 AC + DC 合成波形。

PPG 原始波形(红光 + 红外,AC 成分增强)
SpO₂ 校准曲线(R 比 vs SpO₂)
理论与主要公式

$$R = \frac{(AC/DC)_{\text{red}}}{(AC/DC)_{\text{IR}}}, \qquad SpO_{2} \approx 110 - 25\,R$$

R≈0.4~0.5 对应 SpO₂≈100%,R≈1.0 对应 SpO₂≈85%。经验校准曲线随机型不同(由厂家实测)。

$$SpO_{2} = \frac{\varepsilon_{Hb,\text{red}} - R\,\varepsilon_{Hb,\text{IR}}}{(\varepsilon_{Hb,\text{red}}-\varepsilon_{HbO_{2},\text{red}}) + R\,(\varepsilon_{HbO_{2},\text{IR}}-\varepsilon_{Hb,\text{IR}})}$$

本工具采用更严格的 Beer-Lambert 公式,使用的消光系数使得 SpO₂=98% 输入对应 R≈0.33,估算误差≈0%。

$$SQI = \frac{PI}{5}\,\left(1-\frac{motion}{100}\right), \qquad U[\%] = 1 + \frac{1}{SQI} + 0.02\cdot motion$$

信号质量指标 SQI 与测量不确定度 U 的简化模型。低灌注或剧烈运动时 U 会急剧增大。

光体积描记 (PPG) 信号与 SpO₂

🙋
Apple Watch 和医院的夹子式传感器都会显示「血氧 98%」,这究竟是怎么测出来的?又没有抽血对吧?
🎓
对,完全无创,连针都不用扎。原理一句话:就是在测光的吸收。指尖上同时打开红光(约 660 nm)和红外(约 940 nm)两个 LED,对侧或同侧的光电二极管接收透射 / 反射光。每次心脏搏动会推动动脉血量上下波动,于是吸光度也按这个节奏波动。我们把波动部分叫「AC」、平稳部分叫「DC」,两个波长的 AC/DC 之比 R 一计算,就能利用 HbO₂ 与 Hb 的吸收差异得到动脉血氧饱和度 SpO₂。
🙋
为什么非要「红光 + 红外」两种颜色?用一种不行吗?
🎓
问得好。这要回到 Beer-Lambert 定律。只用一种波长时,「血红蛋白浓度」和「氧合比例」会挤在同一个方程里,没法分离。但 660 nm 处 Hb 比 HbO₂ 吸收更强,940 nm 处反过来 HbO₂ 吸收略强。把两个波长的 AC/DC 比相除,浓度和光程会近似抵消,只留下「氧合比例」。这就是脉搏血氧仪的核心——用两组方程平衡两个未知数,跟 CAE 里联立方程的味道挺像的。
🙋
把左边的灌注指数 PI 从 2.5% 拉到 0.5%,信号质量一下就崩了变成「警告」。PI 真有那么关键吗?
🎓
非常关键。PI = AC/DC×100,本质就是「全部光强中脉动分量所占比例」,它直接决定了你拿到的信噪比起点。健康人指尖大约 1~5%,但手脚冰凉、休克状态、用了血管收缩药等情况下,可能跌到 0.1% 以下。AC 一变小,R 就乱跳,SpO₂ 读数会「97 → 92 → 95」反复抖。所以 ICU 常说「指尖太凉就换额头或耳垂传感器」「PI 一直偏低本身就要警惕循环问题」。
🙋
还有「运动伪影」对吧?挥手时数值乱跳,就是这个?
🎓
对,这是可穿戴设备最大的敌人。手指或手腕一动,皮肤和 LED 的距离就变,静脉血也跟着晃,结果在 AC 频带里叠加进低频大幅噪声。这种噪声一旦和心率频段重叠,峰值检测和 R 都会算错。运动中智能手表不肯给 SpO₂ 数值,就是因为它判定 SQI 不够高,干脆「不显示」。在本工具中把运动伪影拉到 30% 以上,不确定度会陡升,相当于「测不到」了。
🙋
采样率 Fs 又应该选多少?医院的监护仪好像采得很密。
🎓
看用途。只要 SpO₂ 和心率,50~100 Hz 就够了,本工具默认 100 Hz 也是这一档。但如果你想从 PPG 波形本身提取血压趋势或 HRV(心率变异性),就需要保留到第 5 次谐波附近,常用 250~500 Hz。所以 ICU 的高端监护仪一般跑 500 Hz 级。从 Nyquist 看,HR/60 × 5 × 2 是下限——HR=180 时大约 30 Hz。

常见问题

PPG 通过光电二极管测量 LED 光透过或反射末梢组织(如指尖)的强度,将随心跳变化的血容量分量(AC 成分)与稳态吸收(DC 成分)分离。SpO₂(经皮动脉血氧饱和度)利用氧合血红蛋白 HbO₂ 与还原血红蛋白 Hb 在红光(约 660 nm)与红外(约 940 nm)下的吸收差异,由两个 AC/DC 比的比值 R 估算得到。也就是说,SpO₂ 是从 PPG 信号中导出的最具代表性的参数之一。
脉搏血氧仪使用的比值为 R = (AC/DC)_red / (AC/DC)_IR,最常见的经验式是 SpO₂ ≈ 110 − 25R,由各厂家通过参考测量校准。本工具采用更严格的 Beer-Lambert 形式 SpO₂ = (ε_Hb,red − R·ε_Hb,IR) / (ε_Hb,red − ε_HbO2,red + R·(ε_HbO2,IR − ε_Hb,IR)),并使用 660/940 nm 的消光系数,使得输入 SpO₂=98% 时 R≈0.33、估算误差几乎为 0%。
灌注指数 PI = AC/DC × 100 表示脉动分量的强度,典型值为 1~5%。PI 偏小时,AC 成分的信噪比下降,R 估算变得不稳定。运动伪影会在 PPG 波形上叠加低频大幅波动,扰乱峰值检测。本工具采用简化模型 SQI = PI/5 × (1 − motion/100) 与 U[%] = 1 + 1/SQI + 0.02·motion[%],可直观看到低灌注或剧烈运动下 SpO₂ 可信度迅速下降的现象。
PPG 波形包含基频(HR/60 Hz)约 5 次以内的谐波,因此 Nyquist 下限约为 Fs ≥ 2·(HR/60·5) Hz。HR=180 BPM 时至少需要 30 Hz,工程上常取 100 Hz 较为安全。若需做连续监测或 HRV(心率变异性)分析,则建议 250~500 Hz;若仅做峰值检测,50~100 Hz 即可。本工具默认 100 Hz,会显示「Nyquist 条件 OK」的判定。

实际应用

医院监护仪、ICU 与手术室:脉搏血氧仪常被誉为「第五大生命体征」,与心率、呼吸、血压、体温并列为标准连续监护项目。它用于全身麻醉期间的氧合监测、呼吸机撤机判断、脓毒症患者的早期预警(NEWS/qSOFA 评分均含 SpO₂)。临床级设备的精度规格通常为 Arms = 2%(在 SpO₂ 70~100% 范围内与参考血氧仪的均方根误差 2% 以内)。

可穿戴健康设备:Apple Watch(Series 6 及以后)、Fitbit、Garmin、Oura Ring 等都基于 PPG 提供 SpO₂、心率、HRV、睡眠呼吸暂停筛查等功能。腕表型采用反射式 PPG(LED 与光电二极管在同侧),对皮肤接触、运动与肤色较为敏感,误差大于临床机器,因此被定位为「健康趋势指标」而非医学诊断。

新生儿与儿科:新生儿动脉导管未闭筛查、早产儿氧疗管理中,常同时测量上下肢 SpO₂ 并比较「导管前/导管后」差值。婴儿皮肤薄、透光好,但体重轻、易受运动与低灌注影响,需要专用小型探头和耐低 PI 的算法。

COVID-19 居家管理与远程医疗:2020 年以来,轻症 COVID 居家患者使用 SpO₂ 作为「沉默性低氧(silent hypoxia)」的关键指标,家用脉搏血氧仪销量增长数十倍。远程医疗平台与 SpO₂ 自动告警的联动(例如 SpO₂ 跌破 93% 即通知护士)已成为标准做法。

常见误解与注意事项

首先最大的误解是「SpO₂ = 100% 才最好最安全」。SpO₂ 在 100% 处饱和,再高的动脉氧分压 PaO₂ 也看不出区别(氧解离曲线上端是平的)。COPD 或慢性 II 型呼吸衰竭患者过度给氧反而会抑制 CO₂ 排出导致意识障碍,目标 SpO₂ 常被刻意控制在 88~92%。SpO₂ 不是「越高越好」,而是要按患者背景设定目标值后再评价。

其次是「指甲油、色素与外周循环的影响」。深红、深蓝、黑色指甲油、纹身、指甲花、皮肤黄染(高胆红素)等会扭曲 LED 光的透射 / 反射光谱,使 SpO₂ 偏低 1~数个百分点。肤色(黑色素含量)的影响近年也受到重视:多项研究表明,在低 SpO₂ 范围内深肤色受试者会出现「相对动脉血气偏高」的系统偏差,FDA 于 2022 年发出过相关安全提示。临床上一旦数值可疑,应换手指、改用耳垂或额头传感器,并以动脉血气进行核对。

最后是「异常血红蛋白与 CO 中毒」。普通脉搏血氧仪只能区分 Hb 与 HbO₂ 两种,对高铁血红蛋白血症(MetHb)或一氧化碳中毒(COHb),会把无法携氧的异常 Hb 当成 HbO₂ 计入,使 SpO₂ 出现「虚假正常或偏高」。火场或工业气体事故中,可能 SpO₂ 显示 98% 而 CO-oximeter(4~8 波长)实测 COHb=40%,实质上已经是严重低氧。SpO₂ 单独并不能保证「真实的动脉氧含量」——这与 CAE 的教训一样:输入物理一旦不成立,输出就没有意义。

使用指南

  1. 设定红光(660nm)与红外光(940nm)的LED强度:红光范围0-100mV,红外光范围0-120mV,模拟不同皮肤光学特性下的吸收差异
  2. 调整心率(HR)范围在60-120bpm之间,脉搏血氧饱和度(SpO₂)在90-100%区间,观察PPG波形的舒张期与收缩期振幅比(R比)的实时变化
  3. 监测信号质量指数(SQI)、RR间期与测量不确定度数值,当SQI低于70%时说明探头贴合不佳或环境光干扰,需调整传感器位置或降低环境照度

具体计算示例

以成人指尖测量为例:红光强度设为45mV,红外光强度为65mV,心率设定为75bpm,SpO₂目标值98%。模拟器计算R比=(red_AC/red_DC)/(ir_AC/ir_DC)≈0.52,通过标准校准曲线SpO₂=110-25×R得出估算值97.2%,估算误差±1.8%。RR间期为800ms(对应75次/分),信号质量SQI达到84%,测量不确定度为±2.1%(符合ISO80601-2-61标准要求±3%以内)。

实务注意事项