心电QRS波形识别之Pan-Tompkins算法介绍

目录

[1 概述](#1 概述)

[2 算法流程](#2 算法流程)

[2.1 带通滤波(Bandpass Filter)](#2.1 带通滤波(Bandpass Filter))

[2.2 微分(Derivative)](#2.2 微分(Derivative))

[2.3 平方(Squaring Function)](#2.3 平方(Squaring Function))

[2.4 滑动窗口积分(Moving-Window Integration)](#2.4 滑动窗口积分(Moving-Window Integration))

[2.5 自适应阈值检测(Adaptive Thresholds)](#2.5 自适应阈值检测(Adaptive Thresholds))

[3 算法评估](#3 算法评估)

[4 总结](#4 总结)

[4.1 算法设计关键](#4.1 算法设计关键)

[4.2 现实意义](#4.2 现实意义)


原文链接:https://mp.weixin.qq.com/s/Sn03A9kkn7l5K-5u2Q0sNA

Pan--Tompkins算法论文由Jiapu Pan和Willis J. Tompkins于1985年在IEEE期刊发表,题为《A Real-Time QRS Detection Algorithm》。它是最经典、最广泛使用的实时QRS波(R峰)检测算法,为后续所有自动ECG分析奠定基础。

1 概述

使用计算机解读心电图是一项很有临床意义的实用技术,而这就需要计算机可以有效识别QRS波群。但是QRS的检测是不容易的,不仅因为QRS波群的生理变异性,还因为心电信号可能中存在的各种类型的噪声,比如肌电干扰、电极运动产生的伪影、工频干扰、基线漂移以及与QRS波群相似的高频特征的T波。

**Pan--Tompkins算法目标:**设计一个适合硬件实现的QRS波检测算法,在实时环境下计算高效、准确地检测ECG信号中的QRS波群(特别是R波),用于心率计算和心律失常检测。

2 算法流程

首先,为了衰减噪声,信号通过由级联的高通和低通滤波器组成的数字带通滤波器,滤波后的下一个过程是微分,然后是平方,然后是移动窗口积分。在导数阶段获得了QRS的斜率信息,平方处理过程会加剧导出信号频率响应曲线的斜率,有助于抑制由高于常规频谱能量的T波引发的假阳性信号;移动窗口积分器产生一个信号,其中包括关于QRS波形的斜率和宽度的信息。

该算法分为三个过程:学习阶段1、学习阶段2、检测阶段。学习阶段1根据学习过程中检测到的信号和噪声峰值初始化检测阈值大约需要2秒,学习阶段2需要两次心跳来初始化RR-interval平均值和RR-interval极限值,随后的检测阶段进行识别过程,并为每个QRS波形产生一个脉冲,该算法的阈值和其他参数周期性调整,以适应信号特性的变化。

2.1 带通滤波(Bandpass Filter)

带通滤波器可降低肌电噪声、60Hz工频干扰、基线漂移、T波干扰,而使QRS能量最大化的理想通带约为5- 15Hz。

文中所设计的滤波器是一个快速的、实时的滤波器,其中极点位于 z 平面的单位圆上,以抵消零点。这类滤波器只在单位圆上具有极点和零点,通带设计灵活性有限,对于期望的5-15 Hz通带必须使用低通和高通滤波器级联来实现。

**低通滤波(Low-Pass Filter):**截止频率约为11Hz,抑制高频噪声

差分方程为

y(nT)=2y(nT-T)-y(nT-2T)+x(nT)\\\\-2x(nT-6T)+x(nT-12T)

高通滤波(High-Pass Filter):截止频率约5 Hz,抑制基线漂移

差分方程为

y(nT)=32x(nT-16T)-\[y(nT-T)\\\\+x(nT)-x(nT-32T)\]

组合后实现 5--15 Hz的带通滤波效果,并保留QRS波的主要能量。

2.2 微分(Derivative)

经过滤波后,信号被求导以获取QRS复合波的斜率信息,这里采用五点导数法,中心差分方程为

y(nT)=(1/8T)\[-x(nT-2T)-2x(nT-T)\\\\+2x(nT+T)+x(nT+2T)\]

计算信号的一阶导数,使QRS波的高斜率部分(上升沿和下降沿)得到显著增强,同时压制低频 P/T 波。

2.3 平方(Squaring Function)

微分后,对信号逐点进行平方

y(nT)=\[x(nT)\]\^2

使得所有正负斜率都变为正,并对导数的输出进行非线性放大,二次放大高频分量,使 QRS 能量远高于残余噪声和 T 波,可以理解为放大与整流。

2.4 滑动窗口积分(Moving-Window Integration)

滑动窗口积分的目的除了得到R波的斜率外,还可以得到波形特征信息,平滑平方后的信号,将QRS波的多个峰值整合为一个易于识别的单峰,同时抑制脉冲噪声。

y(nT)=(1/N)\[x(nT-(N-1)T)+x(nT-(N-2)T)\\\\+...+x(nT)\]

其中 N是积分窗口宽度内的样本个数。

一般来说,窗口的宽度应该与最宽的QRS波群大致相同,窗口太宽,积分波形会将QRS和T合并在一起;太窄则某些QRS波会在积分波形中产生多个峰,可能会在随后的QRS检测过程中造成困难。窗口的宽度由经验决定,对于200个样本/s 的采样率,窗口为30个样本宽(150ms)。

基准标记(Fiducial Mark)

QRS波对应于积分波形的上升沿,上升沿的持续时间等于QRS波的宽度。根据所要标记的波形特征(如最大斜率或波峰),可以从该上升沿确定QRS波时间位置的基准标记。

2.5 自适应阈值检测(Adaptive Thresholds)

在积分波形上识别QRS波峰,并动态调整阈值以适应信号变化。需要持续更新两个阈值:一个用于QRS波峰(SPKI),一个用于噪声峰(NPKI)。阈值本身是前序信号峰值(或噪声峰值)的加权平均。

能根据信号质量动态调整判断标准,适应不同患者和信号变化,是算法鲁棒性的关键,简单概括自适应阈值检测的调节步骤为:

  • 初始化信号阈值和噪声阈值

  • 检测到峰值后,与阈值比较,高于信号阈值则判定为QRS,否则为噪声

  • 每次检测后根据结果更新阈值,实现"自适应"

  • 还有搜索回溯机制(searchback),防止漏检

阈值调整

在两个阈值中,较高的那个用于对信号的首次分析。如果在某一时间间隔内未检测到 QRS 波,则使用较低的阈值,此时需要采用回溯技术来以寻找 QRS 波形。最初应用于积分波形的阈值组是根据以下方式计算得出的:

SPKI=0.125 PEAKI +0.875 SPKI (若 PEAKI 为信号峰值)

NPKI=0.125 PEAKI +0.875 NPKI (若 PEAKI 为噪声峰值)

THRESHOLD I1 = NPKI + 0.25 × (SPKI - NPKI)

THRESHOLD I2 = 0.5 THRESHOLD I1

其中所有的变量均指积分波形:

  • PEAKI 是整体峰值

  • SPKI 是信号峰值的实时估计值

  • NPKI 是噪声峰值的实时估计值

  • THRESHOLD I1 是应用的第一个阈值

  • THRESHOLD I2 是应用的第二个阈值

峰值是通过在预设的时间区间内观察信号方向变化来确定的局部最大值,信号峰值 SPKI 是算法已确定为 QRS 波群的峰值,噪声峰值 NPKI 是与 QRS 无关的任何峰值。

阈值是基于对 SPKI 和 NPKI 的实时估算得出的,也就是说,这些变量的新值部分是根据其先前的值计算得出的。当检测到新的峰值时,必须首先将其分类为噪声峰值或信号峰值。

要成为信号峰值,该峰值必须超过 THRESHOLD I1(在首次分析信号时),或者如果需要回溯搜索以找到 QRS,则必须超过 THRESHOLD I2。当使用第二个阈值找到 QRS 波时,

SPKI = 0.25 PEAKI + 0.75 SPKI

应用于过滤后的心电图的阈值

SPKF = 0.125 PEAKF + 0.875 SPKF(若 PEAKF 为信号峰值)

NPKF = 0.125 PEAKF + 0.875 NPKF(若 PEAKF 为噪声峰值)

THRESHOLD F1 = NPKF + 0.25 (SPKF - NPKF)

THRESHOLD F2 = 0.5 THRESHOLD F1

其中所有的变量均指经过滤波处理的心电图:

  • PEAKF 是整体峰值

  • SPKF 是信号峰值的实时估计值

  • NPKF 是噪声峰值的实时估计值

  • THRESHOLD F1 是应用的第一个阈值

  • THRESHOLD F2 是应用的第二个阈值

当使用第二道阈值检测到 QRS 波群时

SPKF = 0.25 PEAKF + 0.75 SPKF

对于不规则心率,每组的第一阈值减半,以提高检测灵敏度,避免漏拍。

T波识别

当 RR间期小于360 ms时(必须大于200 ms延迟),判断当前QRS波是否被正确识别,如果在此波形期间出现的最大斜率小于之前QRS波形的一半,则将其识别为T波;否则为QRS波。

3 算法评估

使用MIT/BIH心律失常数据库进行验证,共48个半小时数据,超过116000个数据点,可以看出算法在多种噪声和心律条件下表现优异,误检率极低。

4 总结

4.1 算法设计关键

**整系数滤波器设计:**滤波器和微分器都使用了整数系数,极大简化了计算,是实现实时性的关键。

**自适应阈值机制:**持续学习和更新两个信号水平(信号峰和噪声峰),并根据历史数据动态计算阈值,能自动适应信号幅度变化、不同患者差异以及突发噪声。

**流式实时处理:**整个算法被设计为逐点处理,无需等待整个信号记录完成,延迟很小,非常适合监护仪等需要即时反馈的设备。

4.2 现实意义

Pan--Tompkins 把带通-微分-平方-积分变成一条专用特征增强流水线,再辅以"双阈值+搜索回退"自适应决策,首次系统性地提出了一个完整、高效且工程上易于实现的QRS波检测方案。

它的影响远超论文本身:

  • 成为事实标准:至今仍是教学、研究和产品开发的基准算法和起点

  • 催生大量改进:针对其在高噪声或特殊心律失常下的不足,衍生出无数改进版本,例如使用小波变换、支持向量机或神经网络进行增强

  • 启发硬件创新:其低功耗设计思想启发了现代超低功耗心电芯片的开发,有些设计通过简化其计算单元(如平方运算)实现了纳瓦级的功耗

总结来说,Pan-Tompkins算法原文的核心贡献是为实时QRS波检测问题提供了一个兼具理论严谨性和工程实用性的完整解决方案,其精巧的自适应阈值和高效滤波设计,使其经受住了近40年的技术变迁考验。

Jiapu Pan, Willis J. Tompkins, "A Real-Time QRS Detection Algorithm," IEEE Transactions on Biomedical Engineering, 1985.

相关推荐
Xの哲學2 小时前
从硬中断到 softirq:Linux 软中断机制的全景解剖
linux·服务器·网络·算法·边缘计算
生信碱移2 小时前
单细胞空转CNV分析工具:比 inferCNV 快10倍?!兼容单细胞与空转的 CNV 分析与聚类,竟然还支持肿瘤的亚克隆树构建!
算法·机器学习·数据挖掘·数据分析·聚类
Brduino脑机接口技术答疑3 小时前
TDCA 算法在 SSVEP 场景中:Padding 的应用对象与工程实践指南
人工智能·python·算法·数据分析·脑机接口·eeg
keep_learning1114 小时前
Z-Image模型架构全解析
人工智能·算法·计算机视觉·大模型·多模态
点云SLAM4 小时前
Boost中Graph模块中boost::edge_capacity和boost::edge_capacity_t
数据库·算法·edge·图论·最大团·最大流算法·boost库使用
lihaihui19914 小时前
asan 内存问题分析
算法
算法与编程之美4 小时前
探索不同的损失函数对分类精度的影响.
人工智能·算法·机器学习·分类·数据挖掘
H_BB4 小时前
leetcode160:相交链表
数据结构·算法·链表
前端小L5 小时前
贪心算法专题(十五):借位与填充的智慧——「单调递增的数字」
javascript·算法·贪心算法
前端小L5 小时前
贪心算法专题(十四):万流归宗——「合并区间」
javascript·算法·贪心算法