心电图 QRS 检测模拟器 返回
医学工程・信号处理

心电图 QRS 检测模拟器

从心电图波形中提取 R 波(QRS 群的顶点)的古典方法 Pan-Tompkins 算法在浏览器上可视化。改变心率・采样频率・噪声水平・带域・阈值,检测灵敏度・PPV・处理延迟会实时更新,帮助理解 Holter 心电计和可穿戴心电设备的设计思路。

参数设置
心率 HR
BPM
每分钟的搏动次数。30~200 相当于休息~运动状态
采样频率 Fs
Hz
ADC 采样频率。诊断用 ECG 标准为 500 Hz 以上
噪声水平
%
相对于信号幅值的加性噪声比。相当于电源干扰・EMG 噪声
带通下限 fL
Hz
带通上限 fH
Hz
QRS 主要频率 5~15 Hz 为标准
移动窗宽 MWI
ms
平方信号的移动平均窗。150 ms 为标准(略大于 QRS 宽度 80~120 ms)
阈值系数
自适应阈值 NPK + factor·(SPK − NPK) 的系数
计算结果
RR 间隔 (ms)
样本/搏动
检测延迟 (ms)
信噪比 SNR (dB)
灵敏度 (%)
阳性预测值 PPV (%)
ECG 波形与 Pan-Tompkins 管道

上段:合成 ECG(P-QRS-T + 噪声)。下段:带通→微分→平方→MWI 输出。红点为 R 波检测位置,虚线为自适应阈值。

ECG 原始信号 vs 处理后信号
检测灵敏度・PPV 的 SNR 依存性
理论・主要公式

$$y[n] = x[n] * h_{BP}[n] * h_{D}[n],\qquad I[n] = \frac{1}{N}\sum_{k=0}^{N-1}y^{2}[n-k]$$

h_BP:带通滤波,h_D:微分滤波,N:窗宽样本数。MWI 输出 I[n] 超过自适应阈值时检测为 R 波。

$$\mathrm{THRESHOLD} = \mathrm{NPK} + f\cdot(\mathrm{SPK} - \mathrm{NPK})$$

SPK:信号峰值移动平均,NPK:噪声峰值移动平均,f:阈值系数。每次检测时更新 SPK/NPK 的自适应阈值。

$$\mathrm{SNR}_{\mathrm{dB}} = 20\log_{10}\!\left(\frac{A_{\mathrm{signal}}}{A_{\mathrm{noise}}}\right),\qquad t_{\mathrm{lat}} \approx t_{BP} + t_{D} + \tfrac{N}{2 F_{s}}$$

SNR 是信号与噪声的幅值比(dB)。检测延迟 t_lat 是带通・微分・MWI 群延迟的累积。Fs:采样频率。

心电图(ECG)的 QRS 检测 — Pan-Tompkins 算法

🙋
心电计是测量心脏电信号的仪器,对吧?那个"哔、哔"声是波形的哪个部分检测出来的呢?
🎓
正确,检测的是"R 波",即波形中最尖锐的山峰。每次搏动会出现 P 波(心房除极)→ QRS 群(心室除极)→ T 波(复极),其中 QRS 的顶点 = R 波最大且形状最稳定。所以不论是测量心率还是判断心律不齐,首先都要找出"R 波在哪里",这是一切的出发点。
🙋
但实际心电图很复杂,还有肌肉电位和电源干扰混进去。不能简单地用"最高点"阈值来切割吗?
🎓
问得好。用固定阈值的问题是,身体稍微动一下,噪声的山峰就被误认为是 R 波;反过来,如果心电电极接触不良导致幅值下降,真正的 R 波就被漏掉了。所以 1985 年 Pan 和 Tompkins 发表了:(1) 带通 → (2) 微分 → (3) 平方 → (4) 移动平均积分 → (5) 自适应阈值,这样的 5 段管道。在 MIT-BIH 标准数据库上达到 99.3% 灵敏度,至今仍是教科书必讲的经典算法。
🙋
这 5 段各有各的意义吗?特别是"微分然后平方"是干什么的?
🎓
每步都有理由。首先带通 5~15 Hz 是 QRS 的频谱峰值带域。P 波・T 波(低频)和肌电・电源干扰(高频)可以同时被削弱。然后微分是提取"波形的斜率",R 波的急速上升会产生大值。平方用来统一符号并把能量放大,尤其能非线性地强调。最后移动平均积分(MWI,150 ms 窗)把能量汇总成一个山峰,这样就能更容易地设置阈值,得到平滑的波形。
🙋
右边显示的"灵敏度"和"PPV"有什么区别?两个都是 99%。
🎓
灵敏度 = 真实 R 波中检测到的比例(漏检的少),PPV = 检测到的当中有多少是真的(误检的少)。降低阈值系数会增加检测,所以灵敏度↑,但同时也会误拾噪声,PPV↓。反过来提高系数会 PPV↑、灵敏度↓。目标是让两个都超过 99%,标准 Pan-Tompkins 参数在噪声 10% 左右的临床信号上能达到这个水平。在 ICU 或运动中的高噪声环境,通常把系数上升到 0.5~0.6 来压低误检。
🙋
"检测延迟 91 ms",这对实时性有影响吧?
🎓
有影响。带通和微分的 FIR 群延迟,加上 MWI 窗的一半(150 ms 的话 75 ms),累积起来从 R 波发生到检测输出会有 80~100 ms 的延迟。所以在 AED(自动体外除颤器)或起搏器这种"要立刻放电/同步"的场合,会把窗宽缩短到 100 ms,或并联一个快速响应检测器。但对 Holter 心电计的事后分析来说,延迟就不是问题了。用途不同,对策就不同。

常见问题

Pan-Tompkins 是 1985 年 Jiapu Pan 和 Willis J. Tompkins 发表的古典算法,从心电图波形中实时检测 QRS 群(R 波)。包括带通滤波(5-15 Hz)→ 微分 → 平方 → 移动平均积分(MWI)→ 自适应阈值,共 5 段管道,在 MIT-BIH 心律不齐数据库上达到 99.3% 灵敏度。实现轻量,广泛用于 Holter 心电计和可穿戴设备的固件中。
QRS 群频谱峰值在 10 Hz 附近,最大能量集中在 5~15 Hz 带域。而 P 波・T 波为 1~7 Hz,肌电(EMG)噪声为 20 Hz 以上,商用电源干扰为 50/60 Hz。将通过带域限制在 5~15 Hz,可同时抑制 QRS 外的心电成分和噪声,突出 R 波信号。下限过低会混入 T 波导致误检增加,上限过高会受 EMG 噪声影响,PPV 下降。
标准值是 150 ms。这略大于成人 QRS 持续时间(通常 80~120 ms),能将平方后的能量整合为一个波峰,便于阈值设置。窗口过短会导致峰值双驼峰,造成 1 拍误检为 2 拍;过长会将相邻拍合并为一个波峰,高心率时易漏检。儿童或心动过速分析时可设为 100 ms 左右,QRS 宽拍(束支阻滞等)可扩大到 200 ms。
Pan-Tompkins 逐次更新信号峰值平均 SPK 和噪声峰值平均 NPK,按 THRESHOLD = NPK + factor·(SPK − NPK) 动态产生阈值。系数过小(0.2~0.3)灵敏度高但误检(假阳性)增加,PPV 下降。0.4 左右为标准值,ICU 高噪声环境可上升到 0.5~0.6 以抑制误检,可穿戴设备静态记录可降至 0.25。本工具重现了系数下降导致灵敏度上升但 PPV 下降的行为。

实际应用

Holter 心电监护(24 小时监测):门诊检查进行 24~48 小时的长时间记录,检测心律不齐和 ST 变化。Pan-Tompkins 是这个领域的业界标准,Mortara 和日本光电等市售装置的前端检测都基于它。1 天约 10 万次搏动需要 R 波检测,即使灵敏度和 PPV 都是 99%,也会有 1000 次漏检/误检,直接影响诊断质量。

ICU 连续生体监护・远程监测:集中治疗室床边监护仪用 Pan-Tompkins 系检测器产生心率和告警的基础信息。患者身体活动、除颤器、电刀的干扰多,通常把阈值系数设高以抑制误检(假警报)。随着告警疲劳(alarm fatigue)对策的推进,多导联 Pan-Tompkins 融合检测也普及开来。

可穿戴心电计・智能手表:Apple Watch・Fitbit・OMRON HeartGuide 等消费级产品内部也多采用简化版 Pan-Tompkins。干电极、短时间记录、身体运动噪声是主要课题,通常把带通上限扩大到 20~25 Hz,频繁重新学习阈值来应对。本工具中把噪声设到 30~40% 可重现可穿戴级的挑战性条件下灵敏度和 PPV 的下降。

ICD・起搏器的感知逻辑:植入式除颤器(ICD)需要在 5~10 秒内检测心室颤动(VF)并放电,检测延迟直接关系救命率。通常采用比 Pan-Tompkins 更简单的微分+阈值+R-R 间隔分析组合,把总延迟控制在 3 秒以内。本模拟器中把 MWI 窗缩到 50 ms 能体验接近 ICD 的高速检测(延迟〜25 ms)。

常见误区与注意点

最大的陷阱是简单地认为"灵敏度 99% 就够了"。临床现场关心的是"24 小时记录漏检了多少心律不齐拍""假警报导致护士被叫了几次",灵敏度 99% 仍会导致 Holter 1 天有 1000 拍漏检。而且漏检的是心室期外收缩(PVC)还是致命的心室颤动(VF),临床重大度完全不同。算法评价需要不仅看"QRS 检测精度",还要按心律不齐类别统计"危险不齐能否被捕捉"。

其次是盲目认为"采样频率越高,检测精度越好"。诊断级 ECG 虽然按 IEC 60601-2-25 推荐 500 Hz 以上,但提高到 2000 Hz 也不会明显改善 Pan-Tompkins 检测精度,反而微分后高频噪声突出,带通上限设计变得敏感。低功耗的可穿戴通常用 250 Hz 也能达到临床充分灵敏度,即"Fs 只需是 QRS 频谱(~40 Hz)的 8~10 倍"就足够了。

还有一个常见的非此即彼的错误认识:"Pan-Tompkins 是完美的,用深度学习取代它会更好"。最近的 CNN/LSTM 型 QRS 检测器在 MIT-BIH 上能达到 99.9% 灵敏度,但推理成本、电耗、模型更新的法律责任、FDA 规制应对,全都比 Pan-Tompkins 重。实装现场的做法是"用 Pan-Tompkins 达到 99%,难处理的病例再用深度学习复查"的混合构成。理解古典手法、正确设置带通带域、MWI 窗、阈值系数这 3 个参数是先决条件,不能跳过去直接上 ML。

使用指南

  1. 设置心率(60~180 bpm)和采样频率(100~1000 Hz),生成标准心电图波形
  2. 调整噪声水平(0~50 dB),模拟肌电图噪声或商用周波干扰(50/60 Hz)
  3. 改变带通带域(5~100 Hz)和移动窗宽,通过整个 Pan-Tompkins 处理管道观察 R 波检测精度的变化
  4. 实时监测灵敏度(%)和阳性预测值 PPV(%),探索最优参数组合

具体计算示例

心率 72 bpm、采样频率 250 Hz 的情况下,RR 间隔为 833 ms,样本数约为 208。应用噪声水平 25 dB、带通带域 5~40 Hz,SNR 改善至约 18 dB,达成灵敏度 98.5%、PPV 97.2%。相反,噪声 40 dB 同一带域设定下,SNR 降至 11 dB,灵敏度和 PPV 分别降至 92.1% 和 89.6%。移动窗宽 200 ms 时检测延迟约 45 ms。

实务中的注意事项