基于Pan-Tompkins算法的实时ECG波形QRS检测系统
项目介绍
本系统是一个基于经典Pan-Tompkins算法的医疗信号处理工具,专门用于实时或离线心电图(ECG)信号中的QRS波群检测。系统通过一系列数字信号处理步骤,在复杂噪声(如基线漂移、肌电干扰和工频干扰)环境下准确识别R波峰值。该算法因其计算量小、延时低且稳健性高,被广泛应用于心率监测仪、心律失常报警系统及生物医学数据分析领域。
功能特性
- 生理特征提取:针对心电信号中心波群的频率分布,精准提取5Hz至15Hz的核心频率成分。
- 能量增强补偿:利用平方算子放大QRS复合波的斜率信息,同时有效抑制振幅较低但可能引起误检的P波与T波。
- 自适应阈值调整:系统不采用固定阈值,而是根据背景噪声和已识别信号的强度,动态调整信号峰值估计(SPKI)和噪声峰值估计(NPKI)。
- 精确R峰定位:在能量包络的基础上进行回溯查找,返回原始滤波信号中的精确时间位置。
- 心率指标计算:实时计算RR间期,并输出瞬时心率与平均心率(BPM)。
- 可视化诊断:提供多阶段波形对比图,直观展示从原始信号到最终检测结果的演变过程。
使用方法
- 环境准备:将MATLAB代码文件放置在当前工作路径下。
- 运行程序:在MATLAB命令行窗口执行主函数。
- 数据输入:系统内部集成了一个合成信号生成模块,运行后会自动生成包含噪声、基线漂移和工频干扰的10秒模拟ECG数据进行演示。
- 查看结果:程序运行结束后,将自动弹出绘图窗口,显示原始信号、带通滤波信号、积分包络线以及最终标记的R波位置,同时在控制台输出检测到的心搏总数和平均心率。
系统要求
- 软件环境:MATLAB R2016b 及以上版本。
- 工具箱需求:Signal Processing Toolbox(用于findpeaks等信号处理函数)。
- 硬件要求:标准桌面或笔记本电脑,主频2GHz以上,4GB以上内存。
详细实现逻辑
本系统的实现严格遵循Pan-Tompkins经典论文的逻辑结构,具体步骤如下:
1. 模拟信号生成与环境构建
系统首先定义采样频率为200Hz,并构造一个包含P波、QRS复合波及T波的ECG模型。为了模拟真实环境,系统向信号中叠加了0.5Hz的基线漂移、50Hz的工频干扰以及高频随机噪声。
2. 级联带通滤波 (Bandpass Filtering)
系统采用嵌套实现的数字滤波器。首先通过低通滤波器(差分方程形式)滤除高频噪声,随后通过高通滤波器消除基线漂移。该环节成功将信号频率锁定在5-15Hz区间,这是QRS能量最集中的部分。
3. 微分运算 (Derivative)
由于QRS复波具有较陡峭的斜率,系统应用五点导数算子。此步骤通过提取信号斜率来进一步区分QRS波形与其他缓慢变化的生理成分。
4. 平方处理 (Squaring)
对微分后的信号进行点对点平方处理。该操作实现了非线性变换,将所有波动转为正值,并以非线性方式放大高振幅部分,极大提升了信噪比。
5. 滑动窗口积分 (Moving Window Integration)
系统使用一个宽度约为150ms(对应采样点数)的滑动窗口执行归一化积分。该处理生成了反映波形能量的平滑包络线,使得原本尖锐的QRS复波转变为明显的脉冲峰。
6. 双自适应阈值检测
这是系统的核心智能环节,包含以下逻辑:
- 启发式初始化:根据前2秒内的最大值和平均值初始化信号与噪声水平估计。
- 动态更新:利用递归指数衰减公式更新SPKI(信号水平)和NPKI(噪声水平)。
- 多准则判别:结合当前阈值(THR1)与不应期限制(200ms内禁止重复检测)进行判别。
- 回溯定位:一旦在积分信号中发现峰值,系统会自动在对应的滤波信号时间窗口内搜索最大值,以纠正由积分窗口导致的相位延迟,确保R峰时间位置的精准。
关键函数与算法细节分析
- 合成信号函数:通过正弦半波模拟P波和T波,通过Delta函数模拟QRS,提供了具有高度可预测性但又带有现实干扰的测试基准。
- 滤波器设计:代码中直接使用了差分方程定义的系数(b和a向量),这确保了处理的低延迟性,完全符合实时系统的设计要求。
- findpeaks机制:利用非极大值抑制思想,预先筛选出积分信号中的候选峰值,随后交由自适应阈值逻辑进行最终判决。
- 时间/频率同步:窗口大小(如150ms窗口、200ms不应期)均根据200Hz的采样率进行动态换算,保证了算法对不同采样频率具有较好的适配能力。