「ECG信号处理——(22)Pan-Tompkins Findpeak 阈值检测 差分阈值算法——三种R波检测算法对比分析」2025年8月8日
目录
1、引言
2、算法原理
(1)Pan-Tompkins 算法(方法1)
(2)Findpeak 阈值检测算法(方法2)
(3)差分阈值算法(方法3)
3、算法性能评估
(1)评估指标
(2)实验结果对比
(3)综合分析与结论
1、引言
心电图(ECG)是临床诊断心脏疾病的重要工具,R波检测作为其中的关键步骤,其准确性直接影响后续的心律失常分析等诊断过程。本文档介绍三种 R 波检测算法及其性能评估。
2、算法原理
(1)Pan-Tompkins 算法(方法1)
相关内容详情见我博客👇
「ECG信号处理——(10)Pan-Tompkins算法(R峰检测)」2025年3月17日-CSDN博客
(2)Findpeak 阈值检测算法(方法2)
基于信号局部极大值特性,通过双阈值约束实现R波定位。其核心思想是找到信号中满足特定条件的局部极大值点。通过设置最小峰间距(MinPeakDistance
)和最小峰高(MinPeakHeight
)两个关键参数来筛选潜在的 R 波位置。
-
幅值阈值:设置最小峰值高度MinPeakDistance=round(0.2×fs),过滤低幅噪声。
-
位置阈值:设置最小峰间距MinPeakHeight=0.5(对应最大心率300bpm)。
其中,fs
表示采样频率,MinPeakDistance
是为了确保 R-R 间隔至少为 0.2 秒,MinPeakHeight
是根据信号幅度设定的最小阈值。
(3)差分阈值算法(方法3)
该方法通过信号微分和动态阈值调整来检测 R 波。基本流程如下:
- 信号微分处理:对原始 ECG 信号进行微分操作,突出信号的突变部分,公式为:
diff_ecg=diff(ecg)
- 移动平均滤波:对微分后的信号取绝对值并进行移动平均平滑处理,窗口长度设为 0.12 秒对应的采样点数,公式为:
smoothed=movmean(∣diff_ecg∣,window_length)
- 动态阈值调整:在信号的前 10 秒学习阶段内,计算平滑信号的最大值并乘以 0.6 作为初始阈值,公式为:
threshold=0.6×max(smoothed(1:learning_phase))
- 阈值检测与峰值确认:通过比较平滑信号与阈值确定潜在 R 波区间,并在每个区间内找到原始信号的最大值点作为 R 波位置。
3、算法性能评估
(1)评估指标
- 灵敏度(Sen):衡量实际 R 波被正确检测的比例,公式为:
Sen=TP/(TP+FN)×100%
- 阳性预测值(PPV):衡量检测到的 R 波中实际正确的比例,公式为:
PPV=TP/(TP+FP)×100%
- 准确率(Acc):衡量整体检测的准确程度,公式为:
Acc=TP/(TP+FP+FN)×100%
其中,TP
表示真阳性数量,FN
表示假阴性数量,FP
表示假阳性数量。
(2)实验结果对比
以下是上述三种R波检测算法在MIT-BIH心律失常数据库\mit-bih-arrhythmia-database-1.0.0上的性能评估结果。
图1:R波检测示例1
图2:R波检测示例2
表1:MIT-BIH心律失常数据库部分数据结果对比
整体性能对比:
评价指标 | 1、Pan-Tompkins法 | 2、Findpeaks法 | 3、差分阈值法 |
---|---|---|---|
平均灵敏度(Se) | 94.94% | 99.94% | 99.91% |
平均PPV | 95.32% | 94.21% | 84.97% |
平均准确率(Acc) | 91.66% | 94.00% | 84.89% |
平均位置偏差 | 0.45±1.38 | 2.12±1.40 | 0.45±1.33 |
平均幅值偏差 | 0.07±0.08 | -0.99±0.17 | 0.06±0.07 |
灵敏度对比:
-
Findpeaks与差分阈值法表现相当(99.94% vs 99.91%)
-
Pan-Tompkins法在记录106出现严重漏检(Sen=65.56%)
-
极端案例:记录106中差分阈值法保持100%灵敏度,而Pan-Tompkins降至65.56%
定位精度
-
差分阈值法定位最精准(平均偏差0.45样本点)
-
Findpeaks法存在系统定位延迟(平均+2.12样本点)
-
记录102中Findpeaks定位偏差最大(5.44±5.42样本点)
幅值估计
-
Findpeaks法存在显著幅值低估(平均-0.99mV)
-
差分阈值法幅值偏差最小(0.06±0.07mV)
-
记录107中Findpeaks幅值偏差达-1.51±0.25mV
(3)综合分析与结论
方法3(差分阈值法)在多数数据集上表现最佳,具有较高的灵敏度和最佳的检测精度;方法1在时间准确性上表现较好,但在幅值准确性上稍差;方法2在某些数据集上表现优异,但在其他数据集上存在不稳定性。
根据具体应用场景的需求:
-
对灵敏度和检测精度要求极高时,选择方法3(差分阈值法);
-
更注重时间准确性时,选择方法1(Pan-Tompkins法);
-
需要在不同数据集上保持较好的稳定性时,选择方法3(差分阈值法)。
Tips:下一讲,我们将进一步探讨,心电信号处理与应用的其他部分。
以上就是Pan-Tompkins & Findpeak 阈值检测 & 差分阈值算法——三种R波检测算法对比分析的全部内容啦~
我们下期再见,拜拜(⭐v⭐) ~
(Ps:有代码实现需求,请见主页信息,谢谢支持!~)